Running multiple instances of CPvM in the SymbOS multitasking environment Rogue: Exploring the Dungeons of Doom - dungeon crawling game Showing the CP/M-style directory listing of a FAT device with the integrated CCP Running 'WordStar', the father of all word processors, on SymbOS in a CPvM virtual machine |
Run classic CP/M-80 software on SymbOS, including Microsoft BASIC, Turbo Pascal, WordStar, dBASE
and numerous other apps and utilities. CP\/M by prevtenet is kind of a virtual machine, running another operating
system inside the SymbOS multitasking environment. In fact it is a compatibility layer which provides a complete CP/M 2.2
environment. As it is running on SymbOS you can have multiple virtual CP/M machines at the same time on your 1980ies Z80
home computer. Probably the majority of CP/M 2.2 applications can be used natively. You could now run a whole 1980s corporation on SymbOS! While there are still a few improvements planned (mainly one that will improve scroll speed in Turbo Pascal and other apps), this version is considered stable enough for general use and testing. Try it out, and report to Prevtenet if you want something to work but it doesn't. Technical Details Not all CP/M software is supported, but a lot is. Applications for generic CP/M 2.2 on the 8080 or Z80 processors (i.e., CP/M-80) generally work best, while applications designed for other variants of CP/M or that expect low-level or platform-specific features (like special terminal features or block-level disk access) may not work at all. Because CP/M applications are not relocatable, CPvM runs each CP/M session in its own 64K statically-addressed memory bank. This allow multiple CP/M sessions to run simultaneously in the multitasking environment, but requires each CP/M program to reserve memory for SymShell, CPvM, and a full 64K bank of its own. Therefore, CPvM will not run on a 128K system without expanded memory. Unlike many CP/M emulators, the CPvM BDOS redirects file access requests to the SymbOS filesystem rather that emulating the CP/M filesystem directly. This allows CP/M applications to access files on FAT and AMSDOS-format disks as if they were on CP/M disks. CP/M 2.2 does not have a concept of directories, only disks (indicated by the letters A to P). To accommodate this, CPvM maps physical paths on the SymbOS filesystem to logical disk drives visible to the CP/M application. This handles the typical case of allowing CP/M applications to see files in their own directory while also accessing physical disks on demand. Terminal Features As usual for SymShell, terminal input/output will run much faster when SymShell is in fullscreen mode than when it is in windowed mode. Many fullscreen CP/M apps also expect the terminal to have the dimensions 80x24 characters (a bit larger than the default); this can be set from the SymShell menu bar. CP/M 2.2 had no standardized features for advanced display management (like cursor placement); this was left to the terminal. Because so many different terminal types were available on the market, many major software packages could be configured for use with multiple different types of terminals. CPvM emulates the DEC VT-52 and ADM-3A terminals most completely, but also supports the most common Soroc IQ-120 and VT-100/ANSI control codes. For configurable applications, you may need to try a few different terminal types to see which one works best for a given application. (Soroc IQ-120 is often a good fallback because of its simplicity.) Special keys were also not standardized across terminals, so most CP/M software uses Ctrl+Key combinations instead of special keys. (Check each program's documentation for details.) For convenience, CPvM maps the arrow keys and delete/backspace onto the default WordStar keyboard shortcuts, the closest thing to a universal standard (see manual). |
Editing, assembling, linking and executing a "Hello World" Z80 program completely on a SymbOS machine Turbo Pascal can now be used on any SymbOS system thanks to CPvM |
Text output is slow or too small to read | Try running SymShell in fullscreen mode (Alt+Enter). |
A program crashes or does not run: | Not all CP/M software is compatible with CPvM. 1) Verify that the program is designed for CP/M-80 2.2 (not CP/M Plus, CP/M 3, CP/M-86, or another version of CP/M). 2) Verify that the program does not expect system-specific features or hardware (like modems), or direct block-level disk access. 3) Try the program in a BDOS-level emulator like MockbaTheBorg's RunCPM (i.e., one that uses the native filesystem rather than running off of CP/M-formatted disk images). Programs that run correctly in this type of emulation are more likely to work in CPvM. |
Screen output is garbled, with extra characters and text in the wrong places | The program is most likely outputting terminal codes CPvM does not understand (see Terminal Features). If the program provides an option to configure the terminal, try a different setting (e.g., ADM-3A). |
Screen output is misaligned, miswrapped, or is not scrolling correctly | The SymShell window is most likely set to a different size than the program expects. Most CP/M programs expect a terminal size of 80x24 (or sometimes 80x25); change the SymShell window size to match (using the menu bar) and try again. NOTE: SymShell may not allow you to change the terminal size while CPvM is running. In this case, open a new SymShell window, change the size, and exit to save the setting as the new default. Subsequent SymShell windows will now start with the requested size. |
Special keys (arrows, backspace, etc.) aren't doing what I expect | Most CP/M software uses Ctrl+Key combinations rather than special keys. See Terminal Features for a listing of the default keybindings in CPvM. |
Running out of memory after running several apps in a row (or: CPvM is closed, but it still appears in the task manager): |
Be sure to close CPvM correctly (by typing EXIT on the command-line, NOT by using the 'X' button!) |
Left | Ctrl+S |
Right | Ctrl+D |
Up | Ctrl+E |
Down | Ctrl+X |
Delete | Ctrl+G |
Backspace | Ctrl+H |
Tab | Ctrl+I |