<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Prevtenet</id>
		<title>CPCWiki - THE Amstrad CPC encyclopedia! - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://oldwiki.cpcwiki.eu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Prevtenet"/>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php/Special:Contributions/Prevtenet"/>
		<updated>2026-08-28T10:17:13Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.1</generator>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=SymbOS&amp;diff=121823</id>
		<title>SymbOS</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=SymbOS&amp;diff=121823"/>
				<updated>2025-01-30T23:31:20Z</updated>
		
		<summary type="html">&lt;p&gt;Prevtenet: hardware, development tools&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:symbos21cpc.gif|thumb|320px|Screenshot of the SymbOS desktop running on the Amstrad CPC]] [[Image:symbos21msx.gif|thumb|320px|SymbOS MSX running on a MSX2 computer; all applications are platform independant]] [[Image:symbos21pcw.gif|thumb|320px|SymbOS PCW is the third port to a different Z80 system and supports a screen resolution of 720x255]] &lt;br /&gt;
&lt;br /&gt;
''Parts of this article have been copied from the [http://en.wikipedia.org/wiki/SymbOS english Wikipedia article].'' &lt;br /&gt;
&lt;br /&gt;
'''SymbOS''' is a free multitasking operating system for Z80 based 8-bit computer systems written by [[Prodatron|Prodatron]]. At present it is available for the computers of the Amstrad CPC as well as for all [[MSX]] models starting from the MSX2 standard, all Amstrad [[PCW|PCW]] (Joyce) models until the PcW10 and the [[Enterprise]] 64/128. Contrary to early 8-bit operating systems it is based on a microkernel, which provides pre-emptive and priority oriented multitasking and manages RAM memory with a size of up to 1024 kB for the executed applications. SymbOS contains an MS-Windows like GUI, supports hard discs with a capacity of up to 2 TB and can already be booted on an unexpanded Amstrad CPC-6128, a PCW, an MSX2 or an Enterprise 128 with floppy disc drive.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== History  ==&lt;br /&gt;
&lt;br /&gt;
Already in the 80's, only few years after the release of the [[Commodore 64]], the legendary [http://en.wikipedia.org/wiki/GEOS_%288-bit_operating_system%29 GEOS] by Berkeley Softworks appeared and set the standard for a windows-based operating system on c64. It was a graphical user-interface (GUI) which was similar to the old desktop of the Apple Macintosh. Powerfull applications were made available for GEOS like GeoWrite (similar to MS-Word) or GeoCalc (similar to MS-Excel). It was incredible, that an 8bit-machine with only 64K was able to realize such an operating system. &lt;br /&gt;
&lt;br /&gt;
On the Amstrad CPC many efforts to build a decent GUI were made as well. In most cases they were just extensions to realize a WIMP (Windows, Icons, Menus and Pointers) environment but weren't true operating systems with their own kernel, memory-management and so on. The [[CEUS Desktop 2.0|CEUS Desktop 2.0 (1990)]] by Prodatron was just such an extension-system. &lt;br /&gt;
&lt;br /&gt;
Therefore, the CPC's own OS (in combination with AmsDOS) and [[CP/M|CP/M]] (plus) were the only two known OSes for the series, but the question remained: since most CPCs have 128K (most C64 only have 64K), a screen-resolution of 320x200 with 4 colours (C64 only has 2 colours for each 8x8 area in 320x200) and some more advantages, why not have something similar? So the SymbOS-Project was born. SymbOS stands for &amp;quot;SYmbiosis Multitasking Based Operating System&amp;quot;. SymbOS is a demonstration of what has been achieved on the CPC: real preemptive multitasking, dynamic memory-management for up to 1024K and a totaly MS-Windows-like GUI are the three most important features. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Events  ===&lt;br /&gt;
&lt;br /&gt;
The following is a list of important events during the SymbOS development. &lt;br /&gt;
&lt;br /&gt;
*''11/2000'': Development started &lt;br /&gt;
*''06/2001'': First preview of the desktop on the [[CPC Reunion 1|CPC Reunion 1]] &lt;br /&gt;
*''07/2001'': First screen shots in the internet, causing several rumours about a possible hoax &lt;br /&gt;
*''06/2002'': Second preview of the desktop on the [[CPC Reunion 2|CPC Reunion 2]] &lt;br /&gt;
*''09/2004'': SymbOS development has been continued after a break of three years &lt;br /&gt;
*''12/2004'': Full [[CPC IDE|CPC IDE]] support implemented; preview of a harddisc based movie player, which used the SymbOS IDE/FAT routines &lt;br /&gt;
*''01/2005'': Release of the first official preview on the [[SymbOS Preview party|SymbOS Preview party]] &lt;br /&gt;
*''09/2005'': SymbOS development has been continued again &lt;br /&gt;
*''12/2005'': Full [[SYMBiFACE II|SYMBiFACE II]] support implemented &lt;br /&gt;
*''01/2006'': SymbOS is part of the [[CPC TREX|CPC TREX]] startup system now &lt;br /&gt;
*''04/2006'': SymbOS release 1.0 is out &lt;br /&gt;
*''05/2006'': Development of the MSX version started &lt;br /&gt;
*''12/2006'': SymbOS release 1.1 is out &lt;br /&gt;
*''05/2007'': 1MB and richtext support together with the graphical browser [[SymZilla|SymZilla]] have been implemented &lt;br /&gt;
*''07/2007'': Development of the [[PCW|PCW]] version started &lt;br /&gt;
*''08/2007'': SymbOS release 2.0 is out&lt;br /&gt;
*''11/2012'': development continues&lt;br /&gt;
*''08/2014'': SymbOS release 2.1 is out&lt;br /&gt;
*''11/2014'': Development of the [[Enterprise|Enterprise]] version started &lt;br /&gt;
*''03/2015'': Development of network support started &lt;br /&gt;
*''08/2017'': SymbOS release 3.0 is out&lt;br /&gt;
*''12/2021'': SymbOS release 3.1 is out&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Technical background  ==&lt;br /&gt;
&lt;br /&gt;
Even the Z80 8-bit CPU is able to run a pre-emptive multitasking environment. Missing mechanisms like memory protection, which are often called as a condition for multitasking, are system stability issues only. The MP/M operating system already proved, that multitasking on Z80 computers is possible. &lt;br /&gt;
&lt;br /&gt;
While the MOS Technology 6502 can not move the stack, the Z80 can freely replace it to any position in the memory, which is more or less a condition for pre-emptive multitasking. The existence of an alternative register set accelerates context switching between tasks dramatically. The restriction of Z80 systems to a 64 kB address space can be solved with bank switching. In this way computers like the Amstrad CPC and PCW, MSX, Enterprise or SAM Coupé are able to access hundreds or thousands of kilobytes of memory. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Feature overview  ==&lt;br /&gt;
&lt;br /&gt;
*'''Micro kernel''' &lt;br /&gt;
**Maximum amount of supported RAM: 1024 KB &lt;br /&gt;
**Maximum number of processes: 32 &lt;br /&gt;
**Number of different process priorities: 9 &lt;br /&gt;
**Maximum number of timers: 32 &lt;br /&gt;
**Maximum number of open messages: 64 &lt;br /&gt;
*'''System manager''' &lt;br /&gt;
**Maximum number of applications: 24 &lt;br /&gt;
**Maximum application core size: 63 KB &lt;br /&gt;
*'''Desktop manager''' &lt;br /&gt;
**Maximum number of windows: 32 &lt;br /&gt;
**Maximum number of controls per window: 1000 &lt;br /&gt;
**Maximum possible screen resolution: 16.000 × 16.000 pixel &lt;br /&gt;
*'''File manager''' &lt;br /&gt;
**Maximum hard disc size: 2 TB&lt;br /&gt;
**Maximum file size: 2 GB &lt;br /&gt;
**Maximum number of devices: 8 &lt;br /&gt;
**Maximum number of open files: 7 &lt;br /&gt;
*'''Source code''' &lt;br /&gt;
**Source code size (OS Release 2): ~ 49.000 lines (1.5&amp;amp;nbsp;MB) &lt;br /&gt;
**Source code size (Applications): ~ 70.000 lines (2.2&amp;amp;nbsp;MB) &lt;br /&gt;
**Total size of the Z80 source code: ~ 119.000 lines (3.7&amp;amp;nbsp;MB) &lt;br /&gt;
*'''Supported platforms''' &lt;br /&gt;
**Amstrad [[CPC|CPC]]-464, -664 and -6128 (unexpanded) and compatibles ([[CPC TREX|CPC TREX]], [[C-ONE|C-ONE]]) &lt;br /&gt;
**MSX2 with 128KB Ram (unexpanded) and compatibles (MSX2+, MSX TurboR, OCM) &lt;br /&gt;
**Amstrad [[PCW|PCW]] (all models until PcW10) &lt;br /&gt;
**[[Enterprise]] 64/128&lt;br /&gt;
*'''Supported external hardware''' &lt;br /&gt;
**[[Dk'tronics|dk'tronics]] memory expansion 64K-512K and compatibles ([[Dobbertin|Dobbertin]], [[SYMBiFACE II|SYMBiFACE II]], X-MEM) &lt;br /&gt;
**[[SYMBiFACE II|SYMBiFACE II]] (realtime clock; PS/2 mouse; IDE interface, Ram/Rom expansion) and compatibles (X-MASS)&lt;br /&gt;
**M4Board (ESP8266-based Wifi, SD card reader, Rom expansion)&lt;br /&gt;
**[[RSF3]] (in M4Board emulation mode)&lt;br /&gt;
**HxC direct SD card access (FAT32)&lt;br /&gt;
**Albireo (USB mouse)&lt;br /&gt;
**MultiPlay (Amiga mouse)&lt;br /&gt;
**[[AMX Mouse|AMX]] and [[Kempston Mouse|Kempston mouse]] (PCW) &lt;br /&gt;
**Sunrise IDE interface (MSX)&lt;br /&gt;
**MegaSD card interface for OCM, MegaflashRomSCC+SD (MSX)&lt;br /&gt;
**MP3MSX (MSX)&lt;br /&gt;
**DenYoNet (MSX; W5100-based Ethernet)&lt;br /&gt;
**GR8NET (MSX; SD card reader, W5100-based Ethernet)&lt;br /&gt;
**SE-ONE (MSX; MP3, FM Radio)&lt;br /&gt;
**Rookie Drive (MSX)&lt;br /&gt;
&lt;br /&gt;
== Kernel  ==&lt;br /&gt;
&lt;br /&gt;
SymbOS includes a micro kernel, which takes over the fundamental tasks of an operating system. They are subdivided into the task management, the memory management, the banking management and the messaging. &lt;br /&gt;
&lt;br /&gt;
=== Task management  ===&lt;br /&gt;
&lt;br /&gt;
For the task management a combination of pre-emptive and cooperative multitasking has been chosen, which makes different task priorities possible. Pre-emptive means that tasks are interrupted after a certain amount of time by the operating system, in order to share the CPU time with other tasks. Cooperatively means, that a task stops using CPU time by itself. It does it, if it finished its current job or is waiting for a certain event. Because of this combination it is possible to assign priorities. Tasks with a low priority receive CPU time only if all tasks with higher priorities are not currently working. &lt;br /&gt;
&lt;br /&gt;
=== Memory and banking management  ===&lt;br /&gt;
&lt;br /&gt;
The memory management divides the entire RAM into small 256 byte blocks, which can be assigned dynamically. Applications are always running in a secondary 64 kB RAM bank, where no memory space is occupied by the operating system or the video memory. That makes it possible to reserve up to 63 kB in one piece. &lt;br /&gt;
&lt;br /&gt;
The banking management makes sure, that the system is able to administer memory with a size of one megabyte even with the fact that the Z80 CPU has only a 16-bit address bus. It makes transparent access to memory and functions placed in other 64 kB banks possible. &lt;br /&gt;
&lt;br /&gt;
=== Messaging  ===&lt;br /&gt;
&lt;br /&gt;
The communication between different tasks and the operating system usually does not take place via &amp;quot;Calls&amp;quot;, but is done via &amp;quot;Messages&amp;quot;. This is necessarily inside a multitasking environment to avoid organisation problems with the stack, global variables and shared system resources. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Graphical user interface  ==&lt;br /&gt;
&lt;br /&gt;
The [[Graphical User Interface|GUI]] of SymbOS works completely object-oriented. Regarding the look and feel it is designed like MS windows. It contains the well-known task bar with the clock and the &amp;quot;start&amp;quot; menu and can open a big amount of windows, which can be shifted, resized and scrolled. As the complete system is written in optimized assembler, the speed of the GUI is only insignificantly under this of current systems and even faster than the original Amiga workbench. &lt;br /&gt;
&lt;br /&gt;
The complete content of a window is defined with &amp;quot;controls&amp;quot;. These are e.g. slider, check boxes, text lines, buttons or graphics. The background or not visible areas of a window don't need to be saved in a bit-map buffer. If an area is restored on the display, its content will just be redrawed. Because of this the SymbOS GUI works much more memory-friendlier than most other 8-bit GUIs. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== File system management  ==&lt;br /&gt;
&lt;br /&gt;
SymbOS supports the file systems CP/M, AMSDOS, FAT12, FAT16 and FAT32 on all platforms. With the last one SymbOS is able to address mass storage devices with a capacity of up to 128 GB. Also the ability to administer files with a size of up to 2 GB is uncommon for an 8-bit system. Because of the FAT support data exchange with other computers is quite easy, as most 32 and 64 bit operating systems do support the three FAT file systems. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Applications and executables  ==&lt;br /&gt;
&lt;br /&gt;
There are several standard applications available for SymbOS, which have been designed as clones of well known Windows and Macintosh programs. As an example these are applications similar to the Norton Commander (SymCommander), QuickTime (SymPlay), WinAmp (SymAmp) or Minesweeper. &lt;br /&gt;
&lt;br /&gt;
*'''Applications''' &lt;br /&gt;
**[[SymCommander|SymCommander]] (file and disc management) &lt;br /&gt;
**[[SymZilla|SymZilla]] (browser and richtext viewer) &lt;br /&gt;
**[[SymPlay|SymPlay]] (video player) &lt;br /&gt;
**[[SymSee|SymSee]] (picture viewer) &lt;br /&gt;
**[[SymAmp|SymAmp]] (jukebox music player) &lt;br /&gt;
**Notepad (text editor)&lt;br /&gt;
*'''Tools''' &lt;br /&gt;
**[[SymSnap|SymSnap]] (emulator snapshot loader) &lt;br /&gt;
**[[DiskDeDumper|DiskDeDumper]] (image to disc transfer) &lt;br /&gt;
**[[Speech|Speech]] (voice synthesizer) &lt;br /&gt;
**[[Pocket Calculator|Pocket Calculator]] (calculator) &lt;br /&gt;
**[[SYMBiFACE II rom manager|SYMBiFACE II rom manager]] (rom management for the [[SYMBiFACE II|SYMBiFACE II]]) &lt;br /&gt;
**[[CPC TREX starter|CPC TREX starter]] (rom and disc image configuration for the [[CPC TREX|CPC TREX]]) &lt;br /&gt;
*'''Games''' &lt;br /&gt;
**[[Pac-Man for SymbOS|Pac-Man for SymbOS]] (game) &lt;br /&gt;
**[[MineSweeper|MineSweeper]] (game) &lt;br /&gt;
**[[Conways' Game of Life]] (simulator)&lt;br /&gt;
**4-In-A-Row ([[SymStudio]] game written in SymBasic by EdoZ)&lt;br /&gt;
**Tetris 2014 ([[SymStudio]] game written in SymBasic by EdoZ)&lt;br /&gt;
*'''Demos and Screensavers''' &lt;br /&gt;
**[[Diamonds|Diamonds]] (demo) &lt;br /&gt;
**[[Starfield Simulation|Starfield Simulation]] (screensavers) &lt;br /&gt;
*'''System programs''' &lt;br /&gt;
**[[Control Panel|Control Panel]] (system configuration) &lt;br /&gt;
**[[Task Manager|Task Manager]] (system monitor) &lt;br /&gt;
**[[SymShell|SymShell]] (command line interface)&lt;br /&gt;
&lt;br /&gt;
== Development tools ==&lt;br /&gt;
&lt;br /&gt;
System libraries, documentation, and sample code are available for developing applications in assembly. In addition, there are several SymbOS-specific development tools.&lt;br /&gt;
&lt;br /&gt;
=== Quigs ===&lt;br /&gt;
&lt;br /&gt;
[http://www.symbos.de/quigs.htm Quigs] is a Windows-based IDE (integrated development environment) by [[Trebmint|Trebmint]] for SymbOS similiar to MS Visual Studio. Quigs makes it possible to develop SymbOS applications in Assembler or a language similar to Basic (&amp;quot;SymBasic&amp;quot;). It is also possible to convert PC graphics and videos into the SymbOS format ([[Format:SGX (SymbOS graphic files)|SGX]], [[Format:VID (SymbOS video files)|VID]]).&lt;br /&gt;
&lt;br /&gt;
Quigs' predecessor was named SymStudio; have a look at [[SymStudio|its article]] for more information.&lt;br /&gt;
&lt;br /&gt;
=== SymbOS C Compiler ===&lt;br /&gt;
&lt;br /&gt;
The [https://github.com/danielgaskell/scc SymbOS C Compiler] (SCC) is a full C compiler suite for SymbOS. A comprehensive system library is available for interfacing with the SymbOS desktop, but it is also possible to compile many existing C programs into SymShell console apps without modification. SCC runs on Windows, but it can also compile itself to run natively on SymbOS itself, so it is technically possible to develop applications in C (or assembly) entirely from within SymbOS.&lt;br /&gt;
&lt;br /&gt;
An older C SDK for [[SDCC]] by Nerlaska is also available; a patched version of this can be found in the [https://github.com/danielgaskell/cpvm CPvM source repository].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Porting and cross platform ability  ==&lt;br /&gt;
&lt;br /&gt;
SymbOS has been developed originally for the Amstrad CPC. Because of the modular structure with the strict separation of general and hardware components the porting to other Z80-based systems is quite easy. &lt;br /&gt;
&lt;br /&gt;
The MSX computers starting with the MSX2 standard are supported since summer 2006. The Amstrad [[PCW|PCW]] port is available since August 2007. Since end of 2014 the port for the [[Enterprise]] 64/128 has been done as well. Versions for Amstrad NC100/150/200 and Spectrum Next exist nowadays. And others, Z88 ... are possible, too, as they fulfill the requirements for SymbOS. &lt;br /&gt;
&lt;br /&gt;
By keeping a basic condition for an operating system, the strict separation of hardware and application software by the supply of an intermediate layer, SymbOS applications run platform-independently on each computer and do not have to be adapted for a special system. Exceptions are applications, which access directly the hardware. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Motivation  ==&lt;br /&gt;
&lt;br /&gt;
SymbOS was originally started as an experiment to find out, how far it is possible to implement a multitasking based operating system with a windows GUI on an 8-bit computer of 1985. Also GEOS contributed to the motivation, but the structure and features of SymbOS aren't similiar to this system. The release in 2006 proved, that such a &amp;quot;mini windows&amp;quot; is possible on a 20 years old home computer only with quantitative limitations. SymbOS&amp;amp;nbsp;is one of&amp;amp;nbsp;the largest retro computing software projects of the last years. One of the goals of the project is to copy in combination with various hardware extensions a complete PC job. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Web links  ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.symbos.de SymbOS homepage]&lt;br /&gt;
*[http://members.home.nl/evanzanten/msxorg/SymbOS%203%20install%20user%20and%20install%20guide.pdf SymbOS installation configuration manual (PDF)]&lt;br /&gt;
*[http://groups.yahoo.com/group/symbos8bit SymbOS mailing list (new)] &lt;br /&gt;
*[http://en.wikipedia.org/wiki/SymbOS english Wikipedia article] &lt;br /&gt;
*[http://es.wikipedia.org/wiki/SymbOS spanish Wikipedia article] &lt;br /&gt;
*[http://it.wikipedia.org/wiki/SymbOS italian Wikipedia article] &lt;br /&gt;
*[http://ru.wikipedia.org/wiki/SymbOS russian Wikipedia article] &lt;br /&gt;
*[http://cpcrulez.free.fr/applications_symbos_apply_preview.htm french information on CPCRulez] &lt;br /&gt;
*[http://www.wacci.org.uk/magazine/137/137_03.html &amp;quot;New Generation - CPC Windows?&amp;quot;] ([[WACCI|WACCI]] article by [[ChaRleyTroniC|ChaRleyTroniC]]) &lt;br /&gt;
*[http://web.archive.org/web/20061116180805/http://www.snakeoillabs.com/2005/10/30/8-bit-guis-eye-candys-not-just-for-the-32-bit/ &amp;quot;8-Bit GUIs - Eye candy’s not just for the 32-bit!&amp;quot;] (Article) &lt;br /&gt;
*[http://www.msx.org/forumtopicl6203.html Main thread on MSX.org] &lt;br /&gt;
*[http://video.google.com/videoplay?docid=-6071242217428356949&amp;amp;q=symbos SymbOS presentation(Video) at RetroEuskal 2006]&lt;br /&gt;
&lt;br /&gt;
[[Category:SymbOS| ]] [[Category:Operating_System]] [[Category:CPC_GUI]] [[Category:Extended RAM Software]] [[Category:PCW]]&lt;/div&gt;</summary>
		<author><name>Prevtenet</name></author>	</entry>

	<entry>
		<id>https://oldwiki.cpcwiki.eu/index.php?title=Z-Machine&amp;diff=108419</id>
		<title>Z-Machine</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.cpcwiki.eu/index.php?title=Z-Machine&amp;diff=108419"/>
				<updated>2022-02-22T19:28:14Z</updated>
		
		<summary type="html">&lt;p&gt;Prevtenet: Slightly cleaned up Zym section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Z-Machine is a text based interpreter which runs text adventures made by Infocom and Z-code files.&lt;br /&gt;
&lt;br /&gt;
It is available for CPC for different OS.&lt;br /&gt;
&lt;br /&gt;
* A version for CPM&lt;br /&gt;
* A version for AMSDOS&lt;br /&gt;
* A version for SymbOS&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zym is a Z-Machine interpreter for SymbOS, made by [[prevtenet]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=CPM version=&lt;br /&gt;
&lt;br /&gt;
CPCZVM for CPM features a virtual memory system supporting both the Z-machines RAM and ROM. 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.&lt;br /&gt;
&lt;br /&gt;
CPCZVM will not run under Amstrad's CPM2.2 distribution because it doesn't have enough TPA. However you can use [[DkTronics_CPM]] which has a larger TPA.&lt;br /&gt;
&lt;br /&gt;
==Running an adventure==&lt;br /&gt;
&lt;br /&gt;
* 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. &lt;br /&gt;
* Boot into CP/M.&lt;br /&gt;
* Select the disc (e.g. B:)&lt;br /&gt;
* Type: CPCZVM ADVENT.Z3 to start.&lt;br /&gt;
&lt;br /&gt;
Not supported:&lt;br /&gt;
* Timed input&lt;br /&gt;
* Italics, Bold and other font styles.&lt;br /&gt;
* Colours&lt;br /&gt;
* Sound&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
* CPM2.2 version is better 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. &lt;br /&gt;
* CPM+ version uses the VT52 terminal emulation but because that doesn't support windows it is less powerful.&lt;br /&gt;
* Using a RAMdisk under CPM+ doesn't make much of a difference to the speed of loading.&lt;br /&gt;
&lt;br /&gt;
==Technical Information==&lt;br /&gt;
&lt;br /&gt;
* The program reads the first 64KB of the game file, padding with 0's if less than 64KB, and writes out a SWAP.DAT file. A Z-machine has a maximum of 64KB of RAM. Therefore the disc which CPCZVM is run from must have at least 64KB free and be writeable. When the RAM is written to this swap file is updated. This swap file is also re-generated from the game file when the game is restarted.&lt;br /&gt;
&lt;br /&gt;
* Part of the CPC's memory is used for the virtual memory cache. A page table describes which virtual memory blocks are loaded and their physical location within RAM. This is initially populated from the start from the game file. When a read is done, the virtual memory address is looked up in the page table, and if it is mapped to physical memory then the physical memory is read. A write is similar to a read with an additional flag being set if a write has been made to a mapped page. If a virtual memory page is not currently loaded, then depending on the metric used, a page is chosen to be evicted. If the page has been modified it is committed to the swap file. Then the new page is loaded into the same physical location. During game play, any access to virtual memory in the first 64KB comes from the swap file, and any accesses above 64KB come from the game file. In this way the virtual memory supports both Z-Machine RAM and Z-Machine ROM.&lt;br /&gt;
&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
* Disc accesses use normal CP/M functions so it should work with other devices such as RAM discs, Harddisks etc.&lt;br /&gt;
&lt;br /&gt;
=AMSDOS version=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* This version supports the v1.0 specification &lt;br /&gt;
* It has been tested against oztest, czech, etude and strict tests.&lt;br /&gt;
&lt;br /&gt;
==What is supported==&lt;br /&gt;
* Transcript (goes to printer)&lt;br /&gt;
* Timed input&lt;br /&gt;
* Font styles (bold, italics etc)&lt;br /&gt;
* Z-Machine window opcodes&lt;br /&gt;
 &lt;br /&gt;
==What isn't supported==&lt;br /&gt;
* UNDO&lt;br /&gt;
* V6 or V7 games&lt;br /&gt;
* Colours (this requires that all the colours can be displayed at once)&lt;br /&gt;
&lt;br /&gt;
==Running an adventure==&lt;br /&gt;
* Copy CPCZVM.BAS and the game file (e.g. ADVENT.Z3) to media. Both of these should  be in the same location. &lt;br /&gt;
* Make a simple BASIC loader with this form:&lt;br /&gt;
 &lt;br /&gt;
  5 BORDER 0:INK 0,0:INK 1,13&lt;br /&gt;
 10 a$=&amp;quot;advent.z3&amp;quot;&lt;br /&gt;
 20 chain&amp;quot;cpczvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
and save it:&lt;br /&gt;
&lt;br /&gt;
 save&amp;quot;advent&lt;br /&gt;
&lt;br /&gt;
* Now you can run your adventure:&lt;br /&gt;
&lt;br /&gt;
 run&amp;quot;advent&lt;br /&gt;
&lt;br /&gt;
NOTES:&lt;br /&gt;
* In the example above 'advent.z3' is the name of the game file. It should not have a header. &lt;br /&gt;
* 'a$' variable must be used. You can't use another name because CPCZVM.BAS requires it to have this name.&lt;br /&gt;
* In the example above 'advent' is the name of your basic loader. You can name it as you wish.&lt;br /&gt;
* It is advised to use a large ram expansion (&amp;gt;64KB) because many game files are large and you need plenty of extra ram to load large game files.&lt;br /&gt;
* 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.&lt;br /&gt;
&lt;br /&gt;
==Technical information==&lt;br /&gt;
&lt;br /&gt;
* The CPCZVM.BAS contains a fixed basic stub followed by the machine code. The BASIC stub must not be modified or it will break CPCZVM.BAS. Using a BASIC stub means I don't need to re-enable any ROMs (like I would if RUN was used) and the current drive and filesystem remains active allowing hard disks and other DOS to be used. In addition I can pass HIMEM to know if there is enough RAM free (expansion ROMs can modify HIMEM to allocate work space) and a string variable containing the game filename.&lt;br /&gt;
* The program uses the firmware except TXT WRITE CHAR is patched so that bold, italics and inverse is supported. The font is manipulated as it is drawn.&lt;br /&gt;
* Transcript goes to the printer.&lt;br /&gt;
* The program detects the amount of additional RAM and will warn if there is not enough when loading the game file. &lt;br /&gt;
* The program only supports Dk'Tronics compatible RAM.&lt;br /&gt;
* The entire game file is loaded into extra ram using &amp;quot;CAS IN CHAR&amp;quot; functions. This is used because the extra memory is paged in 16KB at a time and 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.&lt;br /&gt;
* 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.&lt;br /&gt;
* This version should run from [[X-MASS]] or other hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=SymbOS Version=&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Zym requires SymbOS 3.1 or higher and at least 256 KB of RAM to load most games.&lt;br /&gt;
&lt;br /&gt;
https://i.imgur.com/W8AmmFE.png&lt;br /&gt;
&lt;br /&gt;
=Downloads=&lt;br /&gt;
&lt;br /&gt;
* [https://www.seasip.info/ZX/zxzvm.html ZXZVM homepage]&lt;br /&gt;
* [https://www.seasip.info/index.html John Elliott's website]&lt;br /&gt;
* [[File:Zvm.zip]] Source code (CPM+AMSDOS+Disks)&lt;br /&gt;
* [http://www.symbos.de/appinfo.htm?00054 SymbOS homepage]&lt;/div&gt;</summary>
		<author><name>Prevtenet</name></author>	</entry>

	</feed>