Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: Rookie am 13. February 2016, 12:29

Titel: FAT12 Handmade Frage
Beitrag von: Rookie am 13. February 2016, 12:29
Hallo,
ich habe eine Frage zum Artikel http://forum.lowlevel.eu/index.php?topic=439.0 (http://forum.lowlevel.eu/index.php?topic=439.0). Hier steht, dass man nach dem Bootsektor weitere 22 Sektoren mit Nullen erstellen soll. Ich hab da ein paar Tests gemacht und zu folgenden Fragen gekommen (zum Hinweis : das Ganze bezieht sich nur auf FAT12). Das hier soll keine Korrektur oder so sein, ich möchte nur den Sinn verstehen

1. Ich hab mal testweise die 3 Byte nach dem Bootloader weggelassen (db   0xff,0x0f,0xf8) und das Image wurde dennoch als FAT12 erkannt. Wozu braucht man die 3 Bytes also ?

2. Mit times 12288-($-$$) db 0 erstellt man 22 Null-Sektoren. Mit den 22 Sektoren löscht man aber nur die beiden FATs und einen Teil des Root-Directories. Sollte man nicht nach dem Bootsektor die darauffolgenden 9+9+14 = 32 Sektoren löschen (FAT1+FAT2+RootDir) um ein jungfräuliches Diskettenimage zu erhalten ?

Vielen Dank,
Rookie
Titel: Re: FAT12 Handmade Frage
Beitrag von: Krendor am 02. March 2016, 08:49
Zitat
1. Ich hab mal testweise die 3 Byte nach dem Bootloader weggelassen (db   0xff,0x0f,0xf8) und das Image wurde dennoch als FAT12 erkannt. Wozu braucht man die 3 Bytes also ?
Diese Werte sehen nach FAT12 Einträgen für die ersten beiden Cluster aus. Das setzt hier aber voraus, dass es nur eine FAT gibt. Disketten-Images nutzen üblicherweise 2 und dann müssten diese Einträge auch in der 2. FAT stehen.

Zitat
... erstellt man 22 Null-Sektoren. Mit den 22 Sektoren löscht man aber nur die beiden FATs und einen Teil des Root-Directories. Sollte man nicht nach dem Bootsektor die darauffolgenden 9+9+14 = 32 Sektoren löschen (FAT1+FAT2+RootDir) um ein jungfräuliches Diskettenimage zu erhalten ?
Wer sagt, dass das Root-Verzeichnis unbedingt 14 Sektoren haben muss? Nur weil es üblich ist, muss es hier nicht der Fall sein. Den richtigen Wert kannst du aus den Werten des Boot-Parameter-Blocks ermitteln.


Ich habe aber irgendwie das Gefühl, dass mit den Werten was nicht stimmt.