Der Amiga CDTV, wie seine Vorgänger, verfügt über ein Kickstart, typischerweise in Version 1.3. Darüber hinaus ist im CDTV ein Extended-ROM integriert, auch bekannt als Boot-ROM oder CDTV OS. Dieses ROM enthält Treiber und Bibliotheken für das CD-ROM-Laufwerk, die CDTV-Speicherkarten und die ISO9660-Dateisystemunterstützung. Es bietet außerdem Anwendungen und Benutzeroberflächen wie den CD-Audio-Player und den Einstellungsbildschirm. Es gibt verschiedene Versionen dieses ROMs, wobei die letzte von Commodore veröffentlichte Version 2.30 ist. C4ptFuture, der das Github-Projekt cdtv-os235patch ins Leben gerufen hat, hat einen Patch für das Extended ROM entwickelt, der Fehler behebt und neue Funktionen hinzufügt. Diese Anleitung beschreibt, wie man das Extended-ROM eines Amiga CDTV auf die Version 2.35 patcht.
Bevor es losgeht, noch ein paar Hinweise (Wichtig!)
- Achte auf die korrekte Ausrichtung der ROMs. Ein falsch ausgerichtetes ROM kann zerstört werden.
- Achte beim Anwenden des Workarounds für das TL866cs darauf, die richtigen Pins zu vertauschen.
- Arbeiten an der Hardware dürfen nur im spannungslosen Zustand durchgeführt werden.
- Vermeide statische Aufladung durch Tragen eines Antistatik-Armbandes.
- Für Schäden, die sich direkt oder indirekt aus dieser Anleitung ergeben, wird keine Haftung übernommen.
Welche Vorteile bietet der Patch?
Er behebt eine Reihe von Fehlern und fügt kleinere Verbesserungen hinzu. Gegenüber der letzten Version 2.30 aus dem Jahre 1992 wurden folgende Änderungen vorgenommen:
- Unterstützung für Systeme mit 68030-CPU
- Unterstützung für Systeme mit 32 Bit Fast-RAM
- Speicherkartenunterstützung für CDTV-Player wiederhergestellt
- CD+G-Funktionalität für CDTV-Player wiederhergestellt
- Pufferüberlauf-Fehler in bookmark.device behoben
- CD-ROMs booten jetzt auch ohne CDTV.tm-Datei
- Möglichkeit, auf den CDTV-Titelbildschirm zuzugreifen, wenn eine Festplatte installiert ist
- Möglichkeit, das Beenden des CDTV-Titelbildschirms zu erzwingen
- OS-Build-ID auf dem CDTV-Titelbildschirm
- Kein Fehler, wenn kein Diskettenlaufwerk am CDTV angeschlossen ist
Die Vorbereitungen
Um das ROM zu patchen, benötigen wir einige kleine Tools und natürlich EPROMs. Voraussetzung wird ein Image des CDTV Extended ROM in der Version 2.30, die von den Emulatoren verwendet wird. Dieses ROM ist zwar im Internet verfügbar, aber der Download ist aufgrund des Urheberrechts illegal. Das ROM-Image ist im Paket Amiga Forever enthalten und kann somit legal erworben werden. Unterstützt wird der Kickstart ab Version 1.3. Um das ROM patchen zu können, benötigen wir folgende Programme und Dateien:
- bspatch.exe - Das Patch-Tool (Download)
- 2.30.rom - Das CDTV Extended ROM (amigaforever.com)
- 235-release-cd1000-patch.bin - Der Patch (Download)
- CartMan.exe - Tool zum Bearbeiten von ROM-Images (Download)
- WinUAE (Optional) - Amiga-Emulator (Download)
Alle Dateien außer WinUAE kopieren wir in ein gemeinsames Verzeichnis.
Die EPROMs
Um das ROM zu brennen, benötigen wir zwei EPROMs. Glücklicherweise werden mehrere EPROMs mit gleicher Pinbelegung unterstützt, darunter die Varianten 27C1000, 27C100, TC571001 und 27C301.
Workaround für TL866cs
Dieser Workaround ist nur erforderlich, wenn der EPROMer die genannten EPROMs nicht unterstützt. Da nur wenige EPROMer diese unterstützen, musste ich einen Workaround finden. Ich verwende den TL866cs, der diese EPROMs zwar nicht unterstützt, aber das MX27C1000, das dem sehr ähnlich ist. Der einzige Unterschied besteht darin, dass die Pins 2 und 24 vertauscht sind. Indem ich diese Pins vertauschte, konnte ich zwei 27C1000 brennen. Da wir das EPROM nur einmal beschreiben werden, reicht diese einfache Lösung vollkommen aus. Stecke das EPROM in einen Sockel. Biege die besagten Pins nach außen, sodass sie keinen Kontakt zum Sockel des EPROMs haben, löte zwei Drähte an die Pins und vertausche diese.
Achte auch auf die Geschwindigkeit der EPROMs. Meine Tests mit dem 27C100-120 EPROM waren erfolglos, während das 27C1000-45 einwandfrei funktionierte.
Der Patch
Bevor begonnen wird, muss sichergestellt werden, dass das richtige Extended ROM 2.30 vorhanden ist. Zur Überprüfung des MD5-Hashwerts des Images wird die PowerShell geöffnet. Dies geschieht durch Drücken der Windows-Taste + R-Taste und Eingabe von “Powershell”. In der PowerShell wird nun in den Ordner gewechselt, in dem sich die Dateien befinden. Anschließend geben wir folgende Befehl ein.
Get-FileHash [ROM-Image] -Algorithm MD5
In meinem Fall sieht das so aus wie im folgenden Screenshot.
Wir sollten den Hashwert d98112f18792ee3714df16a6eb421b89 erhalten. Weicht er ab, ist das ROM für unsere Zwecke ungeeignet. Ist der Hashwert korrekt, können wir mit dem Patchvorgang in der PowerShell fortfahren. Dafür verwenden wir bspatch.exe und geben den entsprechenden Befehl ein.
./bspatch.exe [Altes ROM] patched.bin [Patch]
Das sieht in meinem Fall so aus: ./bspatch.exe 230.rom patched.bin 235-release-cd1000-patch.bin
Das resultierende ROM-Image "patched.bin", kann noch nicht auf das EPROM des CDTV gebrannt werden. Wir können das gepatchte ROM jedoch im Emulator testen. Dazu verwenden wir den Emulator WinUAE, konfigurieren ihn als CDTV und geben das soeben gepatchte Image als Extended ROM an. Funktioniert alles, sollte in der linken unteren Ecke die Version des Boot-ROMs angezeigt werden.
Um das gepatchte ROM auf einem echten CDTV verwenden zu können, muss das Image noch einmal bearbeitet werden. Dafür müssen wir die Bytes swappen und das Image splitten. Das Tool cartman.exe, das sich bereits in unserem Ordner befindet, übernimmt diese Arbeit für uns. Wir starten das Tool mit einem Doppelklick und klicken auf „Byteswap“. Anschließend geben wir bei „Input file“ unser gepatchtes ROM-Image an und starten den Vorgang mit „GO“.
Wir erhalten eine weitere Datei mit dem Suffix BS, was auf einen bereits durchgeführten Byte-Swap hindeutet. Um das geswappte Image weiter zu verarbeiten, teilen wir es in ODD- und EVEN-Segmente auf. Dazu klicken wir auf „Split L/H“, geben „patched_BS.bin“ als Eingabedatei an und starten den Vorgang mit „GO“.
Die Dateien patched_BS_H.bin und patched_BS_L.bin sollten sich in unserem Ordner befinden. Um Verwechslungen zu vermeiden, benennen wir die Dateien wie folgt um.
patched_BS_H.bin umbenennen in patched_HI_EVEN_U34.bin
patched_BS_L.bin umbenennen in patched_LO_ODD_U35.bin
Um die Richtigkeit unserer Arbeit zu überprüfen, berechnen wir nun die Hashwerte beider Dateien. In der PowerShell lesen wir beide Hashwerte aus.
Get-FileHash patched_HI_EVEN_U34.bin -Algorithm MD5
Get-FileHash patched_LO_ODD_U35.bin -Algorithm MD5
Wir sollten diese beiden Werte erhalten:
0BE628F981ECF2EBBBC820BCEFF5ACC4 für patched_HI_EVEN_U34.bin
3788F918321DB2761F2150A900F11BB1 für patched_LO_ODD_U35.bin
Stimmen die Werte nicht überein, sind nicht alle Schritte korrekt ausgeführt worden und müssen wiederholt werden. Stimmen die Werte überein, kann mit dem Brennen der EPROMs fortgefahren werden.
Das gepatchte ROM brennen
Die beiden Teile des gepatchten ROMs werden nun auf zwei EPROMs gebrannt. Ich verwende dafür einen TL866cs. Wir starten das EPROMer-Tool und wählen aus der IC-Datenbank das passende EPROM aus. In meinem Fall ist das das MX27C1000 EPROM. Zuletzt entfernen wir den Haken bei „Check ID“.
Zuerst wird der erste Teil des ROM-Images geladen. Stelle sicher, dass die verwendeten EPROMs leer sind, da sie sonst nicht beschrieben werden können. Sollten sie bereits Daten enthalten, müssen sie vorher mit einem EPROM-Löscher gelöscht werden. Drücke nun den Button „P“ und stecke das EPROM wie im Bild gezeigt in den Sockel.
Um Verwechslungen zu vermeiden, beschrifte das ROM nach dem Brennvorgang mit der entsprechenden Bezeichnung. Nachdem wir die beiden EPROMs gebrannt haben, entfernen wir die originalen ROMs des CDTV (U34 und U35) vorsichtig aus ihren Sockeln und ersetzen sie durch die neu erstellten ROMs. Achte dabei auf die richtige Ausrichtung der Kerbe des EPROMs und stecke sie in den entsprechenden Sockel.
Nach dem Einschalten des Amigas sollte der Startbildschirm die neue Versionsnummer anzeigen.










