PL/M
| PL/M | |
|---|---|
| Basisdaten | |
| Erscheinungsjahr: | 1973[1][2] |
| Entwickler: | Gary Kildall[3] |
| Beeinflusst von: | PL/I, XPL |
| Beeinflusste: | CP/M, PLuS |
PL/M, eine Abkürzung für Programming Language for Microcomputers,[4][5] ist eine höhere Programmiersprache, die 1973 von Gary Kildall für den Intel 8008 konzipiert und entwickelt wurde. Später wurde sie für den neueren Intel 8080 erweitert. Der 8080 verfügte über genügend Leistung, um den PL/M-Compiler auszuführen, es fehlte ihm jedoch an einer geeigneten Form des Massenspeichers. In dem Bestreben, die Sprache von der PDP-10 auf den 8080-Prozessor zu portieren, verwendete Kildall PL/M, um ein Betriebssystem zu schreiben, das die Verwendung von Disketten ermöglichte. Dies war die Grundlage für CP/M.
Geschichte
[Bearbeiten | Quelltext bearbeiten]Kildall arbeitete 1973 an der Naval Postgraduate School in Monterey, Kalifornien, als er Mittel zur Ausstattung eines Computerlabors erhielt, zunächst mit dem auf dem MCS-4 basierenden SIM4 und ein Jahr später mit dem auf dem Intel 8008 basierenden Intel Intellec 8.[6] Im Rahmen seiner Anstellung durfte Kildall einen Tag pro Woche für eigene Projekte nutzen, verbrachte jedoch bald viel mehr Zeit damit und lebte in seinem VW-Bus auf dem Parkplatz der Intel-Büros in der Bowers Avenue in Santa Clara.[7]
Eines Tages suchte er Hank Smith auf, den Leiter der kleinen Abteilung für Mikrocomputersoftware bei Intel. Kildall erläuterte seine Idee, eine höhere Programmiersprache für den 8008 zu entwickeln. Smith verstand das Konzept nicht, also erklärte Kildall, dass ein Programmierer etwas wie X = Y + Z schreiben könnte und das Programm dies in mehrere Zeilen Assembler-Code umwandeln würde, die diese Operation ausführen würden. Smith rief daraufhin einen Kunden von Intel an und fragte, ob dieser an einem solchen Produkt interessiert sei, und als dieser Interesse bekundete, beauftragte Smith Kildall sofort mit der Umsetzung.[8]
Kildall schrieb PL/M auf der Grundlage der Konzepte der Sprache XPL, die wiederum auf der Syntax und den Konzepten von IBMs PL/I basierte. XPL war ausdrücklich dafür konzipiert, PL/I-ähnliche Programme in einem viel einfacheren Softwaresystem zu kompilieren, und zwar speziell für Lehrzwecke. Als Kildall begann, für die Sprache zu werben, stellte er fest, dass nur wenige Programmierer daran interessiert waren, bis er demonstrierte, dass man ein Programm von etwa derselben Größe und Leistung wie in Assembler schreiben konnte, jedoch in etwa einem Zehntel der Zeit.[9]
PL/M lief ursprünglich auf großen PDP-10-Mainframe-Computern, die den endgültigen Maschinencode auf Lochstreifen ausgaben, der dann in einen PROM-Brenner eingespeist wurde, woraufhin die ROMs auf die Zielmaschine übertragen wurden. Mit der Veröffentlichung des Intellec 8 im Jahr 1974 begann er den Versuch, das System auf diese Plattform zu portieren, um es „selbsthostend“ zu machen, sodass Programmierer alles auf dieser Plattform erledigen konnten. Leider verfügte der 8008 über einen sehr kleinen Call-Stack mit nur acht Einträgen, der für eine Hochsprache einfach zu klein war.[10]
Dieses Problem wurde mit der Einführung des ersten Intel 8080 Ende 1973 gelöst, der einen Stack beliebiger Größe im Speicher unterstützte.[11] Intel rüstete den Intellec 8 auf Basis des neuen Chips zum Intellec 8/80 auf. Obwohl dieses System über die Rechenleistung verfügte, um PL/M auszuführen, fehlte ihm jegliche brauchbare Form von Massenspeicher, und das Hinzufügen einer brauchbaren Menge an Hauptspeicher war extrem teuer.[12] Nur wenige Häuserblocks von Intel entfernt hatte Memorex kurz zuvor ein neues, kostengünstiges Diskettenlaufwerk auf den Markt gebracht,[13] was wiederum Alan Shugart dazu veranlasste, Shugart Associates zu gründen und kostengünstigere Laufwerke einzuführen. Kildall konnte Finis Conner, der damals bei Shugart tätig war, dazu überreden, ihm eines ihrer älteren Testlaufwerke zu überlassen.[14]
Leider gab es keinen Laufwerkscontroller für die Intel-Systeme, und obwohl ein Entwurf vorlag, wurde dieser nie umgesetzt. Das Laufwerk stand ein Jahr lang im Regal, bevor Kildall beschloss, die Software zu schreiben, die erforderlich war, um es in PL/M auf seinem 8080-Emulator auf dem PDP-10 zu nutzen. 1974 rief er einen Freund von der University of Washington an, John Torode, der einen Controller für den 8080 baute. Nach einigen Monaten lief das System, und Kildall lud den Treiber; dieser funktionierte auf Anhieb und zeigte die Eingabeaufforderung an.[15]
Im Sommer 1975 arbeitete Kildall als Berater bei Signetics, die ihn baten, PL/M auf ihren Signetics 2650 zu portieren. Daraus entstand die Sprache PLuS. Der 2650 war auf dem Markt ein „Reinfall“, und Signetics gab ihn innerhalb eines Jahres auf. Man entschied sich stattdessen für die Lizenzierung des Fairchild F8. Während seiner Tätigkeit dort lernte Kildall Jim Warren kennen, einen weiteren Berater, der gerade das neue, auf Minicomputer ausgerichtete Magazin Dr. Dobb's Journal aufbaute. Warren schlug Kildall vor, unter dem Namen CP/M eine Anzeige in der Zeitschrift zu schalten, und damit wurde das System auf den Markt gebracht.[16]
Überblick
[Bearbeiten | Quelltext bearbeiten]Die Sprache übernahm Ideen aus PL/I und XPL[17][18] und verfügte über einen integrierten Makroprozessor. Als Absolvent der University of Washington hatte Kildall dort den Burroughs B5500-Computer genutzt[19] und war sich daher des Potenzials von Hochsprachen wie ESPOL für die Systemprogrammierung bewusst.
Im Gegensatz zu anderen zeitgenössischen Sprachen wie Pascal oder BASIC verfügte PL/M über keine Standard-Ein- oder Ausgaberoutinen. Es enthielt Funktionen, die auf die für die Zielmikroprozessoren spezifische Low-Level-Hardware ausgerichtet waren, und konnte somit den direkten Zugriff auf beliebige Speicherorte, E/A-Ports und die Prozessor-Interrupt-Flags auf sehr effiziente Weise unterstützen. PL/M war die erste höhere Programmiersprache für mikroprozessorbasierte Computer und diente als ursprüngliche Implementierungssprache für jene Teile des Betriebssystems CP/M, die nicht in Assembler geschrieben waren. Viele auf Intel und Zilog Z80 basierende Embedded-Systems wurden in den 1970er und 1980er Jahren in PL/M programmiert. So wurde beispielsweise die Firmware der Service-Prozessor-Komponente des CISC-basierten IBM AS/400 in PL/M geschrieben.
Der ursprüngliche PL/M-Compiler war für den Intel 8008 ausgelegt.[20] Eine aktualisierte Version (PL/M-80) erzeugte Code für den 8080-Prozessor, der auch auf dem neueren Intel 8085 sowie auf der Zilog-Z80-Familie lief (da er mit dem 8080 abwärtskompatibel ist). Später folgten Compiler für die Intel 8048- und Intel 8051-Mikrocontroller-Familie (PL/M-51) sowie für den 8086 (8088) (PL/M-86), 80186 (80188) und nachfolgende 8086-basierte Prozessoren, darunter der fortschrittliche 80286 und der 32-Bit-Prozessor 80386. Es gab auch PL/M-Compiler, die für spätere Mikrocontroller entwickelt wurden, wie beispielsweise die Intel 8061 und 8096 / MCS-96-Architekturfamilie (PL/M-96).[21]
Während einige PL/M-Compiler „nativ“ waren, d. h. auf Systemen mit demselben Mikroprozessor liefen, z. B. für Intels ISIS-Betriebssystem (Intel System Implementation Supervisor), gab es auch Cross-Compiler, wie beispielsweise PLMX, die auf anderen Betriebssystemen wie CP/M, MS-DOS und VAX/VMS liefen.
PL/M wird von Intel nicht mehr unterstützt, es gibt jedoch Programme, die PL/M in C-Code übersetzen[22].
PL/M Beispiel-Code
[Bearbeiten | Quelltext bearbeiten]FIND: PROCEDURE(PA,PB) BYTE;
DECLARE (PA,PB) BYTE;
/* FIND THE STRING IN SCRATCH STARTING AT PA AND ENDING AT PB */
DECLARE J ADDRESS,
(K, MATCH) BYTE;
J = BACK ;
MATCH = FALSE;
DO WHILE NOT MATCH AND (MAXM > J);
LAST,J = J + 1; /* START SCAN AT J */
K = PA ; /* ATTEMPT STRING MATCH AT K */
DO WHILE SCRATCH(K) = MEMORY(LAST) AND
NOT (MATCH := K = PB);
/* MATCHED ONE MORE CHARACTER */
K = K + 1; LAST = LAST + 1;
END;
END;
IF MATCH THEN /* MOVE STORAGE */
DO; LAST = LAST - 1; CALL MOVER;
END;
RETURN MATCH;
END FIND;
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Shustek 2016
- ↑ Kildall 1993
- ↑ Swaine 2001
- ↑ Shustek 2016
- ↑ Kildall 1993
- ↑ Kildall 1993, S. 48
- ↑ Kildall 1993, S. 49
- ↑ Kildall 1993, S. 48
- ↑ Kildall 1993, S. 48
- ↑ Kildall 1993, S. 50
- ↑ Kildall 1993, S. 51
- ↑ Kildall 1993, S. 52
- ↑ Kildall 1993, S. 53
- ↑ Kildall 1993, S. 54
- ↑ Kildall 1993, S. 55
- ↑ Kildall 1993, S. 58
- ↑ Shustek 2016
- ↑ Kildall 1993
- ↑ Kildall 1970
- ↑ Kildall 1974
- ↑ Intel 1983
- ↑ PL/M to C UNIX converter. Abgerufen am 14. Mai 2026 (englisch).
Quellen
[Bearbeiten | Quelltext bearbeiten]- Gary Arlen Kildall: Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry. Hrsg.: Scott Kildall, Kristin Kildall. Kildall Family, 2. August 2016 (englisch, computerhistory.org [abgerufen am 17. November 2016] [1993]).
- Len Shustek: In His Own Words: Gary Kildall. In: Remarkable People. Computer History Museum, 2. August 2016, abgerufen am 2. Februar 2020 (englisch).
- Michael Swaine (technical author): Gary Kildall and Collegial Entrepreneurship. In: Dr. Dobb's Journal. 22. Juni 2001 (englisch, drdobbs.com [abgerufen am 20. November 2006]).
- Gary Arlen Kildall: APL\B5500 - The Language And Its Implementation. University of Washington, Computer Science Group, September 1970, abgerufen am 29. Januar 2020 (englisch, Technical Report 70-09-04).
- Software Handbook. Intel Corporation, 1984, 230786-001, Translators And Utilities For Program Development, S. 3-1 (englisch, trailing-edge.com [PDF; abgerufen am 29. Januar 2020] [1983]): “[…] A LANGUAGE FOR EVERY NEED […] PL/M is the most popular 8086 language for systems programming and provides the best of both optimal code and high level language capabilities. […] PL/M-51 was the first high level language ever to be introduced for a microcontroller. The 8096 is similarly supported with PL/M-96. […]”
- Gary Arlen Kildall: High-level language simplifies microcomputer programming. In: Electronics. McGraw-Hill Education, 27. Juni 1974, S. 103–109 (englisch, retrotechnology.com [PDF; abgerufen am 14. November 2021]).
- PL/M-80 Programming Manual. Intel Corporation, Januar 1980, Doc # 98-268B (englisch, trailing-edge.com [PDF; abgerufen am 29. Januar 2020] [1976]).
- MCS-8 Guide to PL/M Programming. Intel Corporation, September 1973 (englisch, bitsavers.org [PDF; abgerufen am 2. Februar 2020]).
- PL/M 386 Programmer's Guide. RadiSys Corporation, Dezember 1999 (englisch, stanford.edu [PDF; abgerufen am 29. Januar 2020]). (NB. Includes entire syntax of PL/M in BNF notation.)
- Daniel D. McCracken: A Guide to PL/M Programming for Microcomputer Applications. Pearson / Addison-Wesley, 1978 (englisch).* Ken Burgett: Development of Intel ISIS Operating System - An interview with Ken Burgett. 10. November 2017, abgerufen am 25. November 2023 (englisch). 2017 Ken Burgett interview about development of intel ISIS Operating System