From: nelson@vax.oxford.ac.uk (Mathematical Institute, (01865) 2-73525) Newsgroups: rec.arts.int-fiction Subject: Z-Machine Specification: Standard 0.2 Date: 16 Nov 95 12:57:57 GMT The Specification of the Z-Machine: A New Standard ================================================== (The Z-Machine is the imaginary computer invented by Infocom on which their games run, and is also the run-time system used by the Inform compiler: thus this document describes the format of Infocom and Inform "story files".) Since its first appearance over a year ago, a great deal of work by many hands has gone into rewriting the Specification, which is now almost unrecognisable as the original document. The material is more precise, corrects numerous errors and is systematically organised: in cases of doubt, original Infocom interpreters have been disassembled and referred to. A lot of niggling questions have been asked and answered. There have already been two consultation rounds among interested parties. The aim is to *exactly* describe what an interpreter should do. That being so, we propose it as a Standard. Each future edition of the document will be numbered: the one released today is 0.2. It is intended as provisional, during a last round of consultation between now and the New Year. Early in January, when further comments, corrections or requests for clarification have been acted on, it will finally become the definition of Standard 1.0. (Do please get in touch with me if you have such comments, corrections or requests.) A new location in the header has been allocated so that interpreters can tell the game being played what level of the Standard they implement (for existing interpreters this will be 0.0). A game will therefore know whether or not it is safe to use "dangerous" features of the Z-Machine (saving files of arbitrary data, for instance, or printing boldface German accents in colour at the bottom right character position of the upper window). Another intention is that the existence of this Standard will get the often rather old cores of present interpreters up to date with current knowledge. (Many new interpreter programs today are actually new front ends for obsolete cores, which have been only partially repaired.) In order for this Standard to be worth the name, interpreter writers are urged *not* to declare their interpreters as Standard unless they really believe that they are. But once they are, it would be helpful if interpreters lodged at ftp.gmd.de could include their Standard numbers (e.g. 1.0) somewhere in their filenames, so that users will know what they are getting. The new Standard introduces hardly any new features to the Z-Machine: the aim has been to describe accurately the status quo. However, in the process of working out exactly what the `ASCII' character set is for the ZM, we have filled out the set of accented letters to include the "common" European accents to be found in ISO Latin 1 (umlauts; grave and acute; cedilla; circumflex; tilde; ring; slash; thorn and eth; ligatures; and, for good measure, continental European quotation marks and a pound sign). The document is presently in TeX format (which is fairly legible as plain text after the first few pages of macro definitions): other formats will follow in due course. At the bottom of the file, after the \end command (which tells TeX to stop typesetting) are six small Inform programs: fonts.inf, accents.inf, inputcodes.inf, colours.inf, timedinput.inf, header.inf which may be helpful for testing the accuracy of a given interpreter. Suggestions for other test programs, which might be added to this suite, would be welcomed. In parallel to all this activity, Stefan Jokisch is compiling a list of all known bugs in the Zip interpreter: it is hoped in future to try to get Zip-based interpreters back to a common release of the Zip source code which will obey the Standard. Please do get in touch with Stefan if you find or suspect a bug in Zip: or write to me, and I'll forward the correspondence to Stefan. The expert on the InfoTaskForce interpreter (which has not been maintained in a very long time) is probably now Bryan Scattergood, whose Psion interpreter is a highly advanced modification of ITF. He may be a good person to consult on how to improve ITF, should anyone want to do this (please!). The document can at present be found at ftp.gmd.de, in the directory incoming/if-archive: after a few days it should end up in if-archive/infocom/interpreters. Graham Nelson November 16th, 1995 (with extensive contributions from Paul David Doherty, Mark Howell, Stefan Jokisch, Marnix Klooster and many others during previous rounds of consultation: although I drafted the text, I do not regard myself as its sole author.)