| RAM 0000-07FF |
| 0000 | Command code for buffer 0 |
| 0001 | Command code for buffer 1 |
| 0002 | Command code for buffer 2 |
| 0003 | Command code for buffer 3 |
| 0004 | Command code for buffer 4 |
| 0005 | Command code for buffer 5 (unused) |
| 0006-0007 | Track and sector for buffer 0 |
| 0008-0009 | Track and sector for buffer 1 |
| 000A-000B | Track and sector for buffer 2 |
| 000C-000D | Track and sector for buffer 3 |
| 000E-000F | Track and sector for buffer 4 |
| 0010-0011 | Track and sector for buffer 5 (unused) |
| 0012-0013 | Disk ID, drive 0 |
| 0014-0015 | Disk ID, drive 1 |
| 0016 | Header block: ID |
| 0018 | Header block: Track |
| 0019 | Header block: Sector |
| 001a | Header block: Parity |
| 001b | Not used (Disk Controller work) |
| 001c | Flag for disk change, drive 0 |
| 001d | Flag for disk change, drive 1 |
| 001e | Flag for write protect sense, drive 0 |
| 001f | Flag for write protect sense, drive 1 |
| 0020 | Drive 0 status (disk and step motor) bit 7: Disk drive ready (1 = No, 0 = Yes) bit 6: Read/Write head moving (1 = Yes, 0= No) bit 5: Motor on (1 = Yes, 0 = No) bit 4: Switch off motor (1 = Yes, 0 = No) |
| 0021 | Drive 1 status (disk and step motor) |
| 0022 | Current track for drive 0 |
| 0023 | Flag for 1541 (0), 1540 (not 0) |
| 0024 | Scratch pad of GCR conversion /BIN -> GCR conversions) |
| 002E-002F | Pointer for temporary storage |
| 0030-0031 | Buffer pointer for disk controller |
| 0032 | Pointer: *** active track |
| 0033 | Pointer: *** active sector |
| 0034 | Pointer to last converted byte |
| 0035 | Not used (decode error, GCR) |
| 0036 | Byte counter for GCR/BIN conversion |
| 0037 | Not used (bit counter) |
| 0038 | Constant 7, ID mark for start of data block |
| 0039 | Constant 8, ID mark for start of block header |
| 003A | Parity for data buffer |
| 003B | Not directly used |
| 003C | Not directly used |
| 003D | Motor flag Disk drive number, on 1541 always 00 |
| 003E | Active drive (FF, if not active) |
| 003F | Buffer number for disk controller Previous work place in queue (0 - 5) |
| 0040 | Byte counter for GCR conversion |
| 0041 | Number of next work in queue (0 - 5) |
| 0042 | Destination track (to move R/W head to) |
| 0043 | Number of sectors per track for formatting |
| 0044 | Temp. work area; Scratch pad |
| 0045 | Work code temp. storage |
| 0046 | Not used |
| 0047 | Data block ID char, default 07. By changing this value, a data block can be written with different ID. The value must be less than 10. |
| 0048 | Counter for head movement. Timer: R/W head acceleration |
| 0049 | Stack pointer temp. storage |
| 004A | Step counter for head transport. Values 0 - 127 move the head outside and values over 128 move towards the centre. |
| 004B | Temp. storage |
| 004C | Last read sector |
| 004D | Next sector |
| 004E-004F | Pointer to buffer for GCR->BIN conversion |
| 0050 | Flag for GCR format (0=BIN, 1=GCR) |
| 0051 | Current track number for formatting |
| 0052-0055 | Storage for 4 BIN bytes for GCR coding |
| 0056-005D | Storage for 5 GCR bytes |
| 005E | Number of steps for head motor accelerating/decl. |
| 005F | accelerating/decl. factor |
| 0062-0063 | Pointer to routine for head movement [FA05] |
| 0064 | Minimum number of steps |
| 0065-0066 | UI vector [$EB22] |
| 0067 | Flag: NMI |
| 0068 | Flag for disk initialisation. Automatic disk initialisation if ID MISMATCH occurred (1 = no, 0 = yes) |
| 0069 | Step size for sector division. Sector number interleave for SEQ files, default 0A |
| 006A | Number of read attempts [5] |
| 006B-006C | Pointer: Start of Jump table for U commands [FFEA] |
| 006D-006E | Pointer: Start of bitmap [0400] |
| 006F-0070 | Pointer to address for M & B commands |
| 0071 | Temp. work area |
| 0072 | Temp. work area [FF] |
| 0073 | Temp. work area |
| 0074 | Temp. work area |
| 0075-0076 | Indirect pointer [0100] |
| 0077 | Listener address (Device number + $20) [28] |
| 0078 | Talker address (Device number + $40) [48] |
| 0079 | Flag: Active listener |
| 007A | Flag: Active talker |
| 007B | unofficial |
| 007C | Flag for ATN from serial bus receiving |
| 007D | Flag for ATN on serial bus active |
| 007E | Last handled program |
| 007F | Drive number (on 1541 always 00) |
| 0080 | Current Track number |
| 0081 | Current Sector number |
| 0082 | Channel number (Logical index) |
| 0083 | Secondary address |
| 0084 | Original Secondary address [6F] |
| 0085 | Current Data byte [3F] |
| 0086-008A | Temp Results |
| 008B-008E | Work storage for division. Result, Multiply and divide |
| 008F-0093 | unofficial |
| 0094-0095 | Pointer: Current directory buffer (0204) |
| 0096 | unofficial |
| 0099-009A | Pointer: Next byte in buffer 0 [0300] |
| 009B-009C | Pointer: Next byte in buffer 1 [0400] |
| 009D-009E | Pointer: Next byte in buffer 2 [0500] |
| 009F-00A0 | Pointer: Next byte in buffer 3 [0600] |
| 00A1-00A2 | Pointer: Next byte in buffer 4 [0700] |
| 00A3-00A4 | Pointer: Next byte in command buffer [0200] |
| 00A5-00A6 | Pointer: Next byte in error message buffer [02D6] |
| 00A7-00AD | Table: Non-active channel numbers for each buffer |
| 00AE-00B4 | Table: |
| 00B5-00BA | Table: Record # low , block # low |
| 00BB-00C0 | Table: Record # high, block # high |
| 00C1-00C6 | Write pointer for REL file. Table: next record numbers |
| 00C7-00CC | Table: Record length for REL file |
| 00CD-00D2 | Table: Side sectors |
| 00D3 | unofficial |
| 00D4 | Pointer in record for REL file |
| 00D5 | Side sector number |
| 00D6 | Pointer to data block in side sector |
| 00D7 | Pointer to record in REL file |
| 00D8-00DC | Directory sectors |
| 00DD-00E1 | Index: Directory |
| 00E2-00E6 | Default disk drive [00] |
| 00E7-00EB | File type (wild cards, @, closed) |
| 00EC-00F1 | File type (channel) |
| 00F2-00F7 | Channel status |
| 00F8 | Flag for EOI |
| 00F9 | Current work (Buffer number) |
| 00FA-00FE | Last used table |
| 00FF | Flag: FF = drive 0 not ready (No disk), 00 = ready |
| 0100 | Flag: FF = drive 1 not ready (No disk), 00 = ready |
| 0101 | Format marker, drive 0 DOS version (from track 18 sector 0) |
| 0102 | Format marker, drive 1 |
| 0103 | Not used |
| 0104-01FF | Stack area |
| 0146 | unofficial |
| 01BA | Buffer for GCR code |
| 0200-0029 | Buffer for command string |
| 022A | Command code |
| 022B-022D | Array: Logical index (LINDX) Array of status bytes for each channel (secondary address). Possible values: FF = inactive 81 = opened for writing 41 = read/write 01 = opened for reading |
| 022B | Logical index, channel 0 |
| 022C | Logical index, channel 1 |
| 022D | Logical index, channel 2 |
| 022E-0243 | Last read/written byte for each channel |
| 0244-0249 | Pointer: Last char on channel. Points to the last character read/written in buffer. |
| 024A | Type of active file |
| 024B | String length |
| 024C | Temp. channel number (secondary address) |
| 024D | Current work with drive number |
| 024E | Work area to find the best sector |
| 024F-0250 | Buffer allocated |
| 0251 | Flag: BAM changed, drive 0 |
| 0252 | Flag: BAM changed, drive 1 |
| 0253 | Flag for directory entry found (FF = Not found, 00 = Found) |
| 0254 | Flag for directory output |
| 0255 | Flag: Waiting for command |
| 0256 | unofficial |
| 0257 | Last used buffer |
| 0258 | Record length |
| 0259 | Track of side sector |
| 025A | Sector of side sector |
| 025B-025F | Last work (buffers) |
| 0260-0265 | Directory sector (buffers) |
| 0266-026B | File's index in directory (buffers) |
| 026C | Counter for LED flash |
| 026D | Error LED |
| 026E | Drive for last program |
| 026F | sector for last program |
| 0270 | Write LINDX |
| 0271 | Read LINDX |
| 0272-0073 | Number of blocks (temp) |
| 0274 | Length of input line |
| 0275 | Char to interpret |
| 0276 | Index: End of filename in command buffer |
| 0277 | unofficial |
| 0278 | Number of file names |
| 0279 | unofficial |
| 027A-027F | Pointer table: Filenames |
| 0280-0284 | Track of a file |
| 0285-0289 | Sector of a file |
| 028A | Flag: wild cards |
| 028C | Number of drive(s ?) to look for |
| 028D | Flag: Looking for drive |
| 028E | drive with last write/open error, used as default drive |
| 028F | Flag: Found in directory |
| 0290 | Directory sector |
| 0291 | Sector for first available file |
| 0292 | Index (in directory) for first available file |
| 0293 | For the last directory entry 0 |
| 0294 | Current buffer-index |
| 0295 | Counter: Files |
| 0296 | Flag: Name matching wild cards |
| 0297 | Active operating mode (R or W) |
| 0298 | Flag: Work return |
| 0299 | Pointer: Re-read error |
| 029A | Total tracks |
| 029B-009C | Pointer: BAM last update |
| 029D-00A0 | BAM: image sector (drives 0 and 1) |
| 02A1-00B0 | BAM image |
| 02B1-00D4 | Buffer for directory output |
| 02D5-00F8 | Buffer for error message |
| 02F9 | Flag: Don't write BAM. This flag is reset to zero before and after each command |
| 02FA-02FB | Number of free blocks, low byte for drives 0 ja 1 |
| 02FC-02FD | Number of free blocks, hi byte for drives 0 ja 1 |
| 02FE-02FF | Stepper motor sequence |
| 0300-03FF | Buffer 0 |
| 0400-04FF | Buffer 1 |
| 0500-05FF | Buffer 2 |
| 0600 | Buffer 3 |
| 0621-0622 | Formatting counter |
| 0700-07FF | Buffer 4 |
| | |
| Controller chips |
| 1800-1805 | VIA 1 MOS 6522 : port for serial bus |
| 1C00-1C05 | VIA 2 MOS 6522 : port for motor and read/write head control |
| | |
| ROM |
| C000-C0FF | unused |
| C100-E4FB | File Manager Routines |
| E4FC-F258 | Messages |
| F259-FE84 | Disk Controller Routines |
| FE85-FFE9 | Constands for disk format |
| FFEA-FFFB | USER vectors |
| FFFC-FFFF | Hardware vectors |