Concise Atari ST 68000 Programmer's Reference Guide
System start-up block offset
offset | |||
$00 | Reseth | Branch to reset handler | |
$02 | Vers | OS version number | |
$04 | Reseth | System reset handler | |
$08 | Ostext | Base of OS | |
12 | $0C | Endos | End of OS mem used Pointers |
16 | $10 | Reseth | Default shell |
20 | $14 | Magic | Verification no. or zero |
24 | $18 | Date | System build date |
Boot sector parameter block offset
offset | |||
$00 | BRA. S | Branch to boot code | |
$02 | OEMs space | Reserved for OEMs use | |
$08 | Vol ser # | 24 bit volume serial number | |
11 | $0B | BPS | Number of bytes/sector |
13 | $0D | SPCs | Number of sectors/cluster |
14 | $0E | RES | Number of reserved sectors |
16 | $10 | NFATS | Number of file allocation tables |
17 | $11 | NDIRS | Number of directory entries |
19 | $13 | NSECTS | Number of sectors on media |
21 | $15 | MEDIA | Media descriptor - not used |
22 | $16 | SPF | Number of sectors/FAT |
24 | $18 | SPT | Number of sectors/track |
26 | $1A | NSIDES | Number of sides on media |
28 | $1C | NHID | Number of hidden sectors - not used |
30 | $1E | boot code | Start of code, if any? |
511 | $1FE | last word | Used for checksum |
512 | $200 |
Each device has one driver (Device Control Block - DCB) that contains entry points to routines and constants used by system to initialise the device's state during a warm-start. The routines and constants are defined as follows:
Device driver
offset | |||
$00 | BREAD | Read sector | |
$04 | BWRITE | Write sector | |
$08 | BINIT | Initalise drive (warm start)Write sector | |
12 | $0C | BFORMAT | Format drive |
16 | $10 | BINTR | Vblank cal (timeout-homing) |
20 | $14 | BRDTRK | Read track |
24 | $18 | BWRTRK | Write track |
28 | $1C | BXLATE | Logical to physicla translate |
32 | $20 | BCVSIZ | CSV size allocation |
34 | $22 | BALSIZ | ALV size allocation |
38 | $26 | BDEFINFO | Default info block |
42 | $2A |
Device drivers are stored in RAM in a device state block (DSB), the DSB contains TOS-specific data structures (the DPB and DPH) and device-specific information, such as the number of tracks and head seek rate. The DSB is allocated during a warm-start.
Device state block
offset | |||
$00 | DDPH | Device parameter header | |
26 | $1A | DDPB | Disk parameter block |
42 | $2A | DINFOSIZ | DSB size (excluding DDPH) |
44 | $2C | DPHYSDEV | Device physical number |
46 | $2E | DNTRACKS | Number of tracks on device |
48 | $30 | DNSPT | Number of sectors/track |
50 | $32 | DNSIDES | Number of sides/device |
52 | $34 | DSEEKRT | Floppy seek rate |
54 | $36 |
Floppy parameter block
offset | |||
$00 | FLOCK | Floppy lock return address | |
$04 | CRET | Callers return address | |
$08 | DMAPN | DMA pointer | |
12 | $0C | - | Obsolete |
16 | $10 | DEVNO | Device number |
18 | $12 | SECNO | Sector number |
20 | $14 | TRKNO | Track number |
22 | $16 | SIDNO | Side number |
24 | $18 | SECNT | Sector count |
26 | $1A |
Sector buffer block
offset | |||
$00 | BNEXT | Next buffer or null | |
$04 | BBUF | Size of bufer (512 bytes) | |
$08 | BLRU | LRU replacement value | |
12 | $0C | BFLAGS | Valid/dirty flags |
14 | $0E | BDEV | Device number |
16 | $10 | BTRACK | Track number |
18 | $12 | BSIDE | Side number |
20 | $14 | BSSECT | Start sector number |
22 | $16 | BESECT | End sector number |
24 | $18 | BPSECT | Physical sector number |
26 | $1A | BSIZE | |
$ |
Transient program area block
Cartridge header block