CP/M 1.4 was designed to work with 8" 250k discs. Thus a CP/M 1.4 disc will be laid out in the following way:
77 tracks in total; 26 128-byte sectors per track, software skewed; 2 reserved tracks; 2 1k directory blocks, giving 64 directory entries; 240 1k data blocks, numbered 2-241.The skew table reads:
1,7,13,19,25,5,11,17,23,3,9,15,21,2,8,14,20,26,6,12,18,24,4,10,16,22The reserved tracks will contain an image of CP/M 1.4, used when the system is rebooted. It can therefore be deduced that CP/M 1.4 fits in 6.5k.
The CP/M 1.4 directory only has one type of entry:
SS F1 F2 F3 F4 F5 F6 F7 F8 T1 T2 T3 EX S1 S2 RC .FILENAMETYP.... AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL AL ................ SS = Status. 0 => File exists 0E5h => File deleted 80h => File exists and is hidden. This feature was undocumented and does not exist in later versions of CP/M. Fn - filename Tn - filetype. The characters used for these are 7-bit ASCII. EX = Extent counter. If a file grows above 16k, then it will have multiple directory entries. The first entry has EX=0, the second has EX=1 etc. EX ranges from 0 to 31, thus allowing files up to 512k. CP/M 1.4 only allows 256k discs anyway. S1 - reserved, set to 0. S2 - reserved, set to 0. RC - Number of records (1 record=128 bytes) used in this extent. If it is >= 80h, this extent is full and there may be another one on the disc. File lengths are only saved to the nearest 128 bytes. AL - Allocation. Each AL is the number of a 1k block on the disc. If an AL number is zero, that section of the file has no storage allocated to it (ie it does not exist). For example, a 3k file might have allocation 5,6,8,0,0.... - the first 1k is in block 5, the second in block 6, the third in block 8.