Die Technik hinter CP/M (4)
Das ist der letzte von vier Teilen über das Innenleben von CP/M. Erschienen sind:
Teil 1 behandelt den Aufbau des Speichers und des Dateisystems
Teil 2 behandelt den Aufbau einer Diskette und des Rechners, Bildschirm und Tastatur
Teil 3 behandelt die BDOS-Funktionen, den Kommandointerpreeter, User Befehl und die Geräte.
und sie lesen gerade:
Teil 4: Über CP/M 3, andere Versionen und warum es heute noch neue CP/M Rechner gibt.
CP/M 3.0 und nachfolgenden Versionen
Ein Betriebssystem muss der Hardware vorausgehen, das heißt im Idealfall existiert die neue Version des Betriebssystems, bevor die Hardware auf dem Markt ist. Das ist möglich, weil die Hersteller von Prozessoren und anderer Hardware an ihre Software-Lieferanten schon vorher technische Datenblätter und Handbücher abgeben, auch wenn die Hardware dann noch nicht physikalisch existiert, kann man Programme für sie erstellen und gegebenenfalls emulieren.
Was bei allen Programmen von Digital Research auffällig ist, ist die Versionen, nach der ersten Ausgabe meistens dem technischen Fortschritt hinterherhinkten. Von Firmengründer Gary Kildall ist bekannt das er sich mehr für neue Aufgaben und Herausforderungen interessierte, als für eine Weiterentwicklung eines bestehenden Produktes und für ihn auch nicht wichtig war, das man möglichst viel Geld mit der Cash-Cow – hier CP/M – verdiente. Das scheint sich auf die Mitarbeiter von Digital Research, die nach der Version 1 CP/M weiterentwickelten, sich durchgeschlagen zu haben.
CP/M 2.2 erschient 1979, zu einem Zeitpunkt als 64 Kbit RAMs auf dem Markt erschienen – CP/M erschien in der ersten Version, als 4 Kbit RAM üblich waren, man hätte also schon vorhersehen können, das es sehr bald Rechner mit mehr Speicher geben würde, als die 64 KByte die ein Prozessor direkt adressieren konnte. Trotzdem erscheint die Nachfolgeversion CP/M 3.0 welche diese Fähigkeit hat, erst Anfang 1983. Damals gab es dann schon Heimcomputer mit 64 KByte Speicher. Ebenso war die große Änderung bei CP/M 2.2 das es nicht nur 8 Zoll Diskettenlaufwerke im IBM Format, sondern auch die 5,25 Zoll Formate unterstützte. Diese waren aber schon seit drei Jahren auf dem Markt.
Genauso macht man sich bei Digital Research keine Gedanken ein neues Dateisystem einzuführen. Für Festplatten ist CP/M 2.2 nicht gut geeignet, da die Festplattengröße auf 8 MB begrenzt ist und es keine Unterverzeichnisse hatte, die schon bei großen Disketten wo man leicht 100 Dateien unterbringen konnte gut gewesen wären.
CP/M 3.0 hatte mehrere Verbesserungen. Der offensichtlichste war, dass es in einer gebankten und ungebankten Version verfügbar war. Beim Bank-Switching wird ein Teil des 64 KByte großen Adressraums ausgetauscht, bei CP/M 3.0 waren dies der letzte Teil wo CP/M residierte. Dort wurden nur einige Buffer für den Datenaustausch, Routinen um die Bank zu wechseln und Sprünge in die eigentlichen Routinen, eingefügt. Von 64 Kbyte Arbeitsspeicher blieben so zwischen 61 und 63 KByte übrig. Das war für viele Anwender schon Grund genug es einzusetzen, denn so vergrößerte sich der Bereich für die eigentlichen Anwendungsprogramme. Bei meinem Rechner von 38 auf 61 KByte. CP/M konnte nun auch einen Speicherbereich nutzen, um das Verzeichnis zwischenzuspeichern, das reduzierte die Zugriffe auf die Diskette deutlich.
Dem Grundproblem von CP/M – es gab eine Vielzahl von Hardwarekonfigurationen – wurde damit begegnet, dass es eine Schnittstelle für herstellereigene Erweiterungen gab, genannt RSX und GSX – Resident System eXtension und Graphical System Extension. RSX waren Erweiterungen des Systems, um spezielle Hardware zu unterstützen, die weiter als die BIOS Routinen ging. Druckertreiber konnten so erstellt werden. GSX war eine analoge Erweiterung, die es Anwendungsprogrammen ermöglichen sollte, eine Grafik auf einer Vielzahl von Plottern und Druckern auszugeben, ohne das das Anwendungsprogramm mit den Befehlen dieser Geräte hantieren musste. Beides sinnvolle Erweiterungen, doch sie kamen zu spät.
Die Kargheit des Systems wurde leicht verbessert. So wurden nun viele Befehle des CCP in ausführbare Dateien ausgelagert. Sie wurden nun auch leicht verbessert, so konnte man den Rename Befehl ohne Dateinamen aufrufen und er fragte diese ab. Erstmals konnte man den Programmen auch Parameter angeben, so bekam man mit Dir [Full] endlich auch mal alle Attribute und Dateilängen zu sehen.
Device, Set und Show ersetzen die umständliche Bedienung von Stat. Andere Programme erlaubten es erstmals eine Ersatztabelle für Bildschirmsteuerzeichen oder Tastaturcodes zu definieren.
Intern hatte man viel renoviert, so griffen nun alle Routinen auf die physikalischen Sektoren zurück und nicht in 128 Byte Schritten wie bei den früheren Versionen. Leider konnte man an den grundsätzlichen Strukturen nichts machen. So gab es nun die Möglichkeit das Datum und die Uhrzeit in eine Datei einzutragen, aber dies geschah intransparent und war nicht mit CP/M 2.2 kompatibel. Ebenso wurden Dateigrößen immer noch in 128 Byte Records und nicht bytegenau gemessen und Unterverzeichnisse gab es auch nicht. Dazu hätte man die Verzeichnisstruktur ändern müssen, aber damit auch die BDOS-Funktionen und damit müssten Programme umgeschrieben werden. Das wollte man nicht riskieren.
Seltsamerweise war die Suite aus Entwicklungsprogrammen – CP/M kam immer schon mit dem 8080 Assembler ASM, dem Debugger DDT und dem HEX-Dumper Dump ausgeliefert worden, was zu der Zeit schon bei MS-DOS nicht mehr der Fall war – noch erweitert worden. Es gab nun auch noch einen verbesserten Assembler RMAC, einen symbolischen Debugger SID und einen Linker den man brauchte wenn man Assembler mit höheren Programmiersprachen wie C mischte. Aber nach wie vor sprachen alle die Syntax den 8080 Prozessors der 1983 keine Marktbedeutung mehr hatte. Stattdessen steckte in fast allen CP/M Rechner der Z80 Prozessor der gegenüber dem Nachfolger von Intel 8085 leistungsfähiger und schneller war.
Hatte man mehr als etwa 96 KByte RAM, 32 KByte brauchte CP/M mit Buffern in der zweiten Bank, so bot CP/M 3.0 aber keine Möglichkeit mehr Speicher zu nutzen. Die meisten Rechner legten im zusätzlichen Speicher eine RAM-Disk an. In diese kopierte man beim Start alle Programme, arbeitete dann nur in der RAM Disk und bevor man den Rechner abschaltete, kopierte man die Daten auf eine Diskette zurück. Das erscheint ineffizient, aber da die meisten Programme sowieso mit Overlays arbeiteten, also ihr ganzer Programmcode nicht in den Speicher passte, war es egal ob dieser nun von einer RAM-Floppy geladen wurde oder direkt in einer direkt ansprechbaren Speicherbank saß, die Verzögerung war vernachlässigbar.
CP/M 3.0 war nun so groß, das es nicht mehr in Systemspuren passte und eine eigene Datei meistens „Cpm3.sys“ erzeugt wurde. Das Problem von CP/M 3.0 war, dass man zum einen zu spät kam – Softwarefirmen entwickeln für neue Hardware und als es Anfang 1983 erschien, war der IBM-PC schon über zwei Jahre auf dem Markt und es gab zahlreiche Nachbauten. Die Firmen modernisierten ihre Software nicht auf CP/M 3 und neue Software erschien kaum, noch weniger Software, welche die neuen Möglichkeiten von RSX und GSX nutze. Die Idee die karge UI zu verbessern, indem man nun Kommandos als .com Datei aus dem CCP auslagerte, führte dazu das diese zusätzlich Platz wegnahmen – anders als im CCP belegten sie ja immer ganze Blöcke auf der Diskette und es durch die bekannten Mängel schon zahlreiche Alternativen wie Xdir gab.
Die Hochzeit von CP/M war Anfang der Achtziger Jahre, es lief auf Millionen von PC, 1980 machten Einnahmen aus CP/M den Großteil der Einnahmen von Digital Research aus, mit einer Gewinnspanne von 57 Prozent! Praktisch jeder PC mit einem 8080 / 8085 oder Z80 Prozessor konnte es einsetzen, selbst Rechner bei denen die Hersteller ein eigenes DOS hatten, wie die TRS-80 Serie von Tandy. Microsoft machte den größten Teil seines Umsatzes vor PC-DOS mit dem verkauf einer Softcard, einer Erweiterungskarte für den Apple II, damit auch auf diesem CP/M lief.
Das ging auch nach Einführung des IBM PC noch einige Jahre so weiter. Der Grund war das diese 8086 Rechner mindestens doppelt so teuer wie ein CP/M Rechner hatten und weil das Betriebssystem und Code umfangreicher waren, musste man einen IBM-PC kompatiblen mit mindestens 128, besser 192 KByte Speicher ausstatten damit gleichwertige Programme liefen.
Aber „Kompatible“ PC kamen vermehrt auf den Markt, es begann ein Preiskampf der IBM-PC und kompatible Rechner rasch verbilligte. Speicher wurde immer billiger und ermöglichte unter MS-DOS/PC-DOS Anwendungen die komfortabler als CP/M-Programme waren. Trotzdem erschienen noch neue CP/M Rechner. Nun wurden viele Heimcomputer CP/M Fähig. Es wurde der CPC-Serie beigelegt, Commodores C128 hatte einen zusätzlichen Z80 Prozessor um CP/M laufen zu lassen. Die MSX-Serie hatte ein CP/M kompatibles Betriebssystem. Ein reines neues CP/M System war die PCW-Serie, in Deutschland als „Joyce“ verkauft. Alle diese Rechner wurden in Millionen Exemplaren verkauft.
CP/M-86 ist eng mit der Geschichte verknüpft wie IBM zu seinem PC-DOS kam. Die erste Version von MS-DOS war ein Plagiat von CP/M 2.2. IBM unterstützte Microsoft, indem es die Verkaufspreise sehr unterschiedlich setzte: PC-DOS kostete je nach Quelle 40 oder 60 Dolle, CP/M-86 dagegen 240. So war der Ausgang des Wettbewerbs klar. Ab Version 2 von MS-DOS kamen dann auch neue Funktionen hinzu. CP/M-86 wurde nicht weiter entwickelt, stattdessen konzentrierte sich Digital-Research auf MP/M eine Multi-User Umgebung und Betriebssysteme die MS-DOS kompatibel waren: DRI-DOS als Konkurrenzprodukt und Concurrent-DOS als Multiuser-System, aber MS-DOS kompatibel.
CP/M-68K für Prozessoren der MC68000 Serie fristete zuerst ein Stiefmütterchendasein. Diese Prozessoren waren so potent, das sie auch Unix als Betriebssystem nutzen konnten. Sie steckten so in den ersten Workstations von Sun und SGI. Firmen, die Personalcomputer mit diesen Prozessoren entwickelten, setzten auf eine grafische Oberfläche, wie beim Macintosh oder Amiga. CP/M-68K war aber noch textbasiert.
Die einzige Ausnahme war der Atari ST. Die Amiga Corporation, damals eine eigenständige Firma, hatte das Konzept des Amiga entwickelt und brauchte Geld das sie sich von Jack Tramiel, Atari-Besitzer liehen. Der hatte vor, das Konzept und die Firma zu übernehmen für den Atari ST. Commodore bekam davon Wind, kaufte die Firma auf und sie konnten so den Kredit zurückzahlen. Jack Tramiel war so ohne Betriebssystem und wandte sich an Digital Research. Die hatten neben CP//M auch eine Benutzeroberfläche namens GEM für den x86 Prozessor entwickelt und portieren diese auf den Atari ST, wo sie zusammen mit CP/M-68K das Betriebssystem bildete.
Heute gibt es – 40 Jahre nach CP/M 3.0 – wieder neue Rechner mit dem Betriebssystem. Der Grund ist die Retro/Vintage-Welle. Es gibt Bastler, die veröffentlichen Bausätze oder ganze Computer, die wie ein PC aus den frühen Achtzigern arbeiten. Dafür braucht man nicht viel. Nimmt man eine Z180 CPU, so hat man wichtige Peripheriebausteine an Bord. Benötigt wird mindestens eine SIO für die Serielle Schnittstelle, denn die Boards werden mit einem PC über USB verbunden, der zweckentfremdet als serielle Schnittstelle genutzt wird und auch den Strom liefert. Daneben braucht man meist nur drei weitere Bausteine: ein ROM in dem CP/M und meistens weitere Programme stecken und ein RAM sowie einen Duplexer, der abhängig von der Adresse zwischen RAM/ROM umschaltet.
CP/M ist als Quelltext veröffentlicht und freie Software. Ein Entwickler muss also nicht das ganze System neu programmieren, er muss nur das BIOS an die Nutzung des ROM (meist als Festplattenersatz) anpassen. Alle Bildschirmausgaben und Tastatureingaben werden vom PC verarbeitet und über eine serielle Schnittstelle geschickt, wofür man einen Treiber auf dem PC installieren muss und man benötigt ein Terminalprogramm.
Ich selbst habe als Mensch mit zwei Linken Händen zwei fertige Kits im Einsatz mit einem 33 MHz Z180 und einem 50 MHz eZ80. Wer sich dafür interessiert sollte nach „RC2014“ suchen. Bei Tindie gibt es etliche dieser Kits. Die gehen recht weit, man kann nicht nur einen einfachen Computer bauen, sondern einen der auch vollständig autonom ist und Farbgrafik wie frühere Heimcomputer hat. Der hier abgebildete AgonLight bietet zum Beispiel einen VGA-Anschluss, USB und man könnte auch noch eine Floppy Disk anbinden – wenn man eine mit den alten 40 poligen Pfostensteckern noch findet.
Wer nur mal CP/M Retrofeeling spüren will ohne zu löten, für den sind die Kits von Circle M. Systems etwas, wo auch meine beiden herkommen.
Sie werden sich aber teilweise umstellen müssen. Nach 48 Jahren kündigte Zilog das Produktionsende des Z80 Prozessors an. Meiner Ansicht nach hätte man noch das 40-jährige Jubiläum abwarten können, immerhin, er wurde 34 Jahre länger als der 8080 Prozessor, aus dem er hervorging, produziert.
Viele Kits basieren auf dem Z80, aber codekompatibel, wenn auch etwas teurer da leistungsfähiger ist sein bis heute produzierter Nachfolger Z180.
Links:
Kürzerer Artikel über die Geschichte und Technik von CP/M
Ausführlicher Artikel über die Entwicklungsgeschichte von CP/M.
Die wahre Geschichte wie IBM zu PC-DOS kam.