The following article was printed in August 1984 of the magazine „MC".
A discussion if it is useful to replace P/M 2.2 by CP/M Plus.
Hans-Georg Joepgen

CP/M-Plus: Lohnt Umsteigen?

Das verbreitetste Computer-Betriebssystem der Welt hat einen Nachfolger gefunden: Mit „CP/M-Plus" (Versionsnummern ab 3.0) ist nicht schlicht eine fortentwickelte Neuauflage der CP/M-Versionen 2.2X erschienen, sondern ein System-Software-Paket, das in weiten Teilen völlig neu geschrieben wurde. Mit „Alt-CP/M" verblieben nur noch soviel Gemeinsamkeiten, wie zur Bewahrung der Kompatibilität mit früherer Software erforderlich ist1.

Nach der offiziellen Ankündigung des neuen Produkts im Jahr 1982 begann Anfang 1983 in den USA die Auslieferung einer Vorabversion, die einige Monate darauf ohne Vergabe einer neuen Versionsnurnmer durch eine bereinigte und von einigen Irrtümern befreite Fassung (Second Edition) abgelöst wurde. Das ist auch die Betriebssystem-Variante, die wir auf einem Wavemate-Bullet (128 KByte) erprobten. CP/M-Plus gibt es einmal als „Non-Banked-Betriebssystem" in einer Art Sparversion für karg ausgerüstete Rechner mit 32...64 KByte Arbeitsspeicher, die „Banked-Version" (von uns getestet) verlangt nach Speichergrößen ab 96 KByte und bietet wichtige Dienstleistungen, die man in der Magerfassung vergeblich sucht. Wie bisher schon in der CP/M-Historie, so hängen auch unter CP/M-Plus Zuverlässigkeit und Arbeitsgeschwindigkeit des Gesamtsystems zu einem guten Teil vom CBIOS („customized Input/Output-System") des Betriebssystems ab, das die Schnittstellen zwischen Betriebssystem und Hardware enthält. Der CP/M-Produzent Digital Research, Incorporated (DRI) liefert nur für sehr wenige Maschinen das CBIOS und überläßt dessen Implementation in der Regel Zwischenhändlern, Rechner-Herstellern und Endanwendern selbst. Unser CBIOS stammte von der Firma Wavemate; es machte von DMA, interruptgetriebenen Treibern und den Möglichkeiten des Z80 mit seinen zwei Registerbänken und dem gegenüber dem 8080 erweiterten Befehlssatz ausgiebig Gebrauch. Die hervorragenden Leistungsdaten, die wir registrierten, wird man nicht in jedem Fall von beliebigen anderen Rechnern unter CP/M-Plus mit gleicher Taktgeschwindigkeit erwarten dürfen, sondern nur dann, wenn dort ein CBIOS gleicher oder höherer Leistungsfähigkeit benutzt wird. Diese Vorbemerkung ist erforderlich, weil bisweilen die Trennung schwerfällt, was von den vielen schönen Eigenschaften des Betriebssystems unserer Erprobungsmaschine dem CBIOS und was allgemein CP/M-Plus zuzurechnen ist.

Alte Schwächen gründlich behoben

CP/M ist ein Betriebssystem, dessen Entwurfsgrundzüge aus der Frühzeit der Mikrocomputerei stammen. Sparsamer Umgang mit Speicherkapazität hatte beim Entwurf von Ur-CP/M ganz oben auf der Prioritätenliste zu stehen, Bedienungskomfort und Laienfreundlichkeit waren demgegenüber von minderer Wichtigkeit. Aus dieser Zeit stammen Eigenheiten, die heute nicht mehr so recht in die Landschaft passen, nachdem Speicherbausteine billig wurden und Forderungen nach komfortabler Benutzerführung und gutmütigem Betriebsverhalten immer mehr in den Vordergrund traten. Die gravierendsten der Schwachpunkte von CP/M-2.X sind in Banked-CP/M-Plus nun behoben: Kein Ärger mehr mit Control-C, nach Bedienfehlern gibt es statt der schlichten Verweigerung nun häufig intelligentere System-Antworten, Tippfehler in Anweisungszeilen lassen sich jetzt bequemer korrigieren - CP/M ist, alles in allem, bedeutend „menschennäher" geworden (Tabelle 1).

Tabelle 1: Vorzüge und Nachteile auf einen Blick
Nachteilig ist bei CP/M-Plus im Vergleich mit CP/M 2.2X:
  • Höherer Preis.
  • Es braucht mehr Speicher für eigene Zwecke.
  • Auf vielen Rechnertypen noch nicht implementiert (kein CBIOS).
  • Es gibt noch kaum „plus-spezifische" deutschsprachige Fachliteratur.
  • Keine „Subdirectories", wie sie sich in Unix und - ab Version 2.0 - in MS-DOS finden. (Die CP/M-User-Bereiche sind dafür kein echter Ersatz.)
Vorteile gegenüber CP/M 2.2X:
  • Sehr viel schneller bei Dateizugriffen.
  • Konsistenter bei den Anforderungen an den Bediener: „SHOW" und „SET" statt des alten Vielzweck-„STAT".
  • Mit ausgedehntem „HELP-Mechanismus" ausgestattet (Soufflier-Bibliothek).
  • Ein neues „ARCHIVE"-Attribut erleichtert die automatisierte Fertigung von Sicherungskopien neuer oder veränderter Dateien und Programme.
  • CP/M-Plus bietet Geheimwort-Schutz als Zugangssperre zu Dateien in mehreren Stufen: Schutz vor Zerstörung, Schutz vor Veränderung, Schutz vor jedwedem Zugang.
  • Automatische Buchführung über den Zeitpunkt (Kalenderdatum und Uhrzeit) der Generierung, Veränderung oder Inspektion von Dateien.
  • Dynamische Selbstorganisation des Systems durch RSX-Module („Resident System Extension") möglich.
  • Input/Output-Redirection mit einfacher Syntax: „PUT PRINTER OUTPUT TO FILE PROTOCOL.DOC", „GET CONSOLE INPUT FROM FILE A:TEST.TST" usw.
  • Multi-Laufwerk-Suche beim Laden und bei der Directory-Ausgabe fast mit der Leistungsfähigkeit von Microshell.
  • Anweisungen an das System in leicht lernbarer „Langsprache" oder in zeitsparender „Kurzsprache"möglich.
  • Zahlreiche neue System-Dienstleistungen für Anwenderprogramme.

Hinzu kommt eine deutliche Erhöhung der Verarbeitungsgeschwindigkeit beim Zugriff auf Sekundärspeicher. Während frühere Versionen, je nach CBIOS, jeweils lediglich einzelne Sektoren oder allenfalls Gruppen von wenigen Datenträger-Sektoren auf einen Schlag lasen oder schrieben, geht CP/M-Plus mit kompletten Spuren (Tracks) um; die Zerlegung in kleinere Einheiten oder ihr Zusammensetzen geschieht in Primärspeicher-Puffern. Dies bringt nicht nur mehr Tempo, sondern auch eine Verminderung des Verschleißes an Datenträgern und Laufwerk-Köpfen.

Dynamische Speicherverwaltung

Von außerordentlicher Bedeutung ist eine weitere Eigenheit von CP/M-Plus: Das Betriebssystem ist in der Lage, sich weitgehend selbsttätig dem Wechsel von Betriebsbedingungen anzupassen, was den Umfang des belegten Speicherraumes angeht. Je mehr an Dienstleistungen ein Betriebssystem zu bieten hat, desto breiter macht es sich im Speicher und desto weniger Raum läßt es für Anwenderprogramme und deren Daten. Hier zeigt CP/M-Plus ein ausgesprochen flexibles Verhalten: Ständig einquartiert bleibt nur ein „Rumpf-System", der Rest an Speicher steht voll dem Anwender zur Verfügung. Erst dann, wenn Anwenderprogramme oder Operator auf Dienstleistungen zurückgreifen, die das Rumpf-System nicht zu leisten vermag, lädt es entsprechende Bausteine von der Diskette nach und erweitert sich sozusagen selbständig auf Kosten des Nutzer-Speicherbereichs TPA („Transient Program Area"). Eine ganze Anzahl dieser Bausteine „RSX" (Resident System Exten-sions) stehen für vielerlei nützliche Zwecke zur Verfügung, doch erlaubt CP/M-Plus dem Anwender auch, auf einfache Weise eigene RSX-Module zu schreiben und sie in das System zu integrieren. Der alte CP/M-Debugger DDT zeigte bereits den Weg: DDT.COM ist ein Dienstprogramm, das in die TPA auf Kosten des Anwenderraumes geladen wird. Das RSX-Konzept ist eine in mehrfacher Hinsicht verbesserte Fortentwicklung dieses Verfahrens. Es können mehrere dieser „residenten System-Erweiterungen" geschachtelt im Rechner-Speicher hausen. Technisch arbeiten sie reibungslos zusammen: Jede RSX prüft bei Dienstleistungsaufrufen, ob sie zuständig ist. Trifft dies zu, so führt sie die angeforderte Aktivität aus und gibt zurück zum Anwenderprogramm; andernfalls wird weitergereicht an die nächste RSX, die gleichermaßen verfährt. Letzter in der Kette: Der Betriebssystem-Kern höchstpersönlich, das „Rumpf-CP/M".

„System Control Block" und neue System-Aufrufe

War es früher - etwa nach dem Wechsel von Peripheriegeräten - erforderlich, auf eine Betriebssystem-Variante mit anderem CBIOS und geänderten Treibern umzusteigen, so bringt CP/M-Plus auch hier eine Verbesserung: Eine 100 Byte große Tabelle im Primärspeicher (SCB, „System Control Block") enthält variable Einträge, die das Systemverhalten bestimmen. Ob Redirection erfolgt und welche Kanäle betroffen sind, wie das Abschlußzeichen für Zeichenketten aussieht (früher ausschließlich ein Dollar-Symbol), das Tagesdatum und die Uhrzeit, der Suchweg bei der automatischen Fortschaltung von Laufwerk zu Laufwerk. Dies und noch mehr enthält also der SCB, eine Neuerung, für die es in den älteren CP/M-Versionen keine Entsprechung gibt. (Die Tabellen 2 und 3 geben über die BIOS- und BDOS-Funktionen Auskunft.)

Tabelle 2: BIOS-Funktionen bei CP/M 3.0 (Auszug)
NummerNameFunktion
17KONOSTRückmeldung über Bereit-Zustand des Konsolen-Ausgabekanals
18AUXISTRückmeldung über Bereit-Zustand der Peripherie-Eingabekanals
19AUXOSTRückmeldung über Bereit-Zustand des Peripherie-Ausgabekanals
20DEVTBLAdresse der Peripheriegeräte-Parametertabelle bereitstellen
21DEVINIPeripheriegeräte-Parameter (etwa Baudrate) verändern
22DRVTBLAdresse der Tabelle Sekundärspeicher-Eigenschaften übergeben
23MULTIOPaket-I/O mit Sekundärspeicher vorbereiten
25MOVESimuliert für Intel-CPUs Blockmove-Fähigkeit der Zilog Z 80
26TIMEStellen und auswerten von Systemkalender und Systemuhr
27SELMEMHauptspeicher-Bereich anwählen
28SETBNKHauptspeicher-Bereich für Sekundärspeicherkommunikation setzen
29XMOVEKopieroperation von fremder oder in fremde Speicherbank
30USERFBereitgehalten zur Verfügung des Implementors: „User Function"

Tabelle 3: Beispiele für neue BDOS-Funktionen
NummerNameFunktion
44Set Multi Sector CountPaket-I/O vorbereiten
45Set BDOS Error ModeArt der Fehlerbehandlung festlegen
46Get Disk Free SpaceVerfügbaren Speicherraum melden
47Chain to ProgramAnwender- oder Dienstprogramm abfahren
49Get/Set SCBKommunikation mit System, Control Block
59Load OverlayAssistenzroutinen laden
60Call RSXAufruf einer Resident System Extension
100Set DIR LabelDirectory mit Namenskennung versehen
101Return DIR LabelNamenskennung Directory auswerten
104Set D & TKalender und Uhr des Systems stellen
105Get D & TKalenderdatum und Uhrzeit bereitstellen
107Return Serial NumberKundennummer des Anwenders bereitstellen
109GET/SET CONSMODEBetriebsart des Konsolenkanals festlegen
112List BlockPaketausgabe an den Drucker-Kanal

Die Firma Digital Research legt Wert auf die Feststellung, daß bei all dem „hundertprozentige Kompatibilität" zu früher entstandener Anwendungs-Software gewährleistet werden konnte - wir werden später sehen, was von dieser Behauptung zu halten ist. Hier soll erst einmal interessieren, mit welchen Mitteln versucht wurde, Verträglichkeit sicherzustellen. Wie schwierig dieses Unterfangen ist, erkennt man leicht am Problem der Buchführung über Datei-Parameterdaten. Die 8-Bit-CP/M-Varianten vor CP/M-Plus hielten im Datenträger-Inhaltsverzeichnis allein Informationen über Titel, Umfang, physischen Aufzeichnungsort sowie einige wenige weitere Attribute fest, zu denen aber nicht eine spezifizierte Zugangskontrolle und auch nicht Vermerke über den Zeitpunkt von Zugriffen gehörte. CP/M-Plus erlaubt nun, Daten und Uhrzeit von mancherlei Zeitpunkten aus der Datei-Vorgeschichte festzuhalten und festzulegen, daß Dateien vor unbefugtem Lesen, vor Veränderung oder Löschung geschützt werden, indem erst nach Eingabe geheimer Kennworte der Zugang eröffnet wird. Aufwärts-Kompatibilität zu den Vorgänger-Versionen wird durch zwei elegante Tricks erreicht: Einmal ist dem klassischen FCB („File Control Block") alter Art unter CP/M-Plus nun ein Zusatz vorgeschaltet, der den FCB zum „XFCB" macht, zum „Extended File Control Block", doch dieser Zusatzinformationen bedarf es nur, wenn man sich der fortgeschrittenen „Plus"-Features bedienen will, sonst tut's weiterhin ein FCB in gewohntem Format. Lösung zwei betrifft das Datenträger-Inhaltsverzeichnis „Directory", dessen Umfang mit 32 Byte pro Eintrag wegen der Verträglichkeit mit Altversionen unverrückbar festliegt und das nun gleichwohl noch Zusatzinformationen beträchtlichen Umfangs zusätzlich aufnehmen sollte, obgleich nahezu jedes Bit bereits benutzt war. Bemerkenswert, wie DRI den gordischen Knoten löste: Ein Dienstprogramm INITDIR initialisiert das Datenträger-Directory so, daß jeweils der Ort einer Eintragung für die gesonderte Speicherung der Zusatzinformationen einer kleinen Gruppe „klassischer" Einträge zur Verfügung steht. Tabelle 4 zeigt schließlich die Kompatibilität bei einigen Dienstprogrammen.
Tabelle 4: Kompatibilität von CP/M 3.0 mit CP/M 2.2
Disk-Utility „Universal" DUU von Ward Christensen läßt System zusammenbrechen.
Interchange (Ecosoft) läuft, wertet jedoch Extented Directories falsch aus und gibt Fehlmeldung über Directory-Belegungszustand.
Debugger Trace-80 von Lothar Lauterbauch läuft, sofern Bank-Umschaltungen vermieden werden.
Elementare Funktionen von Microshell laufen, jedoch Konflikte bei Autosearch.
Compiler Borland-Turbo-Pascal, Polydata-Compas-Pascal und DRI-Pascal-MTPlus: Übersetzer und Objektcode (Kompilate) laufen einwandfrei, sofern letztere auf Bank-Umschaltung verzichten,
sonst unter gewissen Betriebsbedingungen Gefahr von Systemzusammenbrüchen. Turbo und Compas lassen bereits die neuen BIOS-Aufrufe zu, unter MTPlus 5.6 sind sie jedoch nur über INLINE-Code oder inkludierte Module betriebssicher erreichbar.
BDS-C (Leor Zolman) und AZTEC-C (Manx Software Systems): Die Compiler laufen wie gewohnt, für Kompilate jedoch gleiche Einschränkung wie oben.
CMDMAK (mc 1984, Heft 3) interpretiert die neuen Zusatzeinträge im Directory unter gewissen Betriebsbedingungen falsch. Abhilfe: In Zeile 68
statt'... = $E5 then exit'
setzen'...<> 0 then exit'.

Erstaunlicher Geschwindigkeitsgewinn

Vielerlei an klugen und eleganten Lösungen im neuen CP/M - doch was merkt der Anwender unmittelbar davon, was macht sich dabei in der täglichen Arbeit bemerkbar? Am meisten ins Auge fiel der außerordentliche Zugewinn an Arbeitstempo bei allen Jobs, die sehr oft wahlfreien Zugriff in große Disketten-Dateien erforderlich machen, wie dies Buchführungsprogramme tun. Zum Vergleich diente uns dabei ein Testprogramm, das den Laufwerken kräftig Arbeit gibt, indem es zwei Dateien mit je 676 Sätzen zu 67 Byte anlegt und den Inhalt der ersten Datei sodann per „random access" umsortiert in das zweite File kopiert. Dieses Programm, geschrieben in Turbo-Pascal, benötigte auf ein und demselben Rechner Wavemate-Bullet unter CP/M 2.2 immerhin 620 und unter CP/M 3.0 42 Sekunden. Bei der Interpretation dieses Versuchsergebnisses muß berücksichtigt werden, daß ein Testprogramm nicht repräsentativ für alle Anwendungsprogramme sein kann; es wurde vielmehr gezielt zur Beurteilung der Arbeitsgeschwindigkeit von Disketten- und Platten-Operationen unter der praxisfernen Prämisse geschrieben, daß die gesamte Datei komplett auf den Kopf gestellt werden muß. Überdies überlagern sich hier die Einflüsse von CBIOS und CP/M, doch am Endergebnis ändert all dies nichts: CP/M-Plus ist allemal deutlich eher mit der Arbeit fertig. Besonders erstaunlich: Sehr oft schlug der Bullet beim Datei-Umbau einen IBM-XT unter DOS 2.1 und CP/M-86V1.1 um Längen. Man sieht, die alte 8-Bit-Technik leistet Hervorragendes, wenn sie im modernen Gewand einherkommt.

„Mensch-Maschine-Schnittstelle" läßt Wünsche offen

Unter CP/M 2.2 hatten wir in der Vergangenheit mit gutem Erfolg regen Gebrauch von dem alternativen CCP („Console Command Processor") „Interchange" von Ecosoft gemacht und darüber hinaus gern den Pseudo-Unix-Adapter „Microshell" eingesetzt. Wir brauchten sie in fast allen Fällen nicht länger, wenn sie auch unter CP/M 3.0 einwandfrei liefen. Pipes, Redirection und gruppenweises Exkludieren bei Kopierbefehlen: All das hat das neue CP/M nun von Haus aus selbst, nicht immer so schön und so vollständig wie bei Interchange und Microshell, aber doch meist ausreichend. Vom Schutzwort-Verfahren „Password Protection" machten wir - von ein paar Versuchen abgesehen - keinen Gebrauch, weil es keine betrieblichen Notwendigkeiten dazu gab, doch das „Time Stamping" mochten wir bald nicht mehr missen, jene Betriebsart, in der CP/M-Plus selbst über den Zeitpunkt von Zugriffen auf Dateien Buch führt. Doch läßt CP/M-Plus auch Wünsche offen: Trotz eines neuen, angenehmen Editier-Modus für Kommandozeilen und weiteren Möglichkeiten, die das Leben mit dem Computer deutlich leichter machen als bisher, ist auch das neue CP/M noch immer eher ein Betriebssystem für Techniker und Spezialisten denn eines für Kaufleute, Schreibkräfte oder Schüler. Wer Dateien kopieren will, hat sich weiterhin des kompliziert zu handhabenden „Peripheral Interface Processors" PIP mit seinen vielen „Switches" zu bedienen. Wehe, wenn mal ein Datenfile kopiert werden soll, das ein Control-Z enthält und man vergißt, den entsprechenden Schalter zu setzen: Dann kann einem auch unter CP/M-Plus schon mal die halbe Datei abhanden kommen. Hier hat die Firma Digital Research offenbar im Zeichen „Wahrung der Kompatibilität" auf die Gewohnheiten der bisherigen Benutzerwelt Rücksicht genommen und allein deswegen manches beim Alten gelassen. Denn daß es DRI auch anders kann, zeigen die Utilities HDMAINT und DSKMAINT der Versionen von CP/M-86 und Concurrent-CP/M, die PIP-Aufgaben ohne solchen Ballast auf dem IBM-PC und PC/XT erfüllen.

CP/M-Plus: Für wen und wann?

CP/M-Plus ist deutlich teurer als Vorgängerversionen, für so manchen Rechnertyp gibt es noch immer kein CBIOS, und da stellt sich trotz der großen Vorzüge dieses neuen Betriebssystems die Doppelfrage: Wann ist der mit einem Umsteigen verbundene Mehraufwand gerechtfertigt, unter welchen Bedingungen kommen die Vorzüge zum Tragen, wann nicht? Wo allein fertig konfektionierte Software gefahren wird und es nicht auf hohe Arbeitsgeschwindigkeiten bei Plattenzugriffen ankommt und man überdies die dazu notwendigen Handgriffe auch ohne HELP-Souffliertafeln längst beherrscht, kann man guten Gewissens beim vertrauten CP/M 2.2 bleiben; 8-Bit-Software, die ausdrücklich nach CP/M-Plus verlangt, spielt auf dem Markt keine nennenswerte Rolle.
Wo jedoch Effizienz und geringer Zeitbedarf eine Rolle spielen, da sollte man getrost umrüsten.

1. A matching articel called CPM-PLUS was published on the internet

Scanned by Werner Cirsovius
November 2002
© Franzis' Verlag