Autor
Author Norbert
Kehrer Kategorie
Category Anwendung
- Emulator Application
- Emulator
Screenshot
Beschreibung Description Emulator für die
PDP-8 auf dem Atari 800XL
1. Der Minirechner PDP-8 ========================
Im
Jahr 1966 brachte die US-Firma Digital Equipment Corporation (DEC) einen
der ersten Computer, den sich auch eine breitere Käuferschicht leisten
konnte, auf den Markt. Es war dies der Programmed Data Processor-8,
oder abgekürzt PDP-8. Die PDP-8 war als sogenannter Minirechner
sehr erfolgreich und für die Firma DEC der Ausgangspunkt weiterer
Entwicklungen. Es folgten in der PDP-Reihe u.a. die PDP-10, auf
der das erste Unix, die Programmiersprache C und das erste Adventure-Game
entwickelt wurden, und die höchst erfolgreiche PDP-11.
Die
PDP-8 hatte eine Wortbreite von 12 Bit und hatte zu Beginn einen Hauptspeicher
von 4.096 Worten. Im Maximalausbau waren 32.768 Worte möglich.
Als Ein-/Ausgabe-Geräte waren in der Anfangszeit der PDP-8 vor
allem Fernschreiber (ASR-33 Teletype) gebräuchlich, wo die Eingabe über
Tastatur und die Ausgabe vom Rechner als Ausdruck auf Endlospapier erfolgte.
Später kamen auch einfache Bildschirmterminals dazu. Für das Speichern
und Laden von Programmen und Daten waren Lochstreifen aus Papier
vorgesehen, erst später folgten auch Disketten-, Magnetband- und
Festplattenlaufwerke.
2.
PDP-8-Emulator auf dem Atari 800XL =====================================
Das
vorliegende Programm emuliert die PDP-8 auf dem Atari 800 XL. Dabei
simuliert der Atari die Maschinenbefehle der PDP-8 und der Fernschreiber
wird durch Tastatur und Bildschirm des Atari ersetzt. Beim
Speicherausbau musste zugunsten der Geschwindigkeit auf die Umsetzung
des PDP-8-Maximalspeicherausbaus verzichtet werden. Der im Emulator
bereitgestellte PDP-8-Hauptspeicher beträgt 16.384 Worte.
Obwohl
der Atari etwa 20 Jahre jünger ist als die PDP-8, gelingt es nicht,
bei der Emulation die volle Geschwindigkeit der PDP-8 zu erreichen.
Für viele PDP-8-Programme dürfte das bei der Bedienung kein
großes Problem darstellen, bei rechenintensiver Software, wie z.B.
beim PDP-Schachprogramm, macht sich das natürlich stärker bemerkbar.
Es
werden in der derzeitigen Version des Emulators noch keine externen Speichermedien
wie Lochstreifen oder Diskette unterstützt. Programme, die im
PDP-8-Binärcode im DEC-eigenen BIN-Format vorliegen, können aber geladen
und auf dem Atari 800 XL ausgeführt werden. Auch die Konsole der
PDP-8, auf der mit Lämpchen Registerinhalte abgelesen und mit Kippschaltern
Register und Speicherinhalte eingegeben werden können, ist zur
Zeit noch nicht emuliert.
3.
Bedienung des Emulators ==========================
Der
Emulator selbst liegt auf einer Atari-DOS-Diskette vor und heißt "PDP8.XEX".
Vor der Verwendung auf dem Atari müssen auf diese Diskette auch
die gewünschten PDP-8-Programme kopiert werden, z.B über den PC oder
Mac mit Tools wie AtrUtil oder makeATR.
Nach dem
Starten von "PDP8.XEX" am Atari fragt das Programm nach dem zu
ladenden PDP-8-Programm. Hat man z.B. auf seine Diskette das PDP-Schachprogramm
unter dem Namen "CHESS.BIN" aufgespielt, ist jetzt dieser
Dateiname einzugeben. Danach fragt der Emulator nach der PDP-8-Adresse,
an der das geladene Programm zu starten ist. Diese Adresse ist
wie auf der PDP üblich als Oktalzahl einzugeben. Für das Schachprogramm
und viele weitere Programme lautet die Startadresse "0200".
Nach Eingabe der Adresse lädt der Atari das PDP-8-Programm in
den Speicher und startet die Emulation. Die Ausgaben und Eingaben, die
das Programm auf einer Original-PDP-8 (unter beträchtlichem Lärm) am
Fernschreiber erzeugen bzw. erwarten würde, sind dann auf dem Atari am
Schirm sichtbar bzw. auf der Tastatur einzugeben.
4.
Kurzanleitungen zu einigen PDP-8-Programmen ==============================================
a)
Übersicht ------------
Der Emulator wurde
mit der folgenden PDP-8-Software getestet:
Es wird in den nächsten drei Abschnitten eine
ganz kurze Einleitung zu den ersten Schritten mit diesen
Programmen gegeben. Zu jedem der Programme gibt es im Internet
umfangreiche Dokumentationen, die über Google leicht zu finden
sind.
b) Schachprogramm CHEKMO-II ---------------------------
Nach
der Begrüßungsmeldung folgt eine Eingabeaufforderung "W. YOUR MOVE?".
Daraufhin ist ein Zug oder ein Befehl einzugeben. Mit dem Befehl
"BD" wird das Schachbrett ausgegeben. Ein wichtiger Befehl ist "BM".
Damit wird in den "Blitz mode" umgeschaltet, in dem das Schachprogramm
schwächer aber viel schneller ist.
Zum Ziehen kann
man z.B. "D2-D4" eingeben. Der Rechner antwortet mit "B. YOUR
MOVE?". Das heißt, dass jetzt Schwarz (B=Black) ziehen muss. Man
kann mit einem Partner, der jetzt seinen Zug eingibt, spielen, oder
mit dem Befehl "PB" (play black) den Computer als Gegner wählen. Der
Rechner denkt dabei auch im Blitz-Modus sehr lange nach (Emulation auf
einem 6502 mit 1 MHz ist hier einfach zu langsam). Man muss mit etwa
3-4 Minuten Wartezeit rechnen, bis der Zug des Computers ausgegeben
wird. Mit "BD" kann man sich immer wieder das aktuelle Schachbrett
ausdrucken lassen.
c)
Programmierprache FOCAL --------------------------
FOCAL
ist eine BASIC-ähnliche Programmiersprache, die auf den PDP-Maschinen
sehr verbreitet war. Nach der Begrüßung fragt der FOCAL- Interpreter,
ob bestimmte Funktionen (zu Lasten des verfügbaren Speichers
für FOCAL-Programme) zur Verfügung gestellt werden sollen. Auf
die Fragen "SHALL I RETAIN LOG, EXP, ATN ?" usw. für erste Tests immer
mit "NO" antworten, dann erscheint ein "*" als Eingabeaufforderung.
Der Befehl "TYPE" oder abgekürzt "T" entspricht in FOCAL z.B.
dem BASIC-Befehl PRINT. Nach "TYPE 3+4*5" wird daher z.B. "23"
ausgegeben.
FOCAL-Programme haben mit "."
untergliederte Zeilennummern. Die Zahlen von 1 bis 10 und ihre
Quadrate werden etwa mit folgendem Programm ausgegeben, das in
der Kommandozeile eingegeben wird:
01.01 FOR
I=1,1,10; TYPE I,I*I,!
Gelistet wird ein Programm
mit "WRITE ALL", gestartet wird es mit "GO".
Auf
der PDP-8 gab es auch eine Version der funktionalen Programmiersprache
LISP, die vor allem für Anwendungen der künstlichen Intelligenz
im Einsatz war, und auch heute noch verbreitet ist. Das PDP-8-LISP
bedient sich noch der ursprünglichen LISP-Syntax des Lisp-Erfinders
McCarthy.
Ein Ausdruck wird in der Befehlszeile
eingegeben, vom LISP-Interpreter ausgewertet und das Ergebnis
ausgegeben.
Beispiele für Ein- und Ausgaben:
PLUS
(19
7)
--> 26 MINUS (2011
1966) --> 45 TIMES (7
6)
--> 42
Programmiert
wird über die Definition neuer Funktionen. Z.B. kann man eine
neue Funktion SQUARE definieren, die das Quadrat einer Zahl berechnet:
DEFINE
(((SQUARE (LAMBDA (X) (TIMES X X)))))
Damit kann die
neue Funktion auch schon angewendet werden:
SQUARE
(7)
--> 49
Ein Tipp noch: Wenn keine Reaktion auf die Eingabe erfolgt,
einige schließende Klammern ")" eingeben und "Enter" Drücken.
e)
Dokumentationspaket ----------------------
Eine
kleine Sammlung von Dokumentationen zur oben beschriebenen PDP-8-Software
ist in der ZIP-Datei "pdp8doku.zip"
zusammengestellt. Weitere Dokumentationen dazu finden sich
relativ leicht über Google.