Seite 1 von 1

Commodore PC20 Tandy Sound - mein erster BIOS-Hack

Verfasst: So 21. Feb 2021, 20:35
von Dark_Lord
Hallo zusammen,

in meinem PC20 werkelt ja eine Tandy-Soundkarte nach dem Originaldesign von James Pearce bzw. verbessert (Errata eingepflegt) von Chipkin.ru. Was die allerdings bei Chipkin nicht gefixt haben, ist das Muten des Soundchips, sodass der Computer immer in irgendeiner zufälligen Frequenz vor sich her summt, bis in der Autoexec endlich sndoff.com an der Reihe ist.

Das wollte ich schon immer mal in das BIOS implementiert haben und habe es jetzt mal probiert. Erstaunlicherweise hat es auf Anhieb funktioniert, obwohl es die erste Operation dieser Art für mich überhaupt war.

Also was habe ich gemacht?

Erst mal habe ich mir ein BIOS und zwar die 2.05 (meiner hatte original die 2.03, also gleich mal BIOS-Update) besorgt. Dazu den Hex-Editor HxD und ein TL866 Programmer, sowie ST M27C256B EPROMs (für kleines Geld bei Reichelt).

Dann ging die Bastelei los.

Schritt 1: Wir gucken uns die sndoff.com an. Davon brauchen wir alles, außer dem letzten Byte, was ein "ret" Befehl ist, den wir genau hier nicht brauchen. Das wandert schon mal in die Zwischenablage.
01-sndoff.png
01-sndoff.png (21.74 KiB) 1449 mal betrachtet
Schritt 2: Wir gucken uns die letzten 16 Byte an, an der Stelle 3FF0 (da das Image nur 16KB groß ist, im Memory Mapping des PCs ist es FFF0) findet sich der JMP, der initial beim Einschalten durchgeführt wird.
02-initialjump.png
02-initialjump.png (46.3 KiB) 1449 mal betrachtet
In Schritt 3 suchen wir uns eine Stelle, in der nur Füllstoff ist, im PC20-BIOS sind das große Mengen FF. An C00 (im Memory Mapping CC00) findet sich sowas zum Beispiel. Da kopieren wir dann die sndoff.com abzüglich des letzten ret Befehls rein. Direkt dahinter kommt der jmp (5 Byte von 3FF0 bis 3FF4). Der jmp an 3FF0 wird entsprechend angepasst, sodass der jmp hier nun erst mal auf F000:CC00 ausgeführt wird.
03-sndoff-initialjump.png
03-sndoff-initialjump.png (214.42 KiB) 1449 mal betrachtet
Schritt 4: Die Checksumme. Hierzu benutzen wir das Checksum-8 Tool von HxD und ändern das allerletzte Byte (3FFF) so ab, dass hier am Ende eine 0 rauskommt.
04-checksum.png
04-checksum.png (74.09 KiB) 1449 mal betrachtet
Schritt 5: Wir laden das Image in Xgpro, und zwar mit Füllen der ungenutzten Byte mit 00 und mit einem Offset von 4000 (der 27C256 ist ein 32KB/256Kbit Chip und das BIOS muss ans Ende - beachtet man das, ist der Chip perfekt kompatibel zum PC20). Ab ins EPROM und das dann in den Sockel im PC20.
05-flash.png
05-flash.png (266.72 KiB) 1449 mal betrachtet
Ergebnis: Beim Einschalten macht es mal kurz "mööp" (dauert so ca. 1-2 Sekunden) und schon wird die sndoff Sequenz ausgeführt und in den Selbsttest des BIOS weiter gesprungen. Mission erfolgreich.

Re: Commodore PC20 Tandy Sound - mein erster BIOS-Hack

Verfasst: Mo 22. Feb 2021, 00:11
von S+M
Saubere Arbeit :like:

Wollte auch schon mal im Bios "hacken", aber über diverse Standard-Tools bin ich leider noch nicht hinaus gekommen :-(
Meine größten Aktionen waren bisher mal zusätzliche Optionen freischalten oder ein Option-ROM einbinden.

Re: Commodore PC20 Tandy Sound - mein erster BIOS-Hack

Verfasst: Do 4. Mär 2021, 11:05
von drzeissler
Ich bin gerade wieder am T1000 aktiv. Ich will dort mal eine größere Tandy-Spiel-Sammung zusammenstellen.
Es ist aber gar nicht so einfach and die TandyVersionen zu kommen. Außerdem rippe ich den nicht nötigen kram weg. (CGA/EGA/VGA). LG Doc