Atari File Management Subsystem
Dan Tobias (Talk | contribs) |
Dan Tobias (Talk | contribs) |
||
Line 23: | Line 23: | ||
* '''Sector 369-719''': User file space | * '''Sector 369-719''': User file space | ||
* '''Sector 720''': Unused | * '''Sector 720''': Unused | ||
+ | |||
+ | == Boot record == | ||
+ | |||
+ | Sector 1 is the boot record. It has this structure: | ||
+ | |||
+ | * ''Byte 0'': 0 (representing boot flag) | ||
+ | * ''Byte 1'': 1 (representing the number of sectors the boot record takes) | ||
+ | * ''Byte 2-3'': Boot address (0700) | ||
+ | * ''Byte 4-5'': Init address | ||
+ | * ''Byte 6'': 4B (JMP command used with address in following 2 bytes) | ||
+ | * ''Byte 7-8'': Boot read continuation address | ||
+ | * ''Byte 9'': Max # of files open concurrently (1-8) | ||
+ | * ''Byte 10'': Specific drive numbers supported (bitmap where low-order bit means drive 1, next bit drive 2, and so on up to 4) | ||
+ | * ''Byte 11'': Buffer allocation direction (set to 0) | ||
+ | * ''Byte 12-13'': Boot image end address + 1 | ||
+ | * ''Byte 14'': Boot flag (must be nonzero if DOS.SYS is on disk) | ||
+ | * ''Byte 15'': Sector count (not used) | ||
+ | * ''Byte 16-17'': DOS.SYS starting sector number | ||
+ | * ''Byte 18-127'': Code for second phase of boot | ||
== Links == | == Links == |
Revision as of 07:10, 18 March 2013
The Atari File Management Subsystem (FMS) is the filesystem on an Atari 810 floppy disk.
The 720 sectors of the disk were numbered from 1 to 720, but (perhaps due to poor communication between the different development teams at Atari) the FMS filesystem was designed to support sector addresses in the range from 0 to 719, which meant that sector 720 was not addressable but a nonexistent sector 0 was. This resulted in the filesystem only using the 719 sectors in the overlap between what is addressable and what actually exists, so sector 720 is unused (a waste of a perfectly good 128 bytes).
(Note to self: Is there a way to hack the system to stick hidden messages in that 720th sector?)
The bytes within a sector are numbered from 0 to 127, because at least the development teams managed to agree on zero-based numbering there.
Sector map
This filesystem is pretty narrowly tailored to the particular type of disk used by the Atari 810 drive, with various hard-coded sector positions.
- Sector 1: Boot record
- Sector 2-n: DOS.SYS file (on system disks)
- Sector n+1-359: User file space
- Sector 360: VTOC (Volume Table of Contents)
- Sector 361-368: Directory
- Sector 369-719: User file space
- Sector 720: Unused
Boot record
Sector 1 is the boot record. It has this structure:
- Byte 0: 0 (representing boot flag)
- Byte 1: 1 (representing the number of sectors the boot record takes)
- Byte 2-3: Boot address (0700)
- Byte 4-5: Init address
- Byte 6: 4B (JMP command used with address in following 2 bytes)
- Byte 7-8: Boot read continuation address
- Byte 9: Max # of files open concurrently (1-8)
- Byte 10: Specific drive numbers supported (bitmap where low-order bit means drive 1, next bit drive 2, and so on up to 4)
- Byte 11: Buffer allocation direction (set to 0)
- Byte 12-13: Boot image end address + 1
- Byte 14: Boot flag (must be nonzero if DOS.SYS is on disk)
- Byte 15: Sector count (not used)
- Byte 16-17: DOS.SYS starting sector number
- Byte 18-127: Code for second phase of boot
Links
- Atari technical manual with lots of tech details