Disk Filing System
The biggest hurdle with the cassettes tape is that tape is serial, to get a particular byte of data requires reading all the preceding data on the tape, the Floppy Disk is a two dimensional device enabling random access to any location on the disk by positioning of the read/write head.
A Floppy Disk is laid out as a series of Tracks
split into Sectors. The System Disk Operating System (DOS) uses single sided, single density disks with 40 or 80 tracks. Each track is split into 10 sectors therefore a 40 track disk has 400 ($190) sectors whilst an 80 track disk 800 ($320) each holding 256 bytes. The total capacity of a disk is therefore either 40 x 10 x 256 = 100K (1K = 1024 bytes) or 80 x 10 x 256 = 200K Note: this is not the stored data capacity as some of this is required for a catalogue. Double sided disks are treated as two separate volumes in DOS so giving a total disk capacity of up to 400K. A physical hole punched near the center of the disk is used as a reference to determine Sector 0 as the disk rotates. Originally the Acorn System was only provided with 5.25" Floppy Disks (Mini Disks) as these were all that were available at the time however the format can also be used with 3.5" Disks (Micro Disks), note though that it may be necessary to modify the 8271 Disk Interface Controller to work correctly with 3.5" drives, see details here. |
![]() |
Each disk or side of a disk, known as a Volume, can hold a total of 31 files.
File header information and the location of the file on the disk are stored in a Catalogue which is held in Sectors 0 and 1 of Track 0:
Track 0 Sector 0 (256 bytes) | Track 0 Sector 1 (256 bytes) | |||||
Byte | File | Contents | Byte | File | Contents | |
0 | Volume | First 8 characters of Volume Title | 0 | Volume | Last 4 characters of Volume Title | |
1 | 1 | |||||
2 | 2 | |||||
3 | 3 | |||||
4 | 4 | BCD catalogue cycle number * | ||||
5 | 5 | Number of catalogue entries x 8 (i.e. 0 to &F8 in increments of 8 | ||||
6 | 6 | bits 0,1: MS
bits of number of (256 byte) sectors on disk (40t = 01, 80t = 11) bits 4,5: disk boot option (00:no action, 01: load, 10: run, 11: exec) bits 2,3,6,7 are unused and set to 0 |
||||
7 | 7 | low byte of number of (256 byte) sectors on disk, (40t = $90, 80t = $20) | ||||
8 | 1 | 7 character Filename | 8 | 1 | Load address | |
9 | 9 | |||||
A | A | Execute address | ||||
B | B | |||||
C | C | File Length in bytes | ||||
D | D | |||||
E | E | bits 0,1 MS
bits of Start Sector bits 2,3 MS bits of Load Address, set to 0 * bits 4,5 MS bits of File Length bits 6,7 MS bits of Execute Address, set to 0 * |
||||
F | Qualifier | F | Start Sector (LS byte) | |||
10 | 2 | 7 character Filename | 10 | 2 | Load Address | |
11 | 11 | |||||
12 | 12 | Execute Address | ||||
13 | 13 | |||||
14 | 14 | File Length in bytes | ||||
15 | 15 | |||||
16 | 16 | bits 0,1 MS
bits of Start Sector bits 2,3 MS bits of Load Address, set to 0 * bits 4,5 MS bits of File Length bits 6,7 MS bits of Execute Address, set to 0 * |
||||
17 | Qualifier | 17 | Start Sector (LS byte) | |||
18-1F | 3 | Filename & Qualifier | 18-1F | 3 | File Attributes | |
20-27 | 4 | Filename & Qualifier | 20-27 | 4 | File Attributes | |
28-2F | 5 | Filename & Qualifier | 28-2F | 5 | File Attributes | |
30-37 | 6 | Filename & Qualifier | 30-37 | 6 | File Attributes | |
38-3F | 7 | Filename & Qualifier | 38-3F | 7 | File Attributes | |
40-47 | 8 | Filename & Qualifier | 40-47 | 8 | File Attributes | |
48-4F | 9 | Filename & Qualifier | 48-4F | 9 | File Attributes | |
50-57 | A | Filename & Qualifier | 50-57 | A | File Attributes | |
58-5F | B | Filename & Qualifier | 58-5F | B | File Attributes | |
60-67 | C | Filename & Qualifier | 60-67 | C | File Attributes | |
68-6F | D | Filename & Qualifier | 68-6F | D | File Attributes | |
70-77 | E | Filename & Qualifier | 70-77 | E | File Attributes | |
78-7F | F | Filename & Qualifier | 78-7F | F | File Attributes | |
80-87 | 10 | Filename & Qualifier | 80-87 | 10 | File Attributes | |
88-8F | 11 | Filename & Qualifier | 88-8F | 11 | File Attributes | |
90-97 | 12 | Filename & Qualifier | 90-97 | 12 | File Attributes | |
98-9F | 13 | Filename & Qualifier | 98-9F | 13 | File Attributes | |
A0-A7 | 14 | Filename & Qualifier | A0-A7 | 14 | File Attributes | |
A8-AF | 15 | Filename & Qualifier | A8-AF | 15 | File Attributes | |
B0-B7 | 16 | Filename & Qualifier | B0-B7 | 16 | File Attributes | |
B8-BF | 17 | Filename & Qualifier | B8-BF | 17 | File Attributes | |
C0-C7 | 18 | Filename & Qualifier | C0-C7 | 18 | File Attributes | |
C8-CF | 19 | Filename & Qualifier | C8-CF | 19 | File Attributes | |
D0-D7 | 1A | Filename & Qualifier | D0-D7 | 1A | File Attributes | |
D8-DF | 1B | Filename & Qualifier | D8-DF | 1B | File Attributes | |
E0-E7 | 1C | Filename & Qualifier | E0-E7 | 1C | File Attributes | |
E8-EF | 1D | Filename & Qualifier | E8-EF | 1D | File Attributes | |
F0-F7 | 1E | Filename & Qualifier | F0-F7 | 1E | File Attributes | |
F8-FF | 1F | Filename & Qualifier | F8-FF | 1F | File Attributes |
Volume Title is padded with NULs or spaces
Filenames are padded with spaces
Addresses and other 2-byte word length values are stored low byte first
* not used by System DOS
The files in the catalogue are sorted by Start Sector starting with the highest Sector and then in descending order, empty files are given a Start Sector of value 2. In this simple disk filing system files cannot be fragmented though there may be free sectors between files.
There is no concept of directories or folders, files are stored 'flat' however each file has a Qualifier assigned which effectively provides a method for separating file types e.g. a source file and object file.
The default Qualifier is '_' (space), note the BBC Computer uses '$'.
System DOS (and Atom DOS which is the same) provide commands for saving and loading files. The basic set of OS calls provided by COS are supplemented by additional routines which make full use of the random access nature of disk storage:
These OS calls are documented from page 19 of the DOS Manual.