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 |