s$$$$$$s
All_About_Your_1541-Online Help V0.23 s$$$$$$p $$$S S$$
(c) by Ninja/The Dreams in 1995-2006 $$$S S$$ $$$S S$J
HQ - [http://www.the-dreams.de] $$$S S$$ $$$$$$l
$$$S S$$ $$$$ $$l
1541 Zeropage $$$S S$$ $$$P $$l
1541 ROM-Listing Y$$$$$$$P
Job Codes d$$$b
Error Messages s$$$$$$b d$$$ $$b
$$$$ $$$$ $$$
VIA6522 Registers $$$$sss $$$&%%&$$
$$$$""' $$$$ $$
$$$$ Y$$$ SP
Y$$$$$$$P
o$$$$$Ss
s$$ $s S$$S
$$$$ $$$ S$$$
$$$ $$ $$ S$$s
$$$ "" $$ $$
$$$ $$ sS$$$$$$P
Y$$ $P
+------------------------------------------------------------------------
|
| VERSATILE INTERFACE ADAPTER (VIA) 6522
|
+------------------------------------------------------------------------
|
| Register description:
|
| VIA 1 (Serial Bus):
|
| $1800/6144/VIA1+0 Data Port B (ATN, CLOCK, DATA, Device #)
| $1801/6145/VIA1+1 Data Port A (free for parallel cables)
| $1802/6146/VIA1+2 Data Direction Register B
| $1803/6147/VIA1+3 Data Direction Register A
| $1804/6148/VIA1+4 Timer 1 Low-Byte (Timeout Errors)
| $1805/6149/VIA1+5 Timer 1 High-Byte (Timeout Errors)
| $1806/6150/VIA1+6 Timer 1-Latch Low-Byte (Timeout Errors)
| $1807/6151/VIA1+7 Timer 1-Latch High-Byte (Timeout Errors)
| $1808/6152/VIA1+8 Timer 2 Low-Byte (unused)
| $1809/6153/VIA1+9 Timer 2 High-Byte (unused)
| $180A/6154/VIA1+10 Shift Register
| $180B/6155/VIA1+11 Auxiliary Control Register
| $180C/6156/VIA1+12 Peripheral Control Register
| $180D/6157/VIA1+13 Interrupt Flag Register
| $180E/6158/VIA1+14 Interrupt Enable Register
| $180F/6159/VIA1+15 Data Port A* (no handshake)
|
| VIA 2 (Motor and Head Control):
|
| $1C00/7168/VIA2+0 Data Port B (SYNC, Motors, Bit Rates, LED)
| $1C01/7169/VIA2+1 Data Port A (Data to/from head)
| $1C02/7170/VIA2+2 Data Direction Register B
| $1C03/7171/VIA2+3 Data Direction Register A
| $1C04/7172/VIA2+4 Timer 1 Low-Byte (IRQ Timer)
| $1C05/7173/VIA2+5 Timer 1 High-Byte (IRQ Timer)
| $1C06/7174/VIA2+6 Timer 1-Latch Low-Byte (IRQ Timer)
| $1C07/7175/VIA2+7 Timer 1-Latch High-Byte (IRQ Timer)
| $1C08/7176/VIA2+8 Timer 2 Low-Byte (unused)
| $1C09/7177/VIA2+9 Timer 2 High-Byte (unused)
| $1C0A/7178/VIA2+10 Shift Register
| $1C0B/7179/VIA2+11 Auxiliary Control Register
| $1C0C/7180/VIA2+12 Peripheral Control Register
| $1C0D/7181/VIA2+13 Interrupt Flag Register
| $1C0E/7182/VIA2+14 Interrupt Enable Register
| $1C0F/7183/VIA2+15 Data Port A* (no handshake)
|
+------------------------------------------------------------------------
$1800/6144/VIA1+0: Data Port B (ATN, CLOCK, DATA, Device #)
+----------+---------------------------------------------------+
| Bit 7 | ATN IN |
| Bits 6-5 | Device address preset switches: |
| | 00 = #8, 01 = #9, 10 = #10, 11 = #11 |
| Bit 4 | ATN acknowledge OUT |
| Bit 3 | CLOCK OUT |
| Bit 2 | CLOCK IN |
| Bit 1 | DATA OUT |
| Bit 0 | DATA IN |
+----------+---------------------------------------------------+
ROM-Reference:
BIT $1800 : $E8D2 $E902
CMP $1800 : $E9C3
LDA $1800 : $E780 $E78E $E873 $E87B $E8DB $E99C $E9A5 $E9AE $E9B7 $E9C0
$EA0B $EA5D $EA63 $EB3A $EBE8 $FF20
STA $1800 : $E878 $E8E0 $E8FF $E9A1 $E9AA $E9B3 $E9BC $EA50 $EBDC $EBED
$FF15
$1801/6145/VIA1+1: Data Port A (free for parallel cables)
This port is mostly used for extensions using parallel data transfer.
These lines are then connected to the Userport of a C64.
See also $180F.
ROM-Reference:
LDA $1801 : $E853
$1802/6146/VIA1+2: Data Direction Register B
+----------+---------------------------------------------------+
| Bit x | 1 = Pin PBx set to Output, 0 = Input |
+----------+---------------------------------------------------+
ROM-Reference:
STA $1802 : $EBE1 $FF1A
$1803/6147/VIA1+3: Data Direction Register A
+----------+---------------------------------------------------+
| Bit x | 1 = Pin PAx set to Output, 0 = Input |
+----------+---------------------------------------------------+
ROM-Reference:
STX $1803 : $FF10
$1804/6148/VIA1+4: Timer 1 Low-Byte (Timeout Errors)
ROM-Reference:
LDA $1804 : $FB43 $FB64
$1805/6149/VIA1+5: Timer 1 High-Byte (Timeout Errors)
ROM-Reference:
BIT $1805 : $F55D
LDX $1805 : $EC81
STA $1805 : $F558 $FB32 $FF29
STX $1805 : $EC88
$1806/6150/VIA1+6: Timer 1-Latch Low-Byte (Timeout Errors)
ROM-Reference:
STA $1806 : $FB2A
$1807/6151/VIA1+7: Timer 1-Latch High-Byte (Timeout Errors)
ROM-Reference:
STA $1807 : $FB2F
$1808/6152/VIA1+8: Timer 2 Low-Byte (unused)
$1809/6153/VIA1+9: Timer 2 High-Byte (unused)
$180A/6154/VIA1+10: Shift Register
$180B/6155/VIA1+11: Auxiliary Control Register
+----------+---------------------------------------------------------+
| Bits 7-6 | Timer 1 Control: |
| | 00 = Timed Interrupt when Timer 1 is loaded, no PB7 |
| | 01 = Continuous Interrupts, no PB7 |
| | 10 = Timed Interrupt when Timer 1 is loaded, |
| | one-shot on PB7 |
| | 11 = Continuous Interrupts, square-wave on PB7 |
| Bit 5 | Timer 2 Control: 0 = Timed Interrupt |
| | 1 = Count Pulses on PB6 |
| Bits 4-2 | Shift Register Control: |
| | 000 = Disabled |
| | 001 = Shift in under control of Timer 2 |
| | 010 = Shift in under control of Phi2 |
| | 011 = Shift in under control of ext. Clock |
| | 100 = Shift out free-running at Timer 2 rate |
| | 101 = Shift out under control of Timer 2 |
| | 110 = Shift out under control of Phi2 |
| | 111 = Shift out under control of ext. Clock |
| Bit 1 | 1 = enable latching PB |
| Bit 0 | 1 = enable latching PA |
+----------+---------------------------------------------------------+
ROM-Reference:
AND $180B : $FBDA
ORA $180B : $FB22
STA $180B : $FB25 $FBDD
$180C/6156/VIA1+12: Peripheral Control Register
+----------+-----------------------------------------------------+
| Bits 7-5 | CB2 Control: |
| | 000 = Input negative active edge |
| | 001 = Independent interrupt input negative edge |
| | 010 = Input positive active edge |
| | 011 = Independent interrupt input positive edge |
| | 100 = Handshake output |
| | 101 = Pulse output |
| | 110 = Low output |
| | 111 = High output |
| Bit 4 | CB1 Interrupt Control: 0 = Negative active edge |
| | 1 = Positive active edge |
| Bit 3-1 | CA2 Control: see Bits 7-5 |
| Bit 0 | CA1 Interrupt Control: see Bit 4 |
+----------+-----------------------------------------------------+
CA1 (Input): ATN IN (make Interrupt if ATN occurs)
ROM-Reference:
STA $180C : $EB2F
$180D/6157/VIA1+13: Interrupt Flag Register
+-------+------------------------------------------------------+
| Bit 7 | 1 = Interrupt occured |
| Bit 6 | Timer 1 |
| Bit 5 | Timer 2 |
| Bit 4 | CB1 |
| Bit 3 | CB2 |
| Bit 2 | Shift Register ($180A) |
| Bit 1 | CA1 |
| Bit 0 | CA2 |
+-------+------------------------------------------------------+
ROM-Reference:
LDA $180D : $E9E2 $FB4B $FB6C $FE6C
STA $180D : $EB34
$180E/6158/VIA1+14: Interrupt Enable Register
+-------+------------------------------------------------------+
| Bit 7 | On Read: Always 1 |
| | On Write: 1 = Set Int.-Flags, 0 = Clear Int-.Flags |
| Bit 6 | Timer 1 |
| Bit 5 | Timer 2 |
| Bit 4 | CB1 |
| Bit 3 | CB2 |
| Bit 2 | Shift Register |
| Bit 1 | CA1 |
| Bit 0 | CA2 |
+-------+------------------------------------------------------+
ROM-Reference:
STA $180E : $EB37
$180F/6159/VIA1+15: Data Port A* (no handshake)
Same as $1801, except no handshake will be initiated.
$1C00/7168/VIA2+0: Data Port B (SYNC, Motors, Bit Rates, LED)
+----------+---------------------------------------------------+
| Bit 7 | 0 = SYNC found |
| Bits 6-5 | Bit rates (*): |
| | 00 = 250000 Bit/s 01 = 266667 Bit/s |
| | 10 = 285714 Bit/s 11 = 307692 Bit/s |
| Bit 4 | Write Protect Sense: 1 = On |
| Bit 3 | Drive LED: 1 = On |
| Bit 2 | Drive Motor: 1 = On |
| Bit 1-0 | Step motor for head movement: |
| | Sequence 00/01/10/11/00... moves inwards |
| | Sequence 00/11/10/01/00... moves outwards |
+----------+---------------------------------------------------+
(*) Usually used: %11 for Tracks 1-17
%10 for Tracks 18-24
%01 for Tracks 25-30
%00 for Tracks 31-35
ROM-Reference:
AND $1C00 : $C103
BIT $1C00 : $F562 $FB39 $FB3E $FB46 $FB67
EOR $1C00 : $D6AE
LDA $1C00 : $EA86 $EB25 $EC3F $EC77 $F355 $F380 $F57A $F982 $F9A2 $F9E8
$FA6E $FADB $FB00 $FBBB
LDX $1C00 : $FA34 $FA65
ORA $1C00 : $C11B $C13C $D6C8 $EA77
STA $1C00 : $C113 $C11E $C13F $D6B1 $D6CB $EA8B $EB2A $EC98 $F260 $F35C
$F385 $F987 $F9ED $FA75 $FAE0 $FEEA
$1C01/7169/VIA2+1: Data Port A (Data to/from head)
ROM-Reference:
EOR $1C01 : $F6AB $F6B8
LDA $1C01 : $F3C1 $F3CB $F4D7 $F4E4 $F540 $F567 $FD43 $FD6A $FD7A
STA $1C01 : $F5A7 $F5B9 $F5C4 $FB14 $FCB3 $FCC8 $FCD6 $FCE3 $FCF1 $FCFE
$FD0C $FDB2 $FE1F
$1C02/7170/VIA2+2: Data Direction Register B
+----------+---------------------------------------------------+
| Bit x | 1 = Pin PBx set to Output, 0 = Input |
+----------+---------------------------------------------------+
ROM-Reference:
STA $1C02 : $F25B $FEED
$1C03/7171/VIA2+3: Data Direction Register A
+----------+---------------------------------------------------+
| Bit x | 1 = Pin PAx set to Output, 0 = Input |
+----------+---------------------------------------------------+
ROM-Reference:
STA $1C03 : $F596 $F5D6 $FDAF $FE0A $FE1A
$1C04/7172/VIA2+4: Timer 1 Low-Byte (IRQ Timer)
ROM-Reference:
LDA $1C04 : $F2B3
$1C05/7173/VIA2+5: Timer 1 High-Byte (IRQ Timer)
ROM-Reference:
STA $1C05 : $F27E $F99F $FA81 $FAAB
$1C06/7174/VIA2+6: Timer 1-Latch Low-Byte (IRQ Timer)
ROM-Reference:
STA $1C06 : $F276
$1C07/7175/VIA2+7: Timer 1-Latch High-Byte (IRQ Timer)
ROM-Reference:
LDA $1C07 : $F99C $FA7C $FAA5
STA $1C07 : $F27B
$1C08/7176/VIA2+8: Timer 2 Low-Byte (unused)
$1C09/7177/VIA2+9: Timer 2 High-Byte (unused)
$1C0A/7178/VIA2+10: Shift Register
$1C0B/7179/VIA2+11: Auxiliary Control Register
+----------+---------------------------------------------------------+
| Bits 7-6 | Timer 1 Control: |
| | 00 = Timed Interrupt when Timer 1 is loaded, no PB7 |
| | 01 = Continuous Interrupts, no PB7 |
| | 10 = Timed Interrupt when Timer 1 is loaded, |
| | one-shot on PB7 |
| | 11 = Continuous Interrupts, square-wave on PB7 |
| Bit 5 | Timer 2 Control: 0 = Timed Interrupt |
| | 1 = Count Pulses on PB6 |
| Bits 4-2 | Shift Register Control: |
| | 000 = Disabled |
| | 001 = Shift in under control of Timer 2 |
| | 010 = Shift in under control of Phi2 |
| | 011 = Shift in under control of ext. Clock |
| | 100 = Shift out free-running at Timer 2 rate |
| | 101 = Shift out under control of Timer 2 |
| | 110 = Shift out under control of Phi2 |
| | 111 = Shift out under control of ext. Clock |
| Bit 1 | 1 = enable latching PB |
| Bit 0 | 1 = enable latching PA |
+----------+---------------------------------------------------------+
ROM-Reference:
STA $1C0B : $F271
$1C0C/7180/VIA2+12: Peripheral Control Register
+----------+-----------------------------------------------------+
| Bits 7-5 | CB2 Control: |
| | 000 = Input negative active edge |
| | 001 = Independent interrupt input negative edge |
| | 010 = Input positive active edge |
| | 011 = Independent interrupt input positive edge |
| | 100 = Handshake output |
| | 101 = Pulse output |
| | 110 = Low output |
| | 111 = High output |
| Bit 4 | CB1 Interrupt Control: 0 = Negative active edge |
| | 1 = Positive active edge |
| Bit 3-1 | CA2 Control: see Bits 7-5 |
| Bit 0 | CA1 Interrupt Control: see Bit 4 |
+----------+-----------------------------------------------------+
CA1 (Input): BYTE-READY
CA2 (Output): SOE (High = activate BYTE-READY)
CB2 (Output): Head Mode (Low = Write, High = Read)
ROM-Reference:
LDA $1C0C : $F263 $F2B6 $F599 $F5CC $FABE $FDA3 $FE00 $FE0E
STA $1C0C : $F26C $F2BB $F5A0 $F5D1 $FAC3 $FDAA $FE05 $FE15
$1C0D/7181/VIA2+13: Interrupt Flag Register
+-------+------------------------------------------------------+
| Bit 7 | 1 = Interrupt occured |
| Bit 6 | Timer 1 |
| Bit 5 | Timer 2 |
| Bit 4 | CB1 |
| Bit 3 | CB2 |
| Bit 2 | Shift Register |
| Bit 1 | CA1 |
| Bit 0 | CA2 |
+-------+------------------------------------------------------+
ROM-Reference:
LDA $1C0D : $FE76
STA $1C0D : $F288
$1C0E/7182/VIA2+14: Interrupt Enable Register
+-------+------------------------------------------------------+
| Bit 7 | On Read: Always 1 |
| | On Write: 1 = Set Int.-Flags, 0 = Clear Int-.Flags |
| Bit 6 | Timer 1 |
| Bit 5 | Timer 2 |
| Bit 4 | CB1 |
| Bit 3 | CB2 |
| Bit 2 | Shift Register ($1C0A) |
| Bit 1 | CA1 |
| Bit 0 | CA2 |
+-------+------------------------------------------------------+
ROM-Reference:
STA $1C0E : $F283 $F28B
$1C0F/7183/VIA2+15: Data Port A* (no handshake)
Same as $1C01, except no handshake will be initiated.
+------------------------------------------------------------------------
|
| DISK-DRIVE 1541: ZEROPAGE AND EXTENDED ZEROPAGE
|
+------------------------------------------------------------------------
|
| Zeropage:
|
| $00/0 Command code for buffer 0
| $01/1 Command code for buffer 1
| $02/2 Command code for buffer 2
| $03/3 Command code for buffer 3
| $04/4 Command code for buffer 4
| $05/5 Command code for buffer 5 (unused)
| $06-$07/6-7 Track and sector for buffer 0
| $08-$09/8-9 Track and sector for buffer 1
| $0A-$0B/10-11 Track and sector for buffer 2
| $0C-$0D/12-13 Track and sector for buffer 3
| $0E-$0F/14-15 Track and sector for buffer 4
| $10-$11/16-17 Track and sector for buffer 5 (unused)
| $12-$13/18-19 Disk ID, drive 0
| $14-$15/20-21 Unused (was: Disk ID, drive 1)
| $16-$17/22-23 Header block: ID
| $18/24 Header block: Track
| $19/25 Header block: Sector
| $1A/26 Header block: Parity
| $1B/27 Unused
| $1C/28 Flag for disk change, drive 0
| $1D/29 Unused (was: Flag for disk change, drive 1)
| $1E/30 Flag for write protect sense, drive 0
| $1F/31 Unused (was: Flag for write protect sense, drive 1)
| $20/32 Drive 0 status (disk and step motor)
| $21/33 Unused (was: Drive 1 status (disk and step motor))
| $22/34 Current track for drive 0
| $23/35 Flag for 1541 (0), 1540 (not 0)
| $24-$2B/36-43 Scratch pad of GCR conversion
| $2C-$2D/44-45 Unused
| $2E-$2F/46-47 Pointer for temporary storage
| $30-$31/48-49 Buffer pointer for disk controller
| $32/50 Pointer: active track
| $33/51 Pointer: active sector
| $34/52 Pointer to last converted byte
| $35/53 Not used (decode error, GCR)?
| $36/54 Byte counter for GCR/BIN conversion
| $37/55 Unused
| $38/56 Constant 7, ID mark for start of data block
| $39/57 Constant 8, ID mark for start of block header
| $3A/58 Parity for data buffer
| $3B-$3C/59-60 Unused
| $3D/61 Motor flag
| $3E/62 Active drive (FF, if not active)
| $3F/63 Buffer number for disk controller
| $40/64 Byte counter for GCR conversion
| $41/65 Number of next work in queue (0 - 5)
| $42/66 Destination track (to move R/W head to)
| $43/67 Number of sectors per track for formatting
| $44/68 Temp. work area; Scratch pad
| $45/69 Work code temp. storage
| $46/70 Unused
| $47/71 Data block ID char, default 07.
| $48/72 Counter for head movement
| $49/73 Stack pointer temp. storage [39]
| $4A/74 Step counter for head transport
| $4B/75 Temp. storage
| $4C/76 Last read sector
| $4D/77 Next sector
| $4E-$4F/78-79 Pointer to buffer for GCR->BIN conversion
| $50/80 Flag for GCR format (0=BIN, 1=GCR)
| $51/81 Current track number for formatting [FF]
| $52-$55/82-85 Storage for 4 BIN bytes for GCR coding
| $56-$5D/86-93 Storage for 5 GCR bytes
| $5E/94 Number of steps for head motor accel./decl. [04]
| $5F/95 Accelerating/decl. factor [04]
| $60-$61/96-97 Unused
| $62-$63/98-99 Pointer to routine for head movement [FA05]
| $64/100 Minimum number of steps [C8]
| $65-$66/101-102 UI vector [$EB22]
| $67/103 Flag: NMI
| $68/104 Flag for disk initialisation
| $69/105 Step size for sector division [0A]
| $6A/106 Number of read attempts [5]
| $6B-$6C/107-108 Pointer: Start of Jump table for U commands [FFEA]
| $6D-$6E/109-110 Pointer: Start of bitmap [0400]
| $6F-$70/111-112 Pointer to address for M & B commands
| $71/113 Temp. work area
| $72/114 Temp. work area [FF]
| $73/115 Temp. work area
| $74/116 Temp. work area
| $75-$76/117-118 Indirect pointer [0100]
| $77/119 Listener address (Device number + $20) [28]
| $78/120 Talker address (Device number + $40) [48]
| $79/121 Flag: Active listener
| $7A/122 Flag: Active talker
| $7B/123 Unused
| $7C/124 Flag for ATN from serial bus receiving
| $7D/125 Flag for ATN on serial bus active
| $7E/126 Last handled program
| $7F/127 Drive number (on 1541 always 00)
| $80/128 Current Track number
| $81/129 Current Sector number
| $82/130 Channel number (Logical index)
| $83/131 Secondary address
| $84/132 Original Secondary address [6F]
| $85/133 Current Data byte [3F]
| $86-$8A/134-138 Temp Results
| $8B-$8E/139-142 Work storage for division
| $8F-$93/143-147 Work storage
| $94-$95/148-149 Current buffer pointer
| $96-$97/150-151 Unused
| $98/152 Bit counter for Transmission
| $99-$9A/153-154 Pointer: Next byte in buffer 0 [0300]
| $9B-$9C/155-156 Pointer: Next byte in buffer 1 [0400]
| $9D-$9E/157-158 Pointer: Next byte in buffer 2 [0500]
| $9F-$A0/159-160 Pointer: Next byte in buffer 3 [0600]
| $A1-$A2/161-162 Pointer: Next byte in buffer 4 [0700]
| $A3-$A4/163-164 Pointer: Next byte in command buffer [0200]
| $A5-$A6/165-166 Pointer: Next byte in error message buffer [02D6]
| $A7-$AD/167-173 Table: Non-active channel numbers for each buffer
| $AE-$B4/174-180 Table:
| $B5-$BA/181-186 Table: Record # low , block # low
| $BB-$C0/187-192 Table: Record # high, block # high
| $C1-$C6/193-198 Write pointer for REL file
| $C7-$CC/199-204 Table: Record length for REL file
| $CD-$D2/205-210 Table: Side sectors
| $D3/211 Pointer to first filename
| $D4/212 Pointer in record for REL file
| $D5/213 Side sector number
| $D6/214 Pointer to data block in side sector
| $D7/215 Pointer to record in REL file
| $D8-$DC/216-220 Directory sectors
| $DD-$E1/221-225 Index: Directory
| $E2-$E6/226-230 Default disk drive [00]
| $E7-$EB/231-235 File type (wild cards, @, closed)
| $EC-$F1/236-241 File type (channel)
| $F2-$F7/242-247 Channel status
| $F8/248 Flag for EOI
| $F9/249 Current work (Buffer number)
| $FA-$FE/250-254 Last used table
| $FF/255 Flag: Drive 0 not ready
|
| Extended Zeropage:
|
| $0100/256 Flag: Drive 1 not ready
| $0101/257 Format marker, drive 0
| $0102/258 Format marker, drive 1
| $0103/259 Unused
| $0104-$0145/260-325 Stack area
| $0146-$01B9/326-441 Unused
| $01BA-$01FF/442-511 Buffer for GCR code
| $0200-$0229/512-553 Buffer for command string
| $022A/554 Command code
| $022B/555 Logical index, channel 0
| $022C/556 Logical index, channel 1
| $022D/557 Logical index, channel 2
| $022E-$0243/558-579 Last read/written byte for each channel
| $0244-$0249/580-585 Pointer: Last char on channel.
| $024A/586 Type of active file
| $024B/587 String length
| $024C/588 Temp. channel number (secondary address)
| $024D/589 Current work with drive number
| $024E/590 Work area to find the best sector
| $024F-$0250/591-592 Buffer allocated
| $0251/593 Flag: BAM changed, drive 0
| $0252/594 Flag: BAM changed, drive 1
| $0253/595 Flag for directory entry found
| $0254/596 Flag for directory output
| $0255/597 Flag: Waiting for command
| $0256/598 Bitmap of free channels
| $0257/599 Last used buffer
| $0258/600 Record length
| $0259/601 Track of side sector
| $025A/602 Sector of side sector
| $025B-$025F/603-607 Last work (buffers)
| $0260-$0265/608-613 Directory sector (buffers)
| $0266-$026B/614-619 File's index in directory (buffers)
| $026C/620 Counter for LED flash
| $026D/621 Error LED
| $026E/622 Drive for last program
| $026F/623 sector for last program
| $0270/624 Write LINDX
| $0271/625 Read LINDX
| $0272-$0273/626-627 Number of blocks (temp)
| $0274/628 Length of input line
| $0275/629 Char to interpret
| $0276/630 Index: End of filename in command buffer
| $0277/631 Temporary storage
| $0278/632 Temporary storage
| $0279/633 Temporary storage
| $027A-$027F/634-639 Pointer table: Filenames
| $0280-$0284/640-644 Track of a file
| $0285-$0289/645-649 Sector of a file
| $028A/650 Flag: wild cards
| $028B/651 Command syntax byte
| $028C/652 Number of drive(s) to look for
| $028D/653 Flag: Looking for drive
| $028E/654 drive with last write/open error, used as default
| $028F/655 Flag: Found in directory
| $0290/656 Directory sector
| $0291/657 Sector for first available file
| $0292/658 Index (in directory) for first available file
| $0293/659 For the last directory entry 0
| $0294/660 Current buffer-index
| $0295/661 Counter: Files
| $0296/662 Flag: Name matching wild cards
| $0297/663 Active operating mode (R or W)
| $0298/664 Flag: Work return
| $0299/665 Pointer: Re-read error
| $029A/666 Total tracks
| $029B-$029C/667-668 Pointer: BAM last update
| $029D-$02A0/669-672 BAM: image sector (drives 0 and 1)
| $02A1-$02B0/673-688 BAM image
| $02B1-$02D4/689-724 Buffer for directory output
| $02D5-$02F8/725-760 Buffer for error message
| $02F9/761 Flag: Don't write BAM
| $02FA-$02FB/762-763 Number of free blocks, low byte (drives 0 and 1)
| $02FC-$02FD/764-765 Number of free blocks, hi byte (drives 0 and 1)
| $02FE-$02FF/766-767 Stepper motor sequence
| $0300-$03FF/768-1023 Buffer 0
| $0400-$04FF/1024-1279 Buffer 1
| $0500-$05FF/1280-1535 Buffer 2
| $0600-$06FF/1536-1791 Buffer 3
| $0620/1568 Format: number of retries
| $0621+$0622/1569+1570 Format: expected track capacity
| $0623/1571 Format: number of read attempts
| $0624+$0625/1572+1573 Format: measured track capacity(?)
| $0626/1574 Format: temporary storage
| $0627/1575 Format: number of sectors/track
| $0628/1576 Format: current sector, verify counter
| $0700-$07FF/1792-2047 Buffer 4
| $07FF/2047 End of RAM
|
+------------------------------------------------------------------------
$00/0: Command code for buffer 0
ROM-Reference:
CMP $00,X : $EAB3 $EABC
INC $00,X : $EAB7
LDA $00,X : $D2A3 $D363 $D5A6 $D62B $D63F $D651 $D672 $D6B9 $EAC2
LDA $00,Y : $EC31 $F2C0 $F395 $F5DE
STA $00,X : $CBEC $D2A9 $D580 $D64F $D6B7 $EAAD
STA $00,Y : $F5E3 $F96B
STY $00,X : $EAC0
$01/1: Command code for buffer 1
$02/2: Command code for buffer 2
$03/3: Command code for buffer 3
ROM-Reference:
LDA $03 : $C8E0
STA $03 : $C8DE
$04/4: Command code for buffer 4
$05/5: Command code for buffer 5 (unused)
$06-$07/6-7: Track and sector for buffer 0
ROM-Reference:
LDA $06,X : $D519 $D556 $E610
LDA $06,Y : $DE45
STA $06,X : $F101
STA $06,Y : $D6D7
LDA $07,X : $D514 $D55A $E614
LDA $07,Y : $DE4A
STA $07,X : $F105
STA $07,Y : $D6DC
$08-$09/8-9: Track and sector for buffer 1
$0A-$0B/10-11: Track and sector for buffer 2
$0C-$0D/12-13: Track and sector for buffer 3
$0E-$0F/14-15: Track and sector for buffer 4
$10-$11/16-17: Track and sector for buffer 5 (unused)
$12-$13/18-19: Disk ID, drive 0
ROM-Reference:
LDA $12,X : $EE78 $F514 $FC59
LDA $12,Y : $F3F6
STA $12 : $F412
STA $12,X : $D057 $EE2F
LDA $13,X : $EE7D $F518 $FC53
LDA $13,Y : $F3FD
STA $13 : $F416
STA $13,X : $D05B $EE34
$14-$15/20-21: Unused (was: Disk ID, drive 1)
$16-$17/22-23: Header block: ID
ROM-Reference:
CMP $16 : $F3F9
EOR $16 : $F529
EOR $16,Y : $F3DC
LDA $16 : $D055 $F410 $F957
STA $16 : $F4C1 $F516
CMP $17 : $F400
EOR $17 : $F52B
LDA $17 : $D059 $F414 $F953
STA $17 : $F4BD $F51A
$18/24: Header block: Track
ROM-Reference:
EOR $18 : $F52D
LDA $18 : $F3E8 $F94C
STA $18 : $F4AE $F520
$19/25: Header block: Sector
ROM-Reference:
EOR $19 : $F52F
LDA $19 : $F427 $F948
STA $19 : $F4B2 $F525
$1A/26: Header block: Parity
ROM-Reference:
LDA $1A : $F944
STA $1A : $F4B6 $F531
$1B/27: Unused
$1C/28: Flag for disk change, drive 0
ROM-Reference:
LDA $1C : $EC51
LSR $1C,X : $C643
STA $1C : $EBB8 $F9AF
STA $1C,X : $D071
$1D/29: Unused (was: Flag for disk change, drive 1)
ROM-Reference:
LDA $1D : $EC62
STA $1D : $EBBA
$1E/30: Flag for write protect sense, drive 0
ROM-Reference:
CMP $1E : $F9A7
STA $1E : $F9A9
$1F/31: Unused (was: Flag for write protect sense, drive 1)
$20/32: 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 |
+-------+------------------------------------------------------+
ROM-Reference:
LDA $20 : $F2E9 $F991 $F9CF $FA52
STA $20 : $F2FB $F317 $F37E $F980 $F995 $F9E2 $F9F6 $FA56
STA $20,X : $FACF
$21/33: Unused (was: Drive 1 status (disk and step motor))
$22/34: Current track for drive 0
ROM-Reference:
LDA $22 : $F326
STA $22 : $F31B $F38E
STA $22,X : $F3EA $FAD3
$23/35: Flag for 1541 (0), 1540 (not 0)
Not used (track for drive 1)
ROM-Reference:
LDA $23 : $E979
STA $23 : $FF0D
$24-$2B/36-43: Scratch pad of GCR conversion
Storage for BIN -> GCR conversions
ROM-Reference:
CMP $24 : $F3C4
CMP $24,Y : $F543
STA $24 : $F3B9
STA $25,X : $F3CE
$2C-$2D/44-45: Unused
$2E-$2F/46-47: Pointer for temporary storage
ROM-Reference:
LDA ($2E),Y: $F7AB $F7B0 $F7B5 $F7C1 $F7C8 $F7CD $F7D2 $FE46 $FE4B $FE50
$FE55
STA $2E : $F5F4 $F670 $F793 $F8E4 $FE34
STA ($2E),Y: $F615 $F61A $F61F $F62B $F630 $F637 $F63C $F67A $F681 $F8FF
$F904 $F909 $F915 $F91C $F921 $F926
LDA $2F : $F76B $F92F $F964
STA $2F : $F602 $F674 $F79F $F8F2 $F936 $FE3E
$30-$31/48-49: Buffer pointer for disk controller
Pointer: Active buffer
Jump from $F379
ROM-Reference:
CMP ($30),Y: $FD46
EOR ($30),Y: $F5EC
JMP ($0030): $F379
LDA $30 : $F497 $FD4F
LDA ($30),Y: $F5BF $F678 $F67F $F6B3 $F7E8 $F7F1 $F802 $F80D $F814 $F81F
$F82B $F833 $F840 $F848 $F85A $F866 $FCFC
STA $30 : $F377 $F49F $F4C7 $F5F6 $F791 $FD2E $FD53 $FE32
STA ($30),Y: $F4DA $F645 $F64A $F656 $F65B $F660 $F665 $F688 $F6FB $F722
$F735 $F766 $F779 $FDFA
STY $30 : $F3AD
LDA $31 : $F49A $F5FA $F672 $F79D $F8F0 $F934 $FE3C
STA $31 : $F373 $F3A9 $F47A $F4A3 $F4C4 $F600 $F76D $F7A3 $F7FE $F856
$F931 $F93A $F966 $FC90 $FCA0 $FD32 $FE42
$32/50: Pointer: active track
ROM-Reference:
CMP ($32),Y: $FAF7
LDA $32 : $FD12
LDA ($32),Y: $F319 $F33E $F449 $F458 $F51E $F523
LDY $32 : $FCC0
SBC ($32),Y: $F32B
STA $32 : $F3A3 $FCAC $FD17
STA ($32),Y: $FAFB
$33/51: Pointer: active sector
$34/52: Pointer to last converted byte
ROM-Reference:
LDY $34 : $F6D6 $F7E6
STA $34 : $F4A7 $F606 $F799 $F8E2 $F93E $FE3A
STY $34 : $F77C $F86D
$35/53: Not used (decode error, GCR)?
$36/54: Byte counter for GCR/BIN conversion
ROM-Reference:
LDY $36 : $F611 $F627 $F652 $F7A9 $F7BF $F8FB $F911 $FE44
STA $36 : $F608 $F795 $F8E6 $FE36
STY $36 : $F622 $F63F $F64D $F668 $F7BA $F90C $FE5C
$37/55: Unused
$38/56: Constant 7, ID mark for start of data block
ROM-Reference:
LDA $38 : $F4F0
STA $38 : $F60F $F8F9
$39/57: Constant 8, ID mark for start of block header
ROM-Reference:
LDA $39 : $F940 $FC3F
STA $39 : $F296
$3A/58: Parity for data buffer
ROM-Reference:
CMP $3A : $F4FE
LDA $3A : $F7D9
STA $3A : $F578 $F69B $F92D $FCA5
$3B-$3C/59-60: Unused
$3D/61: Motor flag
Disk drive number, on 1541 always 00
ROM-Reference:
CMP $3D : $F322
LDA $3D : $F2E2 $F510
LDX $3D : $F35F $FACB $FC3D
STA $3D : $F2D9
$3E/62: Active drive (FF, if not active)
ROM-Reference:
CMP $3E : $F2DB $F443
LDA $3E : $F3F2
LDX $3E : $F3E6 $F98F $F9CB
STA $3E : $F290 $F2E4 $F9F2
$3F/63: Buffer number for disk controller
Previous work place in queue (0 - 5)
ROM-Reference:
DEC $3F : $F306 $F483
LDA $3F : $F335 $F36E $F475
LDY $3F : $F393 $F5DC $F969
STX $3F : $F436 $F48D
STY $3F : $F2D1 $F2FF
$40/64: Byte counter for GCR conversion
ROM-Reference:
CMP $40 : $F44B
STA $40 : $F340
$41/65: Number of next work in queue (0 - 5)
ROM-Reference:
LDY $41 : $F30A
STA $41 : $F337
$42/66: Destination track (to move R/W head to)
ROM-Reference:
INC $42 : $F333
LDA $42 : $F30F
STA $42 : $F331
$43/67: Number of sectors per track for formatting
ROM-Reference:
ADC $43 : $F45F $FC31
CMP $43 : $F42C $FC80
LDA $43 : $FD34
LDX $43 : $FBE5
SBC $43 : $F430 $FC1A
STA $43 : $F34B
$44/68: Temp. work area; Scratch pad
ROM-Reference:
ORA $44 : $F35A
STA $44 : $F353 $F43F
$45/69: Work code temp. storage
ROM-Reference:
LDA $45 : $F361 $F3EC $F44F $F466 $F492
STA $45 : $F39D
$46/70: Unused
$47/71: 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.
ROM-Reference:
CMP $47 : $F4F2
LDA $47 : $F7A5
STA $47 : $F29A
$48/72: Counter for head movement
Timer: R/W head acceleration
ROM-Reference:
DEC $48 : $F9D9
STA $48 : $F98C $F999
$49/73: Stack pointer temp. storage [39]
ROM-Reference:
LDX $49 : $F978
STX $49 : $F2B1
$4A/74: Step counter for head transport
Values 0 - 127 move the head outside and values over 128 move towards
the centre.
ROM-Reference:
ASL $4A : $F313
DEC $4A : $FA63
INC $4A : $FA32
LDA $4A : $FA05 $FA2E $FA3B
STA $4A : $F311 $F38A $F9C1 $FAD9
$4B/75: Temp. storage
ROM-Reference:
DEC $4B : $F407
ORA $4B : $FA73
STA $4B : $FA6C
STX $4B : $F3B3
$4C/76: Last read sector
ROM-Reference:
CMP $4C : $F461
STA $4C : $F425 $F473
$4D/77: Next sector
ROM-Reference:
SBC $4D : $F45A
STA $4D : $F432
$4E-$4F/78-79: Pointer to buffer for GCR->BIN conversion
ROM-Reference:
LDA $4E : $F7FC $F854
STA $4E : $F5FC $F8EA
LDY $4F : $F800 $F858
STA $4F : $F5F8 $F8EE
$50/80: Flag for GCR format (0=BIN, 1=GCR)
ROM-Reference:
LDA $50 : $F96E
STA $50 : $F79B $FD9C
STX $50 : $F68E
STY $50 : $FDE0
$51/81: Current track number for formatting [FF]
ROM-Reference:
INC $51 : $FD8B
LDA $51 : $FAC7 $FC4D $FD8D
STA $51 : $F292 $FAD5 $FD98
STY $51 : $FDDD
$52-$55/82-85: Storage for 4 BIN bytes for GCR coding
ROM-Reference:
LDA $52 : $F4BB $F60D $F629 $F654 $F6D8 $F6E9 $F8F7 $F913
STA $52 : $F7A7 $F7C3 $F879 $F942 $F955 $FE48
LDA $53 : $F4B4 $F4BF $F613 $F62E $F659 $F6FE $F70F $F8FD $F91A $F92B
STA $53 : $F7AD $F7CA $F7DB $F885 $F946 $F959 $FE4D
LDA $54 : $F4B0 $F618 $F635 $F643 $F65E $F725 $F73D $F902 $F91F
STA $54 : $F7B2 $F7CF $F7DF $F891 $F94A $F95D $FE52
LDA $55 : $F4AC $F61D $F63A $F648 $F663 $F74D $F76F $F907 $F924
STA $55 : $F7B7 $F7D4 $F7E1 $F89D $F94E $F95F $FE57
$56-$5D/86-93: Storage for 5 GCR bytes
ROM-Reference:
LDX $56 : $F86F
ORA $56 : $F6F9
STA $56 : $F6E7 $F7EF
LDX $57 : $F874
ORA $57 : $F70B $F720 $F809
ROR $57 : $F6F2 $F6F5
STA $57 : $F6D2 $F70D $F7F7 $F80B
LDX $58 : $F87B
ORA $58 : $F733
STA $58 : $F71B $F812
LDX $59 : $F880
ORA $59 : $F749 $F764 $F827
STA $59 : $F73B $F74B $F81C $F829
LDX $5A : $F887
ORA $5A : $F777 $F83C
ROR $5A : $F75A $F75D $F760
STA $5A : $F6D4 $F830 $F83E
LDX $5B : $F88C
STA $5B : $F846
LDX $5C : $F893
ORA $5C : $F862
STA $5C : $F84F $F864
LDX $5D : $F898
STA $5D : $F86A
$5E/94: Number of steps for head motor accelerating/decl. [04]
ROM-Reference:
LDA $5E : $FA22 $FA88
SBC $5E : $FA1C $FA1E
STA $5E : $F2AA
$5F/95: Accelerating/decl. factor [04]
ROM-Reference:
ADC $5F : $FAA9
SBC $5F : $FA7F
STA $5F : $F2AE
$60-$61/96-97: Unused
ROM-Reference:
DEC $60 : $FA4E $FA84 $FAAE
STA $60 : $FA24 $FA49 $FA8A $FABC
DEC $61 : $FA97
STA $61 : $FA20
$62-$63/98-99: Pointer to routine for head movement [FA05]
Jump from $FA02
ROM-Reference:
JMP ($0062): $FA02
STA $62 : $F29E $FA14 $FA28 $FA41 $FA5A $FA8E $FA9D $FAB4
STA $63 : $F2A2 $FA18 $FA2C $FA45 $FA5E $FA92 $FAA1 $FAB8
$64/100: Minimum number of steps [C8]
ROM-Reference:
CMP $64 : $FA0E
STA $64 : $F2A6
$65-$66/101-102: UI vector [$EB22]
Jump from $FEE7
ROM-Reference:
JMP ($0065): $FEE7
STA $65 : $EBC7
STA $66 : $EBCB
$67/103: Flag: NMI
ROM-Reference:
STA $67 : $EBFA
$68/104: Flag for disk initialisation
Automatic disk initialisation if ID MISMATCH occurred (1 = no, 0 = yes)
ROM-Reference:
LDA $68 : $C63D
$69/105: Step size for sector division [0A]
Sector number interleave for SEQ files, default 10 ($0A)
ROM-Reference:
ADC $69 : $F176
LDA $69 : $D494
STA $69 : $D499 $D49F $EBCF
$6A/106: Number of read attempts [5]
ROM-Reference:
BIT $6A : $D5F4 $D631
LDA $6A : $D6A6
STA $6A : $EBD3
$6B-$6C/107-108: Pointer: Start of Jump table for U commands [FFEA]
ROM-Reference:
LDA ($6B),Y: $CB78 $CB7D
STA $6B : $CB65
STA $6C : $CB69
$6D-$6E/109-110: Pointer: Start of bitmap [0400]
ROM-Reference:
ADC ($6D),Y: $D07E
LDA ($6D),Y: $EF65 $EF72 $EF98 $EFA4 $EFE3 $F136 $F1C7 $F1E2 $F22D $F23C
STA $6D : $EF26 $EF4A $F04A
STA ($6D),Y: $EE8F $EEAA $EEBE $EEC2 $EED5 $EEE5 $EF6A $EF76 $EF9D $EFA9
$F00B
STA $6E : $EF46 $F050
$6F-$70/111-112: Pointer to address for M & B commands
Jump from $C191, $CB1D, $CC5A, $CDBA
ROM-Reference:
ADC $6F : $CB33 $D1CC $EFDB
ASL $6F : $C3E4 $C3E6 $C3EB
BIT $6F : $CE96 $CEA9
CMP $6F : $F23E
DEC $6F : $D206 $D21A $F156 $F16D
INC $6F : $CB35 $EAC9 $EAEE $F234
INC $6F,X : $EC29 $EC39
JMP ($006F): $C191 $CB1D $CC5A $CDBA
LDA $6F : $CB3A $CBBF $CBCD $CCBD $CE5A $D339 $D4D3 $EC4D $F011 $F12D
$F220
LDA $6F,X : $EEE3
LDA ($6F),Y: $CB20 $DEB9
LDX $6F : $D36B $EA71 $F05B
LDY $6F : $D373 $EF6F $EFA2
LDY $6F,X : $CCD5
LSR $6F : $CE50
ORA $6F : $C3D6 $C55E $C566
ROL $6F : $CBB8 $EEDA
SBC $6F : $CEC8
STA $6F : $C18A $C3CC $C3DB $C553 $C560 $C7C2 $CB02 $CBB3 $CC58 $CCA3
$CCC2 $CDAB $CE4E $CE73 $D1C6 $D1E4 $D37B $D492 $D4C8 $DEA8
$DEC9 $EC0E $EEC9 $EFD3 $F025 $F058 $F123 $F134 $F20B $F225
$F243
STA ($6F),Y: $CB53 $DECC
STX $6F : $D35E
ADC $70 : $DF5D
ASL $70 : $FB9E
BIT $70 : $DFB4
CMP $70 : $DDDD $E399
LDA $70 : $CB3E $CBC6 $CBD5 $CCB9 $DB4D $EC5E $F014 $F03E $F07A $FBA3
LDX $70 : $E388 $F090
ROL $70 : $CBBA $EEDC
STA $70 : $C18F $CB07 $CBB5 $CC53 $CCA5 $CCBF $CDB2 $DB3D $DDD4 $DEAF
$DEC5 $DF5F $DFB0 $EC10 $EECB $F029 $F055 $F06B $FB82
STX $70 : $E37C $F034
$71/113: Temp. work area
ROM-Reference:
INC $71 : $DF63
LDA $71 : $DB51 $E384 $FBAB
LDA ($71),Y: $D503
LDX $71 : $DDC2
LDY $71 : $DC0F
ROL $71 : $EEDE $FBA0
SBC $71 : $FB7F
STA $71 : $CCBB $D4F6 $DB3F $DEAA $EECD $FB88
STA ($71),Y: $DEBB
STX $71 : $DDB9 $DDCA $E37E $FB5C
STY $71 : $DBF0
$72/114: Temp. work area [FF]
ROM-Reference:
DEC $72 : $EC2B
INC $72 : $CCE0
LDA $72 : $CCE8 $DF54
LDX $72 : $EC12
SBC $72 : $FB85
STA $72 : $CCA7 $D4FF $DB46 $DEB4 $E372 $EC0A
STY $72 : $FB5E
$73/115: Temp. work area
ROM-Reference:
INC $73 : $DB39
LDA $73 : $DF5A
STA $73 : $E378
STX $73 : $DB37
$74/116: Temp. work area
$75-$76/117-118: Indirect pointer [0100]
Jump from $CB81
ROM-Reference:
ADC ($75),Y: $EAD7
CMP ($75),Y: $EB09
EOR ($75),Y: $EB11
JMP ($0075): $CB81
STA $75 : $CB7A $EACF
STA ($75),Y: $EAF6 $EB0F $EB13
ADC $76 : $EAF4 $EB07
CMP $76 : $EAE2
DEC $76 : $EAD5 $EB02
INC $76 : $EAFB
STA $76 : $CB7F $EAEC
STX $76 : $EACB
$77/119: Listener address (Device number + $20) [28]
ROM-Reference:
CMP $77 : $E8A9
STA $77 : $EB49
$78/120: Talker address (Device number + $40) [48]
ROM-Reference:
CMP $78 : $E89B
STA $78 : $EB45
$79/121: Flag: Active listener
ROM-Reference:
LDA $79 : $E668 $E8E3
STA $79 : $E860 $E88D $E8A5 $E8AF
$7A/122: Flag: Active talker
ROM-Reference:
LDA $7A : $E66C $E8ED
STA $7A : $E862 $E897 $E8A1 $E8B3
$7B/123: Unused
$7C/124: Flag for ATN from serial bus receiving
ATN interrupt
ROM-Reference:
LDA $7C : $EC00
STA $7C : $E858 $E85E
$7D/125: Flag for ATN on serial bus active
ROM-Reference:
LDA $7D : $EA59
STA $7D : $E86B $E8D9
$7E/126: Last handled program
ROM-Reference:
LDA $7E : $D7CB
STA $7E : $D9FA
$7F/127: Drive number (on 1541 always 00)
ROM-Reference:
CMP $7F : $D32D
INC $7F : $EC5C
LDA $7F : $C107 $C1AD $C38F $C4EC $C8DA $CBEA $D2A7 $D5C8 $D5ED $D6DF
$D7AF $D80E $D9FC $DAB2 $DE86 $EC45 $ECB7 $EE20 $EF0F $F060
$F0D1
LDX $7F : $C641 $C65F $C669 $C7C4 $D04B $D06A $D091 $EE49 $EE6D $EF4D
$EF88 $F017 $F040 $F111
LDY $7F : $D695 $EEFF
ORA $7F : $C56E $D466 $D58C $D63A $D64D $D661 $D7E9 $DC3B $DC53 $DCEF
$DF2D
STA $7F : $C14E $C38A $C395 $C402 $C944 $C9AE $CA01 $CAA3 $CB87 $CDFC
$D1DC $D5D0 $D66E $D6FF $D7D4 $D823 $D9E7 $DBBC $DF2A $E22C
$EC4B $EC6F $EE1B $EEFD
$80/128: Current Track number
ROM-Reference:
CMP $80 : $E2D7
DEC $80 : $F15F
INC $80 : $CD1E $EF2B $F143
LDA $80 : $C8A3 $CD20 $CF31 $D0B2 $D1AE $D4A6 $D55F $D6D5 $D6ED $D921
$D9F8 $DC5C $DD20 $DD4B $DD5D $DE00 $E06E $E2B0 $E3DA $E3E6
$E48A $E4C5 $E6E8 $EDFD $EF1D $EF2D $EF78 $EFAB $F02C $F074
$F092 $F13A $F145 $F17A $F202
STA $80 : $C5B8 $C607 $C84B $C861 $C874 $C89C $CA06 $CE06 $CF43 $CF61
$CF6A $D0A7 $D179 $D558 $D7CF $D805 $D9C9 $DBC1 $DBEE $DBFC
$DE11 $DE48 $DE9D $DF34 $E2C6 $E405 $E612 $E7CC $EDA3 $EDC1
$EDCF $EDF6 $EE3B $EE94 $EF22 $EF35 $F1BE $F1D1
STX $80 : $D038 $F150 $F167
STY $80 : $C1A1 $C1CA $DC88 $E6C3
$81/129: Current Sector number
ROM-Reference:
CMP $81 : $CD0F $D56B $D71A $E2DF $F185
DEC $81 : $EEAF $F193
INC $81 : $F219
LDA $81 : $C547 $C5EB $C637 $CD06 $CF34 $D1B3 $D4AB $D6DA $D6EA $D733
$D926 $DA01 $DC60 $DD25 $DD50 $DD62 $DE05 $E3DD $E3E3 $E491
$E4CA $E6F2 $EFD5 $EFDE $F173 $F18A $F20D
LDX $81 : $DA37
STA $81 : $C5BC $C60C $C850 $C866 $C8A1 $CA0A $CAA7 $CD1C $CE01 $CF3C
$CF5E $CF67 $D0AC $D17E $D55C $D71E $D7DF $D809 $D9CE $DBB0
$DBFF $DC16 $DE16 $DE4D $DEA2 $DF39 $E2CB $E402 $E616 $E7D1
$ED9E $EDC6 $EDCC $EDFB $EE9B $F154 $F16B $F178 $F18F $F19F
$F1EB
STX $81 : $D033
STY $81 : $C1A3 $C1CC $DC8D $E6C5
$82/130: Channel number (Logical index)
ROM-Reference:
CMP $82 : $CF12
LDA $82 : $C6D1 $D6E7 $D905
LDX $82 : $CA3E $CBE2 $CE31 $CF0B $CF8C $D125 $D240 $D249 $D25A $D26B
$D27C $D2DA $D3A4 $D3AA $D403 $D7EB $DA45 $DAAD $DB4B $DB62
$DB80 $DBA5 $DC5A $DC81 $DC98 $DCAC $DCB6 $DCE8 $DD16 $DD2A
$DD72 $DD8E $DD97 $DD9D $DDA6 $DE21 $DE78 $DEDE $DEFF $DF45
$DF93 $DF9E $DFB7 $DFC2 $DFDC $DFE4 $DFED $DFF6 $E02D $E035
$E15E $E16E $E185 $E195 $E1AC $E1E8 $E238 $E27D $E304 $E3A5
$E45E $E4AC $E4B4 $E4D4 $E90F $E92F $E963 $ECAC $ED4E
LDY $82 : $CBFB $CFD3 $D134 $D195 $D9D3 $E08D $E097 $E33E $ED18 $ED6F
ORA $82 : $DA4D
STA $82 : $C6D8 $CFDA $D102 $D11C $D1EC $D239 $D322 $D794 $DB0E $E67B
$EC1D
$83/131: Secondary address
ROM-Reference:
DEC $83 : $D30E $D334 $DAF3
LDA $83 : $C6CE $CB89 $CFAF $D0EB $D107 $D227 $D3B4 $D3D3 $D6E4 $D7B4
$D980 $D9EF $DAC5 $DADB $DBAA
LDX $83 : $CBF1 $D1EE $D22E $D317 $DA4F $DB02 $E670
LDY $83 : $DC6A $DCFD
STA $83 : $C6DB $C6E0 $C989 $C9C1 $C9F5 $CA37 $CA61 $CB90 $CDE5 $D309
$D315 $D47C $D488 $D4DC $D4E3 $D6F2 $D798 $D90C $D985 $D98E
$DAEE $DC41 $E20D $E661 $E8C3 $ECA0
STX $83 : $CF9D $D879
$84/132: Original Secondary address [6F]
ROM-Reference:
LDA $84 : $C153 $CFB7 $E65D $E8C5 $EA39
STA $84 : $E8BF
$85/133: Current Data byte [3F]
ROM-Reference:
LDA $85 : $CFC4 $CFCE $CFE3 $D167 $D18F $D19A $D447 $E084 $E0B2 $E0E2
$E159 $E81E $E848 $EA2B $ED20 $ED7B
ROR $85 : $EA18
STA $85 : $CA3C $CB22 $D15B $D423 $D436 $DFFF $E027 $E0E9 $E0FC $ED6D
$86-$8A/134-138: Temp Results
Jump from $E836
ROM-Reference:
ADC $86 : $F1CF
CMP $86 : $E731
CMP ($86,X): $E718
INC $86 : $C86B $E3F7 $E767 $E778 $F1D3
LDA $86 : $C872 $E409 $E707 $E7EC $EC6D $F1B1
LDA ($86),Y: $DBD8 $DBE5 $DBEC $DBF4 $DBF8 $DC14 $DC21
LDA ($86,X): $E76D $E770
SBC $86 : $E376 $F1BC
STA $86 : $C82E $CA75 $DBD6 $E32E $E70F $E751 $E7B6 $E7F8 $EC47 $F1B6
$F1E7
STA ($86),Y: $DBE9 $DC09 $DC0C $DC11 $DC19 $DC27 $DC30 $DC35
ADC $87 : $E84C
CMP $87 : $E187 $E820
DEC $87 : $E174
INC $87 : $E76B $E77C
LDA $87 : $E355 $E4E4 $E70A $E727
LDY $87 : $E1B5
SBC $87 : $E36B
STA $87 : $CA71 $DBD1 $E172 $E17C $E1A2 $E32A $E48C $E713 $E74E $E7DA
$E850
DEC $88 : $E1C0 $E1C4
INC $88 : $E38D
JMP ($0088): $E836
LDA $88 : $E3AF $E4E9 $E7F0 $E80C
STA $88 : $CA79 $E180 $E332 $E493 $E7DF $E811 $E834
STA ($88),Y: $E807
INC $89 : $E815
LDA $89 : $E7F3
LDA ($89),Y: $E2C4 $E2C9 $E2D5 $E2DD
LDY $89 : $E4E2
STA $89 : $E29E $E482 $E7E7 $E831
DEC $8A : $E4DE $E4E0 $E817
LDA $8A,X : $CE7A
LDY $8A : $E4F3
STA $8A : $E2A2 $E488 $E7FD
STA $8A,X : $CE7F
$8B-$8E/139-142: Work storage for division
Result, Multiply and divide
ROM-Reference:
ADC $8B : $CE61
INC $8B : $CECC
LDA $8B : $CE1F
STA $8B : $CE63 $CEDB
INC $8C : $CE67 $CED0
STA $8C : $CEDD
INC $8D : $CE6B $CED4
STA $8D : $CEDF
LDA $8E,X : $CEF0
STA $8E,X : $CEF4
$8F-$93/143-147: Work storage
ROM-Reference:
ASL $8F : $CE9A
LDA $8F : $CEB0
LDA $8F,X : $CE77
LSR $8F : $CE9D
STA $8F,X : $CE7C $CE8B
ADC $90 : $CEB3
LDA $90 : $CE14 $CE23 $CE3D $CE41 $CEC5
LDA $90,X : $CE89
ROL $90 : $CEE6
STA $90 : $CE35 $CE46 $CEB5 $CED6
DEC $91 : $CE4A
INC $91 : $CEB9
ORA $91 : $CEC1
ROL $91 : $CEE8
STA $91 : $CE39
INC $92 : $CEBD
LDA $92 : $CEBF
ROL $92 : $CEEA
STA $92 : $CE2F $CE94
ADC $93,X : $CEF2
$94-$95/148-149: Current buffer pointer
Pointer: Directory buffer (0204)
ROM-Reference:
CMP ($94),Y: $C50D
LDA $94 : $C5F0 $C62F $E29C
LDA ($94),Y: $C515 $C52F $C54D $C572 $C578 $C584 $C5DF $C71F $C729 $C73F
$C773 $C7DC $C7E5 $C83C $C847 $C84E $D919 $D97A $D9A2 $D9A8
$D9AE $DE0F $DE14 $DED9 $DF32 $DF3
Letzte Änderung: 2019-01-04 13:00:00