As a surprise Christmas gift to #retrocomputing, I've pushed out a new version of my #Vezza #Infocom #zmachine #interpreter. This time it's a #CP/M build, specifically for the #TRS80 models 2/12/16... on glorious 8-inch floppies. My requestor and tester Ziggystar12 was kind enough to take a photo of Bureaucracy running on a machine with the 8-inch drives; a game that could never be run on that machine before even though it was contemporary! #retrogaming #retroBattleStations
Another fine #z80 machine is the Tiki-100, hailing from Norway and running an OS that was compatible with #cp/m 2.2, called TIKO. This one has a pixel-based display which is rendered by the character out BDOS calls, making it a little slow, but still a lot of fun to work with. The boot disks and emulator are all Norwegian which was a fun challenge. The testing process also uncovered that the emulator has a timer bug, so the timing is different to that on real hardware. In the end, it all worked rather well. I ended up using the one colour highlight available to simulate bold text, bringing my #Infocom #Inform #Z-machine interpreter #Vezza to yet another machine. Download the binary from https://gitlab.com/sijnstra1/vezza

And in-between times I am playing with a new (to me) Z-Code interpreter called Vezza in RunCPM.

So far so good... Running all my favourites (inc all the Zorks), so far as high as some Z5's.

Loving an easy single interpreter that I can just chuck data files at as CMD line parameters!

https://sijnstra.itch.io/vezza

And/Or

https://gitlab.com/sijnstra1/vezza

#infocom
#zork
#planetfall
#RunCPM
#Vezza

Vezza by sijnstra

More Infocom for 8 bit z80 retro consoles

itch.io

The Grundy #NewBrain was an interesting #z80 based machine from 1982. One of its more remarkable features was a built-in single line display in addition to the video out, allowing for some portable use. The machine was targeted at business use and didn't get a large amount of platform specific software. It ran a version of #CP/M 2.2 with an efficient implementation giving it a large TPA. The platform also supports inverse characters, although without a specific control code to toggle so I need to manually track reverse character mode and toggle the top bit accordingly. With some gymnastics in memory management, a 50Hz timer is available, allowing me to count the ticks for the 10Hz timer expected by a full featured #Zmachine
Now that it's properly tested and running, you can download the latest addition to the #Vezza family from https://gitlab.com/sijnstra1/vezza and if you are curious about the NewBrain you can get the emulator and other info from https://newbrainemu.eu/new/

I've attached screenshots of the Bomber game in action, as well as the #Infocom classic A Mind Forever Voyaging.

While porting #Vezza for another #z80 platform (the Grundy #NewBrain), I noticed that there was an issue with the timer routine for the #MSX version. It turns out that the code was in there for the MSX version was using the MSX clock, however, it was not calculating the time properly, The MSX has a fine-grained timer which allows me to measure the time to the nearest 0.1 second as required for the #Zmachine standard. This makes the MSX version one of the few that I have written which supports the full fine-grained time requirement.

While for normal text adventures, this timer resolution might not make much difference, some of the fun post-#Infocom games, this distinction is used. One of the games that I've tested which works properly now is the `bomber.z5`, a real time game where you need to drop bombs from the plane to create a flat landing for your plane. Check the screenshot below for the action! Download the latest from https://sijnstra.itch.io/vezza
#retrogaming #retrocomputing

Back to fun platforms to port my #Vezza #Infocom #Zmachine interpreter - this time it's the Enterprise 128. A 4MHz #z80 machine from the mid 80s, it has a great emulator, and a bespoke DOS known as IS-DOS, with a lot of compatibility with both CP/M 2.2 and #MSXDOS. While it needed quite some tweaking, a lot of the heavy lifting was done with my original #MSX version before it was optimised. As I understand, the #Enterprise128 didn't have a great library of games for it, so hoping this helps! Get it while it's hot at https://gitlab.com/sijnstra1/vezza Screenshots are the IS-DOS 1.0 version running Border Zone, and the IS-DOS 1.1a version running Beyond #Zork.
sijnstra / Vezza · GitLab

CP/M z-machine/infocom/inform game interpreter.

