Der RIM Loader

Im letzten Artikel habe ich kurz erklärt, dass man der PDP-8 händisch das Laufen bei bringen muss. In diesem Artikel schauen wir uns den RIM Loader etwas genauer an. Es gibt einiges zu entdecken… 🙂

Vom RIM Loader, wie er auf der Frontplatte der PDP-8/I aufgedruckt ist, gibt es eine kommentierte Version im “Commonly Used Utility Routines” Dokument (nachfolgend CUUR genannt).

Der Loader für ASR-33

Der “traditionelle” RIM Lader kommuniziert mit einer ASR-33 Teletype. Dieses Gerät hat eine Tastatur, einen Lochstreifenleser/-Stanzer sowie einen Drucker.

DEC ASR-33
DEC ASR-33 | Rama & Musée Bolo, CC BY-SA 2.0 FR

Der Anwender legt einen “BIN Loader” Lochstreifen ein und startet dann den RIM Loader an Adresse 7756:

Addr  Cmd   Mnemonic   Kommentar aus CUUR
----  ----  ---------  ------------------
7756  6032  KCC        clear AC and flag
7757  6031  KSF        skip if flag=1
7760  5357  JMP 7757   looking for char
7761  6036  KRB        read buffer
7762  7106  CLL RTL    ch8 in AC0 
7763  7006  RTL        check for leader
7764  7510  SPA        found leader
7765  5357  JMP 7757   ok, ch7 in link
7766  7006  RTL 
7767  6031  KSF 
7770  5367  JMP 7767
7771  6034  KRS        read, do not clear
7772  7420  SNL        checking for address
7773  3776  DCA I 7776 store contents
7774  3376  DCA 7776   store address
7775  5356  JMP 7756   next word
7776  0                temp storage
7777  0                start of BIN loader

Damit wir den Code  verstehen können brauchen wir die Info zum “BIN” Format der Lochstreifen. Der Lochstreifen hat 8 Kanäle, überträgt also 8 Bits auf einmal. Diese werden über die IOT Kommandos (6xxx) in den AC übertragen.

Der AC ist allerdings 12 bit breit; die Daten werden in die niederwertigsten 8 Bits des AC geladen. Ich vermute dass die übrigen Bits im AC unverändert erhalten bleiben.

Das BIN Format auf dem Lochstreifen

Im bereits erwähnten CUUR wird auch auf die Formatierung eingegangen. Die oberen 2 Bits/Lochstellen werden verwendet um anzuzeigen, welche Art von Daten in den unteren 6 Bits/Löchern codiert sind.

DEC paper tape
DEC paper tape | © http://www.technology.niagarac.on.ca/people/mcsele

10 xxx xxx – leader code

Dieses Bit- bzw. Lochmuster leitet ein Programm ein. CUUR definiert die x als 0en (kein Loch).

01 xxx yyy – octal adress

Dieses Muster leitet eine Speicheradresse ein. Auf der direkt nachfolgender Reihe sind zwei weitere Adressen codiert. Zusammen bilden sie die 12 Bit Adresse, an welche nachfolgende Daten (octal data) platziert werden.

00 xxx yyy – octal data

Null-Null leitet Daten ein, die im Speicher abgelegt werden. Auch hier sind 2 Reihen nötig, um den Inhalt einer 12 Bit Speicherzelle zu befüllen.

Lochmuster

Paper tape format
Paper tape format, aus DEC-08-NGCB-D | © 1966, 1968, 1969 by Digital Equipment Corporation

Daraus können wir das Lochmuster ableiten (1: Loch, 0: kein Loch, “.” ist ein leerer Bereich auf den Lochstreifen, damit er “verpolungssicher” ist).

10 000 . 000  leader code
01 111 . 111  Adresse 77
00 101 . 110  Adresse 56 -> Startadresse 7756
00 110 . 000  Datum 60
00 011 . 010  Datum 32 -> 6032, Kommando KSF
...
10 000 . 000 trailer code

Im zweiten Teil schauen wir uns an, wie der RIM Loader den Lochstreifen einliest und damit den BIN Loader lädt.