Inform 7 and Z-Machine Interpreters January 2006 This note accompanies the public beta release of Inform 7, a new design system for interactive fiction based on natural language. Inform 7 is built on Inform 6 as a foundation, and consequently it compiles story files which comply with the Z-Machine Standards Document (ZMSD). All the same, minor improvements to interpreters might make them deal much better with Inform 7-written games. This may be a minor nuisance to interpreter writers and maintainers, for which I apologise, but I hope the effort will be thought worthwhile. The changes described have been made to two interpreters thus far: Windows Frotz and Zoom for OS X (and Unix). 1. The Z-machine stack I7 is a rules-based system, and complex I7 code makes heavy use of the Z-machine stack. At one stage, one of the "Test Suite" of games used in unit testing of I7 crashed dumb-frotz, the dumb-terminal interpreter we use for unit testing: it developed that the 4K of stack allocated by dumb-frotz had overflowed. Optimisation of I7's stack usage enabled us to bring the Test Suite back into working condition even on dumb-frotz, but the problem is likely to recur with more complicated I7 games in the future, and we would prefer to avoid this if possible. The ZMSD does not formally specify a size for the stack, only a minimum likely to make Infocom story files playable. Moreover, the ZMSD does not specify how the stack is to be stored: on most interpreters it holds both explicitly stacked values and also stack frames of routines, but Zoom keeps its stack frames elsewhere, for instance. This unfortunately means that story files crashing out on one interpreter may work fine on another. We ask that interpreter-writers raise the stack size as far as sensibly possible. On genuinely small machines, this could be a waste of memory, but at any rate please ensure a stack of no lower than 16K in size, and if memory is not a concern then please allow 64K or more, just in case. 2. Blorb and Babel Inform 7 produces blorbed Z-code story files with the file extension ".zblorb" by default: inside are ".z5", ".z6" or ".z8" story files. The blorbs comply with v2 of the Blorb specification, http://eblong.com/zarf/blorb/blorbtmp.html and contain bibliographic data and, often, also cover art compliant with the Treaty of Babel: http://babel.ifarchive.org/ Note that Babel provides an API capable of extracting the contents of a Treaty-compliant blorb, and reading any useful information from its bibliographic data (e.g. the title and author), for very little coding overhead.