Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision | ||
cpm:fcb [2015/11/24 14:12] – angelegt volkerp | cpm:fcb [2017/03/15 13:51] – volkerp | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== | + | ====== |
+ | |||
+ | Die Information, | ||
+ | |||
+ | * Der Filenamen und Filetyp | ||
+ | * Die Länge des Files | ||
+ | * Die vom File belegten Bereiche auf der Diskette. | ||
+ | |||
+ | Fordert ein Programm bestimmte Daten unter Angabe eines Filenamens an, so kann das BDOS aus den Directory-Informationen den exakten Sektor auf der Diskette berechnen. | ||
+ | |||
+ | Für jede Datei gibt es einen oder mehrere DIR-Einträge. Ein DIR-Eintrag ist 32 Byte lang. | ||
+ | |||
+ | s. [[cpm: | ||
+ | |||
+ | |||
+ | Ein DIR-Eintrag lokalisiert nur Blöcke, keine konkreten Sektoren und Spuren und auch keine logischen Records! | ||
+ | Die Dateigröße wird über RC*128 (s.u.) bestimmt. | ||
+ | |||
+ | Das CP/M 2.2 fasst jeweils 32 Extends zu einer Extendgruppe (engl. Extend Group) zusammen. | ||
+ | Ein File kann aus bis zu 16 Extendgruppen aufgebaut sein, was die maximale Länge eines Files auf 65536 Records (8 Megabyte, s.u.) begrenzt. | ||
+ | Die laufende Recordnummer eines Files wird BDOS-intern immer in den drei Teilen Extendgruppe, | ||
+ | |||
+ | EX enthält die Extendnummer, | ||
+ | |||
+ | RC ist die Anzahl von Records im höchsten Extend (EX) des Eintrages. RC liegt normalerweise im Bereich zwischen 0 und 127. | ||
+ | Ein Wert von 128 in RC zeigt an, das auch der letzte Extend mit 128 Records gefüllt ist. In diesem Fall folgt noch ein weiterer Eintrag (Folgeeintrag). | ||
+ | |||
+ | In der Blocktabelle stehen die vom File belegten Blocknummern. | ||
+ | Die Blocktabelle kann bei 8-Bit Blocknummern bis zu 16 Blöcke und bei 16-Bit Blocknummern bis zu 8 Blöcke umfassen. | ||
+ | |||
+ | |||
+ | Random Record Number = Extendgruppe * 32 * 128 + Extendnummer * 128 + Aktuelle_Recordnummer_im_Extend | ||
+ | |||
+ | |||
+ | max. Dateigröße: | ||
+ | |||
+ | Auch daraus folgt wieder, dass maximal 65535 Records pro Datei adressiert werden können. | ||
+ | |||
+ | ===== Beispiel ===== | ||
+ | |||
+ | Auszug aus einer Diskette für den Z9001. | ||
+ | Es sind 3 Programme enthalten: L80.COM, LIB.COM, M80.COM. Letztere belegt 2 Directory-Einträge. | ||
< | < | ||
+ | EX Höchste Extendnummer des Eintrags (0..31) | ||
+ | S1 unbenutzt, immer 0 | ||
+ | EG Höchste Extendgruppe des Eintrags (0..15) (auch als S2 bezeichnet) | ||
+ | RC Anzahl der Records im Extend EX (0..127) | ||
+ | B1...Bn Nummern der belegten Blöcke (Blocktabelle) | ||
+ | |||
+ | |||
/0 /1 /2 /3 /4 /5 /6 /7 /8 /9/ A /B /C /D /E /F /0 /1 /2 /3 /4 /5 /6 /7 /8 /9/ A /B /C /D /E /F | /0 /1 /2 /3 /4 /5 /6 /7 /8 /9/ A /B /C /D /E /F /0 /1 /2 /3 /4 /5 /6 /7 /8 /9/ A /B /C /D /E /F | ||
Zeile 12: | Zeile 60: | ||
16 Bit-Blocknummern | 16 Bit-Blocknummern | ||
- | L80.COM belegt die Blöcke 52..57, insg. 54h Records = 54h*128 = 2A00h = 10,5 KByte Dateilänge, | + | L80.COM belegt die Blöcke 52..57, insg. RC = 54h Records = 54h*128 = 2A00h = 10,5 KByte Dateilänge, |
- | LIB.COM belegt die Blöcke 58..5A, insg. 25h Records = 25h*128 = 1280h = 4,6 KByte Dateilänge , insg. 3 Blöcke | + | LIB.COM belegt die Blöcke 58..5A, insg. RC = 25h Records = 25h*128 = 1280h = 4,6 KByte Dateilänge , insg. 3 Blöcke |
- | M80.COM belegt die Blöcke 5E..67, insg. 80h+1Dh Records = 91h*128 = 4880h = 18,1 KByte Dateilänge, | + | M80.COM belegt die Blöcke 5E..67, insg. RC = 80h+1Dh Records = 91h*128 = 4880h = 18,1 KByte Dateilänge, |
+ | in letzter Zeile EX=1, d.h. 1. zusätzlicher DIR-Eintrag zu dieser Datei | ||
+ | alle drei Dateien sind schreibgeschützt (Bit 7 der Position T1 ist 1) | ||
(damit ergibt sich eine Blockgröße von 2 KByte) | (damit ergibt sich eine Blockgröße von 2 KByte) | ||
- | |||
- | EX=1, d.h. 1. zusätzlicher DIR-Eintrag zu einer Datei (M80.COM) | ||
</ | </ |