Reparatur C64 Teil 2: neues RAM einsetzen -> 361 Basic Bytes Free
In meinem Artikel Homecomputer Commodore C64 und VC20 Hauptplatinen nackt getestet hatte ich ja festgestellt, dass der C64 leider defekt ist.Im ersten Teil dieser Reparatur-Artikelserie stellte ich fest, dass beim Einschalten nur eine "?OUT OF MEMORY ERROR IN 0" Fehlermeldung kam samt ein paar Ausrufezeichen über den Bildschirm verteilt.
Meine Schlussfolgerung daraus war, dass das RAM defekt sein müsste und zwar der Chip für Bit 0 auf Bestückungsplatz U21. Also lötete ich die 4 originalen unteren 4264-RAM-Chips von Micron aus und lötete Sockel dafür ein. Außerdem bestellte ich mir Anfang Mai in Fernost Ersatz, und zwar vom Typ 4164, die kompatibel sein sollten.
Bei 4264 sowie 4164 ICs handelt es sich um 64 Kilobit Dynamic RAM im 16-Lead DIP Type Package Gehäuse und in 64K x 1 Architektur, dass heißt, jeder Chip behandelt nur eines der 8 Bits des 64 Kilobyte Speicher. Darum hat der 4164 auch nur eine Datenleitung, aber 8 Adressleitungen.
Das selektieren bzw. multiplexen übernehmen die 74LS257-Chips auf dem Motherboard. Dies gilt nur für die alten Commodore 64 Motherboards, auf denen 8 RAM-Chips unten links verbaut sind. Die neueren Motherboards haben eine andere Architektur und nur 2 RAM-Chips, die aber mit mehr Speicher.
Warten auf Godot
Was soll ich sagen? Die im Mai bestellten RAM-Chips kamen nie an - sie sind bis heute (Mitte Oktober) nicht bei mir angekommen. Allerdings bekam ich dann irgendwann mein Geld wieder und habe es noch einmal versucht und diesmal kam die Bestellung aus Fernost nach etwa 4 Wochen auch wirklich bei mir an.In der Lieferung waren 10 Chips mit der Aufschrift TMS4164-15NL AP1115 und einem TI-Logo für Texas Instruments, das, wenn es gefälscht wurde, sehr gut gefälscht wurde. Nachdem ich aus Fernost desöfteren nicht funktionierende, aber täuschend echt aussehende Fälschungen bekommen habe, traue ich den Chips nicht mehr zu 100 Prozent.
Die Aufschrift auf der Rückseite der Chips wie "MA/28952H38 SINGAPORE" und "WA/1775H29 SINGAPORE" bringen auch nicht so viel mehr an verwertbaren Informationen, auch kann ich hier keinen Date-Code ablesen.
Ich bestücke die von mir eingelöteten Sockel mit vier RAM-Chips...
... und drücke die Daumen. Eigentlich sollte sich das RAM-Problem jetzt gelöst haben und die "?OUT OF MEMORY ERROR IN 0" Meldung nicht mehr kommen...
Meine anfängliche Freude über den Einschaltbildschirm legte sich dann ein wenig, als ich genauer hinschaute: Sollte da nicht eigentlich "38911 BASIC BYTES FREE" stehen? Warum stand da "361 BASIC BYTES FREE"? Wo war der Rest geblieben?
Als nächste versuchte ich es einmal mit der Cartridge "Simons Basic". Die meldet wiederum "30719 BASIC BYTES FREE":
Was stimmt denn nun? Ich nehme an, die 361 Bytes free im C64-Einschaltbildschirm deuten auf einen weiteren Fehler hin. Der C64 macht nämlich beim Einschalten einen kurzen RAM-Test, indem er etwas in die RAM-Zellen schreibt und danach wieder ausliest. Wenn das Gelesene nicht mit dem Geschriebenen übereinstimmt, bricht er den RAM-Test ab und gibt die Speicherstelle aus, bis zu der er gekommen ist.
Und Simons Basic führt wohl keinen RAM-Test aus sondern gibt einfach eine feste Einschaltmeldung an: Die 38911 Bytes minus das, was es selbst noch einmal an RAM braucht führen wohl zu 30719 Bytes. Diese Zahl müsste immer gleich bleiben, da es keine Speichererweiterungen für den C64 gibt und so haben es sich die Entwickler von Simons Basic wohl einfach gemacht.
Trotzdem ist es jetzt viel besser als vorher. Leider habe ich ja keine Tastatur für weitere Tests, aber die Ausrufezeichen sind jetzt weg. Auch nimmt der C64 Eingaben über den Joystick Port 1 Eingaben (Joystickbewegungen und den Feuerknopf) entgegen, die sich ja zu Tastendrücken auf dem Bildschirm werden, da hier ja keine Trennung durch das Programm im C64-ROM stattfindet.
Und auch die Cartridges laufen besser...
Die Grafikfehler bei Lazarian sind nicht mehr da. Allerdings kann ich bei Lazarian und Wizard of Wor ein regelmäßiges Ruckeln feststellen. Ob das in den Original-Spielen auch der Fall war, daran kann ich mich nicht mehr erinnern, aber ich nehme mal an, das nicht.
Da stimmt noch etwas nicht
Klar ist: Da stimmt noch nicht alles. Irgendein RAM-Chip (oder doch was anderes?) scheint noch defekt zu sein und querzuschießen. Entweder ist noch ein weiterer der alten Micron-Chips defekt oder einer der "neuen" TI-Chips. Ich wechsle die TI-Chips gegeneinander aus, aber an der Einschaltmeldung ändert sich nichts.Da ja jeder Chip für ein Bit zuständig ist, müsste ein kleines Programm Klarheit schaffen, dass einfach mal alle Bits löscht und setzt und dann das Byte wieder liest. Das sollte aufzeigen, welches Bit nicht gesetzt werden kann bzw. immer gesetzt ist. Der entsprechende RAM-Chips müsste dann kaputt sein.
Oder eine Adressleitung ist nicht richtig verbunden. Das sollte ich dann daran erkennen, an welcher Speicherstelle die Vergleichsoperation fehlschlägt.
Ein einfaches Basic-Programm dazu mit Peeks und Pokes hätte ich schon im Kopf, nur leider mangelt es immer noch an einer Tastatur.
Ich muss mein Projekt "VC20/C64-Tastatur-Emulation übers WLAN" doch mal in Angriff nehmen (Update: ist fertig, siehe Link). Damit könnte ich dann Programme eingeben und den Speicher testen.