Reparatur EAE (extended arithmetic element)


Diese Option für die pdp8/e dient der Unterstützung und Erweiterung der CPU für Rechenaufgaben. Die Option (KE8-E) besteht aus zwei Karten M8340 und M8341. Diese werden zwischen die Karten M8330 und M8310 gesetzt und untereinander und mit den CPU Karten mit den Brücken (H851) an Platinensteckern an der oberen Kante der Platinen verbunden. Über diese Verbindungen greifen die Platinen bei der Abarbeitung von Befehlen asynchron in das geschehen ein und veranlassen Operationen in den Registern der CPU. Durch diese Unterstützung gewinnen Rechenaufgaben, sofern der Code die Option benutzt, deutlich an Geschwindigkeit. Das an anderer Stelle in Fortran geschriebene Apfelmännchen wird vom Compiler so übersetzt, dass bei Vorhandensein der EAE Option, diese unterstützt wird. Die Rechendauer halbiert sich dabei in etwa!

Zuerst hatte ich das an der PiDP8 getestet, da kann man auf einfache weise die Option de/aktivieren. -Wegen ihrer großen Wirkung wollte ich diese Option unbedingt in der lab8/e haben! Bei der lab8/e war die EAE Option dabei, allerdings funktionierte sie nicht. Durch Zukauf zweier weiterer Platinen stellte sich heraus, auch diese waren anscheinend defekt, zumindest bekam ich sie nicht zum Funktionieren. Mehr noch, bei genauer Betrachtung erkannte ich Unterschiede in den Anschlüssen, offensichtlich gibt es verschiedene Versionen dieser Option!

In den Bildern oben sind die Anschlüsse der oberen Platinenkante zu sehen, auf zwei Bild die passenden EAE Karten zusammen. Ein Bild zeigt beide Versionen übereinander mit Pfeilverweis auf die deutlich sichtbaren Unterschiede der Pins. Nach einiger Recherche bleiben die Informationen dazu wage. Es gibt eine alte layout Version der oberen Verbinder und eine neuere. Die genauen Versionsdaten des Wechsels kenne ich (noch) nicht. Zu den Verbindern gehören dann auch die passenden Versionen der CPUs, insbesondere der M8330, mit entsprechen passendem Layout!

Da wird es seltsam. Die lab8/e kam mit einer alten und einer neuen Karte! Der Zukauf durch Zufall auch, und so liessen sich tatsächlich eine alte EAE und eine neuere EAE kombinieren.

Allerdings funktionierten auch die Kombinationen nicht in der lab8/e.


Als ich im Herbst eine große Menge Hardware bekommen habe, war darunter auch eine pdp8/e mit EAE (neueres Layout).

Leider funktionierte auch die nicht, und keine Kombination der neueren Karten untereinander! Getestet in der lab8/e und in der pdp8/m mit der passenden CPU aus der pdp8/e (noch im Keller). Anscheinend waren zu viele Defekte vorhanden. Eine M8341 brauchte nur im Rechner zu stecken und eine Adressleuchte war dauerhaft an.

Andere Karten waren zunächst unauffällig. Laut Maintenance soll man vor dem Testen der EAE Karten noch einmal die normalen CPU Instruction Tests durchführen, diese liefen mit eingebauten EAE Karten dann auf Fehler.

Also habe ich nun eine Haufen Karten, aber keine funktionierende EAE Option!


An Dokumentation zu dem Thema gibt es das Small Computer Handbook“ und die Processor Maintenance Manual Vol.1 und 2. Hier wird im text immer wieder empfohlen die Dokumentation zu studieren. An Schaltplänen findet man im Web die Schematics der vermutlich letzten Version der Platinen:  M8340F und M8341E. Die tatsächlich vorhandenen Versionen sind etwas andere. Neben dem auf der Platine angegeben Buchstaben, sind weitere Bestückungsversionen, oder Modifizierungen am Griff (Handle) eingestanzt oder geritzt.

Somit sind vorhanden:

Aus der pdp8/e

M8340 E (427F) (neues Layout Verbinderstrecker H und J)

