Vezza, a new Z-Machine for CP/M

I use HOST2CPM and CPM2HOST myself, much easier to use than CPMTools. The Terminal the bee uses for CP/M is built into the CP/M code. But I know ANSI can be emulated, as I’ve seen an under development TELCOM that has ANSI support to allow connections to Telnet BBS’s.

The Microbee can currently run any Z3 infocom file, its the ability to run Z5 files I’m after as they seem to be abundant. This is Mini-Zork I and II as they currently run on the 'bee.

Alan

2 Likes

and II

2 Likes

Thanks for sharing! Looks like I left in the apple/soroc version a workaround to fix a cosmetic issue on the CPC implementation of the vt-52. Try again and let me know if that fixes it?

Yep, that fixed it. Thanks!

2 Likes

Hi Alan,

Appreciate the goal is to run games previously not available - the screenshot provided is just an example of how the text renders, which is the next problem to solve. The terminal codes in use are different to the Soroc IQ 128 as I also get exactly the same problem with running a z5 - see screenshot below. I need to find out which terminal the MicroBee is emulating so I can use the correct terminal codes to make the most of the platform. It’s a much more feature rich platform than the z3 version, which is why configuration is a lot more involved than the original Infocom z3 interpreter.

2 Likes

Here is a scan of the Microbees Terminal codes its knows

2 Likes

Thank you for that list! I was able to use that to come up with a slightly different way of scrolling the lower window. The up side is that it now works as expected, and the status line (or even multi-line upper window) does not scroll off, with one exception - if the row at the bottom goes the full 80 characters. I can’t find a way to turn off auto-feed, so I could either make it 79 columns which causes other issues for games expecting the full width, or leave it as-is.

I will upload the binary shortly. here’s a sample screenshot:

3 Likes

After some further testing, looks like it’s better to shave off the last column to get the best cosmetic results. It’s been uploaded as vezza-a3.com - let me know how you go! I forgot to enable the code that allows the Seastalker sonarscope to work. I’ll upload that later after this version gets more of a test run.

It was AMFV which made me go with the shaved off column - it comes out well this way:

additional: Beyond Zork also looking good

4 Likes

Looks like for many terminals I’ve figured out how to overcome the cosmetic issue. Out of the various builds now downloadable, it’s only the Soroc IQ 120 terminal that doesn’t support the necessary codes to maintain the status line. The VT-52 works very well (as expected when I think about it…) and the ADM-3a is close but is missing codes to support the full width. The HGT which largely uses more advanced Televideo codes now works in a more simplified way.

image

1 Like

Just for fun, here’s a real-hardware demo on the Apple II (with bonus Appleception):

3 Likes

Thanks Shawn, yes looking good. I tried BeyondZork and its looking great as well. Tried a few other recent smaller Z5 games and they all seem to run okay as well. Thanks for your efforts in getting it running on the Microbee, much appreciated. The size of these Z5 files are huge, like BZ is 270kb, AMFV is 256kb so looks like I will only be able to just fit 3 games on a Microbee 786kb disk if I’m lucky. These 2 games running

2 Likes

and

3 Likes

I tried to run TRINITY.Z4 but get this error of exceeding max DynMEM of 32k ?? I then tried ZORKZERO.Z6 and appears the Score get wrapped to the next line, is that a 79/80 line issue ? Sorry I cant add any more pics or posts as I’m a newbie here :frowning:

1 Like

Hi Alan, all good! Let me take you on a still-going journey…

There is an interesting trade-off with these games inside the CP/M memory model. With the z80 addressing up to 64K directly, one of my design decisions was to not build any direct paging of memory. I wanted the code to be both fast and portable. That comes at a cost. The z-machine/infocom game format allows for up to 64K of memory to be used to store read/write variables such as object status and location. This is Dynamic memory or DynMem for short. Most games use way less than 64k - most Infocom games are under 22k. I store that in memory for speed reasons. Memory also is used for the executable itself, disk cache and multiple stacks.

The challenge is where to draw the line for performance. I would love Trinity to also work and I think that a banked CP/M might just have enough memory to make it playable. Now that the code is starting to settle down, I will be looking again at the memory map to see if I can make Trinity fit and be playable.

p.s. out of all of the Infocom games, Trinity is enormous in use of Dynamic Memory (37k). On my model I/III version, as well as non-paged CP/M, you’ll also find that Beyond Zork and AMFV are also too large.

3 Likes

For the Microbee I’ve added the ANSI colour selecting codes, which work well with Beyond Zork, however, they cause a lot of issues with z6 games which will take more research. The binary is available as vezza-mb.com if you want to try it out.
Updated image (binary also updated now) - looks like I can add “bold” to the supported text types:

2 Likes

Woohoo, looking good :slight_smile:

3 Likes

Wow! I’m going to have to figure out where I stashed my P112.

1 Like