Die Geschichte von CP/M (1)
Ich habe bereits vor Jahrzehnten einen Beitrag über CP/M geschrieben, inzwischen besitze ich zwei neue CP/M Rechner und habe mich mehr mit der Materie befasst, sodass ich in diesem neuen Artikel das Thema nochmals aber ausführlicher behandeln will. Für den Blog gibt es nur einen Teil des Artikels und diesen noch dazu in zwei Teile aufgeteilt. Er befasst sich mit der Geschichte von CP/M. Mehr über die Technik und die Funktionsweise dann im umfangreicheren Artikel auf der Website für alle die mehr wissen wollen. Morgen geht es dann weiter mit Teil 2.
Die Geschichte von CP/M
Diw Geschichte von CP/M ist eine völlig andere als die der Entstehung des Altairs oder der Geburt von Microsoft Basic, die beide in einigen Monaten entwickelt wurden. Es ist eine Geschichte, die sich über Jahre hinzieht und die schon vor der Geburt des Mikrocomputers begann. Eng verbunden – und das wird so bleiben ist die Geschichte mit Gary Kildall. Gary Kildall war Sohn eines Navy-Offiziers und er hatte so auch an der Navy studiert und später auch bei der Navy einen Abschluss als Doktor der Computerwissenschaften erworben. Er blieb bei der Navy und arbeitete ab 1972 als Professor bei der Navy Postgraduate School (NPS) in Monterey, Kalifornien.
1972 erschien auch der Intel 4004 Mikroprozessor. Wie viele andere, träumte Gary Kildall davon, einen eigenen Computer zu besitzen. Das war bis dahin für Privatpersonen aufgrund der Preise nicht möglich. Mit dem Intel 4004 war wenigstens die CPU eines sehr einfachen Prozessors auf einem Chip. So wurde Kildall auf den Prozessor aufmerksam. Er kostete in großen Stückzahlen 25 Dollar. Mit dem Chip konnte Kildall alleine aber nichts anfangen. Er hätte mindestens 1.700 Dollar in ein SIM4-01 Entwicklungssystem, eine komplette Platine mit EPROM Sockeln und RAM und Anschlüssen für Peripheriegeräte investieren müssen, was er sich bei einem Jahresgehalt von 25.000 Dollar nicht leisten konnte.
So programmierte er auf einer IBM System/370, einem 3 Millionen Dollar teuren Großrechner der NPS einen Simulator für den 4004 Prozessor. Den Befehlssatz des Intel 4004 fand Kildall grauenvoll, aber er war eben der erste und eine zeitlang auch einzige verfügbare Prozessor. Er war auch als 4 Bit Prozessor speziell ausgelegt um in einem Tischrechner verbaut zu werden. Das erste Programm das er entwickelte waren trigonometrische Routinen mit denen der Prozessor Sinus, Cosinus und Tangens berechnen konnte. Damit wandte er sich an Intel und wollte beides gegen ein Sim4-01 Board tauschen. Bob Garrow von Intel hatte keine Verwendung für den Emulator, aber für die trigonometrischen Routinen bekam Gary Kildall sein Entwicklungssystem. Das SIM4-01 hatte 1 KByte RAM und vier Sockel für jeweils 256 Byte fassende EPROMs. Er entwickelte Programme, wie einen BCD-Rechner. Den brauchte man um Berechnungen im Finanzumfeld ohne Rundungsfehler durchführen zu können. Er schrieb Veröffentlichungen und nahm an Konferenzen teil, so wurde er bekannt.
Gary Kildall konnte sein Kit bald auch durch einen ASR-33 Fernschreiber erweitern. Er bekam ihn im Austausch gegen ein Diagnoseprogramm für den 4004 von einer Restaurierwerkstatt. Damit wurde die Entwicklung deutlich einfacher. Der Fernschreiber war damals das gängige Ein-/Ausgabegerät für Minicomputer. Er war Massenspeicher, Eingabe- und Ausgabegerät in einem: Über die Tastatur gab man die Programmzeilen ein, die auf einem Lochstreifen gespeichert wurden. Den Lochstreifen konnte man später einlesen und in ein EPROM ablagen.
1973 wurde Gary Kildall zu einem freien Mitarbeiter für Intel. Er arbeitete einen Tag pro Woche für die Firma. Zusammen mit Bill Byerly und Ken Burgett teilte er sich ein kleines Büro. Seine Aufgabe bestand darin, einen Emulator für den neuen 8008 Prozessor zu entwickeln, so wie er dies schon früher den 4004 getan hatte. Inzwischen hatte Intel die Vorteile erkannt, denn so brauchte man für die Softwareentwicklung kein Entwicklungssystem und der Großrechner, auf dem der Emulator lief, bot auch mehr Komfort als diese minimalistischen Kits.
Auch das NPS richtet ebenfalls 1973 ein Microcomputerlab ein, in dem Studenten sich an den neuen Geräten ausprobieren können. Aus ihm entstehen sogar Produkte, so eine Uhr für Navy-Taucher, die anhand der Tiefe berechnet wie lange man noch tauchen darf und wie lange man sich Zeit für das stufenweise auftauchen lassen muss. Es ist anfangs mit Intels SIM4-01 ausgestattet, das NPS möchte aber auf die neuen Intellec 8 Kits für den 8008 Prozessor upgraden. Bekannte Absolventen des Labors sind Gordon Eubank der später C-BASIC entwickelt und zu den Gründern von Symantec gehört und Glenn Ewing der den IMSAI 8080 mitentwickelte. Gary Kildall beginnt nun eine höhere Programmiersprache für die Systemprogrammierung zu entwickeln. Mit ihr soll man Betriebsysteme und seine Dienstprogramme entwickeln können. Das geschah vorher in Assembler. Die neue Sprache getauft „PL/M“ für Programming Language for Microprocessors“ ist effizient, braucht wenig Speicher und erzeugt schnellen Code. In ihr wird später CP/M programmiert werden. Die Entwicklung von PL/M für den 8008 gestaltet sich schwierig, denn die wichtigste Einschränkung des 8008 war, das er nur acht Einträge für den Stack hat – auf dem Stack werden, wenn Unterprogramme aufgerufen werden, die Rücksprungadresse und oft auch die Register „gesichert“. Mit nur acht Einträgen war dies ein sehr kleiner Stack. Masatoshi Shima der den Intel 4004 mitentwickelt hatte, half Kildall die Schwäche zu umgehen.
PL/M einstand zuerst auf einem Emulator auf einer PDP-10. Kildall wollte aber die gesamte Entwicklung auf dem Intellec 8 Board für den 8008 durchfüren. Das hatte standardmäßig nur 4 KByte Speicher. Man konnte es durch Speichermodule um jeweils 4 KByte erweitern, bis zu einem Maximalspeicher von 16 KByte, mehr konnte der 8008 nicht adressieren. Ein solches Speichermodul kostet allerdings rund 1.000 Dollar. Kildall verkaufte weitere Software und bekam so die 1.700 Dollar zusammen, die er brauchte für ein Videoterminal und einen Drucker. Damit hatte er praktisch einen PC – bis auf die Tatsache das er noch keinen Massenspeicher hatte, der Daten magnetisch auf einer Disk oder einem Band ablegte. 1.700 Dollar waren damals viel mehr wert als heute. Kildalls Gehalt als Professor betrug 20.000 Dollar im Jahr, das heißt diese Ausgabe entsprach einem Monatsgehalt, heute (2025) im Gehalt eher 10.000 Dollar. Den Kredit dafür zahlte Kildall noch lange ab. Das war 1973, zwei Jahre bevor der Altair 8800 erscheint und dabei war dieses System leistungsfähiger als ein Altair.
Der Intel 8080 und PL/M
Bald darauf brauchte Intel den 8080 Prozessor heraus. Auch wenn der Name wie ein „Upgrade“ des 8008 aussieht, handelte war es doch ein neuer Prozessor. Er war viel schneller, konnte viermal so viel Speicher adressieren und das Stackproblem war gelost indem dieser nun im Arbeitsspeicher lag und so theoretisch über 32000 Einträge hatte. Kildall wollte unbedingt ein Intellec 8/80 System, das war das Intellec 8 System aufgerüstet für den 8080.
Was noch fehlte, für Kildall Traum eines eigenen Computers, war ein Massenspeicher. Es gab schon Floppy Disks. 1971 hatte sie IBM eingeführt, um Betriebssystemupdates einfacher zu machen. Diese erste Floppy Disks waren nur einmal beschreibbar. 1972 stellte Memorex die erste wiederbeschreibbare Floppy vor. Sie hatte ein 8-Zoll-Format und konnte unformatiert 250.000 Zeichen (formatiert üblicherweise etwa 2/3 bis ¾ der unformatierten Kapazität) fassen und mit 10.000 Zeichen/s auslesen – der Fernschreiber schaffte nur 10 Zeichen/s und das Videoterminal typisch 1.000 Zeichen/s. Alan Shugart gründete die Firma Shugart Associates, welche die Laufwerke drastisch verbilligen sollte. Trotzdem kostete ein 8 Zoll Diskettenlaufwerk damals 1.500 Dollar und der Controller kostete weitere 1.500 bzw. 3.000 Dollar (das ist aus Kildalls Erinnerungen nicht ganz eindeutig, der Satz lautet: „Those payments on my new CRT didn’t gave any margin for a floppy disk drive at $1500, plus controller at $3000.“). Kildall gab (fälschlicherweise) bei Shugart an, er wäre (fester) Intel Mitarbeiter und konnte so Finis Connor, Marketing Manager überzeugen, ihm ein 8 Zoll Floppylaufwerk zu geben. Er bekam eines das die Lebensdauertests absolviert hatte und so schon 10.000 Betriebsstunden auf dem Buckel hatte. Dazu neue Schreib-/Leseköpfe mit denen die Information geschrieben und gelesen wurde, um die alten abgenutzten (die Köpfe liegen auf der Diskette auf und werden so abgenutzt) Köpfe zu ersetzen.
Nun hatte er ein Diskettenlaufwerk, aber keinen Kontroller und er musste die Schreib-/Leseköpfe ersetzen. Das Laufwerk war so nutzlos und so stand das Laufwerk für ein Jahr nur im Büro herum. Bob Garrow, Vorgesetzter der „Software Division“ (die aus drei Leuten inklusive Kildall bestand) gab Kildall das Design eines Diskettencontrollers das Intel erarbeitet hatte. Kildall kaufte die Teile, brachte die Hardware aber nicht zum Laufen. Er war Softwerker und kannte sich mit Hardware kaum aus. Kildall brauchte jemanden, der sich mit Hardware auskannte, um das Laufwerk zum Laufen zu bringe. Ein Diskettenkontroller ist keine triviale Hardware, nicht umsonst war er genauso teuer wie das Laufwerk selbst. Für jedes Bit steht zum Schreiben 1/125.000 Sekunde zur Verfügung. Die Zeitdauer für ein Bit muss immer gleich sein. Das gilt auch für andere Informationen die geschrieben oder gelesen werden. Dazu kommen Verwaltungsinformationen für jeden Sektor, es gibt definierte Pausen, um diese auszuwerten und es werden Prüfsummen über die geschriebenen Daten erzeugt und geschrieben bzw. beim Lesen wieder verglichen. Das ist eine komplexe, zeitkritische Aufgabe. Dazu brauchte man viele Chips. Beim Xerox Alto der etwa zeitgleich entstand, waren es 55 Bauteile. Selbst als in den Achtziger Jahren es integrierte Bausteine für die Arbeit gab waren diese so komplex, dass sie wesentlich teurer als die CPUs waren. Der Diskettenkontroller war so erheblich komplexer als das Intellec-System das er schon hatte.
Gary Kildall wendet sich wieder seinem Emulator zu. Er schreibt dort das Betriebssystem für das Diskettenlaufwerk, das er CP/M für Control Programm for Microcomputers nennt. Der einzige Zweck dieser ersten Version war es eine Programmierplattform für die PL/M Entwicklung zu haben, nicht mehr und nicht weniger. Er schreibt auch einen kleinen Editor: Ed.
1974, nach einem Jahr hat er die Gelegenheit die Hardware zum Laufen zu bekommen. John Torode, ein Freund von der Universität von Washington, hat einen Doktor in Electrical Engineering. Doch selbst Torode braucht Monate um den Controller zum Laufen zu bringen. Schließlich ist es so weit. Gary Kildall liest CP/M von einem Papierstreifen ein und schreibt es auf Diskette, dann bootet er die Diskette und tatsächlich meldet sich das Betriebssystem mit einem Stern. Gary Kildall beschreibt dies als den aufregendsten Tag in seinem Leben. Er spielt den Editor ed auf die Diskette und startet ihn über das kommando- „Ed“ und auch er meldet sich. Er erstellt eine Textdatei, beendet Ed, schaut sich mit Dir an, ob die Datei auch auf der Diskette ist und gibt sie mit Type auf dem Bildschirm aus – und alles funktioniert. Torode und Kildall feiern den Tag mit einem Essen in einem chinesischen Restaurant.