Infocom games were written for a virtual machine called the Z-Machine, which executed Z-Code. Early on, Infocom's marketing designation for their system was "INTERLOGIC". Each platform that ran the games had an interpreter called ZIP ("Zork Interpreter Program"). The virtual machine is described in the article How to Fit a Large Program Into a Small Machine, or How to Fit the Great Underground Empire on Your Desktop by Marc Blank and Stu Galley, published in Creative Computing magazine.
Although the details of the Z-Machine became well-known in the early 1990s, back in 1982 there was little information available beyond the Creative Computing article. I wanted to learn more about it, so from 1982 to 1984, I worked on reverse-engineering the Apple ][ ZIP versions 1-3. I produced a commented source file which could be reassembled into the original object code. I then wrote my own ZIP in Pascal.
Unfortunately I no longer have machine-readable copies of any of my work, but I do still have a printed listing, which I have scanned. Of course, it is now only of historical interest.
The code was assembled using a special version of the Microsoft Macro-80 assembler that was part of the A.L.D.S. package for the Apple ][. Macro-80 ran under CP/M, and the normal versions only supported 8080 and Z-80 assembly. But the A.L.D.S. version added support for the 6502, and ran under CP/M on an Apple ][ equipped with a Microsoft Softcard.
In 1984, the listing file was uploaded to a DECSYSTEM-20 and printed on a DEC LN01 laser printer (DEC's version of the Xerox 2700).
The Z-Machine is now described in detail in The Z-Machine Standards Document by Graham Nelson. Mr. Nelson is also the developer of Inform, a compiler that produces Z-Machine code.
The Apple II ZIP was written by Bruce Daniels, who was working at Apple Computer at the time. Bruce was one of the key players in the development of the Apple Lisa computer; he was responsible for the system software.
Last updated December 17, 2004
Copyright 2003-2004 Eric Smith