Updates on Vezza and MxZVM - z80 z-machine/inform

It’s been a while (2 years!) since I posted an update here for Vezza/MxZVM - my z-machine interpreter for z80 machines (mainly CP/M machine but see the list below), so it is probably time to re-cap and provide an update.

As a reminder, here are the high level features (details in the links):

  • Can play z1-z8 format games (noting z6 is a really cut down and a bit of a dice roll)
  • Full use of screen width where possible
  • Use of highlighting or substitutes where possible
  • Accented characters are translated (including to correct accent symbols on some platforms)
  • Command line switch to optionally enable the Tandy bit
  • Named game save and load
  • Timed input (various platform limits apply to accuracy)
  • Has a small LRU disk cache to reduce I/O
  • Allows game with up to 25k Dynmem to run (up to 39K in banked CP/M versions so even Trinity will run)

While releases frequency has slowed down since the early days (thanks to fewer new features needed and bugs still to squash) I spent the past 2 years on 2 things - optimizing the code and adding more supported platforms. (Not going to mention the odd bugs also squashed on the way)

The list of platforms supported is so long and specific due to the nature of supporting the z-machine beyond the z3 game files. With the extra features of the z-machine 4+ games enabling a richer experience with more highlighting methods, timer, and greater control over the display such as multiple line status displays, a much richer set of customized code is needed to make the features work on each platform. The core code is kept separated from the display code, meaning that optimizations to the core code interpreting can benefit all platforms.

If you haven’t updated in a while, do it! The current version is:

  • even faster compared to 2 years ago (at least 6% on computation plus extra cache for more speed),
  • with smaller binaries - i.e. on disk constrained platforms it fits larger game files
  • and last but not least supports larger Dynmem (i.e. more available dynamic memory so more complex games can be played).
  • and ahem also has a few bugs squashed (all edge cases - a cosmetic issue, the timer on MSX was out, and save files filling the disk in a very specific way)

Full details of features and changes are in the CHANGELOG files in the download locations listed at the bottom.

The list of machines supported, each tailored against their individual idiosyncrasies, maximizing feature availability on each one now includes:

  • Agon Light/Console8
  • Amstrad CPC/PCW
  • Apple Softcard CP/M
  • Atari800 with Fujinet/DT80
  • Bondwell 2/12
  • Commodore 128 under CP/M in 80 column mode
  • CPU280 (with HGT graphics)
  • Enterprise 128 (Running IS-DOS)
  • Grundy NewBrain
  • Heathkit (multiple configs)
  • Kaypro (multiple configs)
  • Microbee
  • MSX1&2 (MSX-DOS)
  • Osborne 1
  • RC2014 SC-126 with TeraTerm
  • Research Machines RM380z with COS4.0
  • RunCPM (multiple configs)
  • SAMCoupe (running SAMDos)
  • SinclairQL (running Success CP/M emulator)
  • Spectrum (multiple configs including .TAP file versions)
  • Tiki-100 (running TIKOS)
  • TRS80 Model 1/3/4 (Most popular DOSes including LS-DOS, Newdos)
  • Xerox 820
  • z80-MBC2 (including FabGL)
  • and a few other generic terminal compatible binaries.

There are still more versions in the development pipeline, so watch this space.

Useful URLs to download and get more details are:
TRS-80 executable + source: sijnstra / m4zvm · GitLab (the other models link through from there)
TRS-80 sample disks: M4ZVM by sijnstra
CPC/PCW, Spectrum 3+ and MSX1/2 pre-packaged disks: Vezza by sijnstra
Agon light version: Vezza - Agon by sijnstra
All the CP/M files executables: sijnstra / Vezza · GitLab

9 Likes

Thank you for this. Last year I played Tristam Island on the Amstrad CPC. The bundled interpreter (maybe CPCZVM) crashed in various places during the game, but your interpreter worked all the way through and seemed at least twice as fast, with far less disc use.

3 Likes