TR-DOS filesystem: Difference between revisions
Line 156: | Line 156: | ||
| 0a-0b | | 0a-0b | ||
| 23 00 | | 23 00 | ||
| | | 35 bytes long | ||
| Length of the file | | Length of the file | ||
|- | |- | ||
| 13 | | 13 | ||
| 0C | | 0C | ||
| | | 01 | ||
| 1 sector long | | 1 sector long | ||
| Number of sectors the file uses | | Number of sectors the file uses | ||
Line 169: | Line 169: | ||
| 0B | | 0B | ||
| Start sector 11 | | Start sector 11 | ||
| Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) | |||
|- | |||
| 15 | |||
| 0E | |||
| 01 | |||
| Start logical track 1 | |||
| Logical Track the file starts from. (Note, the tracks are encoded as CH, so for DS drives, track 0=C0H0, 1=C0H1, 2=C1H0, ect) | |||
|} | |||
====Character array==== | |||
This is the directory entry for a character array of 10,5 and is of length 55 bytes. (See other articles on the encoding of arrays in saved files) | |||
The Raw dirent is as follows: | |||
63 64 61 74 61 20 20 20 44 A7 5F 37 00 01 0A 01 cdata D._7.... | |||
{| class=wikitable | |||
|- | |||
! | Offset (dec) | |||
! | Offest (hex) | |||
! | Bytes | |||
! | Content | |||
! | Description | |||
|- | |||
| 0-7 | |||
| 00-07 | |||
| 63 64 61 74 61 20 20 20 | |||
| "cdata " | |||
| Filename | |||
|- | |||
| 8 | |||
| 08 | |||
| 44 | |||
| "D" (Data) | |||
| File type | |||
|- | |||
| 9-10 | |||
| 09-0A | |||
| A7 5F | |||
| A7=10100111, Bit 5,6,7=101 marking a Character array. 5f value unused. | |||
| Contains the marker for the array type, in this case, 101=Character array | |||
|- | |||
| 11-12 | |||
| 0a-0b | |||
| 37 00 | |||
| 55 bytes long | |||
| Length of the file | |||
|- | |||
| 13 | |||
| 0C | |||
| 01 | |||
| 1 sector long | |||
| Number of sectors the file uses | |||
|- | |||
| 14 | |||
| 0D | |||
| 0A | |||
| Start sector 10 | |||
| Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) | | Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) | ||
|- | |- |
Revision as of 15:39, 12 December 2022
The filesystem described here is used with Technology Research Ltd's Beta Disc and Beta 128 Disc disk interfaces. The TR-DOS operating system uses this filesystem.
Floppy disks formatted to 16 sectors per track, with 256-byte sectors. Either single-sided or double-sided disks may be used, and 40 or 80 tracks may be used per side.
The first track of the disk (h0t0s1..h0t0s15) contains the file descriptors (h0t0s1..h0t0s8) and the disk info (h0t0s9). The remaining space on this track is unused.
Space from h0t1s1 on a single sided disk or from h1t0s1 on a double sided disk can be allocated to files. The files are not fragmented.
File descriptor format
A file descriptors are 16 bytes length, so a disk can hold maximum 128 files (8×256/16). The maximum size of a file is 65535 byte.
Offset (dec) | Offest (hex) | Length (dec) | Description |
---|---|---|---|
0 | 0x00 | 8 | Filename, padded with spaces. (If first byte is 0x01 then file is deleted.) |
8 | 0x08 | 1 | File type (extension) |
9 | 0x09 | 2 |
|
11 | 0x0b | 2 | for BASIC (B) files, start of the variables area within the file. All other files: file length. |
13 | 0x0d | 1 | File length in sectors |
14 | 0x0e | 1 | Starting sector |
15 | 0x0f | 1 | Starting (logical) track |
Note1: logical track numbering schema for double sided disks: 0 - h0t0, 1 - h1t0, 2 - h0t1 ... 79 - h1t39, 80 - h0t40 ... 159 - h1t79.
Note2: start line for basic programs is not saved in header file, indeed, it is stored directly at the end of file: after end of basic program (symbol #80), could be placed token #AA followed by little-endian word that reflects start line.
Example file descriptors
BASIC
This is the directory entry for a small basic program with variables defined in it when it was saved. The Raw dirent is as follows:
62 61 73 69 63 20 20 20 42 EF 01 68 01 02 00 01 basic B..h....
Offset (dec) | Offest (hex) | Bytes | Content | Description |
---|---|---|---|---|
0-7 | 00-07 | 62 61 73 69 63 20 20 20 | "basic " | Filename |
8 | 08 | 43 | "B" (Basic) | File type |
9-10 | 09-0A | EF 01 | 495 bytes | File size including variables area minus area at the end containing the line number. |
11-12 | 0a-0b | 68 01 | 360 bytes | Pointer to the start of the variables area in the file. |
13 | 0C | 08 | 8 sectors long | Number of sectors the file uses |
14 | 0D | 02 | Start sector 2 | Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) |
15 | 0E | 01 | Start logical track 1 | Logical Track the file starts from. (Note, the tracks are encoded as CH, so for DS drives, track 0=C0H0, 1=C0H1, 2=C1H0, ect) |
Numeric array
This is the directory entry for a numeric array of 3,2 and is of length 35 bytes. (See other articles on the encoding of arrays in saved files) The Raw dirent is as follows:
6E 64 61 74 61 20 20 20 44 E1 5F 23 00 01 0B 01 ndata D._#....
Offset (dec) | Offest (hex) | Bytes | Content | Description |
---|---|---|---|---|
0-7 | 00-07 | 6E 64 61 74 61 20 20 20 | "ndata " | Filename |
8 | 08 | 44 | "D" (Data) | File type |
9-10 | 09-0A | E1 5F | E1=11100001, Bit 5,6,7=1 marking a Numeric array. 5f value unused. | Contains the marker for the array type, in this case, 111=Numeric array |
11-12 | 0a-0b | 23 00 | 35 bytes long | Length of the file |
13 | 0C | 01 | 1 sector long | Number of sectors the file uses |
14 | 0D | 0B | Start sector 11 | Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) |
15 | 0E | 01 | Start logical track 1 | Logical Track the file starts from. (Note, the tracks are encoded as CH, so for DS drives, track 0=C0H0, 1=C0H1, 2=C1H0, ect) |
Character array
This is the directory entry for a character array of 10,5 and is of length 55 bytes. (See other articles on the encoding of arrays in saved files) The Raw dirent is as follows:
63 64 61 74 61 20 20 20 44 A7 5F 37 00 01 0A 01 cdata D._7....
Offset (dec) | Offest (hex) | Bytes | Content | Description |
---|---|---|---|---|
0-7 | 00-07 | 63 64 61 74 61 20 20 20 | "cdata " | Filename |
8 | 08 | 44 | "D" (Data) | File type |
9-10 | 09-0A | A7 5F | A7=10100111, Bit 5,6,7=101 marking a Character array. 5f value unused. | Contains the marker for the array type, in this case, 101=Character array |
11-12 | 0a-0b | 37 00 | 55 bytes long | Length of the file |
13 | 0C | 01 | 1 sector long | Number of sectors the file uses |
14 | 0D | 0A | Start sector 10 | Sector the file starts from (Note, sectors number from 0 regardless of the actual disk layout) |
15 | 0E | 01 | Start logical track 1 | Logical Track the file starts from. (Note, the tracks are encoded as CH, so for DS drives, track 0=C0H0, 1=C0H1, 2=C1H0, ect) |
File types
- B: Basic
- C: Code
- D: Data (array variable)
- #: Sequential or Random access file
Disc information
Information for disc is stored at h0t0s9:
Offset (dec) | Offest (hex) | Length (dec) | Description |
---|---|---|---|
0 | 0x00 | 1 | :=0 - Signals end of catalogue (?) |
1 | 0x01 | 224 | Unused (filled with zero - 0x00) |
225 | 0xe1 | 2 | First free sector address sec:track |
227 | 0xe3 | 1 | Disk type (0x16..0x19) |
228 | 0xe4 | 1 | Number of files on disk |
229 | 0xe5 | 2 | Number of free sectors on disk |
231 | 0xe7 | 1 | :=0x10 - TR-DOS ID |
232 | 0xe8 | 1 | Unused: 0x00 |
233 | 0xe9 | 9 | Unused: 0x20 (space) |
243 | 0xf3 | 1 | Unused: 0x00 |
244 | 0xf4 | 1 | Number of deleted files on disk |
245 | 0xf5 | 8 | Disk label |
253 | 0xfd | 3 | End of disk info, filled with 0x00 (Unused?) |
Disk types
- 0x16: 80 tracks, double side
- 0x17: 40 tracks, double side
- 0x18: 80 tracks, single side
- 0x19: 40 tracks, single side
See also
- TRD format, a disk image format typically used for images of TR-DOS filesystems
- SCL format, a compact representation of TR-DOS filesystem content