Inhaltsverzeichnis

CP/M und Windows

Entwickeln von CP/M-Programmen unter Windows XP

Neben diversen kompletten CP/M-Emulatoren, die leider immer emulierte Disketten bzw. Festplatten benutzen und damit den Datenaustausch erschweren, reicht für einfache Arbeiten wie etwa das Assemblieren ein Emulator für die Kommandozeile aus. In den frühen DOS-Tagen gab es mehrere solche Emulatoren, die aber größtenteils die FCB-Struktur des DOS nutzen und damit leider nicht mehr unter Windows XP laufen.

CP/M Player

Das Programm CP/M Player von Toshiya Takeda, dem Autor vieler Emulatoren wie z.B: für den EPSON PX-8, http://homepage3.nifty.com/takeda-toshiya/ gibt es für die Kommandozeile, als Windows-Programm und sogar für den Pocket-PC /(incl. Sourcecode).

Aufgrund eines Problems mit ZXCC werde ich dieses Programm verstärkt nutzen.

Unter Windows 7 funtioniert damit sogar Turbo-Pascal mit ANSI-Emulation:

ansicon -i
cpm turbo

ZXCC

Das Programm ZXCC von John Elliott http://www.seasip.demon.co.uk/Unix/Zxcc/index.html ist ein weiterer solcher Emulator für die Kommandozeile. Bildschirm-I/O wird über ANSI oder eine andere Terminalemulation abgewickelt, das CP/M-Filesystem wird automatisch auf Verzeichnisse im aktuellen Filesystem gemappt. Die ältere Version 0.40 enthält kompilierte Versionen für DOS, die auch im Command-Fenster von XP laufen.

Befinden sich zxcc und mc80.com und link.com im selben Verzeichnis, kann man mit

zxcc mc80.com -=hello.mac
zxcc link.com -hello

eine Datei hello.com mit den originalen CP/M-Programmen erzeugen und auch gleich testen:

zxcc hello.com

Die Minuszeichen vor den Parametern sagen zxcc, die Parameter direkt an die CP/M-Programme zu übergeben. (Bei der Arbeit mit Unterverzeichnissen und mehreren virtuellen CP/M-Laufwerken muss man die Syntax von zxcc allerdings beachten und darf sie nicht auf diese Weise umgehen.)

:!: Aufgrund eines Fehlers mit der Größe des letzten Records einer Datei funktioniert die Version ⇐ zxcc-0.5.4 nicht mit dem SLR-Assembler. In Version 0.5.5 ist dieser Fehler behoben.