AAY1541
Suche
Index
FAQ
Kontakt
Zurück
Quelle: The Dreams: AAY-Helpfiles
                                                                  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
  Rubrik:  Tutorials
Rubriken-Übersicht
 65 Besucher online 

Valid XHTML 1.0 Transitional Valid CSS!