M8341 D (422E) (neues Layout Verbinderstrecker H und J)


Für lab8/e 

M8340 E (341F) (neues Layout Verbinderstrecker H und J)

M8341 D (E) (neues Layout Verbinderstrecker H und J)


Reserve:

M8340 D (142D) (altes Layout Verbinderstrecker H und J)

M8341 B (14BC) (altes Layout Verbinderstrecker H und J)


Keine der Kartenpaare funktionierten in der lab8/e. Auch kreuzweise getauscht ergab sich keine Funktion. Daher vermutete ich etliche Defekte auf den Karten.


Mit der Hardware kamen auch sehr wertvolle Arbeitshilfsmittel, die bei der Reparatur sehr hilfreich zum Einsatz kommen.

Dadurch, dass ich nun zwei PDP8en nebeneinander zur Verfügung habe, wollte ich die Platinen mit neuerem Layout nebeneinander auf Unterschiede hin untersuchen, um so die Fehler zu finden. Links die lab8, rechts die pdp8/m. Zuerst wurden die M8341 mit einer Distanzplatine so eingesetzt, daß man im Betrieb darauf zugreifen kann. Wie im Bild zu sehen. Mit den Verbindungskabeln können dann die Verbindungen hergestellt werden, die sonst mit einer Steckbrücke gemacht werden. DEC buchstabiert die Verbinder alphabetisch. Die unteren Boardsteckplätze von rechts nach links A B C und D. Die Oberen Positionen auch von rechts nach links E F H und J. Einige Buchstaben wurden der Lesbarkeit halber im DEC Alphabet ausgelassen. Im Bild geht der H Stecker nach vorne zur M8340 und der F Stecker nach hinten zur M8310. Die Probleme wurden bei der Platine deutlich, sobald der F Stecker steckte, dann war dauerhaft eine Adressleitung angezeigt. Die Platine störte also den normalen Betrieb. Ohne den F-Stecker wurde der Rechner nicht erkennbar gestört. Daher wurde für das erste Reparaturset in beiden Rechnern die M8341auf der Distanzplatine installiert und nur der J Stecker angeschlossen. Alle Signale am offenen F-Stecker werden auf Ihre Spannung untersucht und miteinander verglichen. Dazu nehme ich ein einfaches Oszilloskop, weil man daran schnell sieht, welche Spannung anliegt, oder ob ein Signal anliegt. Dabei gab es an drei Pins Abweichungen. Mit ständigem Blick auf die Schaltpläne, manchmal auch verschiedene, wegen einer teilweise problematischen Lesbarkeit, wurde diesen Unterschieden nachgegangen.

So wurden Stellen gefunden, bei denen ICs unterschiedliche Spannungen an Ein und Ausgängen hatte. Dabei musste geprüft werden, ob das gemäß der Logiktabelle der ICs ein korrekter oder fehlerhafter Zustand ist. Bei Abweichungen von der Logiktabelle besteht die Wahrscheinlichkeit ein fehlerhaftes IC zu haben. Auf diese Weise wurde das defekte DEC8235 festgestellt, weil alle Eingänge gleich waren, aber der Ausgang unterschiedlich. Nach Tausch des ICs blockierte die Karte auch nicht mehr den Rechner bei gestecktem F-Stecker! Nachdem alle Unterschiede am F-Stecker beseitigt waren, war die erste Karte repariert.

Versuchsweises Testen mit getauschten M8340 zeigte eine funktionierende EAE Einheit. Also waren nun 2 Karten bekanntermaßen in Ordnung.

