Moppel Dokumentation - HMS-BIOS V12.6 Analyse - August 2023 ...
Bedingt durch den Neuzugang kam auch ein neuer Softwarestand aus dem Jahr 86/87 ins Haus.

Von großem Interesse ist das "neue" BIOS mit der Möglichkeit doppelseitige Disketten zu benutzen, sprich eine Verdoppelung der Kapazität - wollte ich ja schon lange eingebaut haben nur wie.

Der Aufbau ist identisch mit dem alten Format, also 16 Sektoren pro Spur mit jeweils 256 Byte, für die Erweiterung der zweiten Seite wird lediglich die Spurnummer jenseits vom Maximum (40,80 Track) wieder rückwärts gezählt dann mit gesetztem Head-1 Signal.

Dadurch kann das alte Blocking/Deblocking weiter verwendet werden, also die Abbildung der RECORD-Nr. vom BDOS auf den 1k großen Buffer. Der Floppy-Controller könnte natürlich deutlich mehr, von 32Sek a128Byte bis hin zu 5Sek a1024Byte in SD oder wie hier in DD.

Für die Integrierung der IDE-Karte brauchte es einen sinnvollen Einstieg für die entsprechenden Routinen, da der aus dem alten BIOS nicht funktionieren wollte war erstmal eine gründliche Analyse der Floppyroutinen angesagt.

Analyse:
Das BIOS muss die Grundlegenden Funktionen Selekt-Drive, Set-Track, Set-Sektor und Set-DMA bereitstellen. Das BDOS benutzt dann die Routinen READ/WRITE, hier wird jeweils ein RECORD (128Byte) zwischen BDOS und BIOS ausgetauscht.

Zum besseren Verständnis habe ich das im Ablaufdiagramm dargestellt. Die eigentlichen Diskettenroutinen sind noch nicht enthalten, können aber dem Quellcode entnommen werden

Als Beispiel die READ-Routine:

(C)2023 Werner Römer
Das vollständige Ablaufdiagramm...

HMS-BIOS V12.62 mit IDE Schnittstelle...
[zurück zur DOKU][Startseite][Impressum]
Die Routinen BUFCAL und COPY  erledigen den direkten (DMA) Datenaustausch mit dem BDOS, der Physikalische Datenaustausch mit dem Massenspeicher erfolgt dann mittels PUT-/GETTRK. Dort muss auch die Entscheidung für den Disketten- oder IDE-Zugriff getroffen werden.

Auszug vom BIOS:
Das BIOS weist noch eine Besonderheit auf, die Laufwerksparameter und der DPB sind nicht fest verankert sondern werden beim Kaltstart durch den Bootloader erst geladen.
;
; Drive Parameter
;
; D0 = Typ (00=40Tr/1k; 01=80Tr/2k, 02=2x80Tr/2k, 03=2x80Tr/4k
; D1 = Step (00=6ms, 08=12ms, 10=20ms,18=30ms)
; D2 = Side (00=ein, 01=zwei Schreib/Lese-Koepfe)
; D3 = Tracks (Spuren pro Seite, max 4Fh=79d)
;
disk0: ds   4h ; [A]
disk1: ds   4h ; [B]
disk2: ds   4h ; [C]
disk3: ds   4h ; [D]
;
Anhand des LW-Typ wird der zugehörige DPB in den vorbereiteten Bereich (dpb0-3) geladen, so braucht das BIOS nicht immer neu angepasst und übersetzt werden. Es reicht die Systemspur 00 anhand der Tabelle entsprechend anzupassen und hat beim nächsten Kaltstart das System mit den neuen Parametern zur Verfügung.

Übersicht der Systenspuren: