ZXZVM v1.03 Z-machine for the Spectrum +3 John Elliott, 4-6-1999 ===================================================================== I had played a few Infocom games in the late 1980s (running under CP/M on a ghastly Amstrad) -- Graham Nelson, in XYZZYnews 1 ZXZVM is an Infocom interpreter. Essentially, it allows you to play adventure games in the Infocom format; these include those games produced by Infocom themselves, and games produced with Graham Nelson's compiler Inform. Versions 3, 5 and 8 of the format are supported. All known games (except the four "Graphical" games) are available in one of these formats. A lot of games in these formats may be found at FTP server with URL: fttp://ftp.gmd.de/if-archive/games/zcode Or, if you don't like FTP servers, a number of HTTP mirrors are also avaliable, for example: http://www.ifarchive.org/indexes/if-archiveXinfocomXgames.html http://bang.dhs.org/if-archive/if-archiveXgamesXzcode.html If you manage to find a bug in ZXZVM, please let me know, giving me enough information (possibly in the form of a savefile) to reproduce it. IMPORTANT: The format of the saved position file has changed in this version of ZXZVM. Positions saved with this versions are not compatible with previous versions, though old saved positions can be loaded by this version. Loading ZXZVM ============= ZXZVM is supplied as: * A .DSK file * A .TAP file Either: + Run the .DSK file in a +3 emulator (or copy it on real +3) then load ZXZVM.BAS file to start Z-machine Or: + Run the .TAP file and insert a blank disk (or DSK file). It will create a copy of ZXZVM on the disc. On the DSK file 3 demo Z-files are also included: MiniZork: A reduced version of well known Zork game (this was in fact cassette version of Zork for Commodore 64). Eliza: A version of well known program which simulates a conversation with a psychiatrist ported to Z-code by Ricardo Dague. Bomber: Although Z-machine is developed strictly as virtual machine for adventure games, this is a Z-machine version of the classic Mad Bomber arcade game, by Neil James Brown. This game is included here to show quality of the interpreter (only welldone interpreters can interprets such tricky code). There is no any sample files on the TAP file. You must download them separately. Do not remove the game disc while playing any game! Features (both positive and negative) ===================================== ZXZVM attempts to emulate a full v3/v5/v8 Z-machine, except: * No bold text nor font colours. * No UNDO command (a memory constraint). * No sounds other than a beep. * No Unicode support. It does support: * Timed input to within 1/10 second. * The graphics font (no. 3) * Accented characters for output. Accented characters cannot be entered. The interpreter number is currently 7 (ie, ZXZVM is pretending to be a Commodore 128). The version is 'G'. The save-file format is not compatible with Quetzal and does not compress the saved data. ZXZVM was written to version 1.0 of the Z-Machine Standards Document. It does not claim compliance with it, because it does not implement Unicode support. Known bugs ========== The text formatting in the Mystery Science Theater(sic) games is wrong; quips come out wider than they should. Bug fixes and enhancements in this version ========================================== * The screen size is reported correctly (noticed in SameGame). * Single-drive computers can now save positions to the notional B: drive. * If a message was stored just before Z-address 64k, it was possible for it not to print correctly (for example, in The Awakening). This has now been fixed. The Wish List (in approximate order of priority) ================================================ * Support for the "multiple discs" header bit; this would allow bigger games to be squeezed into an unexpanded +3 or PCW8256. * Support for setting the Tandy bit and interpreter number. In fact, you can set the interpreter number already in the Spectrum version; the command is POKE 28675,n. * Support for v1, v2 and v4 games. * Unicode support. * Support for v6 and v7 games. Acknowledgements ================ Thanks to: * Graham Nelson and those who deduced the Z-machine specification. * John Holder and the authors of Jzip; several routines in ZXZVM are hand-compiled from the Jzip source code. * Erik Kunze and the authors of XZX, the Spectrum emulator under which ZXZVM was developed. * Cliff Lawson and Richard Wildey, for PCW16 programming info. * Those on the Z-machine mailing list, for general advice. * Jacob Nevins, Garry Lancaster and Zeljko Juric, for bringing bugs to my notice.