Mini-DOS Formatbeschreibung

Inhaltsverzeichnis

Das Inhaltsverzeichnis des Mini-DOS ist wie folgt aufgebaut:

Der Speicherplatz ist auf den Sektoren 1,2,3,4,5 auf Spur 0, Seite 0 festgelgt. Jeder Sektor besteht aus 16 Einträgen mit jeweils 32 Byte. Der letzte Eintrag im 5. Sektor wird nicht benutzt. Somit ergibt sich eine maximal Anzahl von 79 Einträgen.

Für jedes File wird pro Angefange 4k-Byte ein Eintrag belegt. Files die mehr als einen Eintrag belegen (Dateigröße > 4KB) werden als “Mehrfach-Eintrag” bezeichnet.

Files, die nur einen Eintrag belegen (Dateigröße <= 4KB), werden als “Einzel-Eintrag” bezeichnet.

Bei Mehrfach-Einträgen befinden sich die Einträge zu den einzelnen 4KB-Blöcken in der Reihenfolge, in der die einzelnen Blöcke beim Absichern im Speicher standen.

Ein Eintrag enthält folgende Information:

1. ByteKennbyte
2. – 13. ByteFilename inclusive “.” (rechts mit 80h aufgefüllt)
14. – 15. ByteStartadresse (bei Mehrfacheinträgen Startadresse des 1. Blocks
16. – 17. ByteLänge (bei Mehrfacheinträgen Länge des gesamten Files)
18. – 32. Byteohne Bedeutung
Satzaufbau eines Dateieintrages

Aufbau des Kennbytes

0000 0000Eintrag ist frei
1xxx xxxxTeil 1 … N eines N-teiligen Mehrfacheintrag
0xxx xxxxTeil N eines N-teiligen Mehrfacheintrages
oder
Einzeleintrag
X000 0001
X000 0010
X000 0011
X000 0100
X000 0101
MAT
SPS
BAS
GAL
TXT

Die Position eines Eintrages innerhalb des Verzeichnisses gibt an, wo die im Eintrag angegebene Datei auf der Diskette gespeichert ist. Dazu werden die einzelnen Directory-Einträge über alle Directory-Sektoren von 1 bis 79 durchnummeriert.

Stellt man die Eintragsnummer (1..79) Binär da, so ergibt Bit 0 die Diskettenseite an:

XXXX XXX0 -> Seite 0 der Diskette
XXXX XXX1 -> Seite 1 der Diskette

Die Bits 1 bis 7 geben die Spur an:

Eintrags-
Nummer
BinärSeiteSpur
0 (Verzeichnis)0000 000000
10000 000110
20000 001001
30000 001111
40000 010002
50000 010112
780100 1110039
790100 1111139

Dateiformate

Mini-DOS unterscheidet verschiedene Dateiformate. Diese werden anhand des aktuellen Bereiches aus dem das Mini-DOS aufgerufen wurde identifiziert. Dazu wird im Akku das entsprechende Dateiformat vor dem Absprung in DOS (Code: MVI A,02 ;JMP DOS1) abgelegt.

Dateiformate die von Mini-DOS unterstützt werden (Siehe Kennbyte im Dateieintrag).

TypHexBinärDateiformatBemerkung
???0X000 0000unbekannter Dateityp
MAT1X000 0001MAT-BetriebssystemSpeicherbereich wird manuell eingegeben
SPS2X000 0010SPSSpeicherbereich ist vorgegeben
Anfang E0ED bis SPS-Programmende
BAS3X000 0011BASICSpeicherbereich ist vorgegeben
Anfang 8000 bis BASIC-Programmende
GAL4X000 0100GAL-ProgrammiererSpeicherbereich ist vorgegeben
Anfang D000 – DFFF ???
TXT5X000 0101BFZ-EditorSpeicherbereich ist vorgegeben
Anfang 8002 bis Editorbuffer-Ende
ROM6X000 0110EPROM-ProgrammSpeicherbereich wird manuell eingegeben
Vorgesehen für EPROM-Programmierer
Derzeit noch in der Entwicklung für V 1.8.7
7X000 0111Frei

Ursprünglich werden im Mini-DOS nur die Formate MAT und SPS erkannt. Die Dateiformate BAS, GAL und TXT werden erst seit der MAT32k-Version 1.8.5 unterstützt. Denn erst ab dieser Version ist es möglich, aus den Modulen Basic, GAL und BFZ-Editor heraus die Floppy-Routinen anzusprechen.

Diskettenformat

AnzahlByte (Hex)BemerkungInfo
804EKennungsfeldVor-GAP
1200KennungsfeldVor-GAP
3F6FDC 1793 schreibt C2h auf die Diskette, dabei wird der Taktimpuls zwischen Bit 3 und 4 weggelassenVor-GAP
1FCIndex-MarkeVor-GAP
504EKennungsfeldVor-GAP
Sektor 1
1200KennungsfeldGAP
3F5FDC 1793 schreibt A1h auf die Diskette, dabei wurd der Taktimpuls wischen Bit 2 und 3 weggelassenGAP
1FEMarke für das SektorkennungsfeldMarke
1(00)Spurnummer (hier 00)Sektor-Kennungsfeld
1(00)Seitennummer (hier 00)Sektor-Kennungsfeld
1(01)Sektornummer (zwischen 01 und 08)Sektor-Kennungsfeld
102Sektorlänge Sektor-Kennungsfeld
00 entspricht 128 Bytes / Sektor
01 entspricht 256 Bytes / Sektor
02 entspricht 512 Bytes / Sektor
03 entspricht 1024 Bytes / Sektor
Sektor-Kennungsfeld
1F7FDC schreibt 2 Byte Prüfsumme auf der Diskette (CRC)Sektor-Kennungsfeld
224EKennungsfeldGap
1200KennungsfeldGap
3F5FDC schreibt A1h (Taktimpuls zwischen Bit 2 und 3 fehlt)Gap
1FBMarke für das DatenfeldMarke
512E5DatenfeldDatenfeld
1F7FDC schreibt 2 Byte Prüfsumme auf die Diskette (CRC)Prüfsumme
544EKennungsfeldGap
Sektor 2 – 8Sektoren 2 bis 8 mit geänderten Sektor-Kennungsfeldern
max. 15364EFDC 1793 schreibt 4Eh bis zum Eintreffen des neuen IndeximpulsesNach-Gap