BBC Micro Z Machine Interpreter v5 - simondotm/stardot-wiki GitHub Wiki
This software is copyrighted freeware and can be used for commercial or non-commercial purposes.
PROJECT STATUS: On Hold.
The initial version will be written in BBC BASIC. This will require an ARM co-processor (emulable in BeebEm) or a machine running Risc OS to run, and will be very slow. UPDATE: The BASIC version is pretty much done with and is available to download below.
This version will feed into the development of a native 6502 assembler version, which is aimed at a BBC Micro Model B+ or Master 128 with a standard Acorn DFS disc drive. Features below will be implemented based purely on how much memory is available, how fast the assembled version runs, how much slow-down the disk interaction causes etc.
The assembled code will be supplied as a ROM image. Cassette support is not possible due to the size of Z-Machine games (v5 games can potentially reach 256 KB). Games will instead need to be stored on a standard Acorn DFS disc. Exceptionally large games (> 200K) will need to be split across a double-sided disc.
One of the biggest limitations of fitting an interpreter for the larger v4 and v5 games into a machine family as small as the BBC Microcomputer range is that there isn't a lot of memory available for Dynamic Storage, which is the section of memory which is constantly written to to keep track of the status of your game. If this area was left on disk, the game would be extremely slow to play. Consequently, the ROM will run in MODE 0 and use all 64K of sideways RAM for dynamic storage plus all the main memory for cache. This should allow it to play v4 and v5 games, hopefully even those that require the largest amount of Dynamic Storage, such as ZDungeon, Curses, Beyond Zork, A Mind Forever Voyaging and Trinity.
TESTERS: We require testers to playthrough games they are intimately familiar with (or are prepared to follow a walk-through). Please volunteer in the forum, if you're willing to try out any of the games listed in the testing matrix below:
Discuss BBC Micro Z-Machine Interpreter
Use Inform 7 to develop games for the BBC Micro Model B+ / Master 128 and many other modern platforms.
Feature |
Used in Z-Machine Version(s) |
Inform 'Available if' test |
Likely to be included in BBC interpreter? |
---|---|---|---|
Full conformance to Z-Machine standard v1.0 |
- |
- |
? |
Full conformance to Z-Machine Standard v1.1 |
- |
- |
? |
Support for Z-Machine v3 |
3 |
- |
YES |
Support for Z-Machine v4 |
4 |
- |
YES |
Support for Z-Machine v5 |
5 |
- |
YES |
Support for Z-Machine v6 and above |
6,8 |
- |
NO |
auxiliary files |
5,6,8 |
(true) |
? |
coloured text |
5,6,8 |
((0->1) & 1 ~= 0) |
Partial (2 or 4 colour selectable modes) |
input streams |
5,6,8 |
(true) |
? |
menus |
6 |
(($10-->0) & 256 ~= 0) |
NO |
mouse |
5,6 |
(($10-->0) & 32 ~= 0) |
NO |
output streams |
5,6,8 |
(true) |
? |
pictures |
6 |
(($10-->0) & 8 ~= 0) |
NO |
sounds |
5,6,8 |
(($10-->0) & 128 ~= 0) |
NO |
throw/catch stack frames |
5,6,8 |
(true) |
? |
timed keyboard interrupts |
5,6,8 |
((0->1) & 128 ~= 0) |
? |
Bold / Italic Text |
5,6,8 |
- |
? |
Quetzal portable save-games support |
- |
- |
? |
Limited Blorb Support (ability to extract Z-code file from blorb file and play it) |
- |
- |
? |
BBC Micro Z-Machine Interpreter - BASIC program on disk image
(BBC BASIC, requires ARM co-processor to run)
Latest "unofficial" release.
http://www.g7jjf.com/progs/zmach.zip
BBC Micro Z-Machine Interpreter - prototype combined ROM image on disk image
(6502 assembled machine code, all V3 opcodes implemented and the majority of the V5 opcodes)
Latest "unofficial" release.
http://www.g7jjf.com/progs/zcode.zip
BBC Micro Master 128 version of Z-Machine Interpreter running a Z-code port of the original 350 point Adventure / Colossal Cave by Crowther & Woods with a traditional green font colour Posted: Sat May 31, 2008 16:17 |
[[Image:BBCMasterZMachineInterpreter-TheHobbitz5.png|375px|'''BBC Micro Master 128 version of Z-Machine Interpreter running IntroComp 2005 entry The Hobbit in the colour style of BBC micro adventure The Lord of the Rings: Game One Posted: Sat May 31, 2008 16:33]] Posted: Sat May 31, 2008 16:33'' |
{| cellspacing="20 px" |+ Commercial Infocom Games ! Game !! Filename !! Z-code
Version !! File
Length !! Tested First Few Moves !! Tested to
Completion On Date !! Tested with
BBC Interpreter
Version !! Tested By !! Dynamic Storage Size |- ! MILLIWAYS: The Restaurant at the End of the Universe Prototype (v. 15.880512) | milliways_release15.z4 || v4 || 92,928 || - || - || - || - || 6,333 |- ! A Mind Forever Voyaging | amfv.z4 || v4 || 262,018 || - || - || - || - || 31,691 |- ! Bureaucracy | bureaucr.z4 || v4 || 243,341 || - || - || - || - || 18,207 |- ! Nord and Bert | nordandb.z4 || v4 || 170,285 || - || - || - || - || 14,852 |- ! Trinity | trinity.z4 || v4 || 262,065 || - || - || - || - || 37,726 |- ! Beyond Zork | beyondzo.z5 || v5 || 276,480 || - || - || - || - || 25,720 |- ! Borderzone | borderzo.z5 || v5 || 178,373 || - || - || - || - || 21,562 |- ! Sherlock | sherlock.z5 || v5 || 188,445 || - || - || - || - || 16,441 |- ! Leather Goddesses of Phobos Solid Gold (4/880405) | leather.z5 || v5 || 159,928 || - || - || - || - || 15,145 |- ! Hitchhiker's Guide to the Galaxy Solid Gold (31/871119) | hitchhik.z5 || v5 || 184,320 || - || - || - || - || 15,156 |- ! Planetfall Solid Gold (10/880531) | planetfa.z5 || v5 || 136,560 || - || - || - || - || 17,435 |- ! Wishbringer Solid Gold (23/880706) | wishbrin.z5 || v5 || 164,712 || - || - || - || - || 15,424 |- ! ZORK I Solid Gold (52/871125) | zork1.z5 || v5 || 105,264 || - || - || - || - || 15,166 |- |}
{| cellspacing="20 px" |+ Games available from the IF Archive ! Game !! Filename !! Z-code
Version !! File
Length !! Tested First Few Moves !! Tested to
Completion On Date !! Tested with
BBC Interpreter
Version !! Tested By !! Dynamic Storage Size |- ! Colossal Cave / Adventure
(350 points) | Advent.z5 || v5 || 138,240 || - || - || - || - || 17,864 |- ! Conan Kill Everything | ConanKillEverything.z5 || v5 || 91,136 || - || - || - || - || 5,645 |- ! Crobe | Crobe.z5 || v5 || 89,088 || - || - || - || - || 16,311 |- ! Countdown to Doom | CtDoom.z5 || v5 || 132,608 || - || - || - || - || 16,419 |- ! Curses | curses.z5 || v5 || 259,072 || - || - || - || - || 26,163 |- ! CZECH | czech.z5 || v5 || 13,312 || - || - || - || - || 2,001 |- ! Fyleet | Fyleet.z5 || v5 || 137,728 || - || - || - || - || 23,673 |- ! Interactive Fiction: Quake | quake.z5 || v5 || 133,120 || - || - || - || - || 9,418 |- ! Last Days of Doom | LDoDoom.z5 || v5 || 200,192 || - || - || - || - || 9,418 |- ! Return to Doom | RtDoom.z5 || v5 || 179,200 || - || - || - || - || 18,150 |- ! Scott Adams' Marvel Adventure: Hulk | HULK.z5 || v5 || 25,600 || - || - || - || - || 6,564 |- ! Scott Adams' Marvel Adventure: Spider-man | SPIDERMN.z5 || v5 || 27,136 || - || - || - || - || 8,016 |- ! Strict Z Test | strictz.z5 || v5 || 4,096 || - || - || - || - || 1,509 |- ! TerpEtude | etude.z5 and gntests.z5 || v5 || 16,896 and 7,168 || - || - || - || - || 1,514 and 1,216 |- ! ZDungeon | zdungeon.z5 || v5 || 188,928 || - || - || - || - || 32,019 |- ! Zork - The Cavern of Doom | cavern.z5 || v5 || 133,120 || - || - || - || - || 7,967 |- ! Zork: The Undiscovered Underground | ZTUU.z5 || v5 || 102,912 || - || - || - || - || 10,445 |}
Not released yet