Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Z-machine
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==History and design== ===Nomenclature and conventions=== The "Z" of Z-machine stands for ''[[Zork]]'', Infocom's first adventure game. Infocom used file extensions of .dat (Data) and .zip (ZIP = Z-machine Interpreter Program), but the latter clashed with the widespread use of .zip for [[ZIP file format|PKZIP-compatible archive files]] starting in the 1990s, after [[Activision]] had closed Infocom. Infocom produced six versions of the Z-machine. Files using versions 1 and 2 are very rare. Only two version 1 files are known to have been released by Infocom and only two of version 2. Version 3 covers the majority of Infocom's released games. Later versions had more capabilities, culminating in some graphic support in version 6. The modern convention for Z-code files usually have names ending in .z1, .z2, .z3, .z4, .z5, .z6, .z7, or .z8, where the number is the version number of the Z-machine on which the file is intended to be run, as given by the first [[byte]] of the story file.<ref name="version">{{cite web|title=The Z-Machine Standards Document|url=https://inform-fiction.org/zmachine/standards/z1point0/appd.html|website=inform-fiction.org|access-date=26 March 2018}}</ref> As previously noted, the Infocom games used the equivalent of .z1 through .z6; .z7 and .z8 were proposed and adopted after Infocom had shut down. ===Before Z-machine=== The [[MDL (programming language)|MDL]] programming language was derived from [[Lisp (programming language)|Lisp]] at the [[Massachusetts Institute of Technology]] by the Dynamic Modeling group of the [[MIT Computer Science and Artificial Intelligence Laboratory|Laboratory for Computer Science (LCS)]] in the 1970s; inspired by ''[[Colossal Cave Adventure]]'' (1977), members of that group went on to write ''Zork'' in MDL, completing the initial version two weeks later.<ref>{{cite journal |doi=10.1109/MC.1979.1658697 |title=Zork: A Computerized Fantasy Simulation Game |first1=P. David |last1=Lebling |first2=Marc S. |last2=Blank |first3=Timothy A. |last3=Anderson |date=April 1979 |volume=12 |pages=51β59 |journal=Computer |publisher=IEEE Computer Society}}</ref><ref name=Infocom-story>{{cite web |url=http://infocom.elsewhere.org/mit-class-history/infocom-paper.pdf |title=Down From the Top of Its Game: The Story of Infocom, Inc. |first1=Hector |last1=Briceno |first2=Wesley |last2=Chao |first3=Andrew |last3=Glenn |first4=Stanley |last4=Hu |first5=Ashwin |last5=Krishnamurthy |first6=Bruce |last6=Tsuchida |publisher=MIT Course 6.933J/STS.420J (Structure of Engineering Revolutions) |date=December 15, 2000 |access-date=3 January 2025}}</ref>{{rp|5β6}} Like ''Adventure'', ''Zork'' was programmed for the [[Digital Equipment Corporation|DEC]] [[PDP-10]]; the finished version occupies 1 MB of MDL code and requires 512 KB of RAM to run. Because contemporary home computers did not have these resources, considerable effort was needed to port the game.<ref name=Infocom-story/>{{rp|11}} Eventually, the developers split ''Zork'' into two games for personal computers.<ref>{{cite magazine |url=https://archive.org/details/byte-magazine-1980-12/page/n173/mode/2up |title=Zork and the Future of Computerized Fantasy Simulations |first1=P. David |last1=Lebling |date=December 1980 |magazine=BYTE |pages=172β182}}</ref> The compression required to run ''Zork'' from [[floppy disk]]s with approximately 80 KB of storage seemed like an insurmountable barrier to Blank. Berez realized that [[UCSD Pascal]] used a [[virtual machine]] (VM) model to generate executable files that could be readily ported across platforms, and together with Blank, they devised requirements for a lightweight VM optimized for text adventure games, which would retrieve data and execute instructions as needed from storage to compensate for the relatively small RAM sizes in typical microcomputers.<ref name=Infocom-story/>{{rp|11}} The resulting Z-machine used an [[Tree (abstract data type)|object tree structure]] for in-game items, locations, characters, and weapons.<ref name=Infocom-story/>{{rp|11}} For comparison, the Z-machine parser occupies 3 [[Byte|kB]] of storage, while the original PDP-10 parser occupies 10 [[Word (computer architecture)|Kwords]] ([[36-bit computing|36-bit]]).<ref name=CrCo-1980/> ===ZIL and ZIP, ZILCH and ZAP=== To complement the Z-machine, Infocom developed the high-level [[computer language]] Zork Implementation Language (ZIL) by streamlining MDL,<ref name=CrCo-1980>{{cite magazine |url=https://archive.org/details/creativecomputing-1980-07/page/n81/mode/2up |title=How to Fit a Large Program Into a Small Machine or How to fit the Great Underground Empire on your desk-top |first1=Marc S. |last1=Blank |first2=S. W. |last2=Galley |date=July 1980 |magazine=Creative Computing |pages=80β87 |access-date=7 January 2025}}</ref> and the Z-language Interpreter Program (ZIP), which compiles ZIL into Z-machine instructions in a two-stage process; this made text adventure development platform-independent and enabled porting to different systems simply by writing an appropriate Z-machine interpreter.<ref name=Infocom-story/>{{rp|12β13}} ZIP consists of a [[compiler]] (ZILCH, short for ZIL Compiler Hack) and an [[Assembly language#assembler|assembler]] (ZAP, the Z-machine Assembler Program).<ref>{{cite web |url=https://eblong.com/infocom/ |title=The Obsessively Complete INFOCOM Catalog |first=Andrew |last=Plotkin |website=eblong.com |access-date=3 January 2025}}</ref> ZILCH has never been released, although documentation of ZIL still exists, and an open-source replacement "ZILF"<ref name="ZILF">{{cite web |url=http://zilf.io/|title=ZILF|first=Jesse|last=McGrew|website=zilf.io|access-date=22 November 2020}}</ref> has been written. After [[Mediagenic]] moved Infocom to California in 1989, ''[[Computer Gaming World]]'' stated that "ZIL ... is functionally dead", and reported rumors of a "completely new parser that may never be used".<ref name = "CGW">{{cite magazine |date = September 1989| issue=63 | magazine = [[Computer Gaming World]] | title = Inside the Industry: Infocom's West Coast Move Stirs Controversy | pages = 10 | url=https://archive.org/details/Computer_Gaming_World_Issue_63/page/n9/mode/1up}}</ref> ===Graham Nelson and ''Inform''=== {{main|Inform}} In May 1993, [[Graham Nelson]] released the first version of his ''[[Inform]]'' compiler, which also generates Z-machine story files as its output, even though the Inform source language is quite different from ZIL. Inform has become popular in the [[interactive fiction]] community. A large proportion of interactive fiction is in the form of Z-machine story files. Demand for the ability to create larger game files led Nelson to specify versions 7 and 8 of the Z-machine, though version 7 is rarely used. Because of the way addresses are handled, a version 3 story file can be up to 128K in length, a version 5 story can be up to 256K in length, and a version 8 story can be up to 512k in length. Though these sizes may seem small by today's computing standards, for text-only adventures, these are large enough for elaborate games. During the 1990s, Graham Nelson drew up a Z-Machine Standard based on detailed studies of the existing Infocom files. The standard also includes extensions used by his newer versions, as well as links to the "[[Blorb]]" resource format used by Infocom, and a "[[Quetzal file format|Quetzal]]" savefile format.<ref name="standard">{{cite web|title=Inform - ZMachine - Standards|url=https://inform-fiction.org/zmachine/standards/index.html|website=inform-fiction.org|access-date=26 March 2018}}</ref> In 2006, Nelson expanded Z-machine to the 32-bit [[Glulx]] format for Inform 7. The [[Interactive Fiction Technology Foundation]], founded 2016, manages all these standards.<ref>{{cite web |title=Glk, Glulx, and Blorb Specifications |url=https://github.com/iftechfoundation/ifarchive-if-specs |publisher=Interactive Fiction Technology Foundation |date=16 November 2022}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)