Sunday, February 17, 2019

Chapter 1. ZIL, ZILCH, ZAP, and ZIP

1.1 Introduction

ZIL is a derivative of MDL (MIT Design Language), a LISP-like language, with a minimal set of instructions needed to created IF games. The Infocom game files created from ZIL source code were run through the ZIL compiler (ZILCH) to create Z assembly language code. This assembly code was then sent through the Z Assembler Program (ZAP) to create the actual Z-code. No copies of ZILCH or ZAP software have ever been released or leaked to the public. There is also very little documentation about these programs. The Infocom Cabinet files only mentions some compilation flags used in ZILCH and the basic function of ZAP. The final Z-code could be run on a “Z-machine” or any computer that emulated one using a Zork Interpreter Program (ZIP). Different ZIP versions have different memory and processing requirements. All have frequently used and writable data in their “core” memory which enables quicker execution of the program. Less used and read-only data is read from a storage medium (file or disk) on an as needed basis.

Throughout the history of Infocom, six versions of the Z-code were recreated, but only the first 5 were used for text-only games.

1.2 ZIP versions 1

Many of the Z-code instructions used in Infocom games are in this first version of ZIP. It is unclear what the memory requirements are for it though. Only one ZIP 1 game, Zork 1, was ever released by Infocom.

1.3 ZIP version 2

ZIP 2 was used to create Zork 1-R15 and the first version of Zork 2. It introduced frequent words (AKA abbreviations) and a new header element (serial number) which is just a 6 digit ASCII representation of the release date in year-month-day format. 

1.4 ZIP version 3

Version 3 was used to create a majority of the Infocom games. Infocom documents indicates the version 3 compatible ZIP should have a minimum of 40K (maybe 32K) of core memory and a floppy drive with at least 80K of storage. Due to limitations to the ZIP 3 format, the maximum size game file is 128K. Also the response time should be a few seconds for the average command. 
Deadline would be the first new game using this version. This version increased the number of abbreviations and added more output functions. Even after ZIP 4 and 5 were introduced, Infocom would produce 24 games using ZIP 3.

For outputs, ZIP 3 compatible programs had 2 or 3 “windows” where text could be displayed instead of 1 in ZIP 1 and 2. One of these, the status bar is not usually used unless a special flag bit is set in the header. Most games create the status bar in the main or lower, window(0). Two additional output streams were created. One “streams” the text into a specified memory block. The other was called a command script which recorded the input and output of the game.

Finally, game verification was added by adding a file length and checksum into the header. The VERIFY command would check the game data file against these values.

1.5 Enhanced ZIP (EZIP), version 4

Version 4, renamed Enhanced ZIP (EZIP), was introduced with A Mind Forever Voyaging. A smaller version of EZIP was apparently created called, LZIP, or lower-case EZIP for computers with memory limitations. The minimal hardware requirements for EZIP were at least 128KB of memory and a single disk drive that can at least access 140KB. The computer system needs to have upper and lower case characters and a screen to display 80 characters across with at least 14 lines. These requirements would allow games to only take a few seconds to complete a typical “go” command. The maximum size game file is 256K.

EZIP increased the memory space to allow more objects and rooms along with longer words (up to 9 characters) in the vocabulary. Several new Z-code operands also simplified some of the table-related coding for these games, offered more ways to call routines, and gave more control to how text displayed on the screen by dividing it up into various windows.

The specs of EZIP limited these games to an IBM PC, Macintosh, enhanced Apple //e, C128, Amiga, and Atari ST. Four games were released using this. No known LZIP version of games seem to exist.

1.6 Extended ZIP (XZIP), version 5

Introduced with Beyond Zork, version 5 (XZIP) allowed for games with more objects and rooms and added more opcodes for routine calling, text, and table manipulations. Borderzone and Sherlock would be the only other new games to use this version. Infocom would release its Solid Goal (AKA Greatest Hits) series which were re-releases of past popular games but in the XZIP compatible format. However these games did not utilize the added functionality of XZIP.

1.7 YZIP, version 6

YZIP (successor to XZIP) is version 6 which mainly added mouse, graphical windows, and menu functions with Z-codes. The graphical based Infocom games used this version and will not be discussed.

1 comment: