Commodore PC20 Tandy Sound - mein erster BIOS-Hack

Auswahl, Einrichtung und Betrieb von Rechnern und Komponenten
Antworten
Benutzeravatar
Dark_Lord
CONFIG.SYS-Autor
Beiträge: 261
Registriert: So 25. Mai 2008, 19:44
Wohnort: Nähe Köln
Kontaktdaten:

Commodore PC20 Tandy Sound - mein erster BIOS-Hack

Beitrag 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) 1412 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) 1412 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) 1412 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) 1412 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) 1412 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.
Arbeitspferde: Xeon E5-2683v3 und Q6600

Retro:
P2-450
Commodore PC20-II/Tandy Sound
286/ET3000/Aztech NX-II
Amiga 500/Gotek/Vortex AT-once Plus 286
Pentium 166/FAST Video Machine

Projekt-PCs: C64, Dual Pentium MMX 233, 486 VLB, 486 PCI, K6, Athlon 64
Projekte: USB RetroArduInput
S+M
DOS-Übermensch
Beiträge: 1059
Registriert: Mo 10. Jun 2013, 17:04
Wohnort: BW

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

Beitrag 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.
drzeissler
DOS-Gott
Beiträge: 3336
Registriert: Mo 8. Feb 2010, 16:59

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

Beitrag 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
CPU: 486 DX2/66 MOBO: SNI-D882 RAM: 3x16MB - FDD: 3,5" 1,44MB HDD: 6,4GB Seagate ISA(1): Audican32Plus PCI(1): 3com TX 905 OS: MsDos622 - Win95a - WinNT 3.51
Antworten