Vezza, a new Z-Machine for CP/M

This is Beyond Zork running on my real Premium 128k Microbee using a Gotek.

6 Likes

With all of the other features, I’ve pulled together an experimental Osborne 1 version vezza-O1.com. I have no idea how nicely the BIOS plays, so I’ve taken the slower, push all the stack option. I also can’t really properly test it as I am not sure where to find a reliable emulator (there seems to be MAME files but haven’t figured out how to get it working yet), and I don’t have access to a machine. Do you have access to a machine or emulator? Is so, are you able to help test? Ultimately I would love a photo of a z5 game running on real hardware.

1 Like

Update: I have MAME working, but only with single density disks. 90KB of storage on a disk is a significant restriction. I have also noticed that I can’t get underline to work at all (possibly an emulator flaw? or documentation doesn’t reflect all hardware capabilities?) Anyway, here’s Balances running on an Osborne 1 on MAME, in full screen width glory - I did have to adapt the code to handle “bold” but no reverse. Any guidance on emulated vs real hardware, and how to use the double density feature, would be greatly appreciated:

1 Like

Vessa-MB running fine with Beyond Zork on MAME as a Microbee Prem 128k

and Vessa-MA running fine also with Shogun on MANE as a Microbee 64k

2 Likes

Awesome! I’ve also managed to get the Bondwell 12 version running, although the double-sided disk format for the Bondwell 14 seems to elude me. I still have questions about the accuracy of some of these emulationns.

1 Like

Very cool! One of my family members has an Osborne, so I’ll see if I can get it running.

Many Osborne users today have upgraded double-density drives, although the original shipped with dual single-density drives by default. That pretty much limits you to Zork 1-3 without disk swapping (one of the reasons I floated the idea of a dual-disk read option).

2 Likes

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:

1 Like