Versuch, die 'PDP-8 Frequently Asked Questions' von Douglas W. Jones (Okt. 1997) ins Deutsche zu übersetzen. Zur Vermeidung allzu übler Anglizismen, "in 1998" oder "das Terminal leutet die Glocke" oder "es ist eine gute Idee ..." habe ich bis- weilen etwas frei übertragen. Der Leser möge das verzeihen, und wenn es sehr stört, das englische Original lesen. Aus den ca 64000 Zeichen des Originalartikels sind bis jetzt 34000 übersetzt, also etwa 58%. kk, 4.8.1998 ****************************************************************** Inhalt: Was ist ein PDP? Was ist ein PDP-8? Wie sieht der PDP-8 Befehlssatz aus? Wie sieht die PDP-8 Assemblersprache aus? Welche Zeichensätze unterstützt der PDP-8? Welche verschiedenen PDP-8 Modelle wurden hergestellt? Was ist mit LINC-8 und PDP-12? Wo kann ich heute einen PDP-8 bekommen? Wo kann ich Dokumentation für den PDP-8 herbekommen? Welche Betriebssystem wurden für den PDP-8 geschrieben? Welche Programmiersprachen gibt es auf dem PDP-8? Wo finde ich PDP-8 software? Wo kann ich zusätzliche Informationen erhalten? Wozu ist ein PDP-8 heutzutage gut? Who's Who? ---------------------------------------------------------------------- Frage: Was ist ein PDP? Im Jahr 1957 gründeten Ken Olson und Harlan Anderson die Digital Equipment Corporation (DEC), mit einem Kapital von etwa $100,000, und zu 70% der American Research and Development Corporation gehörend. Olson and Anderson hatten größere Teile der AN/FSQ-7, TX-0 und TX-2 Computers in den Lincoln Labs entworfen. Sie wollten ihre Firma Digital Computer Corporation nennen, aber die Venture Kapitalgeber beharrten darauf, den Begriff Computer zu vermeiden, und sich vom Bau von Computer fernzuhalten. In den Räumen einer alten Wollspinnerei in Maynard Massachusetts, DEC's erstes Produkt war eine Reihe transistorisierter digitaler "Systems Module" die auf den Modulen basierten die beim Bau des TX-2 in den Lincoln Labs verwendet wurden; es waren Einsteckkarten mit ein paar Logikgattern pro Karte. Im Jahr 1960 begann DEC schliesslich doch, Computer zu verkaufen (die formelle Abnahme des ersten PDP-1 durch BBN wird in 'Computers and Automation, April 1961, Seite 8B gemeldet). Bald danach gab es genügend Anwender, um DECUS, die 'Digital Equipment Computer User's Society' zu gründen. DEC's erster Computer, der PDP-1, wurde für nur $120,000 zu einer Zeit verkauft, als andere Computer für über $1,000,000 verkauft wurden. (Ein gutes Photo eines PDP-1 ist in 'Computers and Automation', Dez. 1961, Seite 27 abgedruckt). DEC nannte Preis bis herab zu $85,000 für minimale Modelle. Das Beharren der Kapitalgeber, den Begriff 'Computer' zu vermeiden, beruhte auf der Stereotype, daß Computer groß und teuer sind, und ein Rechenzentrum sowie eine umfang- reiche Bedienermannschaft benötigen; durch den Begriff 'Programierbarer Daten Prozessor' oder PDP, vermied DEC diese Stereotype. Mehr als ein Jahrzehnt hießen alle Computer, die DEC verkaufte PDPs. (In frühen Firmenschriften wird die Pluralform "PDPs" als allgemeiner Begriff für alle DEC Computer verwendet.) In den frühen 60er Jahren war DEC der einzige Hersteller großer Computer ohne ein Leasing-System. IBM, Burroughs, CDC und andere Computerhersteller vermieteten die meisten ihrer Maschinen und viele wurden niemals zum echten Kauf angeboten. DEC's Verkaufsmethode führte dann dazu, daß Computerleasing-Gesellschaften entstanden wie z. B. DELOS, ein Ableger von BB&N. DEC baute eine ganze Anzahl verschiedener Computer unter dem Label PDP, die eine riesige Preis- und Leistungsspanne umfassten. Die größten davon hatten die Ausmaße großer Rechenzentren mit umfang- reicher Bedienermannschaft. Einige der frühen DEC-Computer wurden nicht wirklich von DEC gebaut. PDP-3 und LINC z. B. wurden von Kunden gebaut, die DEC-Teile und Anlagen verwendeten. Hier ist die Liste der PDP Computer: Type Jahr Preis BITS Anzahl Kommentar ===== ==== ======== ==== ====== ======== PDP-1 1960 $120,000 18 50 DEC's erster Computer PDP-2 k.A. 24 - Nie gebaut? nur Prototype? PDP-3 k.A. 36 Einer von Kunden gebaut*, nicht DEC. PDP-4 1962 $60,000 18 45 Vorgänger des PDP-7. PDP-5 1963 $27,000 12 1,000 Ahnherr des PDP-8. PDP-6 1964 $300,000 36 23 Großrechner; die meisten für MIT. PDP-7 1965 $72,000 18 120 Weitverbreitet für Echtzeit-Steuerung. PDP-8 1965 $18,500 12 ~50,000 Der kleinste und billigste PDP. PDP-9 1966 $35,000 18 445 Eine Weiterentwicklung des PDP-7 PDP-10 1967 $110,000 36 **~700 Nachfolger des PDP-6, ideal für timesharing. PDP-11 1970 $10,800 16 >600,000 DEC's erster und einziger 16 bit Computer. PDP-12 1969 $27,900 12 725 Ein PDP-8 Verwandter. PDP-13 - Ominös! Die Maschine gab es nicht. PDP-14 *** ROM-basierte programmierbare Steuerung. PDP-15 1970 $16,500 18 790 Eine TTL Weiterentwicklung des PDP-9. PDP-16 1972 k.A. 8/16 ? Ein Register-Transfer Modulsystem. * Scientific Engineering Institute of Waltham MA. ** Einschließlich DECsystem 20. Korrekturen und Ergänzungen dieser Tabelle sind willkommen! Die angegebenen Preise gelten für minimal ausgerüstete Systeme im Jahr der Ersteinführung. Die meisten Produktionszahlen stammen aus dem Buch "Computer Engineering" von Bell, Mudge and McNamara, 1978, oder aus Diagrammen aus "Computers and Automation's computer census" die regelmäßig in den 60ger Jahren veröffentlicht wurden. Die Bits-Spalte in der Tabelle gibt die Wordbreite an. Hinweis: Der DEC PDP-10 wurde zum DECSYSTEM-20 als Resultat von Marketingüberle- gungen und DEC's VAX-Serie begann als die "Virtual Address eXtension" der nie hergestellten PDP-11/78. Es ist erwähnenswert, daß allgemeine Einigkeit darüber besteht, daß die Data General Nova (Photo in Computers and Automation, Nov. 1968, Seite 48) aus dem PDP-X, einer 16-Bit Multiregisterversion des PDP-8 hervorgegangen ist, entworfen von Edson DeCastro (dem Kunstrukteur des PDP-5. Sein Name erscheint auf vielen Blaupausen der späteren PDP-8 Systeme bis zum PDP-8/L). Ein Portotypen PDP-X wurde von DEC gebaut; Er und ein konkur- rierender 16-bit Entwurf wurden anscheinend Harold McFarland an der Carnegie-Mellon Universität zur Bewertung übergeben. McFarland (und vielleicht Gordon Bell, der zu dieser Zeit ebenfalls and der C-M-U war) prüfte die beiden Entwürfe und verwarf sie beide zugunsten dessen was heute als PDP-11 bekannt ist. Es gibt Gerüchte daß Bell den Nova-Entwurf ablehnte, weil der Konkurrenzvorschlag die Register-Transfer-Notation verwendete die er in dem Buch "Bell and Newell, Computer Structures -- Readings and Examples" eingeführt hatte. Ein andere Geschichte erzählt, daß der Grund, warum DEC niemals einen PDP-13 produzierte, der ist, daß die Nummer 13 der späteren Nova zugeordnet war. Beide Geschichten sind aber nicht sehr wahrscheinlich. Auf jeden Fall, DeCastro gründete Data General, und weder DEC noch Data General äußern sich viel über die Verbindung zwischen PDP-X und Nova. Heute sind alle PDP Machinen bei DEC Geschichte, mit Ausnahme der PDP-11 Family, die als Reihe von Microcomputern uberlebt. DEC hat am 30.9.96 angekündigt den Verkauf der PDP-11 einzustellen. Gelegentlich haben Labors eine Maschine mit DEC-Hardware aufgebaut und diese dann einen PDP mit einer neuen Nummer genannt. Zum Beispiel erweiterte die australische Atomenergiekommission einmal einen PDP-7 durch Hinzufügen eines PDP-15 und nannte das Resultat PDP-22. Es gibt auch einen Bericht über den PDP-2 1/2, gebaut von Ed Rawson vom 'American Science Institute' mit Ausschlachtmodulen, die ursprüng- lich im Prototyp des PDP-2 verwandt worden waren. ------------------------------ Frage: Was ist ein PDP-8? Die Familie der PDP-8 Minicomputer wurden von Digital Equipment Corporation zwischen 1965 und 1990 gebaut, obwohl anzumerken ist, daß der Begriff Minicomputer erst nach Einführng der Maschine aufkam. Das erste Mal scheint der Begriff vom DEC Chef in England, John Leng, benutzt worden zu sein. Er schickte einen Verkaufsbericht zurück, der begann: "Hier ist die letzte Minicomputer Aktivität im Land der Mini- röcke indem ich mit meinem [Austin] Mini Minor herumfahre." Der Ausdruck wurde schnell Bestandteil von DEC's internem Jargon und verbreitete sich von dort. Trotzdem, der erste Computer der explizit als Minicomputer verkauft wurde, kam von Interdata. (S. die Interdata-Anzeige in 'Computers and Automation', Mai 1968, S.10). Der PDP-8 war weitgehend aufwärtskompatibel mit dem PDP-5, einer Maschine, die am 11 August 1963 auf der WESCON vorgestellt wurde. Die Grundidee für diesen Computer stammt von zwei früheren Maschinen, dem LINC und der CDC 160. Alle diese Computer wurden charakterisiert durch ein 12 Bit-Wort, wenig oder gar keiner Hardware-Byteunterstützung, üblicherweise 4K Worte Speicher und einfachen aber leistungsfähigen Befehlssätzen. Obwohl einige Leute die CDC 160 als den ersten Minicomputer ansehen, war der PDP-8 der definitive Minicomputer. Gegen Ende 1973, war die PDP-8-Familie der meistverkaufte Computer der Welt, und er wurde von diesem Platz durch den Apple II verdrängt und der wiederum vom IBM PC. Die meisten Modelle des PDP-8 errangen neue Rekorde als billigster Computer auf dem Markt, zum Zeitpunkt ihrer Einführung. Der PDP-8 wurde als der Ford T der Computerindustrie bezeichnet, weil er der erste in Massen produzierte Computer war, zu einem Preis, den sich damals beinahe jeder leisten konnte. C. Gordon Bell hat gesagt, daß die Grundidee des PDP-8 nicht wirklich von ihm selbst stammt. Er schreibt die Idee des Ein-Akkumulator, 12- Bit Minicomputer Seymour Cray (CDC und später Cray) zu minicomputer. Cray's CDC 160 Familie (s. CACM, März 1961, Photo auf Seite 244, Text auf Seite 246) war eine derartige, und zusätzlich zu den Hunderten CDC 160 Systemen, die als selbständige Maschinen verkauft wurden, wurde eine abgeleitete 12 Bit Architektur für die I/O Prozessoren in Cray's erstem großen Supercomputer, der CDC 6600 verwendet. Man beachte, daß Cray's 12 bit Machinen 6 Basisaddressierungsarte mit variabler Befehlslänge und andere Features hatten, die weit entfernt von der simplen Elegan des PDP-8 waren. Trotz ihrer vielen Adres- sierungsarten fehlte der CDC 160 Architektur die 'current page Adres- sierung, sie besaß keinen unkonditionierten Sprung, und die Ein-Ausga- bebefehle blockierten die CPU bis die Ein-Ausgabe beendet war. Im Vergleich dazu ist der PDP-8 weit flexibler und erlaubt einen viel kompakteren Programmierstil. ------------------------------ Frage: Wie sieht der PDP-8 Befehlssatz aus? Die Wortbreite des PDP-8 ist 12 Bits, und die Speichergrundausstattung ist 4K Worte. Die minimale CPU umfasste die folgenden Register: PC - der Programmzähler, 12 Bits. AC - Der Akkumulator, 12 Bits. L - Das Link, 1 Bit, allgemein dem AC vorangestellt als . Bemerkenswert ist, daß viele Operationen, wie Unterprogrammaufrufe und Indizierung, bei denen man normalerweise die Verwendung von Registern erwartet, bei der PDP-8 über den Speicher geschehen. Die Befehlsworte sind wie folgt organisiert: _ _ _ _ _ _ _ _ _ _ _ _ |_|_|_|_|_|_|_|_|_|_|_|_| | | | | | | op |i|z| adr | op - Der Opcode. i - Das indirekt-Bit (0 = direkt, 1 = indirekt). z - Das Page-Bit (0 = Page zero, 1 = aktuelle Page). adr - Das Word in der Page. Anm d. Ü.: die englischen Worte Page (Seite) und Page zero (Seite 0) werden als Termini technici absichtlich nicht übersetzt. Die oberen 5 Bits des 12 Bit Programzählers ergeben die aktuelle Page, zusätzlich wird die Speicheradressierung durch die Tatsache verkompliziert, daß die absoluten Speicherplätze 8 bis 15 inkrementiert werden, wenn und bevor sie als indirekte Adressen benutzt werden. Diese Speicherplätze werden 'auto-index Register' genannt (ungeachtet der Tatsache, daß sie im Speicher liegen). Sie erlauben es, sehr kompakte Array-Operationen zu programmieren. Die Grundbefehle sind: 000 - AND - undiere Operanden mit AC. 001 - TAD - addiere Operanden zu (ein 13 Bit-Wert). 010 - ISZ - inkrementiere Operanden und skippe wenn Ergebnis 0. 011 - DCA - deponiere AC im Speicher und lösche AC. 100 - JMS - jump to subroutine, Springe zum Unterprogramm. 101 - JMP - jump, Springe. 110 - IOT - input/output transfer, Ein-Ausgabe Operation. 111 - OPR - Microkodierte Operationen. Anm. d. Ü.: für das Wort 'skip' gibt es kein vernüftiges kurzes Wort im Deutschen. Es wird mit deutscher Flexion übernommen. Die ISZ und anderen Skip-Befehle lassen den nachfolgenden Befehl kon- dietioniert aus. Der ISZ wird normalerweise benutzt, um einen Schleifen- zähler zu erhöhen und am Ende zu skippen, wird aber auch als allgemeiner Inkrementbefehl benutzt. In diesem Fall entweder von einem No-Op-Befehl gefolgt, oder in Zusammenhängen in denen klar ist, daß das Ergebnis nie Null sein wird. Der JMS-Befehl speichert die Rückkehradresse im relativen Wort Null des Unterprogramms, die Ausführung startet dann mit dem relativen Wort 1. Rückkehr aus dem Unterprogramm geschieht durch einen indirekten JMP auf die Rückkehradresse in Wort 0. Unterprogramme inkrementieren ihre Rück- kehradressen, um im Programmcode liegende Parameterlisten zu indexieren, oder um konditioniert bestimmte Befehle auszulassen, die dem Aufruf folgen. Der IOT Befehl hat folgende Form: _ _ _ _ _ _ _ _ _ _ _ _ |1|1|0|_|_|_|_|_|_|_|_|_| | | | | | | device | op | Der IOT Befehl wählt eine aus bis zu 8 Operationen für eines aus insge- samt bis zu 64 Devices aus. Typischerweise, (aber nicht immer) bewirkt jedes Bit des op-Feldes eine Operation, diese können mikrokodiert werden und werden in der Reihenfolge von rechts nach links ausgeführt. Bei den Rechnern vor dem PDP-8/E gab es starke Einschränkungen bei der Interpretation des op-Feldes die aus der Tatsache resultierte, daß der IOT als Folge von IOP-Impulsen angeliefert wurde, und zwar jeder auf einer eigenen Leitung des I/O-Bus. Jede dieser Leitung wurde typischer- weise für eine eigene Device-Funktion verwendet, so daß besonders die Operation 000 immer eine No-Op, also gar keine Operation war, weil keine Funktion ausgelöst wurde. Der Code 111 rief alle drei Funktionen nacheinander auf. Als Beispiel für den Gebrauch der IOT-Befehle betrachten wir das Konsolterminal-Interface. Bei den frühen PDP-8 Systemen wurde hierbei immer ein ASR 33 Teletype komplett mit langsamem Lochstreifenleser und Stanzer vorausgesetzt. Er wurde als Device 03 (Tastatur und Leser) und 04 (Drucker und Stanzer) adressiert: _ _ _ _ _ _ _ _ _ _ _ _ |1|1|0|_|_|_|_|_|_|_|_|_| |0 0 0 0 1 1|0 0 1 - KSF - Keyboard Skip if Flag |0 0 0 0 1 1|0 1 0 - KCC - Keyboard Clear Flag |0 0 0 0 1 1|1 0 0 - KRS - Keyboard Read Static Das Keyboard Flag wird durch das Eintreffen eines Zeichens gesetzt. Der KCC-Befehl löscht sowohl das Flag als auch den Akkumulator. KRS verodert die 8 Bit-Eingabedaten mit den 8 niederwertigsten Bits des AC. Der üblicherweise verwendete KRB-Befehl ist das ODER aus KCC und KRS. Um auf die Eingabe eines Zeichens zu warten, wird KSF zur Abfrage des Flags verwendet, und dann das Byte mit KRB eingelesen. _ _ _ _ _ _ _ _ _ _ _ _ |1|1|0|_|_|_|_|_|_|_|_|_| |0 0 0 1 0 0|0 0 1 - TSF - Teleprinter Skip if Flag |0 0 0 1 0 0|0 1 0 - TCF - Teleprinter Clear Flag |0 0 0 1 0 0|1 0 0 - TPC - Teleprinter Print Static Das Teleprinter Flag wird durch die Beendigung des TPC-Befehles gesetzt. (Daher geben viele Programme beim Start ein ASCII-Zeichen aus, um das Flag zu setzen). TCF löscht das Flag, und TPC gibt die niederwer- tigen 8 Bits des Akkumulators aus. Der üblicherweise verwendete TLS-Befehl ist das ODER aus TCF und TPC. Um ein Zeichen auszugeben wird erst TSF zur Abfrage des Flags verwendet und dann das Zeichen mit TLS ausgegeben. IOT-Befehle können auch verwendet werden, um 'Data Break Transfers' von Blockorientierten Geräten wie Platte oder Band anzustossen. Der Ausdruck "Data Break" war über Jahre hinweg DEC's bevorzugte Bezeich- nung für 'cycle-stealing Direct-Memory-Access' (DMA) Datentransfers. transfers. Einige CPU Funktionen werden ebenfalls durch IOT-Befehle bewirkt. Zum Beispiel sind die Befehle 'Interrupts Ein' und 'Interrupts Aus' IOT-Befehle: _ _ _ _ _ _ _ _ _ _ _ _ |1|1|0|_|_|_|_|_|_|_|_|_| |0 0 0 0 0 0|0 0 1 - ION - Interrupts turn ON |0 0 0 0 0 0|0 1 0 - IOF - Interrupts turn OFf Ein Interrupt wird angefordert, wenn irgendein Gerät sein 'Flag' gesetzt hat. Der Konsolschalter 'Master Clear' setzt alle Flags zurück und sperrt das Interruptsystem. Effektiv ist ein Interrupt ein JMS-Befehl zur Adress 0000, mit dem Seiteneffekt, die Interrupts zu sperren. Die Interrupt-Serviceroutine muß die einzelnen Device- Flags testen, und die entsprechenden Befehle durchführen um den Interrupt zu bedienen und die Flags zurückzusetzen. Die Rückkehr aus der Interruptroutine geschieht, indem der Befehl ION unmittel- bar vor dem indirekten JMP zur Adresse 0000 ausgeführt wird. Das Wirksamwerden des ION ist verzögert, sodaß weitere Interrupts erst nach dem JMP möglich werden. Die Befehle zum Steuern der optionalen Speichererweiterungseinheit (Memory Management Unit = MMU) sind ebenfalls IOT-Befehle. Diese Einheit ermöglicht es dem Programm, bis zu 32K Hauptspeicher zu adressieren, in dem der Speicheradresse eine 3-Bit Erweiterung hinzu- gefügt wird. Es gibt zwei Erweiterungen: Eine für den Befehlszugriff und direkte Adressierung, die andere für indirekte Adressierung. Eine große Vielzahl an Befehlen ist durch die mikrocodierten 'OPR' Instruktionen möglich: _ _ _ _ _ _ _ _ _ _ _ _ Gruppe 1 |1|1|1|0|_|_|_|_|_|_|_|_| 1 - CLA - Clear AC 1 - CLL - CLear the L bit 1 - CMA - ones CoMplement AC 1 - CML - CoMplement L bit 1 - IAC - Increment 1 0 0 - RAR - Rotate Right 0 1 0 - RAL - Rotate Left 1 0 1 - RTR - Rotate Right Twice 0 1 1 - RTL - Rotate Left Twice Die Erklärung dieser Befehle wurde nicht übersetzt, da sonst die Mnemonics nicht mehr verständlich sind. Generell können die obigen Befehle kombiniert werden, indem die Bit- muster der gewünschten Operationen zu einem einzelnen Befehl verODERt werden. Wenn keines der Bits gesetzt ist, entsteht der NOP (No OPera- tion Befehl. Wenn die Opertionen kombiniert werden, dann arbeiten sie von oben nach unten in der oben dargestellten Reihenfolge. Eine Ausnahme ist, daß bei einigen Modellen IAC nicht mit den Rotations- befehlen kombiniert werden kann. Außerdem hat die Kombination ver- schiedener Rotationsbefehle unterschiedliche Auswirkungen bei den verschiedenen Modellen. (Beim PDP-8/E bewirkt z. B. der Rotationscode 001 ein Vertauschen (Byte-SWap = BSW) der beiden höher- bzw nieder- wertigen 6 Bits im Akkumulator, wohingegen die früheren Maschinen den Befehl als "schiebe weder 2 Bits nach links noch nach rechts" inter- pretierten.) _ _ _ _ _ _ _ _ _ _ _ _ Gruppe 2 |1|1|1|1|_|_|_|_|_|_|_|0| 1 0 - SMA - skip on AC < 0 \ 1 0 - SZA - skip on AC = 0 > or group 1 0 - SNL - skip on L /= 0 / 0 0 0 1 - SKP - skip unconditionally 1 1 - SPA - skip on AC >= 0 \ 1 1 - SNA - skip on AC /= 0 > and group 1 1 - SZL - skip on L = 0 / 1 - CLA - clear AC 1 - OSR - or switches with AC 1 - HLT - halt Die obigen Befehle können durch verODERn miteinander kombiniert werden, mit Ausnahme zweier inkompatibler Gruppen von Skip-Befehlen. Die Kombi- nationen von SMA, SZA und SNL skippen, wenn eine oder mehrere der vorge- benen Bedingungen wahr sind (logisches ODER), währen SPA, SNA und SZL nur skippen, wenn alle der vorgegebenen Bedingungen wahr sind (logisches UND). Die Kombination der Befehle werden von oben nach unten in der Folge, wie sie oben stehen abgearbeitet. Auf diese Weise kann der AC zuerst getestet und dann gelöscht werden. Das HALT-Bit in einer Skip- Operation zu setzen, ist ein roher, aber nützlicher Weg, einen Break- point für Front-Panel-Debugging zu setzen. Wenn keines der Bits gesetzt ist, ist das Ergebnis ein alternativer No-Op. Eine dritte Gruppe der OPR-Instuktionen (mit einer 1 im niederwertigsten Bit), betrifft das optionale Arithmetik-Erweiterung (EAE = Extended Arithmetik Element), und erlaubt Dinge wie Hardware- Multiplikation und Division, 24-Bit Schiebeoperationen und Normalisierung. Diese Befehle beziehen ein zusätzliches Datenregister, MQ oder Multiplikanden- Quotienregister mit ein, sowie ein kleines Schrittzählregister. Beim PDP-8/E und den Nachfolgern ist das MQ-Register und die Befehle dieses zu laden und auszulesen, immer vorhanden, auch wenn das EAE nicht eingebaut war, und das EAE war noch um eine Reihe nützlicher 24-Bit Arithmetikbefehle erweitert. ------------------------------ Frage: Wie sieht die PDP-8 Assemblersprache aus? Es existieren viele verschiedene Assembler für den PDP-8, aber die meisten benützen eine kompatible Basissyntax; hier ein Beispiel: START, CLA CLL / Alles loeschen TAD X / Lade X AND I Y / UND mit dem Wert, auf den Y zeigt DCA X / Speichenr in X HLT / Halt X, 1 / Eine Variable Y, 7 / Ein Zeiger Man beachte, daß Label mit Komma beendet werden, und daß Kommentare vom Code durch Schrägstrich getrennt werden. Es gibt keine festen Felder oder Einschränkung der Spalten. Die "CLA CLL" Instruktion in der ersten Zeile ist ein Beispiel für die Microcodierung zweier Gruppe 1 OPR-Befehle. of the microcoding of two of the Group 1 operate instructions. CLA allein hat den Code 7200 (oktal), CLL hat den Code 7100. Beide Codes durch ODER als "CLA CLL" miteinander kombiniert, ergibt 7300. Die allgemeine Regel lautet, der Assmbler ODERt alle Werte, die in einer Zeile zwischen Label und Kommentar stehen, und durch Leerzeichen getrennt sind, einfach zu- sammen. Eine Ausnahme gilt hierbei für alle Befehle, die eine Speicher- adresse verwenden: AND, TAD, ISZ, DCA, JMS und JMP. Indirekte Adressierung wird durch das spezielle Symbol I im Operanden- feld in der dritten Zeile des Beispiels angezeigt. Der typische PDP-8 Assembler besitzt keine explizite Notation um zwischen Zero-Page- und Current-Page-Adressierung zu unterscheiden. Der Assembler kennt die Page, die den Operanden enthält und erzeugt automatisch die entsprechende Adressierungsart. Wenn sich der Operand weder in der Current- noch in der Zero-Page befindet, erzeugen manche Assembler eine Fehlermeldung, andere erzeugen automatisch einen indirekten Pointer auf den außer- halb der Seite liegenden Operanden. Das sollte vermieden werden, weil es nur für direkt adressierte außerhalb liegende Operanden funktioniert, und auch nur dann, wenn die Memory Management Unit (MMU) nicht gerade benutzt wird, ein Datenfeld zu adressieren, das nicht identisch ist mit dem aktuellen Instruction-Feld. Man beachte in den letzten beiden Zeilen des Beispiels, daß es keine "definiere eine Konstante" Pseudooperation gibt. Stattdessen nimmt eine im Speicher abzulegende Konstante den Platz im Op-Code-Feld der Zeile ein. Der PDP-8 hat keinen immediate-Adressierungsmodus (Adressiere Konstante direkt). Die meisten Assembler sehen aber eine Notation vor, um diesen Mangel auszugleichen: TAD (3) / addiere die Zahl 3, aus dem Speicher / der aktuellen Seite. (current page) TAD [5] / addiere die Zahl 5, aber aus der / Zero-Page. JMP I (LAB) / Springe indirekt über die Adresse von / LAB Assembler, die dieses unterstützen, füllen automatisch das Ende jeder Seite mit Konstanten, die auf diese Art während der Assemblierung der gerade laufenden Seite aufgetreten sind. Es ist auch möglich, die schliessenden Klammern wegzulassen, aber diese saloppe Form sollte nicht verwendet werden. Weiterhin interpretiert der weitverbreitete PAL8-Assembler den unwahrscheinlichen Operanden "(3)+1" als das gleiche wie "(3+1)". Arithmetische Operationen ist in den Operandenfeldern und Konstanten- definitionen erlaubt, wobei die Ausdrücke strikt von links nach rechts ausgewertet werden: TAD X+1 / addiere den Inhalt des Wortes hinter X. TAD (X-1) / addiere die Adresse des Wortes vor X. Andere erlaubte Operatoren umfassen das UND (&), ODER (!), Multipli- kation (^) und Division (%) und das unäre Vorzeichen (+ or -). Unglücklicherweise hat einer der am weitesten verbreiteten Assembler, PAL8, Schwierigkeiten bei der Kombination des unären Vorzeichens mit Multiplikation oder Division. Allgemein sind nur die ersten 6 Zeichen eines Bezeichners signifikant und numerische Konstanten werden oktal ausgewertet. Weiter Eigenschaften der Assemblersprache sind unten erläutert: / Kommentare können in einer eigenen Zeile stehen / Leerzeilen sind erlaubt *200 / Setze den Assemblerursprung auf 200 / (oktal) NL0002= CLA CLL CML RTL / Definiere neuen Opcode NL0002. NL0002 / Verwende den neuen Opcode: / (Lade Konstante 0002 in den Akku) JMP .-1 / Springe zum vorherigen Befehl X1= 10 / Definiere X1 / (Eine auto-index Register Adresse) LETA= "A / Definiere LETA : 000011000001 (ASCII A) TAD I X1 / Benutze Autoindex-Register 1 IAC; RAL / Mehrere Befehle in einer Zeile $ / Ende der Assemblierung Der zu assemblierende File endet mit einer Zeile, die ein $ (Dollar- zeichen) enthält, das nicht in einem Kommentarfeld steht. Die $, * und = Syntax, die von den meisten PDP-8 Assemblern benutzt wird, ersetzt Funktionen, die bei vielen anderen Assemblern von Pseudooperationen durchgeführt werden. Zusätzlich unterstützt PAL8, der am meisten verwendete PDP-8-Assembler, die folgenden Pseudo- Operationen: DECIMAL / Interpretiere numerische Konstanten / als Dezimalzahlen OCTAL / Interpretiere numerische Konstanten / als Oktalzahlen EJECT / bewirkt Seitenvorschub im Listing XLIST / Listing ein - aus XLIST N / schalte Listing ein, wenn N=0, / aus, wenn N=1 PAGE / Befehlszähler auf Beginn der nächsten / Speicherseite (Page) PAGE N / Befehlszähler auf Beginn von Page N FIELD N / Assembliere ins Speicherfeld N TEXT "STR" / Packe STR in konsekutive 6 Bit Bytes ZBLOCK N / Belege N Worte, fülle sie mit 0000 / Assembliere C wenn: IFDEF S / das Symbol S definiert ist, IFNDEF S / das Symbol S nicht definiert ist / definiert ist. / Assembliere C wenn: IFZERO E / Der Ausdruck E gleich Null ist, IFNZRO E / Der Ausdruck E ungleich Null ist. FIXMRI OP= VAL / Definiere OP als Memory Referenz / Instruktion Bedingt zu assemblierender Code muß in spitze Klammern eingeschlossen sein. Er kann sich über mehrere Zeilen erstrecken. Weil verschiedene Assembler Kommentare innerhalb konditionierten Codes unterschiedlich behandeln, sollte die abschliessende Klammer nicht in einem Kommentar stehen, und alle Klammern in Kommentaren sollen ausbalanciert sein. ------------------------------ Frage: Welche Zeichensätze unterstützt der PDP-8? Von Anfang an ging PDP-8 software davon aus, daß die Text-Ein-Ausgabe als 7 Bit ASCII geschieht. Die meisten frühen PDP-8 Systeme benutzten Teletype Fernschreiber als Konsolterminals. Diese wurden von DEC für Paritätsbit = 1 konfiguriert verkauft, so daß die meiste ältere Soft- wäre 7 Bit ASCII, nur Großbuchstaben und das 8. Bit auf 1 gesetzt erwartet. Bei der Ausgabe wurde die Zeilen generell mit CR und LF abgeschlossen; bei der Eingabe ist meist (aber nicht immer) CR das Zeilenendezeichen und LF wird typischerweise ignoriert. Zusätzlich ist das Tabulatorzeichen (HT) erlaubt, aber das Verhalten der Soft- ware bei der Ausgabe von Text der HT-Zeichen enthält, ist unterschied- lich. Ein Problem ist, daß viele PDP-8 Programme die Gerätetreiber des Be- triebssystems umgeht, und direkt auf das Gerät zugreift. Daraus folgt eine sehr unterschiedliche Geräteunterstützung: Z. B. bewirkt control-S und control-Q die Ausgabe unter OS/8 stoppt und startet, aber der OS/8 PAL-Assembler ignoriert sie bei der Fehlerausgabe. Die meiste der besser geschriebenen PDP-8 Software tendiert dazu, Groß- und Kleinschreibung bei der Eingabe zu ignorieren, ebenso das 8. Bit. Ältere PDP-8 Software wird meistens nicht mit kleingeschriebenen Zeichen bei Texteingabe funktionieren (das betrifft praktisch alle OS/8 Produkte vor OS/278 V1). Intern sind die PDP-8 Programmierer frei, andere Zeichensätze zu ver- wenden, aber die "X Notation des Assemblers unterstützt den Gebrauch des 7-Bit ASCII mit dem 8. Bit auf 1 gesetzt und die TEXT pseudo- Operation unterstützt den 6-Bit Zeichensatz, genannt "stripped ASCII". Die Umsetzung von nur großgeschriebenem ASCII auf stripped ASCII geschieht, indem jedes Zeichen mit 0077 UNDiert wird, und dann zwei Zeichen in ein Wort von links nach rechts gepackt werden. Viele Programme verwenden einen Semistandardschema um gemischte Groß- und Kleinbuchstaben in der 6-Bit Textform unterzubringen. Es benutzt ^ um von Klein nach Groß umzuschalten, das Zeichen % um CR-LF zu kodieren und @ (oktal 00) um das Ende des Strings zu markieren. Zu beachten ist, daß dieses Schema weder vorsieht, % , ^ und @ zu kodieren, noch andere Steuerzeichen als das CR-LF-Paar erlaubt. Das P?S/8 Betriebsystem sieht ein ähnliches 6-Bit Textfileformat vor bei dem Groß- und Kleinbuchstaben übereinandergefaltet werden, HT als _ (Unterstrich), Zeilende als 00, mit irgendeinem Nicht-00-Füller bis zu einer Wortgrenze ergänzt, und das Fileende wird durch 0000 gekennzeichnet. Files unter dem weitverbreiteten OS/8-System bestehen aus Folgen von 256 Wort Blöcken. Wenn sie Text enthalten, enthält jeder Block 384 Bytes je 3 Bytes in einem Wortpaar nach folgendem Schema gepackt: aaaaaaaa ccccaaaaaaaa bbbbbbbb CCCCbbbbbbbb ccccCCCC Control-Z wird als Fileendemarkierung benutzt. Weil die meiste System- software für den PDP-8 ursprünglich für Lochstreifen entwickelt wurde, wird der binäre Objekt-Code üblicherweise gemäß dem obigen Packschema als Lochstreifen-Abbild gespeichert. ------------------------------ Frage: Welche verschiedenen PDP-8 Modelle wurden hergestellt? Die Gesamtzahl der verkauften Maschinen aus der PDP-8 Familie wird auf über 300 000 geschätzt. Über 7000 hiervon wurden vor 1970 verkauft, und 30 000 wurden bis 1976 verkauft. Während der PDP-8 produziert wurde, wurden eine Anzahl verschiedener Modelle gemäß der Tabelle unten herge- stellt. Von diesen wird im Allgemeinen der PDP-8/E als die definitive Maschine angesehen. Wenn der PDP-8 als das Ford Modell T der Computer- industrie angesehen wird, dann ist der PDP-8/E das Modell A. Modell Jahre Stück Kosten Technik Bemerkungen PDP-5 63-67 116 Transistor PDP-8 65-69 1450 $18,500 Transistor LINC-8 66-69 142 $38,500 Transistor PDP-8/S 66-70 1024 $10,000 Transistor Sehr langsam PDP-8/I 68-71 3698 $12,800 TTL PDP-8/L 68-71 3902 $8,500 TTL abgemagerter 8/I PDP-12 69-73? 3500? $27,900 TTL Nachfolger LINC-8 PDP-8/E 70-78 >10K? $6,500 TTL MSI Omnibus PDP-8/F 72-78? >10K? <$5K TTL MSI Omnibus basiert auf 8/E CPU PDP-8/M 72-78? >10K? <$5K TTL MSI Omnibus OEM Version des 8/F PDP-8/A 75-84? >10K? $1,317 TTL LSI Omnibus Neue CPU VT78 78-80 $7,995 Intersil 6100 Arbeitsplatzrechner DECmate I 80-84 Harris 6120 Arbeitsplatzrechner DECmate II 82-86 $1,435 Harris 6120 Arbeitsplatzrechner DECmate III 84-90 $2,695 Harris 6120 Arbeitsplatzrechner DECmate III+85-90 Harris 6120 Arbeitsplatzrechner Zusätzlich Information finden sich im Teil zwei dieses FAQ, in dem alle bekannten Modelle des PDP-8 inklusive ihrer Varianten, alternativen Vertriebsnamen und anderer Besonderheiten aufgeführt sind. Die letzten Jahre der PDP-8 Familie wurden von den mikroprozessor- sierten PDP-8 kompatiblen VT78 und DECmate Arbeitsplatzrechnern (Workstations) beherrscht. Der Intersil Mikroprozessor IM 6100, auch als CMOS-8 Chip bekannt, wurde 1976 entwickelt; später wurde Intersil von GE aufgekauft. DEC verwendete auch die Nachfolger Harris 6120, die 1981 erschienen, in vielen Peripherieconotrollern der PDP-11 und PDP-15, ebenso wie in den DECmate Systemen. Während alle der früheren PDP-8 Systeme eine offene Architektur hatten, besaßen die DECmates eine geschlossene Architektur mit integriertem Konsolterminal und beschränk- ten Peripherieoptionen. Interessant anzumerken ist, daß der Harris 6120 ein 10MHz Chip war, einige konnten sogar bis 15MHz getaktet werden; weiter basierte der 6120 auf Gatearray-Technologie. Die folgenden PDP-8 kompatiblen oder halbkompatiblen Maschinen wurden von Fremdherstellern verkauft; von vielen ist nicht sehr viel bekannt: Modell Jahre Hersteller,Bemerkungen TPA 68? Ungarisch, ein PDP-8/L-Klon (FOKAL) Electronica-100 ? Russisch, diskrete Transistoren Electronica-100I ? Russisch, wahrscheinlich ein PDP-8/I Klon Electrotechnica-100I ? Jugoslawisch, eventuell gleich wie oben. Saratov-2 ? Russisch, Aufbau wie ein /M, aber größer. SPEAR u-LINC 100 ? SPEAR, Inc, Waltham Mass (ein LINC Klon!) SPEAR u-LINC 300 ? SPEAR, Inc, Waltham Mass (ein LINC Klon!) DCC-112 70 Digital Computer Controls, PDP-8/L Klon. DCC-112H 71 Digital Computer Controls MPS-1 74 Fabritek, PDP-8/L Klon. MP-12 74 (nur eine andere Bezeichnung für oben?) 6100 Sampler 76? Intersil, der IM6100 Einführungsbausatz. Intercept I 7? Intersil, basiert auf dem IM6100. Intercept Jr 7? Intersil, based on IM6100 TLF MINI-12 77 Basiert auf dem IM6100, in elegantem Gehäuse. PCM-12 7? Pacific CyberMetrix, Basis: Intercept bus PCM-12A 77 Pacific CyberMetrix, max. Takt 4MHz SBC-8 84-88 CESI, basiert auf IM6120, SCSI bus ------------------------------ Frage: Wie steht es mit LINC/8 und dem PDP-12? Wesley Clark und Charles Molnar, damals bei den Lincoln Labs, bauten den LINC, oder 'Laboratory INstrumentation Computer', als einen 'persönlichen Laboratoriumscomputer'. Der erste wurde im März 1962 fertig. Die Maschine wurde nach den Anforderungen von Mary Brazier, eine Neurophysiologin am MIT entwickelt, die bessere Laborhilfsmittel brauchte, und sie war die Nachfolgerin des Average Response Computer, einer 18 Bit Spezialmaschine, die 1958 für den gleichen Zweck gebaut worden war. Als die Lincoln Labs entschieden, daß der LINC seine Aufgabe nicht erfüllte, zog das Projekt im Januar 1963 zum MIT, und danach 1964 zur Washington Universität in St. Louis. Das 'National Institute of Health' (nationales Gesundheitsinstitut) initiierte das Projekt als Experiment, um herauszufinden ob Computer sinnvolle Werkzeuge in den Bio-Wissenschaften sein könnten. Ende 1963 waren 20 LINCs gebaut und Erfolgreich in Betrieb genommen worden, viele davon von ihren zukünf- tigen Nutzern. Über 24 LINC Systeme wurden von den Kunden selbst vor Ende 1964 gebaut, als DEC begann, eine kommerzielle Version zu verkaufen. (s. Computers and Automation, Nov. 1964, Seite 43). Zu der Zeit, als DEC den LINC-8 herausbrachte, waren 43 LINC Systeme installiert (s. Computers and Automation, März 1966, Seite 34). Insgesamt wurden 50 LINC Systeme gebaut, 21 von DEC, 29 von Anwendern (s. Digital at Work, Seite 52). Ein Photo des letzten LINC in echtem Einsatz ist unter http://www.mit.edu:8001/people/ijs/epl/LINC.html zu finden. Wesley Clark schrieb die Geschichte des LINC, "Der LINC war früh und klein", veröffentlicht in "A History of Personal Workstations," ACM Press, 1988, Seite 347. Der LINC war der erste 12 Bit Minicomputer der unter Verwendung von DEC Hardware gebaut wurde. Wie der PDP-5 und andere frühe DEC- Computer auch, wurde er mit den System-Modulen aufgebaut, DECs frühester Familie von Logik-Modulen. Zusammen mit dem CDC 160 ebnete er den Weg für den PDP-5 und den PDP-8. Verglichen mit dem PDP-8 war der LINC Befehlssatz nicht so gut für allgemeine Computeranwendungen geeignet, aber die allgemein üblichen Peripheriegeräte, die für Laboranwendungen gebraucht werden, wie z. B. Analog-Digital- und Digital-Analog-Wandler waren alle im LINC- System enthalten. Die Anwender hielten ihn für ein hervorragendes Laboratoriumsinstrument. Eine der größten Neuerungen, die mit dem LINC eingeführt wurden, war das LINCtape, entwickelt von Tom Stockebrand, der es aus einem experimetellen Bandlaufwerk vereinfachte, das für den TX-2 in den Lincoln Labs entwickelt worden war. LINCtapes konnten achtlos in die Tasche gesteckt werden, oder auf den Boden fallen ohne daß ein Datenverlust zu befürchten war. Und sie erlaubten willkürlichen Zugriff (random access) auf die einzelnen Datenblöcke. Stockebrand verbesserte diese Idee kurz nachdem er zu DEC kam, wo die verbesser- te Version DECtape genannt wurde; DECtape war auf allen DEC Computern weit verbreitet, die in den späten sechziger und frühen siebziger Jahren gebaut wurden. Die Motive hinter der Entwicklung des LINCtape waren die gleichen, die IBM dazu brachten, beinahe ein Jahrzehnt später die Floppy Disk zu entwickeln. In der Tat überlebte DECtape als weit verbreitetes Speichermedium bis DEC das 8 Inch RX01 Floppy Disk Laufwerk RX01 etwa um 1975 einführte. Auch danach starb das DECtape nur sehr langsam aus. Innerhalb eines Jahres nach Einführung des PDP-8 brachte DEC den LINC-8 heraus, eine Maschine die den PDP-8 mit einem LINC in einem Gehäuse kombinierte. Der Erfolg des LINC-8 veranlaßte DEC, die Maschine unter Verwendung von TTL-Logik gegen Ende der 60-ger Jahre neu zu konstruieren; die neue Version sollte ursprünglich LINC-8/I heissen, wurde aber dann als PDP-12 verkauft. Beide, der LINC-8 und der PDP-12 hatten eindrucksvolle Konsolen, mit getrennten Schalter- und Lampensätzen für die LINC- und die PDP-8-Hälften. Der Erfolg des LINC-8 führte auch zur Entwicklung eines Klons, dem SPEAR micro-LINC. Diese Maschine benutzte Motorola MECL integrierte Schaltkreise und wurde ausgeliefert ab Juni 1965 (Datum ist zwei- felhaft bis falsch!). Der LINC-8 und PDP-12 konnten im wesentlichen jedes PDP-8- oder LINC-Programm ausführen, mit Ausnahme einiger weniger Programme die auf der primitiven Interruptstruktur der originalen LINC- Architektur beruhten; beim LINC-8 wurde alle Interrupts von der PDP-8-Seite der Hardware abgearbeitet. Weil LINC-8 und PDP-12 Befehle hatten, um zwischen beiden Modi hin und herzuschalten, wurde ein neuer Grundbestand an Software entwickelt, der beide Betriebsarten erforderte. Ein Feature der LINC- und LINC-8-Software ist die allgemeine Ver- wendung des Grafikdisplays für die Ein- und Ausgabe. Diese Maschinen gehörten zu den ersten, die eine derartige Anzeige als Standard- ausrüstung beinhalteten, und viele Programme verwendeten die Knöpfe des Analog-Digitalwandlers, um einen Cursor auf dem Schirm so zu be- wegen, wie es heute mit Hilfe einer Maus geschieht. Verschiedene Versionen des LAP, des 'Linc Assembly Program' waren die vorherrschenden Assembler die auf dem LINC verwendet wurden; die Originalversion des LAP war ein Crossassembler der auf dem TX-2 ge- schrieben war. WISAL (WISconson Assembly Language) oder LAP6-W war die Version dieses Assemblers die überlebt und auf dem PDP-12 lief. Interssanterweise enthielt er einen PDP-8-Assembler, der im LINC- Code geschrieben war. Daraus entwickelte sich LAP6-DIAL (Display Interactive Assembly Language) auf dem PDP-12 und wurde das beherrschende Betriebssystem für den PDP-12. Die 8K Version davon ist DIAL MS (Mass Storage), auch wenn es lediglich mit zwei LINC-Tape Laufwerken läuft. Später wurde es von der OS/8-Variante die unter dem Namen OS/12 bekannt ist, ersetzt. ------------------------------ Frage: Wo bekomme ich heutzutage einen PDP-8 her? Der IM6100-Chip ist immer noch lieferbar (Electronic Expediters, (818)781-1910 (in North America) führen ihn für US$23.50 pro Stück auf 10/1994), und CESI produziert immer noch einen Klon für einen noch höheren Preis, aber man kann keinen neuen DEC PDP-8 kaufen. Es gibt noch einige wenige PDP-8 an entlegenen Stellen des Gebraucht- gerätemarktes. Sie waren häufig in Produkten wie Computergesteuerten Werkzeugen, oder Röntgenspektralanalysatoren und anderen Industrie- oder Laborgeräten eingebaut. Viele wurden unter dem EduSystem Programm an Schulen und Universitäten verkauft, andere steuerten Laborver- suche. Um 1976 kaufte Reuters etwa 10 000 OMNIBUS basierte Maschinen pro Jahr, von denen etwa 2000 pro Jahr wieder an andere Kunden weiter- verkauft wurden. Wer keine echte Maschine hat, kann sich mit Emulatoren behelfen. Über die Jahre wurden viele PDP-8 Emulatoren geschrieben. Die besten davon sind von einer echten Maschine auf der Softwareebene nicht zu unter- scheiden, und auf einer modernen RISC-Plattform sind sie häufig schneller als die Hardware, die sie emulieren. Ein Emulator ist von DECUS unter der Katalognummer RB0128 erhältlich; Dieser und andere Emulatoren sind zu finden bei: ftp://sunsite.unc.edu/pub/academic/computer-science/history/pdp-8/emulators ftp://ftp.cs.uiowa.edu/public/jones/pdp8/emulator.txt.Z ftp://ftp.digital.com/pub/DEC/sim/sources/sim_2.2d.tar.Z Die letztere der oben aufgeführten Sammlung von Emulatoren enthält auch solche für die Nova und ander DEC-Maschinen, ebenso wie für die IBM 1401. Ein Emulator für den Apple Mac ist per E-mail von Bernhard Baehr (bb@informatik.uni-hannover.de) erhältlich. Schliesslich kann man auch selbst einen bauen. Das Buch "The Art of Digital Design," zweite Auflage, von Franklin Prosser und David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4) benutzt das Design des PDP-8 als reales Beispiel; die Entwicklung neuen Materiales auf der Basis dieses Buches ist im Gange, einschliesslich eines Seriellen Interface- Chips, und demnächst eine VHDL-Beschreibung, die benutzt werden kann, um eine FPGA (programmierbare Logik) Implementierung der Maschine zu erzeugen. Anfragen bei Ingo Cyliax (cyliax@cs.indiana.edu) für Informationen über den aktuellen Status der Arbeit. "Modern VLSI Design - A system approch" von Wayne Wolf (1994 Prentice- Hall) benutzt übrigens ebenfalls einen PDP-8 als Beispiel. Es ist noch erwähnenswert, daß noch genügend PDP-8-System in echtem Betrieb sind, daß einigen Firmen immer noch Peripheriegeräte dafür herstellen. Zum Beispiel Storage Computer (http://www.storage.com/) baut RK05 kompatible "Halbleiter-Plattenlaufwerke", die direkt an die Omnibus RK05 Contoller der PDP-8/E,F,M and A angeschlossen werden können. ------------------------------ Fortsetzung folgt demnächst ...