Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
cpm:fcb [2015/11/24 14:12] – angelegt volkerp | cpm:fcb [2017/05/30 08:10] (aktuell) – [DIR-Eintrag] 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. | ||
< | < | ||
- | /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 0123456789ABCDEF0123456789ABCDEF | + | 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 | ||
- | UN N1 N2 N3 N4 N5 N6 N7 N8 T1 T2 T3 EX S1 EG RC B0 . . . . . . . . . . . . . . Bn UNNNNNNNNTTTESERBBBBBBBBBBBBBBBB | + | UN N1 N2 N3 N4 N5 N6 N7 N8 T1 T2 T3 EX S1 EG RC UNNNNNNNNTTTESER |
- | 0520 : 00 4C 38 30 20 20 20 20 20 C3 4F 4D 00 00 00 54 52 00 53 00 54 00 55 00 56 00 57 00 00 00 00 00 .L80 | + | B0 . . . . . . . . . . . . . . Bn BBBBBBBBBBBBBBBB |
- | 0540 : 00 4C 49 42 20 20 20 20 20 C3 4F 4D 00 00 00 25 58 00 59 00 5A 00 00 00 00 00 00 00 00 00 00 00 .LIB | + | |
- | 0560 : 00 4D 38 30 20 20 20 20 20 C3 4F 4D 00 00 00 80 5E 00 5F 00 60 00 61 00 62 00 63 00 64 00 65 00 .M80 | + | 0520 : 00 4C 38 30 20 20 20 20 20 C3 4F 4D 00 00 00 54 .L80 |
- | 0580 : 00 4D 38 30 20 20 20 20 20 C3 4F 4D 01 00 00 1D 66 00 67 00 00 00 00 00 00 00 00 00 00 00 00 00 .M80 | + | 0528 : 52 00 53 00 54 00 55 00 56 00 57 00 00 00 00 00 R.S.T.U.V.W..... |
+ | 0540 : 00 4C 49 42 20 20 20 20 20 C3 4F 4D 00 00 00 25 .LIB | ||
+ | 0548 : 58 00 59 00 5A 00 00 00 00 00 00 00 00 00 00 00 | ||
+ | 0560 : 00 4D 38 30 20 20 20 20 20 C3 4F 4D 00 00 00 80 .M80 | ||
+ | 0568 : 5E 00 5F 00 60 00 61 00 62 00 63 00 64 00 65 00 | ||
+ | 0580 : 00 4D 38 30 20 20 20 20 20 C3 4F 4D 01 00 00 1D .M80 | ||
+ | 0588 : 66 00 67 00 00 00 00 00 00 00 00 00 00 00 00 00 | ||
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, | + | </ |
- | LIB.COM belegt die Blöcke 58..5A, insg. 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, | + | |
- | (damit ergibt sich eine Blockgröße von 2 KByte) | + | **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. RC = 25h Records -> 25h*128 = 1280h = 4,6 KByte Dateilänge , insg. 3 Blöcke | ||
+ | |||
+ | **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 | ||
+ | |||
+ | :!: Man " | ||
- | EX=1, d.h. 1. zusätzlicher DIR-Eintrag zu einer Datei (M80.COM) | ||
- | </ |