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