I’ve made a z-80 based terp with CP/M 3 as the target system. I’m hoping for some help with testing as well as ideas for what else can be implemented within the constraints of the system(s). While there’s a list of things I’d like to do, I’m open to feedback to see where the interest is, which may help prioritise.
Supports z1-z8 (z6 is limited to non-graphics)
Faster than the original Infocom interpreter
Named file save/load
Timed input (1 second resolution)
It takes the optimisations and extensions I’ve developed through the M1/M3/M4ZVM terps, making a highly portable and efficient terp. System constraints has lead to some compromises on the way, which are listed on the link below.
Big thanks go out to Stefan @8bit_era for testing and encouragement to get this happening!
The best use case is any game that has a 1-row status line which is redrawn just before the turn prompt is displayed. PunyInform is ideal for this, including z5 games. Features of the VT52 terminal make it difficult to achieve more visually. Other terminals are also on my later targets list.
I’ve made binaries available for 3 configurations:
Turns out that with appropriate terminal emulation features (in this case HGT, I can’t see these features on the VT-52 emulations I’ve seen) and a banked version of CP/M, I can use the banked version to increase the available DynMEM and the terminal features to control scrolling issues, and Beyond Zork becomes feasible under CP/M.
Extremely low quality video of a system demonstrating the whole loading procedure. Note that the system here is a CPU280 with a z280 @ 12MHz, running ZCPR3. I’m also using an HxC2001 as my floppy drive (hard disk on this machine is currently unavailable).
Once I’m confident enough with this change, I’ll update versions available on my Gitlab site.
So this turns out to be a nontrivial question. I’m using Werner Muenchheimer’s port of CP/M 3 to the Apple II Softcard (to my knowledge this is the only version of CP/M 3 that runs on the Softcard, although there are many ports of CP/M 2.2). This distribution provides terminal emulation via EMULA, but with very little information about what, exactly, this is emulating. Running software that expects a Soroc IQ-120 seems to almost work, but not quite; there is an assembler source file (SOROC.MAC) on one of the disks that might be helpful, but I’ll have to look more at that later. (The emulation might also just be incomplete.)
Thanks for the interest! Is there currently a way to run Vezza in any kind of “dumb terminal” mode? I’m not seeing any documentation on (e.g.) command line options.
(If you’d like to tinker with this, AppleWin supports Z80 Softcard emulation.)
UPDATE EDIT: I think it’s emulating a Videx Videoterm, which is also the default option for CP/M 2.2 on the Softcard.
Thanks for that! I haven’t yet pulled together a dumb terminal mode. I was wondering what the interest would be in that - I assume that means no status line at all. Do you think that would be useful?
I think I found some documentation on Videx Videoterm. If I understand correctly, inverse text/highlighting is an optional expansion only. Is that common? Also it looks like you can’t turn off line wrapping so I’ll need to have a think about whether I can go 80x24 or if I settle for 79x24. I can see there’s a code for positioning the cursor which is nice.
There are 3 routines I’m currently relying on which are only in CP/M 3 - including timed input. CP/M 2.2 is on the roadmap although it needs me to write some workarounds for what I’m using. I’ll take a look at the emulator you’ve mentioned and see if I can get that to go. Thanks!
EMULA does seem to emulate inverse text (at least, WordStar properly displays inverse text when running in Soroc mode, though not when in Videoterm mode - I imagine it just doesn’t try, for compatibility reasons).
I’m always a fan of dumb terminal modes for compatibility - it opens up the option to run it on any obscure CP/M system with a nonstandard terminal. But of course, status lines are preferable when feasible.
So… I’m trying EMULA, and it almost seems to be a SOROC-120. The Vidtex terminal codes didn’t seem to work properly. With SOROC-120 I get some success, however, there’s clearly something else going on. Also I have no idea how to get inverse text as the SOROC does not support it. If you can point me at the terminal code definitions, I can keep digging.
From the Softcard documentation it seems that Apple II CP/M 2.2 has a sort of termcap functionality to interconvert between different terminal modes, but it only supports a limited subset of escape codes. Apple II CP/M 3 doesn’t ship with the same configuration tool, but as far as I can tell the defaults are the same as in CP/M 2.2 (which identifies this as “Soroc IQ 120” mode):
I can confirm that the ESC+( for inverse text does seem to work. The SOROC.MAC files, etc. on the CP/M 3 disks seem to be source for small tools that redefine the termcap tables in memory, similarly to how the configuration tool works on CP/M 2.2 - but presumably just supporting the default would be ideal.
Okay so it turns out that the character glitches above are fixed if you select that you have the hires card.
So in summary, to run on the Apple II, you need the Softcard, CP/M 3 and the hires card, run EMULA set to Soroc 120/240 (which seems to be the default), it works perfectly!
As discussed elsewhere, the above Soroc terminal codes are the same as used by the Microbee except for the CLEAR SCREEN, that uses 1Ah rather than the ESC *
I tried the VEZZA-SO on the Microbee CP/M3 disk and I get to when the file is loading then a black screen, as expected.
Thank you! I couldn’t get the patched cpmtools to give the right response yet, but I could get host2cpm to work. Does the CP/M need to load something to set which terminal type it is emulating? I read somewhere that colour ANSI is supported? If that’s the case, I’m happy to attempt to go straight there and squeeze the full experience out of the system. These are the results with the Soroc version which makes me think if ANSI is supported, I might as well go straight there: