Dies ist eine alte Version des Dokuments!


DIR-Eintrag

Der DIR-Eintrag lokalisiert nur Blöcke, keine konkreten Sektoren und Spuren und auch keine logischen Records! Die Dateigröße wird über RC*128 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) begrenzt. Die laufende Recordnummer eines Files wird BDOS-intern immer in den drei Teilen Extendgruppe, Extend und Record verwaltet.

EX enthält die Extendnummer, EG die Extendgruppe des letzten durch den Eintrag abgedeckten Record. EX und EG werden, bei mehreren Eintragen zu einem File, immer relativ zum Fileanfang gerechnet.

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: EG=15, EX=31, CR=127 → 15*32*128+31*128+127 = 65535 Records = 65535*128 Byte = 8 MByte.

Auch daraus folgt wieder, dass maximal 65535 Records pro Datei adressiert werden können.

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     0123456789ABCDEF0123456789ABCDEF
                                                                                                           
       UN N1 N2 N3 N4 N5 N6 N7 N8 T1 T2 T3 EX S1 EG RC B0  .  .  .  .  .  .  .  .  .  .  .  .  .  . Bn     UNNNNNNNNTTTESERBBBBBBBBBBBBBBBB
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     .OM...TR.S.T.U.V.W.....
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     .OM...%X.Y.Z...........
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     .OM....^._.`.a.b.c.d.e.
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     .OM....f.g.............

16 Bit-Blocknummern

L80.COM belegt die Blöcke 52..57, insg. RC = 54h Records = 54h*128 = 2A00h = 10,5 KByte Dateilänge, insg. 6 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. RC = 80h+1Dh Records = 91h*128 = 4880h  = 18,1 KByte Dateilänge, insg. 10 Blöcke
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)
  • cpm/fcb.1448375298.txt.gz
  • Zuletzt geändert: 2015/11/24 14:28
  • von volkerp