Vezza, a new Z-Machine for CP/M

Thanks for that. The double density as defacto standard makes sense to me Great news on the real hardware front too! Happy to provide you with an image of the 40tk SSDD disk I’m booting on the Osborne 1 on MAME for the screenshot above if that’s of any use?

1 Like

In Osborne 1 related news, I’ve been able to make the display even better. I found a reference to the actual underline codes which worked, and have been able to selectively apply the underline codes to only the bottom row of the status (upper window). I’ve uploaded the new version. I think it’s nicer than using the underscores. The results look like:

3 Likes

I would love to try this on Zesarux or Fuse emulators.

How would I do that? Is it a .tap file?

It’s a z-machine for CP/M… so one way to use it is just drop the 51-varient onto a disk file and run it on a Spectrum +3 after loading up Locomotive’s CP/M+.

I don’t think Shawn’s Github yet includes the very cool 48K tape version he’s been playing about with (which has severe limitations in the size of games it can cope with).

2 Likes

Cool thanks for the info.

If the intention was to use it on a +3 (without CP/M) then you could also check out ZXZVM…
https://www.seasip.info/ZX/zxzvm.html
…which I think Vezza might be adapted from?

There are a lot of pre-built ZXZVM versions of Inform/Infocom games for Spectrum +3 in the archives already…

1 Like

Very awesome thanks.

Vezza is a major rewrite focusing on speed. It only has a loose connection left to zxzvm code.
Improvements include:

  • Much faster execution of games (Vezza is faster than the original infocom interpreter)
  • Reduced disk I/O (I’ve added an efficient LRU disk cache to reduce disk wear)
  • Support for z1/z2/z7 (and even experimental z6 support)

Let me know if you need a hand with packaging up games!

3 Likes

Thanks

The Spectrum 48K version is really interesting from a technical standpoint. Does it still rely on some CP/M components or are you just running the Vezza code in a more native way, with it just pulling data from memory rather than needing any of the disk-related stuff?

1 Like

To achieve the 48k spectrum version, your hunch is correct. I rewrote the front end to use the ROM for screen and keyboard, and to have the entire game in a single file which is why there’s a very strict size limitation. I’ll share some .tap files and start a separate thread on this forum with the URL and some introduction as it has a few different compromises in the approach that warrants a separate thread.

Created a new thread here

1 Like

Miinor update for most versions downloaded since 8-Oct. A workaround for the Atari800/DT80 made its way into other versions, causing some minor slowness during initial load on real hardware (or 1xdisk speed emulation). This has been corrected in the most recent update - let me know if this causes any strange side-effects.

2 Likes

I think Shawn already pointed this out but Vezza is remarkably different to ZXZVM and is heavily focused on performance. Which ZXZVM is not unfortunately. Vezza performs as fast as the original Infocom interpreters, even faster in many cases.

I would always recommend to use Vezza instead of ZXZVM.

For CPC, the changes are even more significant because we have Vezza running on an unexpanded CPC and it runs much faster as Infocom’s own interpreter. CPCZVM, on the other hand, which was derived from ZXZVM needs RAM expansions and still is very slow. Vezza is the first intepreter also supporting later Z-machine versions (v5 probaby the most important) on an unexpanded machine :slight_smile:

2 Likes

Thank you @fos1 so much for testing and getting some success on your RC2014 SC-126. The version that worked on your machine (with some extremely minor tweaks) is up as vezza-RW.com on Vezza. Please feel free to let me know if you find any issues!

1 Like

And for anyone who runs CP/M on a brand new Agon Light. I’ve pulled together a version that takes advantage of the available colours & fonts. The implementation of CP/M at this point on that machine is very early development at this stage, so I’m seeing some strange behaviour on more action games with high I/O like “A Tight Spot”, but the I’ve tested adventures seem to be working well. It’s uploaded as vezza-AX.com on the same site.



I don’t know how I missed this thread back in September. At that time, I was very engrossed in writing my first game for EctoComp. The SC126 is my goto retro computer. It is the best of all of the RC2014 versions. With Vezza I am able to play just about any game in the z-code format. Thank you.

4 Likes

Just saw that this hasn’t been answered yet I believe. The Vezza 48k Spectrum version does not rely on CP/M. The Vezza code is run in a more native way.

1 Like

Yes, Shawn did talk about that aspect. There is an additional thread for the “embedded” version of Vezza, for the Spectrum 48K, for those that are interested…
https://intfiction.org/t/embedded-vezza-z-machine-recut-for-retro-tape-based-small-memory-footprint/

2 Likes

I’ve been working to polish Vezza to squeeze as much as possible out of 8 bits for the best z-machine performance on a z80:

  • I’ve updated a number of platforms to have the same core speed updates as the M4ZVM interpreter, and as I get time to test the rest they will also be uploaded.
  • I have combined the MSX1 and MSX2 binaries to a single file which detects the model and sets the screen correctly (speed update included)
  • I have combined the CPC and PCW versions to a single binary (speed updated included)
  • I have added Amstrad accented font selection for the CPC/PCW version as well as the Spectrum 3+ version
  • Updated binaries are available in the usual place sijnstra / Vezza · GitLab
  • I have made easy-to-use boot disks available for the MSX1/2 and the CPC/PCW versions at Vezza by sijnstra
    one step closer to helping @8bit_era upgrade PuddleTools!

Same boot disk for MSX 1 & 2 (Using @ChristopherDrum version of Nord and Bert)

Same disk for both CPC and PCW (Showing @mulehollandaise game Ma princesse adorée)

9 Likes