Restauration IBM 5150

    • Offizieller Beitrag

    dein SA400L benötigt aber nur 20ms

    Ah, danke für die Info. Dann kann ich ja noch feinjustieren.

  • Jetzt geht die Suche los. Gottseidank ist das BIOS des IBM 5150 sauber im Handbuch dokumentiert. Nach etwas Suche findet man "DISK_BASE" - den Datenblock für die FDC-Parameter. SRT ist hier "0xC" - also 2*4=8ms. Ich setze SRT auf "0x0", also 2x16=32ms. Eines meiner Sonder-EPROMs gebrannt, anstelle des originalen BIOS' eingesetz - und - nix geht. Ach ja, das BIOSprüft sich ja zu Beginn selbst auf additive Prüfsumme modulo 256 - da sollte Null rauskommen. Das letzte Byte im BIOS ist 0x77 - Wenn der SRT-Parameter statt 0xCF jetzt 0x0F, also 0xC0 kleiner ist, dann mache ich einfach mal das letzte Byte 0x77 um 0xC0 größer. Das ergibt 0x137 - Modulo 256 also 0x37. Jetzt das EPROM neu gebrannt...

    Die Idee mit der Anpassung der Steprate direkt im BIOS hat mich auf die Idee gebracht, mal hier nachzuschauen ...


    ;==============================================================

    ; Super PC/Turbo XT BIOS for Intel 8088 or NEC "V20" Motherboards

    ; Additions by Ya`akov Miles (1987) and Jon Petrosky <Plasma> (2008-2017)

    ; http://www.phatcode.net/

    ;==============================================================


    Warum? Da ich das original IBM BIOS ein wenig unkomfortabel finde, benutze ich schon seit längerer Zeit für meine IBM PC und XT nur das "Super PC/Turbo XT BIOS". Bisher habe ich kein Probleme damit gehabt; es funktioniert einwandfrei.


    ... und siehe da, in Zeile 2998 findet sich folgende Prozedur:


    ;==============================================================

    ; Interrupt 1Eh - Diskette Parameter Table

    ;==============================================================

    entry 0EFC7h ; IBM entry for disk param

    proc int_1E far


    db 11001111b ; Disk parameter table

    db 2

    db 25h

    db 2

    db 8

    db 2Ah

    db 0FFh

    db 50h

    db 0F6h

    db 19h

    db 4


    endp int_1E

    ;==============================================================


    Die Parameter sind bis auf 19h identisch mit denen im original BIOS.


    Das "Super PC/Turbo XT BIOS" hat den weiteren Vorteil, das man es ganz einfach neu übersetzten kann:


    "Once assembled and linked, the actual BIOS image is the last 8K of the EXE

    produced, with the exception of the final checksum byte which needs to be

    calculated and added to the end. (The checksum byte makes the sum of all the

    bytes in the image = 0 mod 256.)"


    Getestet habe ich die Änderung der Steprate bislang nicht, da ich für meine Floppies nicht mehr als 8ms benötige. Ich wüsste aber nicht, warum es nicht funktionieren sollte.


    Grundsätzlich funktioniert die Erzeugung eines neuen BIOS jedoch einwandfrei; habe ich schon mehrfach gemacht und anschließend mit meinem Galep 5 neu "gebrannt".

    Einmal editiert, zuletzt von haglebu ()

  • Jedes mal das BIOS zu patchen, ... ist natürlich ein wenig mühsam. Wie gut, daß es das Program DEBUG gibt. Nachfolgend ein Beispiel für das Shugart 400L mit einer Schrittgeschwindigkeit von 20 ms. Der Wert srt=6 entspricht 10 ms, das Ganze mal 2 ergibt 20 ms (F=1 ms ... 0=16 ms).


    Nun einfach DEBUG starten mit:

    Code
    DEBUG <STEPRATE.DEB

    Das war es schon.


    Der Interrupt 1Eh zeigt ja genau auf die Tabelle mit den Diskettenparametern. Da ein Interruptvektoren eine Größe von genau 4 Byte hat, ermittelt

    sich der Offset zu 1Eh x 4 = 78h. Und genau bei 0000:0078 findet man die Adresse an der die Parameter letztendlich im Speicher zu finden sind.


    Nun noch für die wichtigsten STEPRATEs (3, 6, 10, 20 ms) jeweils eine Datei erzeugen und man ist für alle Fälle gewappnet.


    Bei meinem IBM PC 5150 (Super PC/Turbo XT BIOS) mit zwei TANDON TM100-2A sah das Ganze dann wie folgt aus:

    20 ms für das TM100-2A sind natürlich genauso "falsch" wie 6 oder 8 ms für das Shugart SA400L.