DOS V3.0 Format (3A)
Mit der Einführung des DOS V3.0 wurden einige Dinge geändert, welche in den vorherigen DOS-Versionen Bestand hatten. Eine große Änderung erfolgte bezüglich der Nummerierung von Spuren und Sektoren.
Spuren (jetzt beginnend mit 0)
Wurde zuvor immer mit der Spur 1 angefangen zu zählen, änderte man dies nun und erlaubte damit auch eine Spur 0. Da jedoch aufgrund der Verlinkung von Blöcke eine Spur 0 für den letzten Block steht, kann diese Spur nicht für Daten verwendet werden. Hier liegen nur der neu eingeführte "Header"-Block (immer im ersten Sektor der Spur 0) und eine ebenfalls neue "Bad Sector List" (BSL).
Sektoren und neuerdings auch Köpfe (Seiten)
Bei den Sektoren gibt es bei Disketten (8280) nun keinen Sektor 0 mehr. Dafür wird in dem Byte für die Sektoren nun auch der Festplatten-Kopf (oder die Disketten-Seite) sauber kodiert. Dabei stehen die fünf niederwertigen Bits (0..31) für den Sektor und die drei höherwertigen Bits (0..7) für den Kopf (Seite) zur Verfügung.
Header-Block in Spur 0
Eine weitere Änderung erlaubte verschiedene Diskettenformate besser zu definieren ohne immer die Eigenschaften dieses Formates zu kennen. Schon allein die Anzahl der Sektoren für die BAM (Block Allocation Map) war über die Diskettenformate verschieden. Nun gibt es einen "Header"-Block, welcher immer im ersten Sektor der Spur 0 steht (bei Disketten Sektor 1, bei Festplatten Sektor 0). Dieser hat dann Verweise auf:
- Offset 0: BSL (Bad Sector List),
- Offset 2: Kennung für DOS 3 ($00, $FF)
- Offset 4: Directory,
- Offset 6: Directory Header (mit Volume Label),
- Offset 8: BAM (Block Allocation Map) und
- Offset 10: Disk-ID.
Bad Track & Sector List (BSL)
Die "Bad Sector List" (BSL) schließt sich in aller Regel direkt dem "Header"-Block an. Hier werden mittels Spur- und Sektorangabe die fehlerhaften Sektoren vermerkt. Nicht benutzte Einträge werden mit $FF, $FF entwertet. Das genaue Format ist aktuell noch unbekannt.
Block Allocation Map (BAM)
Die BAM-Blöcke werden jetzt in der Nähe der beschreibenden Spuren abgelegt. Damit sind diese über die gesamte Diskette verteilt und der Weg zum Lesen (und Schreiben) eines BAM-Block ist damit optimiert. Dies war nötig geworden, da bei den Festplatten deutlich mehr Blöcke verwaltet werden müssen und damit nicht mehr die komplette BAM gelesen werden kann und in Buffern (RAM) zur Verfügung stehen kann. In der Regel liegen die BAM-Blöcke immer in dem ersten Sektor der betreffenden Spuren.
Im BAM-Block wurde neben der Vorwärts-Verlinkung am Offset 0 nun auch eine Rückwärts-Verlinkung am Offset 2 eingeführt. Gibt es keinen weiteren BAM-Block in dieser Richtung, wird das Ende mit $FF, $FF angezeigt. Das Format-Kennzeichen von früheren DOS-Versionen entfällt damit.
Außerdem wird eine Spur (von einem Kopf oder einer Seite) als eine Einheit (bis zu fünf Byte) in der BAM geschrieben. Das unterscheidet sich etwas von den Formaten 2C (8250) oder 3D (1581).
Directory
Die Directory-Blöcke werden weiterhin in einer eigens reservierten Spur in der Mitte der Diskette abgelegt. Damit ist der Weg, den der Schreib-/Lesekopf nach dem Lesen des Directory zurücklegen muß um die Datenblöcke zu lesen, ebenfalls minimiert. Jedoch werden diese reservierten Blöcke nicht von den freien Blöcken abgezogen. Damit kann eine Diskette noch freie Blöcke (in der Directory-Spur, 76 bei D9060/D9090 oder 38 bei 8280) haben, trotzdem es zu einem Fehler (72, DISK FULL) wegen einer vollen Diskette (oder Festplatte) kommen kann.
Unterverzeichnisse oder Partitionen waren in DOS 3.0 noch nicht vorhanden. Das ist gerade bei den Festplatten etwas ärgerlich.
Versionen
Die Version 3.0 ist bei den Festplatten D9060 (5 MB) und D9090 (7,5 MB) im Einsatz. Eine leicht abgeänderte Version 3.1 ist bei der Diskettenstation 8280 mit zwei 8"-Laufwerken verwendet worden. Diese beiden Versionen unterscheiden sich deutlich von der Version 3.0 der 1571 oder 3.1 im C128-D. Die 1571 (oder C128-D9 sind hier nicht Bestandteil diese Dokumentation.