Changes

Jump to: navigation, search

Z-Machine

1,330 bytes added, 19 January
/* Technical information */
The Z-Machine is a text based interpreter which runs text adventures made by Infocom and Z-code files.
CPCZVM It is a Z-Machine interpreter available for the CPC. It is a modification of ZXZVM, an interpreter made by [[John Elliott]] for the PCW. The Amstrad version was converted by [[Kevin Thacker]]. There are two versionsdifferent OS.
* A version for CPM
* A version for AMSDOS
* A version for SymbOS
 
CPCZVM is a Z-Machine interpreter for the CPC. It is a modification of ZXZVM, an interpreter made by [[John Elliott]] for the PCW. The Amstrad version was converted by [[Kevin Thacker]]. There are two versions, for CPM and AMSDOS.
 
Zym is a Z-Machine interpreter for SymbOS, made by [[prevtenet]].
 
=CPM version=
CPCZVM for CPM features a virtual memory system supporting both the Z-machines RAM and ROM. Technically it It runs under CPM2.2 and CPM+. CPCZVM has been written to be as compatible with CPM as possible and should run on other CPMs for the Amstrad. CPCZVM will not run under Amstrad's CPM2.2 but currently distribution because it doesn'thave enough TPA. It runs under CPM+However you can use [[DkTronics_CPM]] which has a larger TPA.
==Running an adventure==
* Copy CPCZVM.COM, ZXZVM.BIN and the game file (e.g. ADVENT.Z3) to media which has at least 64KB free. All of these should be in the same location. It is advised to use CPM+. CPM2.2 is supported but there is not enough memory. CPCZVM may not be compatible with other CPMs.
* Boot into CP/M.
* Select the disc (e.g. |B:)
* Type: CPCZVM ADVENT.Z3 to start.
 
Not supported:
* Timed input
* Italics, Bold and other font styles.
* Colours
* Sound
NOTE:
* Transcript CPM2.2 version is not currently supportedbetter than the CPM+ version because it can use windows like the AMSDOS version to allow individual sections of the display to be split or scrolling. Amstrad's implementation of CPM is assumed and that printing goes to the firmware functions and the firmware control codes can be executed.* Italics, Bold and other font styles are not currently supportedCPM+ version uses the VT52 terminal emulation but because that doesn't support windows it is less powerful.
* Using a RAMdisk under CPM+ doesn't make much of a difference to the speed of loading.
* CP/M is used because it has a random access filesystem compared to AMSDOS which doesn't. The random access is required to read blocks from the swap and game file when needed.
 
* Some versions of the z-machine require that the screen can be split into more than 1 window. The VT52 terminal emulation in CPM+ on the CPC is unsuitable because it only supports a single window compared to the VT52 terminal emulation on the ZX Spectrum Plus 3 and the PCW. Therefore it was decided to use the firmware TXT functions to provide this. I am using USERF to access these.
 
* The code does support Amstrad's CPM2.2 using "ENTER FIRMWARE" to call the firmware functions however the TPA is not large enough to support running the games.
 
* Because of my use of userf and ENTER FIRMWARE this means CPCZVM may not compatible with other CPM (e.g. Vortex, Dobbertin) at this time. I have not tested to confirm.
* Disc accesses use normal CP/M functions so it should work with other devices such as RAM discs, Harddisks etc.
=AMSDOS version=
CPCZVM for AMSDOS requires additional Dk'tronics compatible memory (e.g. [[X-MEM]] ). The entire game file is loaded into available RAM so it is recommended to use a 512KB RAM expansion. Loading uses CAS IN CHAR so is very slow. NOTES:* This version supports the v1.0 specification * It has been tested against oztest, czech, etude and strict tests. ==What is supported==* Transcript (goes to printer)* Timed input* Font styles (bold, italics etc)* Z-Machine window opcodes ==What isn't supported==* UNDO* V6 or V7 games* Colours (this requires that all the colours can be displayed at once)
==Running an adventure==
* Make a simple BASIC loader with this form:
5 BORDER 0:INK 0,0:INK 1,13
10 a$="advent.z3"
20 chain"cpczvm"
NOTES:
- * In the example above 'advent.z3 ' is the name of the game file. It should not have a header. - * 'a$ ' variable must be used. You can't use another name because CPCZVM.BAS requires it to have this name. - * In the example above 'advent.bas ' is the name of your basic loader. You can name it as you wish. - * It is advised to use a large ram expansion (>64KB)because many game files are large and you need plenty of extra ram to load large game files.* If the adventure will not fit on a normal CPC Data format disk, use [[ParaDOS]] and copy the files to a ROMDOS D1 format disc.
==Technical information==
* The program detects the amount of additional RAM and will warn if there is not enough when loading the game file.
* The program only supports Dk'Tronics compatible RAM.
* The entire game file is loaded into extra ram using "CAS IN CHAR" functions. This is used because the extra memory is paged in 16KB at a time and [[BIOS_Function_Summary#Cassette_.28or_Diskette.29_Functions|CAS IN DIRECT ]] reads in an entire block and the game files exceed the size of 16KB and do not require an AMSDOS header to be added.
* The BASIC boot program allows a game filename to be passed to CPCZVM.BAS without requiring it to be modified. The use of CHAIN keeps the defined variables and HIMEM.
* This version should run from [[X-MASS]] or other hardware.
=SymbOS Version=Downloads Zym is a Z-Machine interpreter for SymbOS written in C. It supports Z-machine versions 3, 4, 5, and 8, so it can run most of the games published by Infocom, as well as thousands of other Z-code games created by the interactive fiction community. Zym supports different terminal window sizes and also runs on ALL SymbOS platforms, not only CPC. Zym requires SymbOS 3.1 or higher and at least 256 KB of RAM to load most games. https://i.imgur.com/W8AmmFE.png =Downloads=
* [https://www.seasip.info/ZX/zxzvm.html ZXZVM homepage]
* [https://www.seasip.info/index.html John Elliott's website]
* [[File:Zvm.zip]] Source code (CPM+AMSDOS+Disks)* [[Filehttp:Cpczvm//www.dsksymbos.de/appinfo.htm?00054 SymbOS homepage]] Disk (CPM)
1,009
edits