Bei den M8340 Karten wurde ähnlich vorgegangen, nur waren hier die J Stecker mit der M8330 nach vorne verbunden. In die pdp8/m kam die schon bekannte heile Karte, in die lab die zu reparierende. Durch die statische Suche wurden einige defekte ICs gefunden, aber das reichte noch nicht. Um zu sehen ob ein Schieberegister mit Daten geladen oder verändert wird, wurde mit einem Frequenzgenerator ein entsprechendes Signal angelegt (Rechteck 0-2V auf Bein 5 von SN74193) und so gesehen, das das IC etwas tut. Allerdings liess sich durch einen Ladebefehl (SCL) nicht erkennen, dass dort eine Veränderung eintritt, egal ob ich 0000 oder 11111 lade. Hier wurde noch eine Weile an der Signalisierung gesucht und ein defekter Inverter ersetzt. Danach halfen einige kleine funktionelle Code Sequenzen den stepcounter zu testen. Als das OK schien, wurden die Stecker komplettiert und die Maindec Tests liefen erfolgreich durch. 2. Karte repariert, fehlt noch die letzte M8241 in der 8m. Hier wurde ein verdächtiges  M8881 ausgebaut und solo getestet. Es war defekt. Allerdings konnte ich durch ansprechen einiger Code Sequenzen Seltsamkeiten feststellen. Ich vermutete daher weitere Fehler der Karte.


Bei genauer Betrachtung einiger Steuersignale die gegen Masse lagen, sah ich,  dass die CPU aus der pdp8/m das alte Layout am J Stecker oben an der M8330 (Timing) Karte hatte! Das hatte ich nicht erwartet und auch nicht kontrolliert, war doch bei dieser CPU eine neuere Version der EAE verbaut gewesen. Daher habe ich die EAE Karte dann in der lab8/e gesteckt und festgestellt, dass sie schon repariert war! (Maindecs OK). In der alten CPU lief sie aber nicht, sondern führte beim Ausführen mancher Befehle zum sofortigen Stillstand des Rechners. Das hatte ich bisher der Karte als Fehler zugeschrieben.  Seltsamerweise war das aber genau die Kombination, wie die Karten zusammengebaut zu mir kamen! Eine Kombination, die gar nicht funktionieren kann? Normalerweise stört die Karte die normale CPU nicht, auch manche EAE speziellen Befehle funktionieren, aber manche Befehle bringen die Kiste zum Stehen. Zum Beispiel NMI (7411). Startet man den, wird nicht mal die nächste Speicheradresse angezeigt, keine Reaktion mehr auf die Eingabetasten! Der Rechner musste dann erst einmal aus und eingeschaltet werden. Das brachte mich im weiteren auf die Idee, hier mal die Reserve Karten mit altem Layout zu testen, die in der lab8 nicht funktionierten.

Das „Opfer IC“ wurde also wieder zurück gesteckt (Sockel sei dank) und die Karten eingebaut. Hier funktionierte alles spot on! Stepcounter laden und anzeigen klappt genauso wie links shiften (SHL). Die ältesten Karten hatten also gar keine Fehler (dachte ich), funktionieren aber aufgrund ihres Layout nicht mit einer CPU mit späterem Layout.


Das hätte ich nicht erwartet! Nunmehr habe ich also drei Paar EAE Platinen die ich einsetzen kann! Denn ich habe auch die passenden CPU’s dazu! Ich muss nur ein IC noch besorgt bekommen, aber das wird schon…..


Wie oben beschrieben wurden nach und nach einige defekte ICs gefunden und deren Stelle gegen Sockel getauscht. Sofern die IC’s vorhanden waren kein Problem, einzig ein DEC8235 (Ersatz Signetics 8235) musste erst einmal der Reserveplatine entliehen werden. Weiter defekt waren 3x SN7402, 2xDEC8881 (Ersatz SN7439), DEC8093 (Ersatz SN74LS125AN), SN7474, SN74H11 und SN74H04. Da einige IC’s beim Ausbau zerbrachen, kann ich nicht eindeutig sagen ob sie defekt waren, das betraf aber keine seltenen DEC IC’s. 


Nach der Prozedur liefen beide EAE Paare ohne Fehler für einige Minuten durch die EAE Inst. Test 1 und 2. Auch unter OS8 kompilierte das APFEL0.FT (.EXE APFEL0.FT) und lief! Das Zeichnen der Männchens dauerte 3:45 Minuten anstelle von 7:30 Minuten ohne EAE. Soweit ein toller Erfolg!

Ich habe festgestellt, dass man für die Zusammenstellung von CPU und EAE auf die Version des Layouts achten muss, sonst klappt es nicht und man vermutet Schäden wo keine sind.


