Editor’s note
The existing and canonical HTML version of The Z-Machine Standards Document is a good reference, and contains invaluable information about the structure and functioning of a Z-machine interpreter. But, in the process of using it to write my own interpreter implementation, I found that (a) jumping back and forth between sections was awkward without an in-page table of contents[1], (b) the formatting—or lack thereof—made it less legible than it could be, and (c) there were some technical details that seemed to be assumed rather than made explicit.
To that end, I decided to convert the document to a more-modern presentation, and also annotate it with additional information I discovered in the process. (This might also serve as the initial source for an entirely new document, restructured for an interpreter-writing audience.)
None of this would exist without the tireless work of Graham Nelson and the other intrepid code spelunkers (see the original preface) that reverse-engineered the format and logic of the original Infocom game files.
Jared Reisinger
3 February 2022