Commodore PC20 Tandy Sound - mein erster BIOS-Hack

  • 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.


    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.


    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.


    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.


    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.


    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/32GB/GTX1650 Super/1TB NVMe+8TB HDD und Q6600/8GB/GTX460/1TB SSD+4GB+2GB HDDs

    Retro Maschinen:

    P2-450/256MB/128GB SSD/TNT2-M64+2xVoodoo2/Soundblaster 16+Yamaha DB50XG

    Commodore PC20-II/V20+8087/XTCF lite 256MB/Tandy Sound

    286-16/287-8/4MB/256MB CF/ET3000/Aztech NX-II

    Amiga 500/1MB/Gotek/Vortex AT-once Plus 286 + Amiga 500/1MB

    Pentium 166/FAST Video Machine+DDPR+YUV Board

    Projekt-Rechner: C64, Dual Pentium MMX 233, 486 VLB, 486 PCI, K6, Athlon 64

    Projekte: USB RetroArduInput

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!