Im Überblick habe ich folgende  drei funktionierende Kombinationen an CPU und EAE Platinen:


Platine         Platinenversion/Bestückungsversion . .

M8330        B/209A        -/750P        C/353D 

M8340        D/142D        E/341F      E/427F      EAE

M8341        B/140B        D/E            D/422E      EAE

M8310        F/337F        B/148C      F/350F

M8300        B/244C        B/23B        B/351D

M837          B                 D/320D      D/348E  


23.01.2020 Leider hatte die M8341 Karte im alten Layout dann doch ein paar Fehler. Zwar gingen etliche Dinge, so dass ich dachte die Karte sei in Ordnung, aber beim Testen mit den EAE Instr. Tests zeigten sich dann die Probleme. Instr. Test 1 lief minutenlang, aber der Inst. Test 2 brachte den Rechner sofort zum Einfrieren! Da habe ich lange gesucht, ein defektes DEC8881 getauscht, aber das war es noch nicht. Dann habe ich mich an den Logikanalysator herangetraut und versucht die Signale nach dem „processor maintenance manual“ nachzuvollziehen um den Fehler zu finden. Beim Befehl MVY (multiply) fror der Rechner ein, beim Befehl LSR (logical shift right) ging es ganz problemlos. So habe ich etliche Signale abgegriffen und mit dem Logikanalysator angeschaut, die Bilder beider Befehle übereinander gelegt. Da erkennt man dann, dass bis zum Einfrieren beim MVY Befehl die Signale völlig identisch sind. Erst wenn Lab1_9 wieder high wird, beginnen die Unterschiede. >>daher habe ich untersucht, wo das erste andere Signal herkommt. Dabei bin ich immer näher an den Bereich der Schaltung gekommen, der die Timing Signale erzeugt. Insbesondere kommt zum Zeitpunkt ein Signal aus IC E05. Daher wollte ich mir die Signale an diesem IC genauer ansehen. Dazu habe ich eine Klemme mit den nötigen Verbindungen zum Logikanalysator aufgesetzt und zusätzlich mit einer festen Klammer gesichert, damit die Kontakte sitzen und nicht abrutschen. Bei der Messung stellte ich erstaunt fest, der Rechner fror gar nicht ein! Klammer wieder abgenommen, Rechner friert ein. Aha! 

Nach dem Wechsel von dem IC konnte ich dann endlich die Instruction Tests erfolgreich laufen lassen. Die Karte ist nun endlich repariert.


Anschließend habe ich noch ein paar Experimente gemacht, die verschiedenen Layouts der EAE Karten und der M8330 zu kombinieren. Der wesentlichste Unterschied ist eine veränderte Signalführung für das Signal RESTART. Das wird in der M8341 erzeugt (E36 Pin 1+4) und in der alten Version über die Backplane CL1 zur M8330 gebracht. Dort wird es von IC E17 Pin 1 verarbeitet. 

In der neuen Version wird RESTART nicht auf die Backplane gelegt, sondern „obenherum“ durch die M8340 hindurch zur M8330 JV2 geleitet. Hier verarbeitet E37 Pin 1 das Signal.

Daher können die Platinen verschiedenen Layouts nicht einfach gemischt werden, das RESTART Signal kommt einfach nicht an. Aber was passiert, wenn man etwas nachhilft?

So habe ich das funktionierende Paar M8341 und M8340 im alten Layout, mit einer neueren M8330 Timing Karte gemischt. Auf der M8330 habe ich einen Draht gelegt um E17 Pin 1 mit E37 Pin 1 zu verbinden. Auch war da noch ein „pull up“ Widerstand, den ich ausgelötet habe. 

Die Instruktion Tests liefen, aber teilweise unzuverlässig. So kann man daran erkennen, es geht einerseits, aber andererseits nicht wirklich stabil. Mag sein, dass es hier noch einiger Optimierungen (Widerstand) bedarf um es dauerhafter stabil zu bekommen.  Dem bin ich nicht mehr weiter nachgegangen. 





‍