Reparatur
Vorweg muss unbedingt erwähnt werden, dass diese Reparatur ohne Hilfe aus dem Forum des Vereins zum Erhalt klassischer Computer vielleicht nicht unmöglich, aber sicher deutlich schwieriger und langwieriger gewesen wäre!
Schneeräumung
Ein erster Versuch, das Gerät in Betrieb zu nehmen, lieferte leider nur Schnee auf dem angeschlossenen Fernseher -- werder der Sendersuchlauf noch das manuelle Auswählen des vom Spectrum normalerweise verwendeten Kanals 36 brachte ein Bild zutage. Ein Blick auf ein paar Bus-Leitungen des laufenden Rechners mit Hilfe eines Oszilloskops zeigte jedoch, das da durchaus noch Leben im System war.
Einer Empfehlung aus dem Forum folgend, umging ich in dann Form des sog. Composite-Hacks den HF-Modulator, um ein reines Composite-Video-Signal zu erhalten -- für den Fall, dass das Empfangsteil des Fernsehers ein Problem mit dem Antennen-Signal des Rechners haben sollte. Und voilá! - nun zeigte sich tatsächlich ein Bild! Wenn auch kein schönes...
Wildes Herumraten
Gut, wenn a) ICs gesockelt sind und b) Ersatz vorhanden ist! Das war bei meinem Speccy zumindest bei der CPU der Fall, ich konnte sie mit den Z80s aus meinem CPC464 und dem Sharp MZ80-A austauschen. Zumindest ersterer funktionierte mit der Spectrum-CPU weiterhin tadellos (beim Sharp habe ich das wegen der frei liegenden CRT-Elektrik nicht ausprobieren wollen, da ich nicht wusste, wie lange vor dem Zurücktauschen der CPUs ich hätte warten müssen, bis keine lebensgefährlichen Spannungen mehr anliegen). Dem Sinclair hingegen verhalf auch eine CPU-Transplantation nicht zu neuem Leben.
Man liest ja immer wieder, dass alte, dysfunktionale Elektroly-Kondensatoren gerne mal Probleme in alter Hardware bereiten. Einem Hinweis aus dem Forum folgend, stieß ich auf einer spanischen Speccy-Fan-Site auf einen Reparatur-Bericht, der als Symptom ähnliche Bildschirm-Muster wie bei mir beschrieb und bei dem der Austausch eines Elkos (C44; ist an der Generierung der 12-V-Spannung für die DRAM-Bausteine des Lower RAMs beteiligt) zur Genesung führte. Ich habe den benachbarten C45 gleich mit ausgetauscht -- leider ohne Erfolg.
Adressierungsprobleme
Also auf zu weiteren Detail-Untersuchungen! Eine genaue Überprüfung der Adress-Signale am Lower RAM zeigte, dass die Adress-Leitung A1 (blau in der Abbildung) immer auf LOW lag, während auf den anderen Adress-Leitungen buntes Treiben herrschte. Wobei hier von den Adress-Leitungen die Rede ist, die das ULA direkt, die CPU hingegen nur indirekt verwenden, um die Zeilen- und Spalten-Adressierung in den 4116er-RAM-ICs vorzunehmen -- und nicht vom Adressbus, wie er direkt an der CPU anliegt (grün). Diese Leitungen sind von der CPU durch mehrere 74157-Mulitplexer getrennt, und ich konnte zeigen, dass auf den die beiden CPU-Adress-Leitungen, die zur RAM-seitigen A1-Leitung gemultiplext werden, sowie beim Multiplexer-Output reger Wechsel zwischen HIGH und LOW stattfand -- erst jenseits des Trenn-Widerstands R17 (rot) war die Leitung tot. Meine erste Vermutung war, dass ein Defekt im ULA die A1-Leitung permanent auf Masse herunterzieht, aber vielleicht könnte auch ein defekter 4116 diesen Effekt haben?
Nun hieß es, zweigleisig zu fahren und die beiden Verdächtigen (ULA und Lower RAM) weiter zu untersuchen.
ULA
Beim ULA handelt es sich um ein Uncommitted Logic Array, also einen Chip mit einer großen Anzahl erst bei der Fertigungstellung verbundener Logik-Gatter (dann sind sie aber nicht mehr "uncommitted", oder?), der im Falle des ZX Spectrum als "Mädchen für alles" fungiert (grob vergleichbar dem PLA-Chip im Commodore 64 oder dem Gate-Array im Schneider CPC464) und u. a. die Video-Signal-Generierung, die Ansteuerung des Lautsprechers und die Interaktion mit dem Cassetten-Anschluss übernimmt.
Als Custom-Chip ist das Spectrum-ULA natürlich nicht mehr als Ersatzteil erhältlich -- oder höchstens gebraucht zu Mondpreisen bei Online-Auktionshäusern. Großartigerweise hat jemand aus dem Forum angeboten, mir leihweise ein NebULA-Board zur Verfügung zu stellen -- einen modernen, FPGA-basierten Ersatz für den Original-ULA-IC. Nach dessen Erhalt und Einbau hatte ich dann tatsächlich andere bunte Muster auf dem Bildschirm als zuvor -- allerdings immer noch nicht die erhoffte Sinclair-Research-Startmeldung.
Aber immerhin gab es jetzt wieder Aktivität auf der A1-Adressleitung! Zeit also, sich dem nächsten Verdächtigen zu widmen...
RAM
Eine nicht 100%ig zuverlässige Methode, um defekte RAM-Chips zu identifizieren, die aber wohl manchmal zum Erfolg führt, besteht darin, einen bekanntermaßen intakten IC huckepack auf die zu testenden ICs zu setzen, so dass sie deren Funktion u. U. übernehmen können. Ich konnte noch einen (mutmaßlich) intakten 4116 auftreiben, aber auf keinem der 8 Lower-RAM-ICs führte die Huckepack-Methode zu einer spürbaren Besserung.
Durch einen Hinweis im Forum wurde ich auf einen Anbieter moderner Ersatz-RAM-Module aufmerksam, mittels derer man auf einen Schlag die gesamte RAM-Bank durch eine Platine mit modernem, statischen RAM ersetzen konnte. Dank des wirklich sehr günstigen Preises habe ich nicht lange gezögert und so ein Modul bestellt. Bis zur Lieferung habe ich mir die Zeit mit dem Auslöten der 4116er und dem Einlöten entsprechender Sockel vertrieben -- eine Aufgabe, vor der ich aufgrund meiner unschönen Erfahrung mit einem TI-99/4A-Reparaturversuch ein gewisses Muffensausen hatte, die mir dann aber doch halbwegs gelang (ich habe dabei nur ein einziges Lötauge geschrottet).
Nun kann man ja -- wie endlose Diskussionen im Web zeigen -- sehr verschiedener Meinung sein, was die Verwendung von Präzisions-Fassungen angeht. Ob sie nun wirklich haltbarer und kontaktfreudiger sind als gewöhnliche Fassungen sei mal dahingestellt -- meine Vorstellung, ich hätte meinem Board mit der Verwendung solcher Sockel etwas Gutes getan, scheiterte dann am Realitätscheck, da das RAM-Modul mit Pins geliefert wurde, die einen quadratischen Querschniitt statt eines kreisförmigen aufwiesen und die einfach nicht in die runden Löcher der Präzisions-Fassungen passen wollten. Das Eckige musste aber irgendwie in das Runde. Aber auch hier war das Forum wieder ungemein hilfreich -- ich bekam den Tipp, die Pins aus dem Modul auszulöten und durch kurze Abschnitte von z. B. Widerstands-Anschlussdrähten zu ersetzen. Da die Lötstellen sich auf der Oberseite des Moduls befanden, konnte die ganze Operation recht komfortabel in place durchgeführt werden:
Der RAM-Tausch brachte zwar nicht das erhoffte Endergebnis, aber immerhin mal wieder neue bunte Muster -- die den Eindruck machten, als würde die Zusammenarbeit zwischen ULA und RAM jetzt funktionieren, aber die Initialisierungs-Routine, in der die CPU den nach dem Start zufällligen RAM-Inhalt durch definierte Werte ersetzt, nicht durchlaufen werden. Es gibt 8x8-Pixel-Felder mit zufälligen Mustern in jeweils zwei Farben, und manche der Felder werden periodisch invertiert -- das ist alle erklärtbar mit zufälligen Bitmustern sowohl in dem RAM-Bereich, der die Bitmap-Daten enthält, als auch dem Attribut-RAM, das die Farben und das Blink-Verhalten der 8x8-Zellen definiert.
Je nachdem, ob ich das NebULA-Board oder das alte ULA eingesetzt hatte, bekam ich übrigens Zufalls-Muster mit leicht unterschiedlicher Geometrie zu sehen. Das ist konsistent mit der Beobachtung, dass beim alten ULA die A1-Adress-Leitung, die sowohl für die Spalten- und Zeilen-Adressierung der RAM-Chips verwendet wird, immer auf LOW liegt. Ich habe mir zwar nicht im Detail angesehen, wie genau das ULA das RAM adressiert, um Pixel- und Attribut-Daten auszulesen, aber wenn eine Adress-Leitung immer nur 0 statt abwechselnd 0 und 1 überträgt, dürfte das erkären, warum sich beim alten ULA sowohl Pixel- als auch Attribut-Werte sowohl in X- als auch in Y-Richtung je einmal wiederholen -- weil ja damit manche Daten doppelt und andere gar nicht ausgelesen werden.
Intermezzo Transistore
Weil die Fehlersuche bisher offenbar noch nicht kompliziert genug war, hatte das Schicksal beschlossen, unvermittelt mal nebenbei einen Transistor (TR4) glühen und rauchen zu lassen -- möglicherweise aufgrund eines Kurzschsses durch unachtsam herum liegen gelassene Lötzinn-Reste, ähem... Den Original-Typ ZTX650 gab es natürlich nicht mehr zu kaufen, aber der als möglicher Ersatz genannte ZTX651 war online noch aufzutreiben. Da TR4 -- wie die ausgetauschten Kondensatoren -- an der +12-V-Generierung beteiligt ist, diese Spannung mit dem neuen RAM-Board aber gar nicht mehr benötigt wird, hatte der Austausch erwartungegemäß keine weiteren Folgen. Aber geschadet hat der Austausch sicherlich auch nicht -- zumal später auch noch mal vorüberhend echte DRAMs zum Einsatz kommen sollten.
ROM
Die (mutmaßlich) fehlschlagende Initialisierung des Video-RAMs lies mich nun vermuten, dass möglicherweise das ROM nicht mehr in Ordnung war. Netterweise bot ein weiteres Forums-Mitglied an, mir ein 32-kB-EPROM (ein 27256) mit dem 16-kB-Original-Spectrum-Code sowie einem Diagnose-ROM von Retroleum zu brennen, zwischen denen ich dann gem. Anleitung umschalten könnte, um beim Einschalten des Geräts bei Bedarf diverse Systemtests durchführen zu können.
Nun hatte ich wieder Zeit totzuschlagen, bis das EPROM eintreffen würde. Ich habe die Gelegenheit genutzt, um das alte Rom aus- und einen entsprechenden Sockel einzulöten. Außerdem habe mittels der schon bei der Reparatur des CBM 3032 bewährten Methode mal stichprobenartig ein paar Adressinhalte des Original-ROMs "von Hand" ausgelesen -- mit dem Ergebnis, dass ich an allen ausgewählten Adressen immer den korrekten Werte erhalten habe. Das ROM war also möglicherweise gar nicht kaputt -- und hatte vielleicht sogar das Auslöten überstanden!
Kurzschluss
Während ich weiter auf das Eintreffen des EPROMs wartete (die Post hat wirklich ewig gebraucht -- über eine Woche), habe ich noch mal alle gesockelten ICs aus dem Board genommen und mit Oszilloskop und Durchgangsprüfer noch ein bisschen die Bus-Leitungen untersucht. Dabei ist mir aufgefallen, dass die Adress-Leitungen 5, 6 und 11 sowie 9 und 12 elektrisch verbunden waren. Kein gutes Zeichen. Eine genaue Inspektion des Boards mit meiner bewährten Uhrmacherlupe ergab, dass ich beim Entfernen der CPU offenbar nicht nur die darunter befindlichen Leiterbahnen angekratz, sonern auch Metall-Filamente herausgestemmt hatte, die sich quer gelegt und benachbarte Traces verbunden hatten.
Nach Beseitigung der Kurzschlüsse habe ich dann beim Einschalten tatsächlich auch mal kurz die Startmeldung sehen können, woohoo! Allerdings war der Sockel, in dem das NeBULA-Board saß, von dessen dicken, soliden Pins inzwischen so ausgeleiert, dass man das Board quasi nur etwas scharf anzuschauen brauchte, bevor das Bild auf dem Monitor wie wild zu zucken anfing. Ich habe mir dann mal eine passende Präzisions-Fassung besorgt, in der Hoffnung, dass die runden NebULA-Pins dort gut hinein passen würden. Taten sie auch -- also Sockel eingelötet, NebULA eingesetzt, eingeschaltet, und was soll ich sagen: "(C) 1982 Sinclair Research Ltd"!
Probeweise habe ich auch noch mal das alte ULA eingesetzt -- erwartungsgemäß ohne Erfolg.
Also wieder das NebULA rein, Tastatur angeschlossen, Gehäuse zugeschraubt, eingeschaltet -- schwarzer Bildschirm mit weißem Rand. Was zum... es hat doch eben schon mal funktioniert?!
EPROM
Da das alte ROM zumindest prinzipiell immer noch zu funktionieren schien, hatte ich mir gedacht, ich käme vielleicht um den EPROM-Hack herum. Nun wollte ich aber doch noch mal das Retroleum-Diagnose-ROM ausprobieren, in der Hoffnung, dass es vielleicht irgendwelche hilfreichen Hinweise zu bieten hat. Also habe ich gemäß der Anleitung zwei Dioden und einen Widerstand eingelötet und noch etwas gebastelt, um zwischen Original- und Diagnose-ROM wechseln zu können: An den Lötpunkt für Pin 27 des ROM-Sockels habe ich ein Kabel (blau) mit einem kleinen Stecker angebracht, das wahlweise entweder mit einem Kabel verbunden werden kann, das an Masse anliegt (schwarz), oder einem entsprechenden +5-V-Kabel (rot; beide jeweils mit passender Buchse). Pin 27 des EPROMs entspricht dem Adress-Bit 14, und je nachdem, ob hier eine 0 oder eine 1 steht, werden die unteren 16 kB des EPROMS (= Original-ROM) oder die oberen 16 kB (= Diagnose-ROM) eingeblendet.
Und tatsächlich: Der Rechner startete im Diagnose-Modus, und der gleich zu Beginn automatisch durchgeführte Lower-RAM-Test hat dann auch gleich IC 13 als defekt gemeldet. Das ist der 4116er, in dem Bit 7 aller Lower-RAM-Adressen gespeichert wird -- was auch die Darstellungsfehler in der Bildschirm-Ausgabe erklärt.
Nun schien es mir unwahrscheinlich, dass das noch ziemlich neue RAM-Modul gleich spontan einen Defekt erlitten haben sollte. Da ich beim Aufräumen noch ein paar weitere neuwertige 4116er gefunden hatte, habe ich die mal probeweise statt des Boards eingesetzt -- gleicher Effekt.
Es war also eine weitere Sitzung mit Oszilloskop und Durchgangsprüfer angesagt. Ersteres konnte bestätigen, dass der Daten-Pin von IC13 (D7) tot war, und letzterer zeigte, dass die Verbindung zwischen Pin 31 des ULA und dem Daten-Pin des 4116ers unterbrochen war. Und tatsächlich -- offenbar hatte ich bei meinem letzten ULA-Wechsel mal wieder auf der Platine herumgekratzt und die Leiterbahn, die von Pin 31 unter dem ULA-IC wegführt, glatt durchgeschnitten. (Ich muss wohl noch deutlich an meiner IC-Entnahmetechnik arbeiten...) Zum Glück konnte ich zwei geeignete Lötpunkte identifizieren, die ich zum Überbrücken der Trennstelle verwenden konnte -- womit ich dann inzwischen bereits drei "Umleitungen" auf der Platinenunterseite habe.
Mission erfüllt!
Mit der behobenen Leiterbahn-Unterbrechung lieft der RAM-Test dann auch erfolgreich durch, und mit dem Original-ROM bootete der Rechner dann erfolgreich in die Start-Meldung. Und auch nach Wiedereinsetzen des RAM-Boards und Anschluss der Tastatur verhielt sich der Speccy endlich wieder wie neu. Uff!