ABBUC Software Ressort

ABBUC Section Software


AABBUC Software Wettbewerb 2011

ABBUC Software Contest 2011

Beitrag 3 Entry #3

PDP8-Emulator

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:

Programm                                            Dateiname    Startadresse
---------------------------------------------------------------------
Schach                                                    CHESS.BIN    0200
Programmiersprache FOCAL (Version 1969)     FOCAL69.BIN  0200
Programmiersprache FOCAL (Version 1971)     FOCAL71.BIN  0200
Programmiersprache LISP                            LISP3.BIN    13000

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".



d) Programmierprache LISP
--------------------------

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.




Norbert, am 28. August 2011


:

software!abbuc!de
  by Bunsen 2011