DEC LAB-8/E
Die PDP-8/e in der grünen Farbgebung. Aufmerksam geworden durch einen Forenhinweis, habe ich mich um die Anlage bemüht und konnte sie am 23.05.2019 abholen.
Nach Verladen kamen die meisten Sachen vorerst in den Keller. Ich kümmere mich zuerst um die LAB-8/E. Nach einigem Reinigen, Prüfen und Instandsetzen von schadhaften Kontakten, gab es heute erste Lebenszeichen in der Minmalkonfiguration. Aber es gibt noch diverse Probleme. Alles weitere nach und nach. Wer weiß, wie lange der Rechner nicht mehr eingeschaltet war.
Nach einigen Tests wurde noch ein Fehler an der hinteren Backplane (Omnibus) gefunden. Daher wurde der Rechner zerlegt und die Backplanes eingehend untersucht. Auf der Unterseite waren einige Spannungsversorgungsbahnen mit Drähten verstärkt. Diese waren aber nie geschützt worden und so hatte das Kupfer Grünspan. Der wurde beseitigt und einige Lötstellen verbessert. Einige Drähte verliefen ungenutzt im Gehäuse und wurden entfernt. Einige Drähte habe ich ergänzt, einige Lötkügelchen und Kleckse gefunden und beseitigt. Mit Lötlack habe ich die Platine dann versiegelt. Danach den Rechner wieder aufgebaut und die Spannungsversorgungen kalibriert.
Von den 3 mal 4K Worte Core Speicher, jedes 4K besteht aus drei Platinen, war nur eines funktionstüchtig.
Beide andere haben offensichtliche Fehler, und durch Umstecken der Platinen konnte das auf zwei G227 Karten eingegenzt werden.
Erstmal geht es also mit 4K Worten los. Ich sage extra Worte, denn ein Wort hat 12 Bit, also 1,5 Byte.
Der Einbau der seriellen Karte zeigte nach Eingabe eines kleine ECHO Programms gleich Erfolg. Was am Terminal getippt wurde, kam auch auf dem Bildschirm an. Das Echo oktal:
0100 7601
0101 6046
0102 6031
0103 5302
0104 6036
0105 6041
0106 5305
0107 6046
0110 5302
In der Reverenz Karte steht der RIM Loader aufgelistet. Den gibt man ein, um ein kleines Programm zu haben, mit dem man weitere Programme laden kann. Diese Programme erfordern dann das RIM Format, welches nicht sehr Platzsparend ist. Lieber nutzt man das BIN Format, was mehr mehrere Faktoren kürzer ist. Deshalb lädt man mit dem RIM Loader oft erstman den BIN Loader. Der ist zu lang um ihn von Hand einzugeben. Hat man den BIN Loader geladen, kann man damit Files von Programmen oder Betriebssystemen laden. Es wird also mehrstufig geladen.
Files von meinem Raspberry Pi zur PDP8 zu schicken, hat nicht aus minicom heraus funktioniert. Daher habe ich eine kleine Schleife in Python gemacht, die eine Datei byteweise verschickt. Dabei kann nach jedem Zeichen eine kleine Pause erzeugt werden. So gelang es dann mit dem RIM Loader den Bin Loader zu laden.
Und der konnte dann Focal oder Micro-8 laden. Meine ersten Anwendungsprogramme auf der LAB8!
Irgendwann blieb die LAB8 stehen! Danach ist Bit 4 der Adressanzeige permanent gesetzt. Entspricht Adresse 0200. Problemanalyse:
Test1:
Folgender Test am Anfang der Page 0:
0000 7001
0001 2101
0002 5001
0003 5000
Die Hochzählschleife. Die Adressierungen sind hier für Memory Page 0 gesetzt. Das heisst, die Sprunganweisungen zeigen immer auf Adressen in Page 0. Wenn das Programm da nicht drin steht, kann es also nicht laufen.
Wenn ich das eingebe in Page 0 und starte, läuft sie! Man sieht den AC hochzählen.
Lade ich sie nach 1000, läuft sie nicht! (Aber erst wieder aus 0000 löschen) War erwartet, denn es ist ja kein Code in Page 0.
Wenn ich die Variante umschreibe für die current Page, wird Page 0 nicht gebraucht. Gebe ich das in 1000 ein:
1000 7001
1001 2205
1002 5201
1003 5200
läuft sie dort auch, der AC zählt hoch.
Schlussfolgerung:
Trotz Anzeige von 0200 arbeite ich auf 0000.
Test2:
folgende kleine Sequenz:
0000 7300 AC u. Link löschen
0001 1206 add was in 06 steht in AC
0002 3607 schreib indirekt nach der Adresse von 07
0003 7300 AC u. Link löschen (um ganz sicher zu sein)
0004 1607 lese indirekt was in Adresse von 07 steht
0005 7402 halt
0006 xxxx Muster
0007 yyyy Adresse
Über zwei Speicherstellen kann ich ein Muster und eine Zieladresse festlegen. Wenn ich das kurz starte, wird das Muster gelesen und an die angegebene Adresse geschrieben. Dann wird die Adresse wieder ausgelesen und angehalten.
Tue ich das für verschiedene Adressen, sehe ich hinterher immer das Muster.
Auch hier kann ich mit den Frontschaltern nicht zwischen einer Adresse und Adresse +0200 unterscheiden. Aber ich finde dort jeweils das Muster.
11.6.2019 Den Fehler vermute ich zuerst in der Frontschalter Platine, aber ich finde für die Leitung (Signal MA4, Pin BD1) hier nur einen IC Eingang. Und ein Kurzschluss liegt nicht vor. Also suche ich in den Plänen nach einem IC Ausgang und finde auf M8300 Major Registers das IC E22, ein DEC8881. In Ermangelung eines Ersatz IC’s habe ich es einmal nachgelötet.
Das scheint ein voller Erfolg, Bit 4 ist aus, Speicher lässt sich wieder normal setzen.
Genauere Tests folgen!
20.6.2019 Leider stelle ich schnell fest, Laden von Programmen klappt nicht. Insgesamt ist die Kommunikation mit der seriellen Schnittstelle gestört. Nach langem Suchen und vielen Umwegen finde ich die Ursache in einem Kontaktproblem der DIP Schalter auf den seriellen Karten. Dadurch hat die Karte eine andere als die eingestellte Baudzahl gehabt und die Kommunikation mit dem Terminal hat nicht funktioniert. Der Umstand, dass sich gleichzeitig zwei Karten so verhalten haben, hat mich sehr irritiert und lange falsch suchen lassen.
Also immer erst ALLEN Kontaktproblemen nachgehen!
21.06.2019 Nachdem das behoben war, gingen die Tests weiter. Schnell war klar, das Laden von Programmen klappt immer noch nicht. Da inzwischen die bestellten Ersatz IC’s gekommen waren, habe ich das IC E22 gegen einen Sockel getauscht und ein DM7439N eingesetzt.
Das war gut, denn jetzt klappte viel! Laden von FOCAL und MICRO-8 gelingt. Die Programme laufen. Daher wurde getestet, ob auch die MAINDEC Testprogramme funktionieren.
Der MEMTEST und der Instruction Test 1 liefen jeweils etwa 15 Minuten, bis ich sie abgebrochen habe.
Weil eine G227 Platine angekommen war, wollte ich schauen ob eine weitere CORE Bank damit funktioniert. Auch das sah zunächst gut aus, mit dem Frontpanel können Inhalte gesetzt und gelesen werden. Aber ein kleines Programm läuft nicht. Daher verschiebe ich diese Aktion und Teste erstmal die CPU weiter!
Der Instruction Test 2 lief etwa eine Minute, dann hielt der Test an. Also ist irgendetwas nicht in Ordnung.
Leider muss ich feststellen, dass wieder eine ganze Menge nicht in Ordnung ist. FOCAL lässt sich zwar laden, aber es startet nicht. Das sieht ganz ähnlich aus wie bei dem defekten IC E22.
Ich muss mich auf die Fehlersuche machen!
22.06.2019 In Analogie zum ersten IC Fund, tausche ich auch die anderen Adressbus Treiber gegen Sockel aus. Bestücke mit IC’s und hoffe auf ein laufendes System. Aber nein. Bit 4 vom Adressbus leuchtet! Wieder Bit 4? Schon wieder das IC defekt? Aber auch mit einem anderem IC bleibt der Fehler. Andere Ursache? War E22 gar nicht defekt? Daher will ich nun genauer Messen.
Dazu baue ich die Heberplatinen ein und nehme die M8300 Platine nach vorne, damit ich an den IC’s messen kann. Wie erwartet sind beide Eingänge für Signal MA04 auf HIGH, da bleibt dem Nand gar nichts anderes übrig, als am AUSGANG LOW zu sein. Da für alle Signale MA0-MA11 an einem Eingang das Signal „CPMA Load L“ angelegt ist, kann der Ausreisser nur an dem anderen Eingang sein. Dieser kommt für MA04 von IC E25 Bein 9. Das Signal ist immer High, aber nicht mit voller Aussteuerung, das sieht seltsam aus. Im ausgeschalteten Zustand haben alle anderen Ausgänge von dem IC E25 (ein DEC8271) zwischen 7 und 12 MOhm gegen Masse. Nur an Bein 9 nicht, der wird nicht angezeigt vom Messgerät. Ich finde als Ersatztyp SN74179 und bestelle bei Ebay….
Und natürlich stellt dies Verhalten die Diagnose des defekten E22 in Frage.
Kurz zusammengefasst: Kiste läuft, bleibt mitten unter Programmlast stehen, Bit 4 ist an. Löten an der Platine beseitigt das Licht. Austausch von E22. Dann läuft der Rechner wieder, bis er unter Last vom Instruction Test wieder stehenbleibt, Bit 4 leuchtet….
Habe nun nur mal kurz an Bein 9 von E25 die Lötstelle aufgefrischt. Folge, ich messe wieder 10MOhm gegen Masse. Im Betrieb ist Bit4 aus, Focal lässt sich laden und läuft auch. Den Widerstand gegen Masse hatte ich nicht an der Lötstelle gemessen, sondern von oben am Bein. Ich vermute also eine defekte Kontaktierung im innern des Chips. Warten wir ab, was der Austausch bringt!
Mit einer kleinen Testschaltung gebe ich ein Signal auf das ausgelötete IC E22 und kann dabei keinen Defekt feststellen. Es arbeitet dabei gegen 100 Ohm mit etwa 50mA erkennbar in Ordnung.
25.06.2019 Die SN74179 sind angekommen. Nach dem Einbau kein Rauch und Gestank. Es liess sich der RIM Loader eingeben, der BIN Loader laden und Fokal auch. Es startete normal und reagiert auf den Type Befehl mit entsprechenden Ausgaben. Das sieht schon mal nicht schlecht aus.
26.06.2019 Heute dann die Tests:
MAINDEC-8E-D0AB-InstTest-1 OK
MAINDEC-8E-D0BB-InstTest-2 OK
MAINDEC-8E-D1EA-Memory-Address OK
Habe die Tests jeweils nach 15-20 Minuten abgebrochen.
MAINDEC-8E-D0CC-AddTest OK, hat nach 35 Minuten seine Erste Rund erfolgreich durch!
Über das Ergebnis freue ich mich, denn jetzt kann es weitergehen mit dem Aufbau.
30.06.2019 Die zweiten seriellen Karte mit 19200 Baud und Adresse 40/41 ließ den os8diskserver von Kyle Owen anschließen. Damit ist es möglich OS/8 ohne ein Festplattenlaufwerk oder Bandlaufwerk über eine serielle Schnittstelle zu betreiben. Der Server ist unter Linux vorgesehen und wurde auf einen Raspberry Pi installiert und kompiliert. Mit einem Terminal kommuniziert man mit der ersten seriellen Schnittstelle. Ist das soweit eingestellt, kann man dem Tutorial im Detail folgen und schon bootet OS/8! Es sind noch einige Anpassungen vorzunehmen, denn das System bedarf noch einiger Änderungen, das Tutorial hilft hier weiter.
- RIM Loader eingeben
- OS/8 bootloader laden
- Linux: os8server starten PDP8: bootloader starten
Schon wird man von einem einfachen „.“ als Kommandoprompt im Terminal begrüßt!
05.07.2019 Mit einer modernen RAM Karte, die man von Vince Slyngstad als Bausatz bekommen kann, erspart man dem alten CORE Betriebszeit und schont das Netzteil. Das moderne RAM ist Batteriegepuffert, die Karte verhält sich damit genau wie das Core. Es gibt noch ein weitere Eigenschaft. Durch einen eingebauten kleinen ATMEL werden je nach Eingabe am SW Schalter, kleine Programme, zumeist Bootloader geladen und gestartet. Das ist sehr komfortabel zum Testen und spart Zeit. Durch betätigen von 2x SW Switch, wird der os8bootloader aktiviert. So geht der Start von OS/8 in wenigen Sekunden!
Das ist toll, würde ich aber bei einer Ausstellung und Vorführung nicht unbedingt verwenden, weil einfach zu wenig retro. Aber hier zum Testen, super! Danke Vince!
04.08.2019 Nachdem ich bewundernd gesehen hatte was die Jungs von Tangentsoft für geniale Softwareimages für das PiDP8 Projekt gebastelt haben, habe ich mir das schönste Plattenimage für ein RK05 (v3d.rk05) genommen und ein wenig damit im simh gespielt. Alle Sprachen drauf! Focal, Fortran II, Fortran IV, Basic. Hmmm, das wollt ich gerne für die PDP8 mit dem os8diskserver nutzen! (Und später einmal auf eine echte RK05 Festplatte schreiben.)
Für die Nutzung mit dem os8diskserver mußte ich Anpassungen machen, die aber in den beiliegenden Dokumenten zum os8diskserver beschrieben sind. Das hat auch leidlich geklappt. Bekomme zwar nun beim Starten eine Fehlermeldung (INIT NOT FOUND), aber die Software darauf läuft, soweit getestet.
Also frisch ran ans Werk, als Demo schwebte mir ein Apfelmännchen als Mandelbrot Menge vor.
Nach etwas Netzsuche fand ich viele Varianten bei Rosettacode, aber keine in Fortran IV. Die Variante, die ich auf der PDP11 habe, funktioniert nicht mit Fortran IV. Also habe ich mich von den verschiedenen BASIC Vorlagen inspirieren lassen (und erst später die Variante für OS/8 entdeckt). Habe dann eine simple Variante für das OS/8 Basic erstellt und diese dann nach Fortran IV übertragen. Wie man an der Laufzeittabelle sieht, wirken sich die rechenunterstützenden Optionen EAE oder FPP sehr stark aus. Wie schön, daß man das im simh so einfach testen kann. Zwar habe ich den simh nicht auf Originalgeschwindigkeit gedrosselt, aber doch schon deutlich, und wichtig sind die Verhältnisse der simh Zeiten untereinander. Sonst läuft der mehr als 100fach schneller.
Das gibt mir die Motivation demnächst meine EAE Karten zu reparieren…(Siehe hier)
BASIC APFEL0.BA:
10 FOR Y=1 TO 24 STEP 1
20 FOR X=1 TO 72 STEP 1
30 LET A=0
40 LET B=0
50 LET C=-2.2+(X/72)*3.5
60 LET D=-1+(Y/24)*2
70 FOR I=0 TO 100
80 LET A2=A*A
90 LET B2=B*B
100 IF A2+B2>=4 GOTO 170
110 LET T=A2-B2+C
120 LET B=2*A*B+D
130 LET A=T
140 NEXT I
150 PRINT TAB(X);"X";
160 GOTO 180
170 PRINT TAB(X);" ";
180 NEXT X
190 PRINT " "
200 NEXT Y
210 END
Laufzeittabelle:
BASIC:
LAB/8 9m 5s
simh 4m 43s
FORTRAN IV:
LAB/8 -EAE -FPP 7m 31s
simh -EAE -FPP 3m 28s
simh +EAE -FPP 1m 40s
simh +EAE +FPP 8s
simh mit "set throttle 1M"
Fortran IV APFEL0.FT:
C DEFINITION
REAL A,B,C,D,A2,B2,T
C PROGRAMM START
DO 30 K=1,24
DO 20 I=1,72
C INITIALWERTE
A=0
B=0
C=-2.2+(I/72.0)*3.5
D=-1+(K/24.0)*2
C ITERATION
DO 10 L=0,100
A2=A*A
B2=B*B
IF (4-A2-B2) 2
T=A2-B2+C
B=2*A*B+D
A=T
10 CONTINUE
WRITE (4,100)
GOTO 20
2 WRITE (4,200)
20 CONTINUE
WRITE (4,300)
30 CONTINUE
100 FORMAT ('+X',$)
200 FORMAT ('+ ',$)
300 FORMAT (' ')
END