The Z-Machine is a virtual computer for running text adventure games stored in "story files". Originally developed by Infocom in 1969 for their games, the Z-Machine is considered to be one of the first uses of virtual memory. Both the Z-Machine specification and tools for developing story files are now publicly available. As a result there are now many implementations of the Z-Machine and a large number of story files available for free download.
As well as Windows and Linux versions of the Z-Machine, there are a couple of implementations for Z80 machines:
I have a first draft of a port to the MTX. It at least partially works, but it is horribly slow. I can see a few ways it might be speeded up a bit, but whether enough to make it reasonably playable I don't know. This raises a couple of questions.
Is it worth continuing with? If you just want to play the games, use one of the Z-Machine implementations for modern machine. The port is only worthwhile if you want to play the games on real MTX hardware.
What MTX specification to target in attempting to speed up the software?
- MEMU - No point, as above.
- Standard SDX. This is probably the largest number of potential target machines, however it has the least options for speeding the software. A disk drive is essential as story files can be up to 512KB. The drive is likely to be heavily worked by the virtual memory. Also, the Z-Machine standard recommends a minimum screen width of 60 characters, which would require using skinny characters as per Andy's SCPM ROM.
- SDX with extra 512K of RAM. The RAM could be used to provide the Z-Machine virtual memory (not a RAM-disk) speeding the software. However, as Andy has found, there are at least two versions of the 512K RAM expansion in SDX drives:
- One where the extra RAM is available in both SDX and CP/M modes, but is not correctly mapped in CP/M mode.
- One where the extra RAM is correctly mapped, but only accessible in CP/M mode.
- Standard CP/M. This at least provides 80 character wide screen. The disk drive(s) can be used for VM. This is the target for my current draft port.
- CP/M with 512K RAM expansion. Again using this extra RAM directly (not as a RAM disk) could improve speed, but also raises the issue of the different RAM mappings.
- CP/M with Silicon Disk (includes the CFX-II). Accessing the Silicon Disk memory directly (not as a disk drive) could also speed the VM, but not as much as 512K paged RAM. It would require a different version of the software.