GitLab
Another wet weekend, another #Vezza release! I was asked to adapt my #Infocom interpreter to another platform - this time the #SinclarQL. An interesting request as it uses a #Motorola 68008 CPU, however, it does have the ability to emulate a #z80 on #CP/M. I was given some pointers on which versions worked to some extent, along with some documentation. Fast forward a few days and I had adapted one of the VT52 versions crossed with other features, and now #Sinclair QL users can enjoy in CP/M mode their #Inform #ZMachine adventures. Yes, there's a native terp as well, however, this was only a few days worth of massaging to get it to work on the SUCCESS CP/M Emulator - the proof is in the screen shots. You can download the executable here https://gitlab.com/sijnstra1/vezza/ #retrocomputing #retrogaming
sijnstra / Vezza · GitLab

CP/M z-machine/infocom/inform game interpreter.

GitLab

After much testing and code comparison, the new Feb 2025 Release of #Vezza - my #z80 high speed #zmachine is ready! Took way longer than expected to synchronize across all of the code bases, particularly making sure that all optimizations made it across all platforms - TRS-80 model 1, TRS-80 model 3, TRS-80 model 4, the CP/M versions (~18 platforms), the embedded versions (Spectrum tape, TEC-1G), and slowly pushing into the Agon Light version (which has even more updates still in progress). Lots of individual tweaks, and some major rethinks and rewrites have come together to accelerate game play.

The hardest part of rewriting in this update involved rewriting the dictionary search code. I ended up going back to the original jzip interpreter, written in C for Unix waaay back when. Jzip provided much of the logic that went into ZXZVM, which provided the base for #M4ZVM #M3ZVM and #Vezza. Going back to Jzip made sense as Jzip has an even longer history; and is highly tested and stable and still maintained. This research gave me the confidence that the streamlining and changes I was making to such a fundamental part of the game would work, making all inputted dictionary searching more efficient.

To work around how CP/M stores executable files I spent a lot of time re-organising the memory map to make the executable smaller. This involved rearranging where the initialization code was stored inside the increasingly complex layout. Support across multiple versions means I needed to break up variable sized code and strings to sit inside variable sized gaps, while still compiling all the CP/M versions from the same interconnected set of source files. It needed quite a few manual checks to ensure that it all worked.

What this all means is that your favourite #infocom #punyinform and other text adventures will all play on your favourite z80 #retrocomputing platforms even faster than before!

More details in the devlog and downloads can be found at:
#TRS80 versions https://sijnstra.itch.io/m4zvm
#CPM #CPM80 versions https://sijnstra.itch.io/vezza

M4ZVM by sijnstra

Z-machine Infocom interpreter for the TRS-80 model 3 & 4

itch.io
For all of you #TEC1G adventure game players looking for something bigger, better and more... historical, I've beefed up my #vezza #infocom interpreter to use the extra 16K available in EXPAND, which sits behind the other 16K from 0x8000-0xBFFF. This means that one of the smallest #z-machine ports of Scott Adams 1978 classic game #Adventureland is now playable on a TEC-1G (with keyboard and GLCD). With the extra RAM being used, it makes the loading a little more involved as it needs to be loaded in two parts, switching the EXPAND ram in to load part 2, then back to loading the main game before you can play. Download the components here, along with more description and detailed instructions: https://gitlab.com/sijnstra1/e-vezza/-/tree/main/TEC-1G
TEC-1G · main · sijnstra / Embedded Vezza · GitLab

GitLab.com

GitLab
Now that it's had a little testing other than me (Thanks Brian Chiha!) I'm making my #vezza for the #TEC-1G more readily available, similar to my #zxspectrum .tap files. #zmachine text adventures for all #z80 machines! I've put up 3 sample builds to download and run at .hex files to load straight into the #TEC. Full keyboard and GLCD are required, and I'll be looking to add more features to maximise use of the platform. You can download the .hex files here https://gitlab.com/sijnstra1/e-vezza/-/tree/main/TEC-1G
TEC-1G · main · sijnstra / Embedded Vezza · GitLab

GitLab.com

GitLab