All_About_Your_64-Online Help V0.64
 (c) by Ninja/The Dreams in 1995-2005
 HQ - [http://www.the-dreams.de]

...removed 6510 docs...

  +------------------------------------------------------------------------
  |
  |      SOUND INTERFACE DEVICE (SID) 6581
  |
  +------------------------------------------------------------------------
  |
  |  SID related topics:
  |
  |    ADR-Table
  |    SID-Mathmatics
  |
  |  Register description:
  |
  |   $D400/54272/SID+0       Voice 1: Frequency Control - Low-Byte
  |   $D401/54273/SID+1       Voice 1: Frequency Control - High-Byte
  |   $D402/54274/SID+2       Voice 1: Pulse Waveform Width - Low-Byte
  |   $D403/54275/SID+3       Voice 1: Pulse Waveform Width - High-Nybble
  |   $D404/54276/SID+4       Voice 1: Control Register
  |   $D405/54277/SID+5       Voice 1: Attack / Decay Cycle Control
  |   $D406/54278/SID+6       Voice 1: Sustain / Release Cycle Control
  |   $D407/54279/SID+7       Voice 2: Frequency Control - Low-Byte
  |   $D408/54280/SID+8       Voice 2: Frequency Control - High-Byte
  |   $D409/54281/SID+9       Voice 2: Pulse Waveform Width - Low-Byte
  |   $D40A/54282/SID+10      Voice 2: Pulse Waveform Width - High-Nybble
  |   $D40B/54283/SID+11      Voice 2: Control Register
  |   $D40C/54284/SID+12      Voice 2: Attack / Decay Cycle Control
  |   $D40D/54285/SID+13      Voice 2: Sustain / Release Cycle Control
  |   $D40E/54286/SID+14      Voice 3: Frequency Control - Low-Byte
  |   $D40F/54287/SID+15      Voice 3: Frequency Control - High-Byte
  |   $D410/54288/SID+16      Voice 3: Pulse Waveform Width - Low-Byte
  |   $D411/54289/SID+17      Voice 3: Pulse Waveform Width - High-Nybble
  |   $D412/54290/SID+18      Voice 3: Control Register
  |   $D413/54291/SID+19      Voice 3: Attack / Decay Cycle Control
  |   $D414/54292/SID+20      Voice 3: Sustain / Release Cycle Control
  |   $D415/54293/SID+21      Filter Cutoff Frequency: Low-Nybble
  |   $D416/54294/SID+22      Filter Cutoff Frequency: High-Byte
  |   $D417/54295/SID+23      Filter Resonance Control / Voice Input Control
  |   $D418/54296/SID+24      Select Filter Mode and Volume
  |   $D419/54297/SID+25      Analog/Digital Converter: Game Paddle 1
  |   $D41A/54298/SID+26      Analog/Digital Converter: Game Paddle 2
  |   $D41B/54299/SID+27      Oscillator 3 Output
  |   $D41C/54300/SID+28      Envelope Generator 3 Output
  |
  +------------------------------------------------------------------------



 $D400/54272/SID+0:   Voice 1: Frequency Control - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D401/54273/SID+1:   Voice 1: Frequency Control - High-Byte

   This register is write-only!

   See also: SID-Maths


 $D402/54274/SID+2:   Voice 1: Pulse Waveform Width - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D403/54275/SID+3:   Voice 1: Pulse Waveform Width - High-Nybble

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Unused                                          |
   | Bits 3-0 |   Voice 1: Pulse Waveform Width - High-Nybble     |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: SID-Maths


 $D404/54276/SID+4:   Voice 1: Control Register

   +-------+------------------------------------------------------+
   | Bit 7 |   Select Random Noise Waveform, 1 = On               |
   | Bit 6 |   Select Pulse Waveform, 1 = On                      |
   | Bit 5 |   Select Sawtooth Waveform, 1 = On                   |
   | Bit 4 |   Select Triangle Waveform, 1 = On                   |
   | Bit 3 |   Test Bit: 1 = Disable Oscillator                   |
   | Bit 2 |   Ring Modulate Osc. 1 with Osc. 3 Output, 1 = On    |
   | Bit 1 |   Synchronize Osc. 1 with Osc. 3 Frequency, 1 = On   |
   | Bit 0 |   Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release |
   +-------+------------------------------------------------------+

   This register is write-only!


 $D405/54277/SID+5:   Voice 1: Attack / Decay Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Attack Cycle Duration: 0-15              |
   | Bits 3-0 |   Select Decay Cycle Duration: 0-15               |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D406/54278/SID+6:   Voice 1: Sustain / Release Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Sustain Cycle Duration: 0-15             |
   | Bits 3-0 |   Select Release Cycle Duration: 0-15             |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D407/54279/SID+7:   Voice 2: Frequency Control - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D408/54280/SID+8:   Voice 2: Frequency Control - High-Byte

   This register is write-only!

   See also: SID-Maths


 $D409/54281/SID+9:   Voice 2: Pulse Waveform Width - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D40A/54282/SID+10:  Voice 2: Pulse Waveform Width - High-Nybble

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Unused                                          |
   | Bits 3-0 |   Voice 2: Pulse Waveform Width - High-Nybble     |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: SID-Maths


 $D40B/54283/SID+11:  Voice 2: Control Register

   +-------+------------------------------------------------------+
   | Bit 7 |   Select Random Noise Waveform, 1 = On               |
   | Bit 6 |   Select Pulse Waveform, 1 = On                      |
   | Bit 5 |   Select Sawtooth Waveform, 1 = On                   |
   | Bit 4 |   Select Triangle Waveform, 1 = On                   |
   | Bit 3 |   Test Bit: 1 = Disable Oscillator                   |
   | Bit 2 |   Ring Modulate Osc. 2 with Osc. 1 Output, 1 = On    |
   | Bit 1 |   Synchronize Osc. 2 with Osc. 1 Frequency, 1 = On   |
   | Bit 0 |   Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release |
   +-------+------------------------------------------------------+

   This register is write-only!


 $D40C/54284/SID+12:  Voice 2: Attack / Decay Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Attack Cycle Duration: 0-15              |
   | Bits 3-0 |   Select Decay Cycle Duration: 0-15               |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D40D/54285/SID+13:  Voice 2: Sustain / Release Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Sustain Cycle Duration: 0-15             |
   | Bits 3-0 |   Select Release Cycle Duration: 0-15             |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D40E/54286/SID+14:  Voice 3: Frequency Control - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D40F/54287/SID+15:  Voice 3: Frequency Control - High-Byte

   This register is write-only!

   See also: SID-Maths


 $D410/54288/SID+16:  Voice 3: Pulse Waveform Width - Low-Byte

   This register is write-only!

   See also: SID-Maths


 $D411/54289/SID+17:  Voice 3: Pulse Waveform Width - High-Nybble

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Unused                                          |
   | Bits 3-0 |   Voice 3: Pulse Waveform Width - High-Nybble     |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: SID-Maths


 $D412/54290/SID+18:  Voice 3: Control Register

   +-------+------------------------------------------------------+
   | Bit 7 |   Select Random Noise Waveform, 1 = On               |
   | Bit 6 |   Select Pulse Waveform, 1 = On                      |
   | Bit 5 |   Select Sawtooth Waveform, 1 = On                   |
   | Bit 4 |   Select Triangle Waveform, 1 = On                   |
   | Bit 3 |   Test Bit: 1 = Disable Oscillator                   |
   | Bit 2 |   Ring Modulate Osc. 3 with Osc. 2 Output, 1 = On    |
   | Bit 1 |   Synchronize Osc. 3 with Osc. 2 Frequency, 1 = On   |
   | Bit 0 |   Gate Bit: 1 = Start Att/Dec/Sus, 0 = Start Release |
   +-------+------------------------------------------------------+

   This register is write-only!


 $D413/54291/SID+19:  Voice 3: Attack / Decay Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Attack Cycle Duration: 0-15              |
   | Bits 3-0 |   Select Decay Cycle Duration: 0-15               |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D414/54292/SID+20:  Voice 3: Sustain / Release Cycle Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Sustain Cycle Duration: 0-15             |
   | Bits 3-0 |   Select Release Cycle Duration: 0-15             |
   +----------+---------------------------------------------------+

   This register is write-only!

   See also: ADR-Rates


 $D415/54293/SID+21:  Filter Cutoff Frequency: Low-Nybble

   +----------+---------------------------------------------------+
   | Bits 7-3 |   Unused                                          |
   | Bits 2-0 |   Filter Cutoff Frequency: Low-Nybble             |
   +----------+---------------------------------------------------+

   This register is write-only!


 $D416/54294/SID+22:  Filter Cutoff Frequency: High-Byte

   This register is write-only!


 $D417/54295/SID+23:  Filter Resonance Control / Voice Input Control

   +----------+---------------------------------------------------+
   | Bits 7-4 |   Select Filter Resonance: 0-15 (linear steps)    |
   | Bits 3   |   Filter External Input: 1 = Yes, 0 = No          |
   | Bits 2   |   Filter Voice 3 Output: 1 = Yes, 0 = No          |
   | Bits 1   |   Filter Voice 2 Output: 1 = Yes, 0 = No          |
   | Bits 0   |   Filter Voice 1 Output: 1 = Yes, 0 = No          |
   +----------+---------------------------------------------------+

   This register is write-only!


 $D418/54296/SID+24:  Select Filter Mode and Volume

   +----------+---------------------------------------------------+
   | Bits 7   |   Cut-Off Voice 3 Output: 1 = On, 0 = Off         |
   | Bits 6   |   Select Filter High-Pass Mode: 1 = On            |
   | Bits 5   |   Select Filter Band-Pass Mode: 1 = On            |
   | Bits 4   |   Select Filter Low-Pass Mode: 1 = On             |
   | Bits 3-0 |   Select Output Volume: 0-15 (linear steps)       |
   +----------+---------------------------------------------------+

   This register is write-only!

Kernal-Reference:

 STX $D418   : $FDC4


 $D419/54297/SID+25:  Analog/Digital Converter: Game Paddle 1

   This register is read-only!


 $D41A/54298/SID+26:  Analog/Digital Converter: Game Paddle 2

   This register is read-only!


 $D41B/54299/SID+27:  Oscillator 3 Output

   This register is read-only!


 $D41C/54300/SID+28:  Envelope Generator 3 Output

   This register is read-only!


 SID-ADR-Table:

     VALUE    ATTACK    DECAY/RELEASE
   +-------+----------+---------------+
   |   0   |    2 ms  |      6 ms     |
   |   1   |    8 ms  |     24 ms     |
   |   2   |   16 ms  |     48 ms     |
   |   3   |   24 ms  |     72 ms     |
   |   4   |   38 ms  |    114 ms     |
   |   5   |   56 ms  |    168 ms     |
   |   6   |   68 ms  |    204 ms     |
   |   7   |   80 ms  |    240 ms     |
   |   8   |  100 ms  |    300 ms     |
   |   9   |  240 ms  |    720 ms     |
   |   10  |  500 ms  |    1.5 s      |
   |   11  |  800 ms  |    2.4 s      |
   |   12  |    1 s   |      3 s      |
   |   13  |    3 s   |      9 s      |
   |   14  |    5 s   |     15 s      |
   |   15  |    8 s   |     24 s      |
   +-------+----------+---------------+

 This chart represents the 16 rates for ATTACK, DECAY and RELEASE.


 SID-Maths:

  Frequency:
  ----------

   To calculate the frequency corresponding to the 16-bit value in
   $D400+$D401, $D407+$D408, $D40E+$D40F use the following formula:

    Freq = 16Bit-Value * Phi2 / 16777216 Hz

   where Phi2 is the system-clock, 985248 Hz for PAL-systems,
   1022727 Hz for NTSC-systems.

   A good approximation for both systems is the formula:

    Freq = 16Bit-Value / 17.03

  Pulse-Width:
  ------------

   To calculate the pulse width (in %) corresponding to the 12-bit value in
   $D402+$D403, $D409+$D40A, $D410+$D411 use the following formula:

    PulseWidth = (16Bit-Value / 40.96) %


  +------------------------------------------------------------------------
  |
  |      COMPLEX INTERFACE ADAPTER (CIA) 6526
  |
  +------------------------------------------------------------------------
  |
  |  CIA related topics:
  |
  |   Keyboard Matrix
  |
  |  Register description:
  |
  |  CIA 1:
  |
  |   $DC00/56320/CIA1+0       Data Port A (Keyboard, Joystick, Paddles)
  |   $DC01/56321/CIA1+1       Data Port B (Keyboard, Joystick, Paddles)
  |   $DC02/56322/CIA1+2       Data Direction Register A
  |   $DC03/56323/CIA1+3       Data Direction Register B
  |   $DC04/56324/CIA1+4       Timer A Low-Byte  (Kernal-IRQ, Tape)
  |   $DC05/56325/CIA1+5       Timer A High-Byte (Kernal-IRQ, Tape)
  |   $DC06/56326/CIA1+6       Timer B Low-Byte  (Tape, Serial Port)
  |   $DC07/56327/CIA1+7       Timer B High-Byte (Tape, Serial Port)
  |   $DC08/56328/CIA1+8       Time-of-Day Clock: 1/10 Seconds
  |   $DC09/56329/CIA1+9       Time-of-Day Clock: Seconds
  |   $DC0A/56330/CIA1+10      Time-of-Day Clock: Minutes
  |   $DC0B/56331/CIA1+11      Time-of-Day Clock: Hours + AM/PM Flag
  |   $DC0C/56332/CIA1+12      Synchronous Serial I/O Data Buffer
  |   $DC0D/56333/CIA1+13      Interrupt (IRQ) Control Register
  |   $DC0E/56334/CIA1+14      Control Register A
  |   $DC0F/56335/CIA1+15      Control Register B
  |
  |  CIA 2:
  |
  |   $DD00/56576/CIA2+0       Data Port A (Serial Bus, RS232, VIC Base Mem.)
  |   $DD01/56577/CIA2+1       Data Port B (User Port, RS232)
  |   $DD02/56578/CIA2+2       Data Direction Register A
  |   $DD03/56579/CIA2+3       Data Direction Register B
  |   $DD04/56580/CIA2+4       Timer A Low-Byte  (RS232)
  |   $DD05/56581/CIA2+5       Timer A High-Byte (RS232)
  |   $DD06/56582/CIA2+6       Timer B Low-Byte  (RS232)
  |   $DD07/56583/CIA2+7       Timer B High-Byte (RS232)
  |   $DD08/56584/CIA2+8       Time-of-Day Clock: 1/10 Seconds
  |   $DD09/56585/CIA2+9       Time-of-Day Clock: Seconds
  |   $DD0A/56586/CIA2+10      Time-of-Day Clock: Minutes
  |   $DD0B/56587/CIA2+11      Time-of-Day Clock: Hours + AM/PM Flag
  |   $DD0C/56588/CIA2+12      Synchronous Serial I/O Data Buffer
  |   $DD0D/56589/CIA2+13      Interrupt (NMI) Control Register
  |   $DD0E/56590/CIA2+14      Control Register A
  |   $DD0F/56591/CIA2+15      Control Register B
  |
  +------------------------------------------------------------------------



 $DC00/56320/CIA1+0:   Data Port A (Keyboard, Joystick, Paddles)

   +----------+---------------------------------------------------+
   | Bits 7-0 |   Write Keyboard Column Values for Keyboard Scan  |
   | Bits 7-6 |   Paddles on: 01 = Port A, 10 = Port B            |
   | Bit  4   |   Joystick A Fire Button: 0 = Pressed             |
   | Bit  3   |   Joystick A Right: 0 = Pressed, or Paddle Button |
   | Bit  2   |   Joystick A Left : 0 = Pressed, or Paddle Button |
   | Bit  1   |   Joystick A Down : 0 = Pressed                   |
   | Bit  0   |   Joystick A Up   : 0 = Pressed                   |
   +----------+---------------------------------------------------+

   Do NOT use Paddles on both Ports at the same time!

   Joystick A is the one plugged into Port 2.

   Default Value: $7F/127 (%01111111)

Kernal-Reference:

 STA $DC00   : $E93A $E945 $EA90 $EAA5 $EAD7 $EB44 $F6D4 $FDAB
 STX $DC00   : $F6C9


 $DC01/56321/CIA1+1:   Data Port B (Keyboard, Joystick, Paddles)

   +----------+---------------------------------------------------+
   | Bits 7-0 |   Read Keyboard Row Values for Keyboard Scan      |
   | Bit  4   |   Joystick B Fire Button: 0 = Pressed             |
   | Bit  3   |   Joystick B Right: 0 = Pressed, or Paddle Button |
   | Bit  2   |   Joystick B Left : 0 = Pressed, or Paddle Button |
   | Bit  1   |   Joystick B Down : 0 = Pressed                   |
   | Bit  0   |   Joystick B Up   : 0 = Pressed                   |
   +----------+---------------------------------------------------+

   Joystick B is the one plugged into Port 1.

Kernal-Reference:

 CMP $DC01   : $EAAE $F6BF
 CPX $DC01   : $F6CF
 LDA $DC01   : $E93D $EAAB $F6BC
 LDX $DC01   : $EA93 $F6CC


 $DC02/56322/CIA1+2:   Data Direction Register A

   +----------+---------------------------------------------------+
   | Bit  x   |   1 = Pin PAx set to Output, 0 = Input            |
   +----------+---------------------------------------------------+

   Default Value: $FF/255 (%11111111)

Kernal-Reference:

 STX $DC02   : $FDC8


 $DC03/56323/CIA1+3:   Data Direction Register B

   +----------+---------------------------------------------------+
   | Bit  x   |   1 = Pin PBx set to Output, 0 = Input            |
   +----------+---------------------------------------------------+

    Default Value: $00/0 (%00000000)

Kernal-Reference:

 STX $DC03   : $FDBE


 $DC04/56324/CIA1+4:   Timer A Low-Byte (Kernal-IRQ, Tape)

   Read : Get current value
   Write: Set Low-Byte of value to count down from

   Default Value: $25/37 on PAL
                  $95/149 on NTSC

Kernal-Reference:

 STA $DC04   : $F907 $FDE4 $FDEE


 $DC05/56325/CIA1+5:   Timer A High-Byte (Kernal-IRQ, Tape)

   Read : Get current value
   Write: Set High-Byte of value to count down from

   Default Value: $40/64 on PAL
                  $42/66 on NTSC

Kernal-Reference:

 STA $DC05   : $F90E $FDF3


 $DC06/56326/CIA1+6:   Timer B Low-Byte (Tape, Serial Port)

   Read : Get current value

   Write: Set Low-Byte of value to count down from

Kernal-Reference:

 LDA $DC06   : $F8FE
 SBC $DC06   : $F932
 STA $DC06   : $FBB1
 STY $DC06   : $F93D


 $DC07/56327/CIA1+7:   Timer B High-Byte (Tape, Serial Port)

   Read : Get current value

   Write: Set High-Byte of value to count down from

Kernal-Reference:

 ADC $DC07   : $F90B
 CPX $DC07   : $F935
 LDX $DC07   : $F92C
 STA $DC07   : $ED94 $EE22
 STX $DC07   : $FBB4
 STY $DC07   : $F940


 $DC08/56328/CIA1+8:   Time-of-Day Clock: 1/10 Seconds

   +----------+---------------------------------------------------+
   | Bits 7-4 | Always 0                                          |
   | Bits 3-0 | 1/10 Seconds in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DC09/56329/CIA1+9:   Time-of-Day Clock: Seconds

   +----------+---------------------------------------------------+
   | Bit  7   |   Always 0                                        |
   | Bits 6-4 |   10 Seconds in BCD-Format                        |
   | Bits 3-0 |    1 Seconds in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DC0A/56330/CIA1+10:  Time-of-Day Clock: Minutes

   +----------+---------------------------------------------------+
   | Bit  7   |   Always 0                                        |
   | Bits 6-4 |   10 Minutes in BCD-Format                        |
   | Bits 3-0 |    1 Minutes in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DC0B/56331/CIA1+11:  Time-of-Day Clock: Hours + AM/PM Flag

   +----------+---------------------------------------------------+
   | Bit  7   |   0 = AM / 1 = PM                                 |
   | Bit  6-5 |   Always 0                                        |
   | Bit  4   |   10 Hours in BCD-Format                          |
   | Bits 3-0 |    1 Hours in BCD-Format                          |
   +----------+---------------------------------------------------+


 $DC0C/56332/CIA1+12:  Synchronous Serial I/O Data Buffer

   Bits to be send or received via Pin SP are stored in this register.


 $DC0D/56333/CIA1+13:  Interrupt (IRQ) Control Register

   +-------+------------------------------------------------------+
   | Bit 7 |   On Read:  1 = Interrupt occured                    |
   |       |   On Write: 1 = Set Int.-Flags, 0 = Clear Int-.Flags |
   | Bit 4 |   FLAG1 IRQ (Cassette Read / Serial Bus SRQ Input)   |
   | Bit 3 |   Serial Port Interrupt ($DC0C full/empty)           |
   | Bit 2 |   Time-of-Day Clock Alarm Interrupt                  |
   | Bit 1 |   Timer B Interrupt (Tape, Serial Port)              |
   | Bit 0 |   Timer A Interrupt (Kernal-IRQ, Tape)               |
   +-------+------------------------------------------------------+

   Your CIA does NOT clear this register! You have to do this by
   simply reading it.

   Default Value: $81/129 (%10000001)

Kernal-Reference:

 LDA $DC0D   : $EA7E $ED9C $ED9F $EE2D $EE30 $F91A $F948 $FBB7
 LDX $DC0D   : $FB52
 STA $DC0D   : $F87A $FA3F $FA50 $FCA2 $FDA5 $FF70
 STX $DC0D   : $FB4F
 STY $DC0D   : $F877


 $DC0E/56334/CIA1+14:  Control Register A

   +-------+--------------------------------------------------------+
   | Bit 7 |   Time-of-Day Clock Frequency: 1 = 50 Hz, 0 = 60 Hz    |
   | Bit 6 |   Serial Port ($DC0C) I/O Mode: 1 = Output, 0 = Input  |
   | Bit 5 |   Timer A Counts: 1 = CNT Signals, 0 = System 02 Clock |
   | Bit 4 |   Force Load Timer A: 1 = Yes                          |
   | Bit 3 |   Timer A Run Mode: 1 = One-Shot, 0 = Continuous       |
   | Bit 2 |   Timer A Output Mode to PB6: 1 = Toggle, 0 = Pulse    |
   | Bit 1 |   Timer A Output on PB6: 1 = Yes, 0 = No               |
   | Bit 0 |   Start/Stop Timer A: 1 = Start, 0 = Stop              |
   +-------+--------------------------------------------------------+

   Default Value: $11/17 (%00010001)

Kernal-Reference:

 LDA $DC0E   : $F87D $FF73
 STA $DC0E   : $F914 $FDB0 $FF7A


 $DC0F/56335/CIA1+15:  Control Register B

   +----------+-----------------------------------------------------+
   | Bit  7   |   Set Alarm/TOD-Clock: 1 = Alarm, 0 = Clock         |
   | Bits 6-5 |   Timer B Mode Select:                              |
   |          |            00 = Count System 02 Clock Pulses        |
   |          |            01 = Count Positive CNT Transitions      |
   |          |            10 = Count Timer A Underflow Pulses      |
   |          |            11 = Count Timer A Underflows While CNT  |
   | Bit  4   |   Force Load Timer B: 1 = Yes                       |
   | Bit  3   |   Timer B Run Mode: 1 = One-Shot, 0 = Continuous    |
   | Bit  2   |   Timer B Output Mode to PB7: 1 = Toggle, 0 = Pulse |
   | Bit  1   |   Timer B Output on PB7: 1 = Yes, 0 = No            |
   | Bit  0   |   Start/Stop Timer B: 1 = Start, 0 = Stop           |
   +----------+-----------------------------------------------------+

   Default Value: $08/8 (%00001000)

Kernal-Reference:

 STA $DC0F   : $ED99 $EE27 $F882 $F945 $FBBC $FDB6


 $DD00/56576/CIA2+0:   Data Port A (Serial Bus, RS232, VIC Base Mem.)

   +----------+---------------------------------------------------+
   | Bit  7   |  Serial Bus Data Input                            |
   | Bit  6   |  Serial Bus Clock Pulse Input                     |
   | Bit  5   |  Serial Bus Data Output                           |
   | Bit  4   |  Serial Bus Clock Pulse Output                    |
   | Bit  3   |  Serial Bus ATN Signal Output                     |
   | Bit  2   |  RS232 Data Output (User Port)                    |
   | Bit  1-0 |  VIC Chip System Memory Bank Select (low active!) |
   +----------+---------------------------------------------------+

   Default Value: $17/23 (%00010111)

Kernal-Reference:

 CMP $DD00   : $ED69 $EE5D $EE6A $EEAC
 LDA $DD00   : $ED2E $ED66 $ED84 $EDBE $EDF3 $EE5A $EE67 $EE85 $EE8E $EE97
               $EEA0 $EEA9 $FE7B
 ORA $DD00   : $F492
 STA $DD00   : $ED33 $ED8B $EDC3 $EDF8 $EE8A $EE93 $EE9C $EEA5 $F495 $FDCD
               $FE82


 $DD01/56577/CIA2+1:   Data Port B (User Port, RS232)
   +-------+------------------------------------------------------+
   | Bit 7 |   User Port PB7 / RS232 Data Set Ready               |
   | Bit 6 |   User Port PB6 / RS232 Clear to Send                |
   | Bit 5 |   User Port PB5                                      |
   | Bit 4 |   User Port PB4 / RS232 Carrier Detect               |
   | Bit 3 |   User Port PB3 / RS232 Ring Indicator               |
   | Bit 2 |   User Port PB2 / RS232 Data Terminal Ready          |
   | Bit 1 |   User Port PB1 / RS232 Request to Send              |
   | Bit 0 |   User Port PB0 / RS232 Received Data                |
   +-------+------------------------------------------------------+

Kernal-Reference:

 BIT $DD01   : $EF0C $EFEB $EFF9 $F006 $F05B
 LDA $DD01   : $EFFE $F068 $F070 $F453 $FED6
 STA $DD01   : $F003 $F06D $F48D


 $DD02/56578/CIA2+2:   Data Direction Register A

   +----------+---------------------------------------------------+
   | Bit  x   |   1 = Pin PAx set to Output, 0 = Input            |
   +----------+---------------------------------------------------+

   Default Value: $3F/63 (%00111111)

Kernal-Reference:

 STA $DD02   : $FDD2


 $DD03/56579/CIA2+3:   Data Direction Register B

   +----------+---------------------------------------------------+
   | Bit  x   |   1 = Pin PBx set to Output, 0 = Input            |
   +----------+---------------------------------------------------+

   Default Value: $00/0 (%00000000)

Kernal-Reference:

 STA $DD03   : $F48A
 STX $DD03   : $FDC1


 $DD04/56580/CIA2+4:   Timer A Low-Byte (RS232)

   Read : Get current value

   Write: Set Low-Byte of value to count down from

Kernal-Reference:

 STA $DD04   : $F036


 $DD05/56581/CIA2+5:   Timer A High-Byte (RS232)

   Read : Get current value

   Write: Set High-Byte of value to count down from

Kernal-Reference:

 STA $DD05   : $F03C


 $DD06/56582/CIA2+6:   Timer B Low-Byte (RS232)

   Read : Get current value

   Write: Set Low-Byte of value to count down from

Kernal-Reference:

 LDA $DD06   : $FEDD
 STA $DD06   : $FEE5 $FEFE $FF0A $FF22


 $DD07/56583/CIA2+7:   Timer B High-Byte (RS232)

   Read : Get current value

   Write: Set High-Byte of value to count down from

Kernal-Reference:

 LDA $DD07   : $FEE8
 STA $DD07   : $FEEE $FF01 $FF10 $FF25


 $DD08/56584/CIA2+8:   Time-of-Day Clock: 1/10 Seconds

   +----------+---------------------------------------------------+
   | Bits 7-4 | Always 0                                          |
   | Bits 3-0 | 1/10 Seconds in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DD09/56585/CIA2+9:   Time-of-Day Clock: Seconds

   +----------+---------------------------------------------------+
   | Bit  7   |   Always 0                                        |
   | Bits 6-4 |   10 Seconds in BCD-Format                        |
   | Bits 3-0 |    1 Seconds in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DD0A/56586/CIA2+10:  Time-of-Day Clock: Minutes

   +----------+---------------------------------------------------+
   | Bit  7   |   Always 0                                        |
   | Bits 6-4 |   10 Minutes in BCD-Format                        |
   | Bits 3-0 |    1 Minutes in BCD-Format                        |
   +----------+---------------------------------------------------+


 $DD0B/56587/CIA2+11:  Time-of-Day Clock: Hours + AM/PM Flag

   +----------+---------------------------------------------------+
   | Bit  7   |   0 = AM / 1 = PM                                 |
   | Bit  6-5 |   Always 0                                        |
   | Bit  4   |   10 Hours in BCD-Format                          |
   | Bits 3-0 |    1 Hours in BCD-Format                          |
   +----------+---------------------------------------------------+


 $DD0C/56588/CIA2+12:  Synchronous Serial I/O Data Buffer

   Bits to be send or received via Pin SP are stored in this register.


 $DD0D/56589/CIA2+13:  Interrupt (NMI) Control Register

   +-------+------------------------------------------------------+
   | Bit 7 |   On Read:  1 = Interrupt occured                    |
   |       |   On Write: 1 = Set Int.-Flags, 0 = Clear Int.-Flags |
   | Bit 4 |   FLAG1 NMI (User/RS232 Received Data Input)         |
   | Bit 3 |   Serial Port Interrupt ($DD0C full/empty)           |
   | Bit 2 |   Time-of-Day Clock Alarm Interrupt                  |
   | Bit 1 |   Timer B Interrupt (RS232)                          |
   | Bit 0 |   Timer A Interrupt (RS232)                          |
   +-------+------------------------------------------------------+

   Your CIA does NOT clear this register! You have to do this by
   simply reading it.

   Default Value: $7F/127 (%01111111)

Kernal-Reference:

 LDY $DD0D   : $FE51
 STA $DD0D   : $EF3B $EF46 $EF80 $F0B3 $F485 $FDA8 $FE4E $FE88 $FEB9 $FEF9


 $DD0E/56590/CIA2+14:  Control Register A

   +-------+--------------------------------------------------------+
   | Bit 7 |   Time-of-Day Clock Frequency: 1 = 50 Hz, 0 = 60 Hz    |
   | Bit 6 |   Serial Port ($DD0C) I/O Mode: 1 = Output, 0 = Input  |
   | Bit 5 |   Timer A Counts: 1 = CNT Signals, 0 = System 02 Clock |
   | Bit 4 |   Force Load Timer A: 1 = Yes                          |
   | Bit 3 |   Timer A Run Mode: 1 = One-Shot, 0 = Continuous       |
   | Bit 2 |   Timer A Output Mode to PB6: 1 = Toggle, 0 = Pulse    |
   | Bit 1 |   Timer A Output on PB6: 1 = Yes, 0 = No               |
   | Bit 0 |   Start/Stop Timer A: 1 = Start, 0 = Stop              |
   +-------+--------------------------------------------------------+

   Default Value: $08/8 (%00001000)

Kernal-Reference:

 STA $DD0E   : $F030 $F049 $FDB3


 $DD0F/56591/CIA2+15:  Control Register B

   +----------+-----------------------------------------------------+
   | Bit  7   |   Set Alarm/TOD-Clock: 1 = Alarm, 0 = Clock         |
   | Bits 6-5 |   Timer B Mode Select:                              |
   |          |            00 = Count System 02 Clock Pulses        |
   |          |            01 = Count Positive CNT Transitions      |
   |          |            10 = Count Timer A Underflow Pulses      |
   |          |            11 = Count Timer A Underflows While CNT  |
   | Bit  4   |   Force Load Timer B: 1 = Yes                       |
   | Bit  3   |   Timer B Run Mode: 1 = One-Shot, 0 = Continuous    |
   | Bit  2   |   Timer B Output Mode to PB7: 1 = Toggle, 0 = Pulse |
   | Bit  1   |   Timer B Output on PB7: 1 = Yes, 0 = No            |
   | Bit  0   |   Start/Stop Timer B: 1 = Start, 0 = Stop           |
   +----------+-----------------------------------------------------+

   Default Value: $08/8 (%00001000)

Kernal-Reference:

 STA $DD0F   : $FDB9 $FEF3 $FF15


                               Port B - $DC01
              +-----+-----+-----+-----+-----+-----+-----+-----+
              |Bit 7|Bit 6|Bit 5|Bit 4|Bit 3|Bit 2|Bit 1|Bit 0|
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 7| R/S |  Q  |  C= |SPACE|  2  | CTRL|A_LFT|  1  |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 6|  /  | A_UP|  =  | S_R | HOME|  ;  |  *  |POUND|
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 5|  ,  |  @  |  :  |  .  |  -  |  L  |  P  |  +  |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 4|  N  |  O  |  K  |  M  |  0  |  J  |  I  |  9  |
 Port A +-----+-----+-----+-----+-----+-----+-----+-----+-----+
 $DC00  |Bit 3|  V  |  U  |  H  |  B  |  8  |  G  |  Y  |  7  |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 2|  X  |  T  |  F  |  C  |  6  |  D  |  R  |  5  |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 1| S_L |  E  |  S  |  Z  |  4  |  A  |  W  |  3  |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 0|C_U/D|  F5 |  F3 |  F1 |  F7 |C_L/R|  CR | DEL |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+

  C_L/R = Cursor left/right  ;  C_U/D = Cursor up/down
  S_L = Shift, left  ;  S_R = Shift, right  ;  R/S = RUN/STOP
  A_UP = Arrow up    ;  A_LFT = Arrow left

 C128 only:
                               Port B - $DC01
              +-----+-----+-----+-----+-----+-----+-----+-----+
              |Bit 7|Bit 6|Bit 5|Bit 4|Bit 3|Bit 2|Bit 1|Bit 0|
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 2|NOSCR| 'R' | 'L' | 'D' | 'U' | "." | "0" | ALT |
 Port A*+-----+-----+-----+-----+-----+-----+-----+-----+-----+
 $D02F  |Bit 1| "3" | "9" | "6" | "CR"|  LF | "-" | "+" | ESC |
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+
        |Bit 0| "1" | "7" | "4" | "2" | TAB | "5" | "8" | HELP|
        +-----+-----+-----+-----+-----+-----+-----+-----+-----+

  "x" = means key is on the keypad to the right
  'x' = means grey cursor-control key at the upper side
        (U/D/L/R = up/down/left/right)


  +------------------------------------------------------------------------
  |
  |      MEMORY-MAPS OF DIFFERENT PROGRAMS
  |
  +------------------------------------------------------------------------
  |
  |   pucrunch                       Jiffy-DOS (Zeropage)
  |   ByteBoiler 1.0
  |   The Cruncher AB 2.0
  |   Exomizer
  |
  +------------------------------------------------------------------------



 PUCRUNCH:

  A freeware cross-cruncher by Pasi 'Albert' Ojala.
  [http://www.cs.tut.fi/~albert/Dev/pucrunch]

  Used memory:

   $2D+$2E: Temporary (LZPOS), after depacking: End of Program
   $F7+$F8: Bit-Stream, Escape Code
   $F9+$FA: Depacker - Part 1 ($FA = destination address lo)
   $FB-$FE: Depacker - Part 1 ($FB = destination address hi)
   $FF: Depacker - Part 1
   $0100-$01E0: Depacker - Part 1
   $0200-$0258: Depacker - Part 2 ($0202+$0203 = source address)


 EXOMIZER 1.0 - 2.0:

 An open-source cross-cruncher by Magnus Lind.
 [http://covertbitops.cjb.net]

  Except for the addresses covered by the file itself ($0801-$XXXX), the
  default decruncher also clobbers the following addresses:

   $A7    : Length of sequence
   $AE+$AF: Source address
   $FB-$FE: Bit buffers, Destination address lo ($FE)
   $FF    : Destination address hi
   $0100-$01BA: Depacker - main code (for V1.1.1+ see below!)
   $0334-$033B: Depacker - tables
   $033C-$03CF: Depacker - tables

 EXOMIZER 2.0:

  The decruncher uses the same ZP-addresses, buffers and stack space like
  the previous version. As it assembles the decruncher on the fly, it is
  too hard to precisely predict all cases where further memory areas are
  clobbered. It should be at least similar to version 1.1.5, though.

 EXOMIZER 1.1.1 - 1.1.5:

  The decruncher clobbers the stack from $0100 to the stackpointer by copying
  186 bytes of itself (and possibly some more) to the stack at $0100-$01xx.

  If the start address of the decrunched data, [start], is lower than $0835
  then the decruncher will clobber the memory from MIN([start] - 25, $07e7)
  to but not including $081d, too. This space is used as a safety buffer.

  If selected, the address $07e7 will be overwritten in order to make the
  decrunch effect visible. This address is the lower right corner of the
  screen.

 EXOMIZER 1.1:

  If the start address of the decrunched data is lower than $0826 then the
  decruncher will clobber the memory from [(the start address) - $30] to
  $0801. This space is used as a safety buffer.

  In all cases the address $07E7 will be overwritten in order to make the
  decrunch effect visible. This address is the lower right corner of the
  screen.

 EXOMIZER 1.0:

  If the start adress of the decrunched data is lower than $0817 then the
  decruncher will clobber the memory from [(the start adress) - $30] to
  $0801. This space is used as a safety buffer.

  If the start adress of the decrunched data is between $0817 and $084D
  then the decruncher will clobber the memory from $07E7 to $0801. This
  space is used as a safety buffer.


 JIFFY-DOS:

  A kernal replacement providing better disk-access by CMD.

  Used Zeropage:

   $26: ALLFLAG/RSIZE
   $27: COMSAV
   $9B: KEYBYT
   $9F: CJLA
   $A3: LDFLG/QFLAG
   $A6: TFLAG
   $B0+$B1: KEYPTR
   $B0: SPRSAV
   $B1: RASSAV
   $B2: REGSAV
   $BE: DRVBYT
   $BF: DEST


 BYTE-BOILER 1.0:

  A cruncher by Skyflash and Zizyphus of Oneway.

  Used memory:

   $A3: Temporary
   $A4: Temporary
   $C3+$C4: Temporary
   $F0-$F2: Depacker
   $F3-$F4: Depacker
   $F5-$F6: Depacker
   $F7-$F8: Depacker
   $F9-$FA: Depacker
   $FB-$FE: Depacker
   $FF: Depacker
   $0100-$01EF: Depacker
   $071E-Start of data: Tables


 The Cruncher AB 2.0:

  A level-cruncher by Skyflash and Zizyphus of Oneway.
  Very similar to ByteBoiler.

  Used zeropage:

   $FB-$FE: Temporary
   $FF: Temporary


 Memory Configuration


  The signals /CharEn, /HiRam and /LoRam are used to select the memory
  configuration. They can be set using the processor port $01. The following
  logic applies (if expression on the right side is true, area mentioned on
  the left side will be activated. Otherwise, there is RAM):

    Kernal ROM = (/HiRam)

    Basic ROM  = (/LoRam AND /HiRam)

      That means, you cannot switch in Basic when the Kernal is off. Please
      note also, that an EPROM starting at $8000 will be disabled when you
      switch off the Basic ROM.

    Char. ROM  = ((NOT (/CharEn)) AND (/LoRam OR /HiRam))

    I/O-Area   = (/CharEn AND (/LoRam OR /HiRam))

      These two areas can just be activated, if at least one other signal is
      high. Then /CharEn selects either Char. ROM or I/O-Area.

  As a result, we get the following possibilities for the corresponding
  bits of $01:


       Bit+-------------+-----------+------------+
       210| $8000-$BFFF |$D000-$DFFF|$E000-$FFFF |
  +---+---+-------------+-----------+------------+
  | 7 |111| Cart.+Basic |    I/O    | Kernal ROM |
  +---+---+-------------+-----------+------------+
  | 6 |110|     RAM     |    I/O    | Kernal ROM |
  +---+---+-------------+-----------+------------+
  | 5 |101|     RAM     |    I/O    |    RAM     |
  +---+---+-------------+-----------+------------+
  | 4 |100|     RAM     |    RAM    |    RAM     |
  +---+---+-------------+-----------+------------+
  | 3 |011| Cart.+Basic | Char. ROM | Kernal ROM |
  +---+---+-------------+-----------+------------+
  | 2 |010|     RAM     | Char. ROM | Kernal ROM |
  +---+---+-------------+-----------+------------+
  | 1 |001|     RAM     | Char. ROM |    RAM     |
  +---+---+-------------+-----------+------------+
  | 0 |000|     RAM     |    RAM    |    RAM     |
  +---+---+-------------+-----------+------------+
       |||
 /CharEn|/LoRam
        |
      /HiRam


  +------------------------------------------------------------------------
  |
  |      ZEROPAGE AND EXTENDED ZEROPAGE - DESCRIPTIONS
  |
  +------------------------------------------------------------------------
  |
  | Zeropage:
  |
  |   $00/0                   6510 On-chip Data Direction Register
  |   $01/1                   6510 On-chip 8-bit Input/Output Register
  |   $02/2                   Unused
  |   $03-$04/3-4             Jump Vector: Convert FAC to Integer
  |   $05-$06/5-6             Jump Vector: Convert Integer to Floating point
  |   $07/7                   Search Character/Temporary Integer during INT
  |   $08/8                   Flag: Scan for Quote at end of String
  |   $07-$08/7-8             Temporary Integer during OR/AND
  |   $09/9                   Screen Column for last TAB
  |   $0A/10                  Load/Verify-Flag
  |   $0B/11                  Input Buffer Pointer/Number of Subscripts
  |   $0C/12                  Flag: Default Array dimension
  |   $0D/13                  Data type Flag
  |   $0E/14                  Data type Flag
  |   $0F/15                  Flag: DATA scan/List Quote/Garbage collection
  |   $10/16                  Flag: Subscript reference/User Function call
  |   $11/17                  Input Flag
  |   $12/18                  Flag: TAN sign/Comparative result
  |   $13/19                  File number of current Input Device
  |   $14-$15/20-21           Temporary: Integer value
  |   $16/22                  Pointer: Temporary String Stack
  |   $17-$18/23-24           Last temporary String Address
  |   $19-$21/25-33           Stack for temporary Strings
  |   $22-$25/34-37           Utility Pointer Area
  |   $22-$23/34-35           First Utility Pointer
  |   $24-$25/36-37           Second Utility Pointer
  |   $26-$2A/38-42           Floating point product of Multiply and Divide
  |   $2B-$2C/43-44           Pointer: Start of BASIC Text Area
  |   $2D-$2E/45-46           Pointer: Start of BASIC Variables
  |   $2F-$30/47-48           Pointer: Start of BASIC Arrays
  |   $31-$32/49-50           Pointer: End of BASIC Arrays + 1
  |   $33-$34/51-52           Pointer: Bottom of String space
  |   $35-$36/53-54           Utility String Pointer
  |   $37-$38/55-56           Pointer: Highest Address available to BASIC
  |   $39-$3A/57-58           Current BASIC Line number
  |   $3B-$3C/59-60           Previous BASIC Line number
  |   $3D-$3E/61-62           Pointer: BASIC Statement for CONT
  |   $3F-$40/63-64           Current DATA Line number
  |   $41-$42/65-66           Pointer: Used by READ - current DATA Item
  |   $43-$44/67-68           Pointer: Temporary storage during INPUT
  |   $45-$46/69-70           Name of Variable being sought in Variable Table
  |   $47-$48/71-72           Value/Descriptor-Pointer
  |   $49-$4A/73-74           Pointer: Index Variable for FOR/NEXT loop
  |   $4B-$4C/75-76           Temporary storage for TXTPTR
  |   $4D/77                  Mask used during FRMEVL
  |   $4E-$52/78-82           Temporary storage for FLPT value
  |   $53/83                  Length of String during Garbage collection
  |   $54-$56/84-86           Jump Vector used in Function Evaluation
  |   $57-$5B/87-91           Temporary storage for FLPT value
  |   $5C-$60/92-96           Temporary storage for FLPT value
  |   $61-$66/97-102          Main Floating point Accumulator
  |   $61/97                  FAC Exponent
  |   $62-$65/98-101          FAC Mantissa
  |   $66/102                 FAC Sign
  |   $67/103                 Pointer: Series Evaluation Constant
  |   $68/104                 Bit Overflow Area during normalisation Routine
  |   $69-$6E/105-110         Auxiliary Floating point Accumulator
  |   $69/105                 AFAC Exponent
  |   $6A-$6D/106-109         AFAC Mantissa
  |   $6E/110                 AFAC Sign
  |   $6F/111                 Sign of result of Arithmetic Evaluation
  |   $70/112                 FAC low-order rounding
  |   $71-$72/113-114         Pointer: Used during CRUNCH/ASCII conversion
  |   $73-$78/115-120         CHRGET: Get next Byte of BASIC Text
  |   $79-$8A/121-138         CHRGOT: Get same Byte again
  |   $7A-$7B/122-123         Pointer: Current Byte of BASIC Text
  |   $8B-$8F/139-143         Floating RND Function Seed Value
  |   $90/144                 Kernal I/O Status Word ST
  |   $91/145                 Flag: $7F = STOP key
  |   $92/146                 Timing Constant for Tape
  |   $93/147                 Flag: 0 = Load, 1 = Verify
  |   $94/148                 Flag: Serial Bus - Output Character buffered
  |   $95/149                 Buffered Character for Serial Bus
  |   $96/150                 Cassette Sync number
  |   $97/151                 Storage of X Register during CHRIN
  |   $97/151                 Storage of Y Register during RS232 fetch
  |   $98/152                 Number of Open Files/Index to File Table
  |   $99/153                 Default Input Device (0)
  |   $9A/154                 Default Output Device (3)
  |   $9B/155                 Parity of Byte Output to Tape
  |   $9C/156                 Flag: Byte received from Tape
  |   $9D/157                 Error-Mode-Flag
  |   $9E/158                 Index to Tape File name/Header ID for Tape write
  |   $9E/158                 Tape Error log pass 1
  |   $9F/159                 Tape Error log pass 2
  |   $A0-$A2/160-162         Real-time jiffy Clock
  |   $A3/163                 Bit Counter Tape Read or Write
  |   $A3/163                 Serial Bus EOI (End Of Input) Flag
  |   $A4/164                 Pulse Counter Tape Read or Write
  |   $A4/164                 Serial Bus shift Counter
  |   $A5/165                 Tape Synchronising count down
  |   $A6/166                 Pointer: Tape I/O buffer
  |   $A7/167                 RS232 temporary for received Bit
  |   $A7/167                 Tape temporary
  |   $A8/168                 RS232 Input Bit count/Tape temporary
  |   $A9/169                 RS232 Flag: Start Bit check/Tape temporary
  |   $AA/170                 RS232 Input Byte Buffer/Tape temporary
  |   $AB/171                 RS232 Input parity/Tape temporary
  |   $AC-$AD/172-173         Pointer: Tape Buffer/Screen scrolling
  |   $AE-$AF/174-175         Tape End Address/End of Program
  |   $B0-$B1/176-177         Tape timing Constants
  |   $B2-$B3/178-179         Pointer: Start Address of Tape Buffer
  |   $B4/180                 RS232 Write bit count/Tape Read timing Flag
  |   $B5/181                 RS232 Next Bit to send/Tape Read - End of Tape
  |   $B6/182                 RS232 Output Byte Buffer/Tape Read Error Flag
  |   $B7/183                 Number of Characters in Filename
  |   $B8/184                 Current File - Logical File number
  |   $B9/185                 Current File - Secondary Address
  |   $BA/186                 Current File - First Address (Device number)
  |   $BB-$BC/187-188         Pointer: Current File name Address
  |   $BD/189                 RS232 Output Parity/Tape Byte temporary
  |   $BE/190                 Tape Input/Output Block count
  |   $BF/191                 Serial Word Buffer
  |   $C0/192                 Tape Motor Switch
  |   $C1-$C2/193-194         Start Address for LOAD and Cassette Write
  |   $C3-$C4/195-196         Pointer: Type 3 Tape LOAD and general use
  |   $C5/197                 Matrix value of last Key pressed
  |   $C6/198                 Number of Characters in Keyboard Buffer queue
  |   $C7/199                 Flag: Reverse On/Off
  |   $C8/200                 Pointer: End of Line for Input
  |   $C9-$CA/201-202         Cursor X/Y position at start of Input
  |   $CB/203                 Matrix value of last Key pressed
  |   $CC/204                 Flag: Cursor blink
  |   $CD/205                 Timer: Count down for Cursor blink toggle
  |   $CE/206                 Character under Cursor while Cursor Inverted
  |   $CF/207                 Flag: Cursor Status
  |   $D0/208                 Flag: Input from ...
  |   $D1-$D2/209-210         Pointer: Current Screen Line Address
  |   $D3/211                 Cursor Column on current Line
  |   $D4/212                 Flag: Editor in Quote Mode
  |   $D5/213                 Current logical Line length: 39 or 79
  |   $D6/214                 Current Screen Line number of Cursor
  |   $D7/215                 Current Input Character/Last Character Output
  |   $D8/216                 Count of number of inserts outstanding
  |   $D9-$F2/217-242         Screen Line Link Table
  |   $F3-$F4/243-244         Pointer: Current Color RAM Location
  |   $F5-$F6/245-246         Vector: Current Keyboard decoding Table
  |   $F7-$F8/247-248         RS232 Input Buffer Pointer
  |   $F9-$FA/249-250         RS232 Output Buffer Pointer
  |   $FB-$FE/251-254         Free ZeroPage space for User Programs
  |   $FF/255                 BASIC temporary Data Area
  |   $FF-$010A/255-266       Assembly Area for Floating point to ASCII
  |
  | Extended Zeropage:
  |
  |   $0100-$013E/256-318     Tape Input Error log
  |   $0100-$01FF/256-511     6510 Hardware Stack Area
  |   $013F-$01FF/319-511     BASIC Stack Area
  |   $0200-$0258/512-600     BASIC Input Buffer (Input Line from Screen)
  |   $0259-$0262/601-610     Active logical File numbers
  |   $0263-$026C/611-620     Active File First Addresses (Device numbers)
  |   $026D-$0276/621-630     Active File Secondary Addresses
  |   $0277-$0280/631-640     Keyboard Buffer Queue (FIFO)
  |   $0281-$0282/641-642     Pointer: Bottom of Memory for Operating System
  |   $0283-$0284/643-644     Pointer: Top of Memory for Operating System
  |   $0285/645               Serial IEEE Bus timeout defeat Flag
  |   $0286/646               Current Character Color code
  |   $0287/647               Background Color under Cursor
  |   $0288/648               High Byte of Screen Memory Address
  |   $0289/649               Maximum number of Bytes in Keyboard Buffer
  |   $028A/650               Flag: Repeat keys
  |   $028B/651               Repeat Key: Speed Counter
  |   $028C/652               Repeat Key: First repeat delay Counter
  |   $028D/653               Flag: Shift Keys
  |   $028E/654               Last Shift Key used for debouncing
  |   $028F-$0290/655-656     Vector: Routine to determine Keyboard table
  |   $0291/657               Flag: Upper/Lower Case change
  |   $0292/658               Flag: Auto scroll down
  |   $0293/659               RS232 Pseudo 6551 control Register Image
  |   $0294/660               RS232 Pseudo 6551 command Register Image
  |   $0295-$0296/661-662     RS232 Non-standard Bits/Second
  |   $0297/663               RS232 Pseudo 6551 Status Register Image
  |   $0298/664               RS232 Number of Bits left to send
  |   $0299-$029A/665-666     RS232 Baud Rate; Full Bit time microseconds
  |   $029B/667               RS232 Index to End of Input Buffer
  |   $029C/668               RS232 Pointer: High Byte of Input Buffer
  |   $029D/669               RS232 Pointer: High Byte of Output Buffer
  |   $029E/670               RS232 Index to End of Output Buffer
  |   $029F-$02A0/671-672     Temp. store for IRQ Vector during Tape I/O
  |   $02A1/673               RS232 Enables
  |   $02A2/674               TOD sense during Tape I/O
  |   $02A3/675               Temporary storage during Tape READ
  |   $02A4/676               Temporary D1IRQ Indicator during Tape READ
  |   $02A5/677               Temporary for Line Index
  |   $02A6/678               Flag: TV Standard
  |   $02A7-$02FF/679-767     Unused
  |   $02C0-$02FE/704-766     Sprite #11 Data Area
  |   $0300-$0301/768-769     Vector: BASIC Error Message
  |   $0302-$0303/770-771     Vector: BASIC Input Line and Decode
  |   $0304-$0305/772-773     Vector: BASIC Tokenise Routine
  |   $0306-$0307/774-775     Vector: BASIC LIST Routine
  |   $0308-$0309/776-777     Vector: BASIC Character dispatch Routine
  |   $030A-$030B/778-779     Vector: BASIC Token evaluation
  |   $030C/780               Storage for 6510 Accumulator during SYS
  |   $030D/781               Storage for 6510 X-Register during SYS
  |   $030E/782               Storage for 6510 Y-Register during SYS
  |   $030F/783               Storage for 6510 Status Register during SYS
  |   $0310/784               USR Function JMP Instruction
  |   $0311-$0312/785-786     USR Address
  |   $0313/787               Unused
  |   $0314-$0315/788-789     Vector: Hardware IRQ Interrupt Address
  |   $0316-$0317/790-791     Vector: BRK Instruction Interrupt Address
  |   $0318-$0319/792-793     Vector: Hardware NMI Interrupt Address
  |   $031A-$031B/794-795     Vector: Kernal OPEN Routine
  |   $031C-$031D/796-797     Vector: Kernal CLOSE Routine
  |   $031E-$031F/798-799     Vector: Kernal CHKIN Routine
  |   $0320-$0321/800-801     Vector: Kernal CHKOUT Routine
  |   $0322-$0323/802-803     Vector: Kernal CLRCHN Routine
  |   $0324-$0325/804-805     Vector: Kernal CHRIN Routine
  |   $0326-$0327/806-807     Vector: Kernal CHROUT Routine
  |   $0328-$0329/808-809     Vector: Kernal STOP Routine
  |   $032A-$032B/810-811     Vector: Kernal GETIN Routine
  |   $032C-$032D/812-813     Vector: Kernal CLALL Routine
  |   $032E-$032F/814-815     User Defined Vector
  |   $0330-$0331/816-817     Vector: Kernal LOAD Routine
  |   $0332-$0333/818-819     Vector: Kernal SAVE Routine
  |   $0334-$033B/820-827     Unused
  |   $033C-$03FB/828-1019    Tape I/O Buffer
  |   $0340-$037E/832-894     Sprite #13
  |   $0380-$03BE/896-958     Sprite #14
  |   $03C0-$03FE/960-1022    Sprite #15
  |   $03FC-$03FF/1020-1023   Unused
  |
  +------------------------------------------------------------------------



  $00/0:   6510 On-chip Data Direction Register - c64ref 

   +----------+---------------------------------------------------+
   | Bit  7   |   Undefined                                       |
   | Bit  6   |   Only available on C128, otherwise undefined     |
   | Bits 0-5 |   1 = Output, 0 = Input (see $01 for description) |
   +----------+---------------------------------------------------+
   Default Value is $2F/47 (%00101111).

Kernal-Reference:

 LDA $00,X   : $F5E2
 STA $00     : $FDDB
     $00,X   : $B4D7



  $01/1:   6510 On-chip 8-bit Input/Output Register - c64ref 

   +----------+---------------------------------------------------+
   | Bits 7-6 |   Undefined                                       |
   | Bit  5   |   Cassette Motor Control (0 = On, 1 = Off)        |
   | Bit  4   |   Cassette Switch Sense: 1 = Switch Closed        |
   | Bit  3   |   Cassette Data Output Line                       |
   | Bit  2   |   /CharEn-Signal (see Memory Configuration)       |
   | Bit  1   |   /HiRam-Signal  (see Memory Configuration)       |
   | Bit  0   |   /LoRam-Signal  (see Memory Configuration)       |
   +----------+---------------------------------------------------+
   Default Value is $37/55 (%00110111).

  (German-?)C128 only:

   +--------+-----------------------------------------------------+
   | Bit  6 |   ASCII/DIN-Switch (0=DIN, 1=ASCII)                 |
   +--------+-----------------------------------------------------+
   Default Value is $77/119 (%01110111).

  Flash_8 only:

   +--------+-----------------------------------------------------+
   | Bit  7 |   1 = 1 MHz, 0 = 8 MHz (if DIP1 closed)             |
   | Bit  6 |   (?)                                               |
   +--------+-----------------------------------------------------+
   Default Value is $37/55 (%00110111).

Kernal-Reference:

 ASL $01,X   : $B9A6
 BIT $01     : $F830 $F834
 INC $01,X   : $B9AA
 LDA $01     : $EA61 $EA6B $EA75 $F8AB $FBBF $FCCA
     $01,X   : $F5E6
     $0001,Y : $B8CB
 LDY $01,X   : $B991
 LSR $01,X   : $B89E
 ROR $01,X   : $B9AC $B9AE
 SBC $01,X   : $B8CE
 STA $01     : $EA79 $F8AF $FBC3 $FCCE $FDD7
     $01,X   : $B4DB
 STY $01,X   : $B997



 $02/2:   Unused - c64ref 

Kernal-Reference:

 LDA $0002,Y : $B8C4
 LDY $02,X   : $B98D
 ROR $02,X   : $B9B0
 SBC $02,X   : $B8C7
 STA $02,X   : $B4DF
     $0002,Y : $FD53
 STY $02,X   : $B993



 $03-$04/3-4:   Jump Vector: Convert FAC to Integer in (A/Y)

   Points to $B1AA

Kernal-Reference:

 LDA $0003,Y : $B8BD
 LDY $03,X   : $B989
 ROR $03,X   : $B9B2
 SBC $03,X   : $B8C0
 STA $03     : $E3DC
 STY $03,X   : $B98F

 LDA $0004,Y : $B8B6
 LDY $04,X   : $B985
 ROR $04,X   : $B9B4
 SBC $04,X   : $B8B9
 STY $04     : $E3DE
     $04,X   : $B98B



 $05-$06/5-6:   Jump Vector: Convert Integer in (A/Y) to Floating point
                             in (FAC)
   Points to $B391

Kernal-Reference:

 STA $05     : $E3D4

 STY $06     : $E3D6



 $07/7:   Search Character/Temporary Integer during INT - c64ref 
 $07-$08/7-8:   Temporary Integer during OR/AND - c64ref 

Kernal-Reference:

 ADC $07     : $A997
 AND $07     : $B00F
 CMP $07     : $B49C
 LDA $07     : $E011
 LDX $07     : $A913
 LDY $07     : $BF9C
 STA $07     : $A915 $A975 $AC61 $AC65 $AC6D $AFF4 $BCE4
 STX $07     : $A90B $B489



 $08/8:   Flag: Scan for Quote at end of String - c64ref 
 $07-$08/7-8:   Temporary Integer during OR/AND - c64ref 

Kernal-Reference:

 AND $08     : $B006
 CMP $08     : $A5EA $A91D $B4A0
 LDA $08     : $A911
 STA $08     : $A592 $A5E3 $AC72 $AFFA
 STX $08     : $A917 $B48B
 STY $08     : $A90F



 $09/9:   Screen Column for last TAB - c64ref 

Kernal-Reference:

 SBC $09     : $AB0A
 STY $09     : $AAFD



 $0A/10:   Flag: 0 = Load, 1 = Verify - c64ref 

Kernal-Reference:

 LDA $0A     : $E16F $E17A
 STA $0A     : $E16A



 $0B/11:   Input Buffer Pointer/Number of Subscripts - c64ref 

Kernal-Reference:

 ADC $0B     : $A4FD
 DEC $0B     : $B2A6 $B324
 EOR $0B     : $AFF2 $AFF8 $B004 $B008 $B00D $B011
 INC $0B     : $A5F7
 LDA $0B     : $B194 $B256 $B27F
 LDY $0B     : $A51F
 ORA $0B     : $A5C5
 STA $0B     : $B2EC
 STY $0B     : $A4A2 $A5B0 $AFEB $B209



 $0C/12:   Flag: Default Array dimension - c64ref 

Kernal-Reference:

 BIT $0C     : $B28A
 LDA $0C     : $B1D1 $B24F $B2E5
 STA $0C     : $B216
 STX $0C     : $B090



 $0D/13:   Data type Flag - c64ref 

   $00 = Numeric, $FF = String

Kernal-Reference:

 ADC $0D     : $ADE1
 BIT $0D     : $AAB8 $AC54 $AD90
 LDA $0D     : $A9B4 $AF33 $B1D6 $B37D
 LSR $0D     : $AE07
 STA $0D     : $AE88 $B030 $B0C0 $B20F
 STX $0D     : $B0A1 $B393 $B787
 STY $0D     : $B4EA



 $0E/14:   Data type Flag - c64ref 

   $00 = Floating point, $80 = Integer

Kernal-Reference:

 BIT $0E     : $AF5D
 LDA $0E     : $A9B1 $AC8C
 ORA $0E     : $B1D3
 STA $0E     : $B0CE $B212
 STX $0E     : $B0A3



 $0F/15:   Flag: DATA scan/List Quote/Garbage collection - c64ref 

Kernal-Reference:

 BIT $0F     : $A598 $A720
 LDA $0F     : $A6FA $B518
 LSR $0F     : $B4F4
 STA $0F     : $A5DC $A6FE $B521
 STY $0F     : $A580 $A6CB



 $10/16:   Flag: Subscript reference/User Function call - c64ref 

Kernal-Reference:

 LDA $10     : $B0C8
 ORA $10     : $B0DE
 STA $10     : $A68B $A744 $B3BE $B3E8
 STY $10     : $B0E9



 $11/17:   Input Flag: $00 = INPUT, $40 = GET, $98 = READ - c64ref 

Kernal-Reference:

 BIT $11     : $AC31 $AC58
 LDA $11     : $AB4D
 LDX $11     : $ACE3
 STA $11     : $AC0F



 $12/18:   Flag: TAN sign/Comparative result - c64ref 

Kernal-Reference:

 AND $12     : $B075
 LDA $12     : $E297 $E2D0
 STA $12     : $AE68 $E29B $E2B9



 $13/19:   File number of current Input Device - c64ref 

Kernal-Reference:

 BIT $13     : $AADC
 LDA $13     : $AAD3 $AB3B $AB62 $ABB5 $ABD9 $ABEF $ABF9 $AC43 $ACF0
 LDX $13     : $ABA0
 STA $13     : $A44C $E380 $E3F2
 STX $13     : $AA91 $AB8D $ABAD $ABBC



 $14-$15/20-21:   Temporary: Integer value

Kernal-Reference:

 ADC $14     : $A987
 ASL $14     : $A991
 CPX $14     : $A6E2
 JMP ($0014) : $E144
 LDA $14     : $A50D $A62E $A6BD $A97F $A995 $B810
     ($14),Y : $B818 $B840
 SBC $14     : $A8A9
 STA $14     : $A6C5 $A989 $A999 $B81C
     ($14),Y : $B82A
 STX $14     : $A96D
 STY $14     : $B808

 ADC $15     : $A98D
 CMP $15     : $A6DE
 INC $15     : $A99D
 LDA $15     : $A623 $A977 $B80D
 LDY $15     : $A50F
 ORA $15     : $A6BF
 ROL $15     : $A993
 SBC $15     : $A8AD
 STA $15     : $A6C7 $A98F $B80A $B81F
 STX $15     : $A96F



 $16/22:   Pointer: Temporary String Stack - c64ref 

Kernal-Reference:

 CMP $16     : $B544
 LDX $16     : $B4CA
 STA $16     : $B6E3
 STX $16     : $A67C $B4F1 $E400



 $17-$18/23-24:   Last temporary String Address

Kernal-Reference:

 CMP $17     : $B6DF
 STA $17     : $B6E7
 STX $17     : $B4EC

 BIT $18     : $F5A8 $F68C
 CPY $18     : $B6DB
 STA $18     : $E3F4



 $19-$21/25-33:   Stack for temporary Strings



 $22-$25/34-37:   Utility Pointer Area
 $22-$23/34-35:   First Utility Pointer
 $24-$25/36-37:   Second Utility Pointer

Kernal-Reference:

 ADC $22     : $A4D8 $A54B $ADED $B5A6 $B5F9 $B71D $B7C2
 CPX $22     : $A403
 INC $22     : $AE3C
 JMP ($0022) : $AE55
 LDA $22     : $A98B $B5EA
     ($22),Y : $A456 $A4DF $A53E $A545 $AA1D $AB2B $B583 $B587 $B58B $B592
               $B59F $B5BD $B5C2 $B5C7 $B5CC $B5D0 $B691 $B6B4 $B6B8 $B6BC
               $B792 $BA92 $BA97 $BA9C $BAA1 $BAB0 $BBA8 $BBAD $BBB2 $BBB7
               $BBC0 $E0A7 $E0AC $E0B2 $E0B7
 LDX $22     : $B7BD $E25D
 LDY $22     : $B2A4 $B31E
 ROL $22     : $A982 $A985
 SBC $22     : $A3D3 $A3DE
 STA $22     : $A3C4 $A400 $A440 $A4B1 $A537 $A784 $A979 $ADEA $AE3A $B540
               $B555 $B57D $B5A8 $B5FB $B6AA $B71F $BA8C $BBA2
     ($22),Y : $A550 $A557 $BBDF $BBE4 $BBE9 $BBF2 $BBF7
 STX $22     : $A559 $B688 $B6D6 $BBD7 $E0A1
 STY $22     : $B34C

 DEC $23     : $A4DC
 INC $23     : $A4E6 $B5AC $B5FF $B723
 LDA $23     : $A552
 LDX $23     : $B5AE $B5EC $B601 $B7C6
 LDY $23     : $E25F
 STA $23     : $A445 $A4AD $A55B $AE3F
 STX $23     : $B542 $B557 $B57F
 STY $23     : $A539 $A786 $B68A $B6AC $B6D8 $BA8E $BBA4 $BBD9 $E0A3

 LDA ($24),Y : $B7D1 $BC61 $BC67 $BC71 $BC7A $BC81 $BC8C
 STA $24     : $A4C1 $AD3D $B7C4 $BC5B
     ($24),Y : $A4E1 $B7D5 $B7E0

 DEC $25     : $A4D5
 INC $25     : $A4E8
 STA $25     : $A4B5
 STX $25     : $B7CD
 STY $25     : $BC5D



 $26-$2A/38-42:   Floating point product of Multiply and Divide - c64ref 

  Used by Jiffy-DOS: ALLFLAG/RSIZE ($26)
  Used by Jiffy-DOS: COMSAV ($27)

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 LDA $26     : $BA77 $BB8F
 ROR $26     : $BA7D
 STA $26     : $BA35 $BA7B

 LDA $27     : $BA71 $BB93
 ROR $27     : $BA7F
 STA $27     : $BA37 $BA75

 ADC $28     : $B36F
 LDA $28     : $BA6B $BB97
 ROR $28     : $BA81
 STA $28     : $B350 $BA39 $BA6F
 STX $28     : $B337

 ADC $29     : $B373
 LDA $29     : $BA65 $BB9B
 ROR $29     : $BA83
 STA $29     : $B355 $BA3B $BA69
     $29,X   : $BB44



 $2B-$2C/43-44:   Pointer: Start of BASIC Text Area

   Default Value is $0801

Kernal-Reference:

 INC $2B     : $E41B
 LDA $2B     : $A533 $A613 $A64C $A68F $A81E $A8BC $E422
 LDX $2B     : $E171
 SBC $2B     : $E433
 STA ($2B),Y : $A647 $A64A $E419
 STX $2B     : $E406

 INC $2C     : $E41F
 LDA $2C     : $A653 $A695
 LDX $2C     : $A615 $A8BE
 LDY $2C     : $A535 $A822 $E173 $E424
 SBC $2C     : $E438
 STY $2C     : $E408



 $2D-$2E/45-46:   Pointer: Start of BASIC Variables

  Used by pucrunch: Temporary (LZPOS),
                              after depacking: End of Program

Kernal-Reference:

 CMP $2D     : $AA47
 LDA $2D     : $A4AF $A4F9 $A66B $B0EB $B551
 LDX $2D     : $E159
 SBC $2D     : $A4CF
 STA $2D     : $A4BF $A51B $A651
 STX $2D     : $E1A7

 CPY $2E     : $AA3F
 LDA $2E     : $A4C3
 LDX $2E     : $B0ED $B553
 LDY $2E     : $A501 $A66D $E15B
 STA $2E     : $A4C7 $A657
 STY $2E     : $A51D $E1A9



 $2F-$30/47-48:   Pointer: Start of BASIC Arrays

Kernal-Reference:

 CMP $2F     : $B0F7 $B55D
 LDA $2F     : $B143
 LDX $2F     : $B218
 STA $2F     : $A66F $B165

 CPX $30     : $B0F3 $B559
 LDA $30     : $B21A
 LDY $30     : $B145
 STY $30     : $A671 $B167



 $31-$32/49-50:   Pointer: End of BASIC Arrays + 1

Kernal-Reference:

 CMP $31     : $B507 $B576
 CPX $31     : $B224
 LDA $31     : $A517 $B14B $B2D6 $B534
 SBC $31     : $B38A
 STA $31     : $A3BB $A673 $B2BC

 CMP $32     : $B220
 CPX $32     : $B572
 CPY $32     : $B501
 LDA $32     : $B2DE
 LDX $32     : $B536
 LDY $32     : $A519 $B14D
 SBC $32     : $B38F
 STY $32     : $A3BD $A675 $B2BE



 $33-$34/51-52:   Pointer: Bottom of String space

Kernal-Reference:

 ADC $33     : $B4FA $B6CD
 CMP $33     : $A40E $A430 $AA39
 CPX $33     : $B5D8 $B6C7
 LDA $33     : $B388 $B620
 STA $33     : $A667 $B50B $B6CF
 STX $33     : $B52A $E412

 CMP $34     : $AA30 $B5D2
 CPY $34     : $A408 $A42A $B6C3
 INC $34     : $B6D3
 LDA $34     : $B38D
 LDX $34     : $B622
 LDY $34     : $B4FC
 STA $34     : $B52C
 STY $34     : $A669 $B50D $E414



 $35-$36/53-54:   Utility String Pointer

Kernal-Reference:

 ADC $35     : $B69A
 STA $35     : $B50F $B69C
     ($35),Y : $B693

 INC $36     : $B6A0
 STY $36     : $B511



 $37-$38/55-56:   Pointer: Highest Address available to BASIC

   Default Value is $A000

Kernal-Reference:

 LDA $37     : $A663 $E430
 LDX $37     : $B526
 STX $37     : $E0FF $E40E

 BIT $38     : $AD8E
 LDA $38     : $B528 $E436
 LDY $38     : $A665
 STY $38     : $E0FD $E410



 $39-$3A/57-58:   Current BASIC Line number

Kernal-Reference:

 LDA $39     : $A76A $A841 $A891 $A8A7
 LDX $39     : $BDCB
 STA $39     : $A7D1 $A86C $A8ED $AB5B $AD64

 LDA $3A     : $A767 $A88E $A8AB $BDC9
 LDX $3A     : $A838 $B3A6
 LDY $3A     : $A46C $A843
 STA $3A     : $A7D6 $A8F0 $AD69
 STX $3A     : $A492
 STY $3A     : $A86E $AB5D



 $3B-$3C/59-60:   Previous BASIC Line number

Kernal-Reference:

 LDA $3B     : $A868
 STA $3B     : $A845

 LDY $3C     : $A86A
 STY $3C     : $A847



 $3D-$3E/61-62:   Pointer: BASIC Statement for CONT

Kernal-Reference:

 LDA $3D     : $A862 $AB72
 STA $3D     : $A7BA $A83D

 LDY $3E     : $A85B $AB74
 STA $3E     : $A689
 STY $3E     : $A7BC $A83F



 $3F-$40/63-64:   Current DATA Line number

Kernal-Reference:

 LDA $3F     : $AB57
 STA $3F     : $ACC9

 LDY $40     : $AB59
 STA $40     : $ACCF



 $41-$42/65-66:   Pointer: Used by READ - current DATA Item Address

Kernal-Reference:

 LDX $41     : $AC06
 STA $41     : $A827

 LDY $42     : $AC08
 STY $42     : $A829



 $43-$44/67-68:   Pointer: Temporary storage of Pointer during INPUT Routine

Kernal-Reference:

 LDA $43     : $ACDF
     ($43),Y : $ACEC
 LDX $43     : $AC24
 STA $43     : $ACA1
 STX $43     : $AC11

 LDY $44     : $AC26 $ACE1
 STY $44     : $AC13 $ACA3



 $45-$46/69-70:   Name of Variable being sought in Variable Table

Kernal-Reference:

 CMP $45     : $B22D
 LDA $45     : $B0FB $B128 $B16B $B1E0 $B26D $B32C
 LDX $45     : $AF2F
 ORA $45     : $B0D0
 STA $45     : $B092 $B0D2 $B1E7

 LDA $46     : $B101 $B170 $B1DD $B231 $B275 $B331
 LDY $46     : $AF31 $B12A
 STA $46     : $B1EA
 STX $46     : $B0DB



 $47-$48/71-72:   Pointer: to value of (VARNAM) if Integer, to descriptor - c64ref 
                           if String

Kernal-Reference:

 LDA $47     : $B349 $B3D2 $B435
     ($47),Y : $B418
 LDY $47     : $BEB4
 STA $47     : $B18F $B341 $B40D
 STY $47     : $BE9D

 LDA $48     : $B3CF $B432
 LDY $48     : $B41E
 STA $48     : $B346 $B415
 STY $48     : $B191



 $49-$4A/73-74:   Pointer: Index Variable for FOR/NEXT loop - c64ref 

Kernal-Reference:

 AND $49     : $B844
 LDA $49     : $A3A9 $A7A8 $AD4B $E1CA $E238 $E24C
 LDX $49     : $BBD0 $E1FB
 LDY $49     : $A6EF
 STA $49     : $A39D $A9A8 $AC18 $AD27
     ($49),Y : $A9CE $A9D3 $AA73 $AA78 $AA7D
 STX $49     : $B830 $E1EE $E224
 STY $49     : $A6E8 $A728

 EOR $4A     : $B842
 LDA $4A     : $A396 $A7A5
 LDX $4A     : $E24A
 LDY $4A     : $A9DA $AD4D $BBD2
 STA $4A     : $A3A2 $A8D6
 STX $4A     : $B83C $E234
 STY $4A     : $A9AA $AC1A $AD29



 $4B-$4C/75-76:   Temporary storage for TXTPTR during READ, INPUT and GET - c64ref 

Kernal-Reference:

 LDA $4B     : $ACA5
 LDY $4B     : $ADFE
 STA $4B     : $AC20
 STY $4B     : $AE64

 LDY $4C     : $ACA7
 STY $4C     : $AC22



 $4D/77:   Mask used during FRMEVL - c64ref 

Kernal-Reference:

 CMP $4D     : $ADCB
 DEC $4D     : $B032
 EOR $4D     : $ADC9
 LDA $4D     : $AE2B
 LDX $4D     : $ADD7
 STA $4D     : $ADB6 $ADCF $AE15



 $4E-$52/78-82:   Temporary storage for FLPT value - c64ref 

Kernal-Reference:

 LDA $4E     : $B3FA
     ($4E),Y : $B40B $B411 $B429 $B42E $B614
 ORA $4E     : $B608
 STA $4E     : $B3ED $B404 $B43C $B5EE
     ($4E),Y : $B452 $B456 $B45A $B45E $B462 $B630 $B638
 STY $4E     : $B532

 LDA $4F     : $B3F7 $B606
 STA $4F     : $B407 $B43F
 STX $4F     : $B5F0
 STY $4F     : $B3EF $B530

 CMP ($50),Y : $B703
 LDA $50     : $AA59 $B663 $B712
     ($50),Y : $AA71 $AA76 $AA7B $B708
 SBC ($50),Y : $B730 $B753
 STA $50     : $AA68 $B76E
 STX $50     : $B479

 LDY $51     : $AA5B $B665 $B714
 STA $51     : $B771
 STY $51     : $AA6A $B47B



 $53/83:   Length of String Variable during Garbage collection - c64ref 

Kernal-Reference:

 LDA $53     : $B5F2 $B5F6
 STA $53     : $B54F $B56C $E3EC



 $54-$56/84-86:   Jump Vector used in Function Evaluation - c64ref 

   JMP followed by Address: $4C,$LB,$HB

Jump from $AFE0

Kernal-Reference:

 STA $54     : $E3C1

 LDA $55     : $B60C $B773
 LDY $55     : $B62B
 STA $55     : $AFD9 $B5F4 $B612 $B767

 ADC $56     : $B8B2 $B8FE
 LDA $56     : $E029
 STA $56     : $AFDE $E000
 STX $56     : $B871
 STY $56     : $B88D



 $57-$5B/87-91:   Temporary storage for FLPT value

Kernal-Reference:

 LDA $57,X   : $A417

 ADC $58     : $B2B2 $B33F $B58D
 CMP $58     : $B5B4
 LDA $58     : $A3DC $B160 $B56E $B62E
 STA $58     : $A3E0 $A4FF $B159 $B1A0 $B566 $B58F $B624
     ($58),Y : $A3EA $A3F1 $B2C9

 ADC $59     : $B2AA $B344 $B594
 CPX $59     : $B5B0
 DEC $59     : $A3E4 $A3F5 $B2CD
 INC $59     : $B2D3 $B633
 LDA $59     : $B635
 LDX $59     : $B570
 LDY $59     : $B162
 STA $59     : $B2AE $B596
 STX $59     : $B568 $B626
 STY $59     : $A508 $B15B $B1A2

 LDA $5A     : $A3C0 $A3D0
     ($5A),Y : $A3E8 $A3EF
 STA $5A     : $A3D5 $A4FB $B14F $B618

 DEC $5B     : $A3D9 $A3F3
 LDA $5B     : $A3C7
 STA $5B     : $B61E
 STY $5B     : $A503 $B151



 $5C-$60/92-96:   Temporary storage for FLPT value

Kernal-Reference:

 DEC $5D     : $B378 $BE24 $BEA8
 INC $5D     : $BD6F $BE2B
 LDA $5D     : $BE37
 SBC $5D     : $BD4A
 STA $5D     : $B359 $BE09
 STX $5D     : $BE4C
 STY $5D     : $AF52
     $5D,X   : $BCF7

 ADC $5E     : $BDA3
 DEC $5E     : $BD5E
 INC $5E     : $BD55
 LDA $5E     : $BD47 $BD91
 LDX $5E     : $BED5
 SBC $5E     : $BD3C $BEDE
 STA $5E     : $BD4C $BDAE $BE4A
 STY $5E     : $AF4B

 ADC $5F     : $B199 $B23B $B616
 BIT $5F     : $BD43 $BD6B
 CMP ($5F),Y : $A625 $A631 $B0FD $B104 $B233 $B25A $B2FC $B304
 CPX $5F     : $B5E2
 LDA $5F     : $A4B7 $A4CD $A8C5 $B10A $B185
     ($5F),Y : $A4AB $A61D $A638 $A63C $A6CD $A6D8 $A6DC $A703 $A708 $A70C
               $B22A $B238 $B23F $B2EA $B34E $B353
 ROR $5F     : $BD41
 SBC $5F     : $A3C2 $B2D8
     ($5F),Y : $A4BA
 STA $5F     : $A619 $B0F1 $B147 $B538
     ($5F),Y : $A525 $B16D $B172 $B177 $B17A $B17D $B180 $B183 $B26F $B277
               $B284 $B297 $B29B $B2DC $B2E3
 STX $5F     : $A70E $B21C $B5E6

 ADC $60     : $B241
 BIT $60     : $BD35 $BD99
 CMP $60     : $B5DC
 LDA $60     : $A4B3 $A8CB $B61A
     $60,X   : $BC11
 LDY $60     : $B18A $B19B
 ROR $60     : $BD2E
 SBC $60     : $A3C9 $A4C9 $B2E1
 STA $60     : $A710 $B21E $B5E8
     $60,X   : $BC04
 STX $60     : $A61B $B0EF $B53A
 STY $60     : $B149



 $61-$66/97-102:   Main Floating point Accumulator - c64ref 
 $61/97:   FAC Exponent - c64ref 

Kernal-Reference:

 ADC $61     : $BABC
 CPX $61     : $BC6D
 INC $61     : $B938 $BAF4 $BB21
 LDA $61     : $A937 $AE52 $AE80 $B1BF $B4D5 $B7FB $B85D $B9F4 $BAB4 $BBF5
               $BC1B $BC2B $BC9B $BCCC $BFB4 $E005 $E0E7 $E316
 LDX $61     : $B052 $BD8C $BDF1
 LDY $61,X   : $E020
 SBC $61     : $B04A $B87B $B92C $BB1A
 STA $61     : $B037 $B484 $B8F9 $B934 $B9FB $BAC8 $BB1C $BBC2 $BCE0 $E0ED
     $61,X   : $A422 $E022
 STX $61     : $BC4F
 STY $61     : $A9E9 $B4A9 $B881



 $62-$65/98-101:   FAC Mantissa - c64ref 

Kernal-Reference:

 AND $62     : $A77C $BBF0
 CMP $62     : $BC75
     ($62),Y : $B068
 CPY $62     : $BB2B
 INC $62     : $B97B
 LDA $62     : $AE4F $B4D9 $B914 $B94D $BA51 $BC44 $BE80 $E0D5
 LDX $62     : $B8DB
 LSR $62     : $BCC0
 ORA $62     : $BCC2
 ROL $62     : $B927
 ROR $62     : $B93C
 SBC $62     : $BB72
 STA $62     : $A77E $B395 $B491 $B8D0 $B918 $B951 $BB91 $BBBD $BC3C $BCC4
               $BCE9 $BDCD $BE85 $E0A9
     ($62),Y : $B6F9
 STX $62     : $B039 $B480 $B8E1 $E0D9
 STY $62     : $AF8F

 CMP $63     : $BC7C
 CPY $63     : $BB31
 INC $63     : $B977
 LDA $63     : $AE4C $B4DD $B90E $B953 $BA4C $BBE7 $BE79
 LDX $63     : $B8DF $E0DB
 LDY $63     : $AA16
 ROL $63     : $B925
 ROR $63     : $B93E
 SBC $63     : $BB6C
 STA $63     : $B8C9 $B912 $B957 $BB95 $BBB4 $BC40 $BCEB $BE7E $E0B4 $E0DF
 STX $63     : $B8E5 $BDCF
 STY $63     : $AF89 $B03B $B397 $B482 $B493

 ADC $64     : $B31A
     ($64),Y : $B654
 CMP $64     : $BC83
 CPY $64     : $BB37
 INC $64     : $B973
 LDA $64     : $A9CC $AA45 $AA4B $AE49 $AEDC $AF15 $AFA0 $AFC2 $AFF0 $B00B
               $B1AD $B1F7 $B640 $B6A6 $B804 $B908 $B959 $BA47 $BBE2 $BE72
               $E0DD
     ($64),Y : $AA2E $AA37 $AA54 $AF63 $AF67
 LDX $64     : $AA14 $B475 $B7A4 $B8E3
 ROL $64     : $B923
 ROR $64     : $B940
 SBC $64     : $AF21 $BB66
 STA $64     : $AF2B $B2F7 $B8C2 $B90C $B95D $BB99 $BBAF $BC4D $BCED $BE77
               $E0AE
 STX $64     : $AF87 $B4E3 $B8E9 $E0E1

 ADC $65     : $B320
 CMP $65     : $B759
 CPY $65     : $BB3D
 DEC $65     : $A957
 INC $65     : $B96F
 LDA $65     : $A9D1 $AA18 $AE46 $AED7 $AF19 $AFBF $AFF6 $B002 $B1FC $B63D
               $B75D $B902 $B95F $BA42 $BBDD $BCE2 $BE6A
 LDX $65     : $B7A8 $B8E7 $E0D3
 LDY $65     : $AA3D $AA4D $AFA2 $B1AF $B477 $B6A8 $B806
 ROL $65     : $B921
 ROR $65     : $B942
 SBC $65     : $AF25 $BB60 $BC8E
 STA $65     : $AF8B $B2FA $B739 $B8BB $B906 $B963 $BB9D $BBAA $BC4B $BCEF
               $BE70 $E0B9 $E0D7
 STX $65     : $B8ED
 STY $65     : $AF2D $B4E5



 $66/102:   FAC Sign - c64ref 

Kernal-Reference:

 BIT $66     : $BCA2 $BDE1
 EOR $66     : $AE7C $BAA5 $BC69 $BD88
 LDA $66     : $A778 $AE33 $B1BB $B7F7 $B853 $B947 $BAD4 $BBEC $BC2F $BC92
               $BCBC $BCD7 $BFB8 $E28B $E293 $E30E
 LDX $66     : $B05F
 LSR $66     : $BC58
 STA $66     : $AD49 $B056 $B857 $B8FB $B94B $BAD1 $BBB9 $BBFE $BC53 $BDEA
               $BFBC $E0E5 $E2CE
 STY $66     : $A9EB $B885 $BCD9



 $67/103:   Pointer: Series Evaluation Constant - c64ref 

Kernal-Reference:

 DEC $67     : $E088
 LDA $67     : $BD62
 STA $67     : $E062
 STX $67     : $BD02



 $68/104:   Bit Overflow Area during normalisation Routine - c64ref 

Kernal-Reference:

 LDA $68,X   : $BC02
 LDY $68     : $B995
 STA $68     : $BCA9 $E3F0
     $68,X   : $BC13
 STY $68     : $BCB8 $BCC9



 $69-$6E/105-110:   Auxiliary Floating point Accumulator - c64ref 
 $69/105:   AFAC Exponent - c64ref 

Kernal-Reference:

 LDA $69     : $B875 $BAB7 $BF7D
     $69,X   : $E01E
 STA $69     : $AE6B $BAB2
 STY $69,X   : $E024



 $6A-$6D/106-109:   AFAC Mantissa - c64ref 

Kernal-Reference:

 ADC $6A     : $B916 $BA79
 AND $6A     : $B01F
 LDA $6A     : $BB70
 LDY $6A     : $BB29
 ROL $6A     : $BB55
 STA $6A     : $AE6E $B021 $BAAD $BB74

 ADC $6B     : $B910 $BA73
 LDA $6B     : $BB6A
 LDY $6B     : $BB2F
 ROL $6B     : $BB53
 STA $6B     : $AE71 $BA9E $BB6E

 ADC $6C     : $B90A $BA6D
 LDA $6C     : $B03D $BB64
     ($6C),Y : $B066
 LDY $6C     : $BB35
 ROL $6C     : $BB51
 STA $6C     : $AE74 $BA99 $BB68
 STX $6C     : $B044

 ADC $6D     : $B904 $BA67
 ASL $6D     : $BB4F
 LDA $6D     : $BB5E
 LDY $6D     : $B03F $BB3B
 STA $6D     : $AE77 $BA94 $BB62
 STY $6D     : $B046



 $6E/110:   AFAC Sign - c64ref 

Kernal-Reference:

 EOR $6E     : $B859
 LDA $6E     : $B01B $BAA9 $BBFC $BD86 $BF8B
 LDX $6E     : $E272
 LDY $6E     : $B883
 STA $6E     : $AE7A $BAA3



 $6F/111:   Sign of result of Arithmetic Evaluation - c64ref 

Kernal-Reference:

 ADC $6F     : $B4AC
 BIT $6F     : $B8A3
 LDA $6F     : $B66D $BACF
     ($6F),Y : $B498 $B651 $B67C $B680 $B684
 LDX $6F     : $B4C3
 STA $6F     : $AA5D $AE7E $B48D $B64A $B85B $BAA7 $BD8A $E03C $E27F
 STX $6F     : $BAEF $BB07



 $70/112:   FAC low-order rounding - c64ref 

Kernal-Reference:

 ASL $70     : $B91F $BC1F
 CMP $70     : $BC8A
 INC $70     : $B96B
 LDA $70     : $B4B7 $B89C $B965 $B9A2 $BA3D $BFF4
 LDX $70     : $B4B0 $B86F $B8EB
 LDY $70     : $B4C5 $B66F
 ROR $70     : $B944 $BA85
 STA $70     : $AF39 $B64D $B8B4 $B900 $B969 $BB84 $BC51 $E02B $E0E9
 STX $70     : $BC09 $BC18
 STY $70     : $AA5F $B48F $B4E7 $B895 $B8EF $B987 $BBC4 $BBF9 $BCD5



 $71-$72/113-114:   Pointer: Used during CRUNCH/ASCII conversion

Kernal-Reference:

 ASL $71     : $B367
 INC $71     : $A9F5
 LDA $71     : $E073
     ($71),Y : $E060
 LDX $71     : $B7E2
 LDY $71     : $A5C7 $A9F7 $AA07 $B2C4 $BE53 $BE9F $BEC4 $E064
 ORA $71     : $B311
 STA $71     : $B2F0 $B4AE $E043 $E059 $E06C $E07D
 STX $71     : $B27D $B2A0 $B322 $B7B9
 STY $71     : $A5AC $A9ED $AF4E $BDEC $BE64 $BEB2

 DEC $72     : $B2CF
 INC $72     : $B2C2 $E06A
 LDA $72     : $B30F
 LDY $72     : $B7E4 $E06E $E075
 ROL $72     : $B369
 STA $72     : $B2A2 $B2F2 $B328
 STX $72     : $B4B5
 STY $72     : $B269 $B7BB $E045 $E05B $E07F



 $73-$78/115-120:   CHRGET: Get next Byte of BASIC Text

Jump from $0082, $A48A, $A6B3, $A799, $A7E4, $A801, $A812, $A95F, $A99F,
          $AB13, $AB82, $AC51, $AD84, $ADD1, $AE8A, $AEA5, $AF05, $AFAA,
          $B0A5, $B0B0, $B0D8, $B1B2, $B79B, $BD0A, $BD17, $BD30:

0073: E6 7A     INC $7A       ; Pointer: Current Byte of BASIC Text
0075: D0 02     BNE $0079     ; CHRGOT: Get same Byte again
0077: E6 7B     INC $7B       ; Pointer: Current Byte of BASIC Text

Kernal-Reference:

 STA $73,X   : $E3E5



 $79-$8A/121-138:   CHRGOT: Get same Byte again - c64ref 

Jump from $0075, $A6AA, $A792, $A897, $A92B, $A940, $AA9D, $AC2C, $AC91,
          $ACAD, $ACD4, $AD7D, $ADB8, $B085, $B08D, $B094, $B202, $B441,
          $B73B, $B7AA, $B7D7, $B834, $E206, $E211:

0079: AD 60 EA  LDA $EA60     ; Main IRQ Entry Point
007C: C9 3A     CMP #$3A
007E: B0 0A     BCS $008A

Jump from $AA1F:

0080: C9 20     CMP #$20
0082: F0 EF     BEQ $0073     ; CHRGET: Get next Byte of BASIC Text
0084: 38        SEC
0085: E9 30     SBC #$30
0087: 38        SEC
0088: E9 D0     SBC #$D0

Jump from $007E:

008A: 60        RTS

Kernal-Reference:

 ADC $7A     : $A75F $A7D9 $A8B3 $A8FD
     ($7A),Y : $BDA9
 CMP ($7A),Y : $AF01
 DEC $7A     : $ADA4 $AE11
 INC $7A     : $E3A2
 LDA $7A     : $A7B1 $A834 $A88B $AC1C $AC74 $AC9D $AEBD $B3D8 $B426 $E187
     ($7A),Y : $A7C0 $A7C6 $A7CF $A7D4 $A919 $ACC2 $ACC7 $ACCC
 LDX $7A     : $A57C $A5F5 $AD9E $AE0B $B7B5
 STA $7A     : $A610 $A693 $A7DB $A864 $A8C9 $A8F3 $A8FF $AB76 $ACA9 $AD6E
               $B42B $B44A
 STX $7A     : $A486 $A5B3 $AC28 $AC4D $AC5D $B7BF $B7E6

 DEC $7B     : $A60C $ADA2 $AE0F
 INC $7B     : $A7DF $A903 $E3A6
 LDA $7B     : $A762 $A888 $B3D5 $B423 $E1A1
 LDX $7B     : $A8B5
 LDY $7B     : $A7B3 $A836 $AC1E $AC76 $AC9F $AEBF $B7B7
 STA $7B     : $A699 $A8CF $A8F6 $AD73 $B430 $B44D
 STX $7B     : $B7C8
 STY $7B     : $A488 $A866 $AB78 $AC2A $AC4F $ACAB $B7E8



 $7A-$7B/122-123   Pointer: Current Byte of BASIC Text

Kernal-Reference:

 ADC $7A     : $A75F $A7D9 $A8B3 $A8FD
     ($7A),Y : $BDA9
 CMP ($7A),Y : $AF01
 DEC $7A     : $ADA4 $AE11
 INC $7A     : $E3A2
 LDA $7A     : $A7B1 $A834 $A88B $AC1C $AC74 $AC9D $AEBD $B3D8 $B426 $E187
     ($7A),Y : $A7C0 $A7C6 $A7CF $A7D4 $A919 $ACC2 $ACC7 $ACCC
 LDX $7A     : $A57C $A5F5 $AD9E $AE0B $B7B5
 STA $7A     : $A610 $A693 $A7DB $A864 $A8C9 $A8F3 $A8FF $AB76 $ACA9 $AD6E
               $B42B $B44A
 STX $7A     : $A486 $A5B3 $AC28 $AC4D $AC5D $B7BF $B7E6

 DEC $7B     : $A60C $ADA2 $AE0F
 INC $7B     : $A7DF $A903 $E3A6
 LDA $7B     : $A762 $A888 $B3D5 $B423 $E1A1
 LDX $7B     : $A8B5
 LDY $7B     : $A7B3 $A836 $AC1E $AC76 $AC9F $AEBF $B7B7
 STA $7B     : $A699 $A8CF $A8F6 $AD73 $B430 $B44D
 STX $7B     : $B7C8
 STY $7B     : $A488 $A866 $AB78 $AC2A $AC4F $ACAB $B7E8



 $8B-$8F/139-143:   Floating RND Function Seed Value



 $90/144:   Kernal I/O Status Word ST - c64ref 

   +-------+---------------------------------+
   | Bit 7 |   1 = Device not present (S)    |
   |       |   1 = End of Tape (T)           |
   | Bit 6 |   1 = End of File (S+T)         |
   | Bit 5 |   1 = Checksum error (T)        |
   | Bit 4 |   1 = Different error (T)       |
   | Bit 3 |   1 = Too many bytes (T)        |
   | Bit 2 |   1 = Too few bytes (T)         |
   | Bit 1 |   1 = Timeout Read (S)          |
   | Bit 0 |   1 = Timeout Write (S)         |
   +-------+---------------------------------+

   (S) = Serial bus, (T) = Tape

Kernal-Reference:

 AND $90     : $F4F5
 BIT $90     : $EE79 $F249 $F28A $F524
 LDA $90     : $F1AD $F3ED $F4DA $F505 $F55D $FE1A
 ORA $90     : $FE1C
 STA $90     : $F311 $F3DF $F4A9 $F4F7 $F843 $FE1E



 $91/145:   Flag: $7F = STOP key - c64ref 

Kernal-Reference:

 LDA $91     : $F6ED
 LDY $91     : $E4E2
 STA $91     : $F6DA



 $92/146:   Timing Constant for Tape - c64ref 

Kernal-Reference:

 ADC $92     : $F99E
 LDA $92     : $F9D5
 STA $92     : $F9A0 $F9E2



 $93/147:   Flag: 0 = Load, 1 = Verify - c64ref 

Kernal-Reference:

 LDA $93     : $F5D4 $F72C $FADB $FB20 $FB3A
 LDY $93     : $F50C
 STA $93     : $F4A5 $F733 $F845



 $94/148:   Flag: Serial Bus - Output Character buffered - c64ref 

Kernal-Reference:

 BIT $94     : $ED12 $EDDD
 LSR $94     : $ED1C
 ROR $94     : $EDE2



 $95/149:   Buffered Character for Serial Bus - c64ref 

Kernal-Reference:

 ROR $95     : $ED71
 STA $95     : $ED21 $EDB9 $EDC7 $EDEB



 $96/150:   Cassette Sync number - c64ref 

Kernal-Reference:

 LDA $96     : $FA10 $FA33 $FA44
 STA $96     : $F9F3 $FA3B



 $97/151:   Temporary storage of X Register during CHRIN - c64ref 
 $97/151:   Temporary storage of Y Register during RS232 fetch - c64ref 

Kernal-Reference:

 LDX $97     : $F18F $F196
 LDY $97     : $F153
 STX $97     : $F179
 STY $97     : $F14E



 $98/152:   Number of Open Files/Index to File Table - c64ref 

Kernal-Reference:

 CPX $98     : $F2F5
 DEC $98     : $F2F3
 INC $98     : $F362
 LDX $98     : $F314 $F359
 LDY $98     : $F2F9
 STA $98     : $F331



 $99/153:   Default Input Device (0) - c64ref 

Kernal-Reference:

 CPX $99     : $F33C
 LDA $99     : $F13E $F157
 LDX $99     : $E663
 STA $99     : $E5A6 $F04D $F233 $F347



 $9A/154:   Default Output Device (3) - c64ref 

Kernal-Reference:

 CPX $9A     : $F335
 LDA $9A     : $F1CB
 LDX $9A     : $E669
 STA $9A     : $E5A2 $EFE1 $F275
 STX $9A     : $F343



 $9B/155:   Parity of Byte Output to Tape - c64ref 

  Used by Jiffy-DOS: KEYBYT

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 EOR $9B     : $F9F8 $FC05
 LDA $9B     : $F9CE $FC4E
 STA $9B     : $F9FA $FBA1 $FC07



 $9C/156:   Flag: Byte received from Tape - c64ref 

Kernal-Reference:

 INC $9C     : $FA2D
 LDX $9C     : $F962
 STA $9C     : $F85C $FA63



 $9D/157:   Flag: $00 = Program mode: Suppress Error Messages - c64ref 
                  $40 = Kernal Error Messages only
                  $80 = Direct mode: Full Error Messages

Kernal-Reference:

 BIT $9D     : $F12B $F71B $F74C
 LDA $9D     : $F5AF $F68F
 STA $9D     : $FE18



 $9E/158:   Index to Cassette File name/Header ID for Tape write - c64ref 
 $9E/158:   Tape Error log pass 1 - c64ref 

Kernal-Reference:

 CPX $9E     : $FAF1 $FB0A
 INC $9E     : $F7B1 $F803
 LDA $9E     : $F024 $F1F8 $F201 $F786 $FB60
 LDX $9E     : $FAF5
 LDY $9E     : $F7A5 $F807
 STA $9E     : $F1DD $F76A $F858
 STX $9E     : $FB03
 STY $9E     : $F7A3 $F7F5



 $9F/159:   Tape Error log pass 2 - c64ref 

  Used by Jiffy-DOS: CJLA

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 INC $9F     : $F7B3 $F805 $FB1C $FB1E
 LDX $9F     : $FB08
 LDY $9F     : $F7AD $F7FD
 STA $9F     : $F85A
 STY $9F     : $F79F $F7F1



 $A0-$A2/160-162:   Real-time jiffy Clock

   Updated by IRQ Interrupt approx every 1/60 of Second

   Update Routine is at $F69B

Kernal-Reference:

 BIT $00A0   : $AFE8
 INC $A0     : $F6A5
 LDA $A0     : $F6B0
 LDY $A0     : $F6E2
 STX $A0     : $F6B6
 STY $A0     : $F6E9

 CMP $A1     : $E4E7
 INC $A1     : $F6A1
 LDA $A1     : $F6AC $F761
 LDX $A1     : $F6E0
 STX $A1     : $F6B8 $F6E7

 BIT $00A2   : $A908
 INC $A2     : $F69D
 LDA $A2     : $F6DE
 STA $A2     : $F6E5
 STX $A2     : $F6BA



 $A3/163:   Bit Counter Tape Read or Write - c64ref 
            Serial Bus EOI (End Of Input) Flag

  Used by Jiffy-DOS: LDFLG/QFLAG

   Used in all disk access and Load routines.

  Used by ByteBoiler: Temporary

Kernal-Reference:

 BIT $A3     : $ED4C
 DEC $A3     : $FA00 $FC0E
 LDA $A3     : $F9C3 $FA18 $FC10
 LDX $A3     : $F969
 LSR $A3     : $ED1E
 ROR $A3     : $ED17
 STA $A3     : $FB99



 $A4/164:   Pulse Counter Tape Read or Write/Serial Bus shift Counter - c64ref 

  Used by ByteBoiler: Temporary

Kernal-Reference:

 LDA $A4     : $EE80 $F9A2 $FBF5
 ROR $A4     : $EE65
 STA $A4     : $F9A6 $F9BE $FB9D $FBF9



 $A5/165:   Tape Synchronising count down - c64ref 

Kernal-Reference:

 DEC $A5     : $ED8E $EE72 $FC22
 INC $A5     : $EE52
 LDA $A5     : $EE3E $FC1A
 STA $A5     : $ED64 $EE16 $EE58
 STX $A5     : $FC8D



 $A6/166:   Pointer: Tape I/O buffer - c64ref 

  Used by Jiffy-DOS: TFLAG

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 DEC $A6     : $F18D
 INC $A6     : $F810
 LDY $A6     : $F812
 STA $A6     : $F1A5 $F3D1
 STY $A6     : $F1F6



 $A7/167:   RS232 temporary for received Bit/Tape temporary - c64ref 

  Used by Exomizer: Length of sequence

Kernal-Reference:

 DEC $A7     : $FB5C $FC71
 LDA $A7     : $EF63 $EF70 $EF90 $EFBC $FA99
 LDX $A7     : $FAD6
 LSR $A7     : $EF69
 STA $A7     : $FA6E $FC60 $FEDB



 $A8/168:   RS232 Input Bit count/Tape temporary - c64ref 

Kernal-Reference:

 ADC $A8     : $EF7A
 DEC $A8     : $EF5D $EF6E
 INC $A8     : $FBDA
 LDA $A8     : $FA57 $FBCD
 STA $A8     : $F98F $FA37 $FB9F
 STX $A8     : $FF2B



 $A9/169:   RS232 Flag: Start Bit check/Tape temporary - c64ref 

Kernal-Reference:

 BIT $00A9   : $AC0C $E167
 DEC $A9     : $F997
 INC $A9     : $F993 $FBEC
 LDA $A9     : $F9EB $FBE3
 LDX $A9     : $EF59
 ORA $A9     : $FA59
 STA $A9     : $EF89 $FBA3



 $AA/170:   RS232 Input Byte Buffer/Tape temporary - c64ref 

Kernal-Reference:

 BIT $AA     : $FA72
 DEC $AA     : $FAA9
 LDA $AA     : $EFA4 $EFDB
 ROR $AA     : $EF6B
 STA $AA     : $F852 $FA88 $FAA7 $FAAF $FABC $FB4A



 $AB/171:   RS232 Input parity/Tape temporary - c64ref 

Kernal-Reference:

 DEC $AB     : $FC78
 EOR $AB     : $EF65 $EFBE $FB74
 INC $AB     : $FC82
 LDA $AB     : $FB80
 STA $AB     : $EF67 $F7BC $F869 $FAB6 $FB76
 STY $AB     : $FB70



 $AC-$AD/172-173:   Pointer: Tape Buffer/Screen scrolling - c64ref 

Kernal-Reference:

 CMP ($AC),Y : $FAE3 $FB28
 INC $AC     : $FCDB
 LDA $AC     : $E8EA $E981 $E9E3 $F61A $FAFC $FB0E $FCD2
     ($AC),Y : $E9D4 $F629 $FB72 $FC41
 STA $AC     : $E90A $E962 $E99D $FB94
     ($AC),Y : $FB41

 INC $AD     : $FC37 $FCDF
 LDA $AD     : $E8ED $E984 $E9E7 $F61F $FAF7 $FB15 $FCD6
 STA $AD     : $E95F $E9CD $FB90



 $AE-$AF/174-175:   Tape End Address/End of Program - c64ref 

  Used by Exomizer: Source address

Kernal-Reference:

 CMP ($AE),Y : $F512
 INC $AE     : $F51E
 LDA $AE     : $E8F0 $E987 $F77A $F795
     ($AE),Y : $E9D8
 LDX $AE     : $F5AA
 SBC $AE     : $FCD4
 STA $AE     : $E95C $E9E5 $F4D8 $F4EA $F593 $F7C3 $F7E0
     ($AE),Y : $F51C
 STX $AE     : $F5DD

 INC $AF     : $F522
 LDA $AF     : $E8F3 $E98A $F777 $F79A
 LDY $AF     : $F5AC
 SBC $AF     : $FCD8
 STA $AF     : $E959 $E9ED $F4E3 $F4EE $F598 $F7C6 $F7E7
 STY $AF     : $F5DF



 $B0-$B1/176-177:   Tape timing Constants - c64ref 

  Used by Jiffy-DOS: SPRSAV ($B0)
  Used by Jiffy-DOS: RASSAV ($B1)

   Saved, then restored by Load routine (no other usage).

  Used by Jiffy-DOS: KEYPTR

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 ADC $B0     : $F8E9 $F971 $F97A $F982 $FA26
 BIT $B0     : $F8F2
 DEC $B0     : $F9DB
 INC $B0     : $F9DE
 LDA $B0     : $F8E4 $F959
 STA $B0     : $F856

 ADC $B1     : $F8EC $F905
 ASL $B1     : $F8F7 $F8FA
 CMP $B1     : $F95E $F973 $F97C $F984
 LSR $B1     : $FA1F
 ROR $B1     : $F954 $F957
 SBC $B1     : $F94F $F99C $FA24
 STA $B1     : $F8EE
 STX $B1     : $F8E2 $F93A $F951



 $B2-$B3/178-179:   Pointer: Start Address of Tape Buffer

  Points to $033C

  Used by Jiffy-DOS: REGSAV ($B2)

   Saved, then restored by Load routine (no other usage).

Kernal-Reference:

 CMP ($B2),Y : $F7FF
 LDA ($B2),Y : $F1A9 $F56E $F573 $F57F $F588 $F739 $F757
 LDX $B2     : $F7D0
 SBC ($B2),Y : $F583 $F58C
 STA ($B2),Y : $F1F3 $F1FA $F3CE $F781 $F788 $F78D $F792 $F797 $F79C $F7AF
 STX $B2     : $FD63

 LDY $B3     : $F7D2
 STY $B3     : $FD65



 $B4/180:   RS232 Write bit count/Tape Read timing Flag - c64ref 

Kernal-Reference:

 DEC $B4     : $EECD $EEE7 $EEEE
 INC $B4     : $EEF2 $EF00
 LDA $B4     : $EEBB $F98B $F9AC $F9FC $FA14 $FA2F
 STA $B4     : $F854 $FA42 $FA4C
 STX $B4     : $EF1C



 $B5/181:   RS232 Next Bit to send/Tape Read - End of Tape - c64ref 

Kernal-Reference:

 LDA $B5     : $FA76 $FA91 $FAC0
 ORA $B5     : $FE80
 STA $B5     : $EED4 $EF17 $FA46



 $B6/182:   RS232 Output Byte Buffer/Tape Read Error Flag - c64ref 

Kernal-Reference:

 LDA $B6     : $FA95 $FAEB $FB2F $FBDC
 LSR $B6     : $EEC1
 ROR $B6     : $FBC9
 STA $B6     : $EF28 $FA5B $FAE9
 STX $B6     : $FC8F
 STY $B6     : $FB2D



 $B7/183:   Number of Characters in Filename - c64ref 

Kernal-Reference:

 CPY $B7     : $F402 $F40F $F5CD $F7A7 $F7F7
 LDA $B7     : $F3A1 $F3F6 $F549 $F5B8
 LDY $B7     : $F3D9 $F4B8 $F5C1 $F5FE
 STA $B7     : $FDF9



 $B8/184:   Current File - Logical File number - c64ref 

Kernal-Reference:

 LDA $B8     : $F364
 LDX $B8     : $F34A
 STA $B8     : $F322 $FE00



 $B9/185:   Current File - Secondary Address - c64ref 

Kernal-Reference:

 BIT $B9     : $F642
 LDA $B9     : $F23B $F27D $F2C8 $F2E0 $F369 $F393 $F3D5 $F3E6 $F4D0 $F579
               $F610 $F64B $F66E $F681
 LDX $B9     : $F22A $F26F $F4BF
 LDY $B9     : $F3C4
 STA $B9     : $F32C $F36D $F4C6 $F5FC
 STY $B9     : $FE04



 $BA/186:   Current File - First Address (Device number) - c64ref 

Kernal-Reference:

 LDA $BA     : $F219 $F25B $F29D $F372 $F3E1 $F4AB $F4CB $F5ED $F60B $F646
               $FE07
 STA $BA     : $F327
 STX $BA     : $FE02



 $BB-$BC/187-188:   Pointer: Current File name Address

Kernal-Reference:

 LDA ($BB),Y : $F3FC $F413 $F5C7 $F7AB $F7FB
 STX $BB     : $FDFB

 STY $BC     : $FDFD



 $BD/189:   RS232 Output Parity/Tape Byte temporary - c64ref 

Kernal-Reference:

 EOR $BD     : $EEC9 $FB82
 LDA $BD     : $EEE2 $EEF6 $FA9C $FAE1 $FB24 $FB3F $FBA6 $FBFD
 LSR $BD     : $FC0C
 STA $BD     : $EECB $EF15 $FA55 $FC01 $FC2C $FC3B $FC43 $FC52



 $BE/190:   Tape Input/Output Block count - c64ref 

  Used by Jiffy-DOS: DRVBYT

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 DEC $BE     : $FC57
 LDA $BE     : $FA6A $FC84
 LDX $BE     : $FA7A $FB55 $FC24
 STA $BE     : $F8A6 $FB64
 STX $BE     : $FB5A



 $BF/191:   Serial Word Buffer - c64ref 

  Used by Jiffy-DOS: DEST

   Used only from Basic for Jiffy-DOS wedge comands, device
   toggle and function keys.

Kernal-Reference:

 LDA $BF     : $FA53
 ROR $BF     : $FA06



 $C0/192:   Tape Motor Switch - c64ref 

Kernal-Reference:

 LDA $C0     : $EA71
 STA $C0     : $F8B1
 STY $C0     : $EA69



 $C1-$C2/193-194:   Start Address for LOAD and Cassette Write - c64ref 

Kernal-Reference:

 CMP ($C1),Y : $FD75 $FD7C
 LDA $C1     : $F774 $F78B $FB92
     ($C1),Y : $FD6E
 STA $C1     : $F59C $F5E4 $F7C9 $F7DB
     ($C1),Y : $FD73 $FD7A $FD81

 INC $C2     : $FD6C
 LDA $C2     : $F771 $F790 $FB8E
 LDY $C2     : $FD8A
 STA $C2     : $F5A0 $F5E8 $F7CC $F7E3 $FD6A



 $C3-$C4/195-196:   Pointer: Type 3 Tape LOAD and general use

  Used by ByteBoiler: Temporary

Kernal-Reference:

 ADC $C3     : $F591
 LDA $C3     : $F4E8 $F59A
     ($C3),Y : $FD25
 STA $C3     : $F570
     ($C3),Y : $FD27
 STX $C3     : $F49E $FD1A

 ADC $C4     : $F596
 LDA $C4     : $F4EC $F59E
 STA $C4     : $F575
 STY $C4     : $F4A0 $FD1C



 $C5/197   : Current Key pressed - c64ref 
 $CB/203

  +------------------------------------+-----------------------------------+
  | $00/0  = 'INST/DEL'                | $20/32 = '9 )'                    |
  | $01/1  = 'CR'                      | $21/33 = 'I'                      |
  | $02/2  = (Cursor left/right)       | $22/34 = 'J'                      |
  | $03/3  = 'F7'                      | $23/35 = '0'                      |
  | $04/4  = 'F1'                      | $24/36 = 'M'                      |
  | $05/5  = 'F3'                      | $25/37 = 'K'                      |
  | $06/6  = 'F5'                      | $26/38 = 'O'                      |
  | $07/7  = (Cursor up/down)          | $27/39 = 'N'                      |
  | $08/8  = '3 #'                     | $28/40 = '+'                      |
  | $09/9  = 'W'                       | $29/41 = 'P'                      |
  | $0A/10 = 'A'                       | $2A/42 = 'L'                      |
  | $0B/11 = '4 $'                     | $2B/43 = '-'                      |
  | $0C/12 = 'Z'                       | $2C/44 = '. >'                    |
  | $0D/13 = 'S'                       | $2D/45 = ': ['                    |
  | $0E/14 = 'E'                       | $2E/46 = '@'                      |
  | $0F/15 = Unused                    | $2F/47 = ', <'                    |
  | $10/16 = '5 %'                     | $30/48 = '(Pound)'                |
  | $11/17 = 'R'                       | $31/49 = '*'                      |
  | $12/18 = 'D'                       | $32/50 = '; ]'                    |
  | $13/19 = '6 &'                     | $33/51 = 'CLR/HOME'               |
  | $14/20 = 'C'                       | $34/52 = Unused                   |
  | $15/21 = 'F'                       | $35/53 = '='                      |
  | $16/22 = 'T'                       | $36/54 = (Up Arrow/Pi)            |
  | $17/23 = 'X'                       | $37/55 = '? /'                    |
  | $18/24 = '7 ''                     | $38/56 = '1 !'                    |
  | $19/25 = 'Y'                       | $39/57 = (Left Arrow)             |
  | $1A/26 = 'G'                       | $3A/58 = Unused                   |
  | $1B/27 = '8 ('                     | $3B/59 = '2 "'                    |
  | $1C/28 = 'B'                       | $3C/60 = ' ' (Space)              |
  | $1D/29 = 'H'                       | $3D/61 = Unused                   |
  | $1E/30 = 'U'                       | $3E/62 = 'Q'                      |
  | $1F/31 = 'V'                       | $3F/63 = 'RUN/STOP'               |
  +------------------------------------+                                   |
                                       | $40/64 = No Key pressed           |
                                       +-----------------------------------+

Kernal-Reference:

 CPY $C5     : $EAE5
 STY $C5     : $EB28

 LDY $CB     : $EAE0 $EB26
 STY $CB     : $EA8E $EAC9



 $C6/198:   Number of Characters in Keyboard Buffer queue - c64ref 

Kernal-Reference:

 CPX $C6     : $E5C0
 DEC $C6     : $E5C4
 LDA $C6     : $E5CD $F142
 LDX $C6     : $EB35
 LDY $C6     : $EB21
 STA $C6     : $F6F7
 STX $C6     : $E5F1 $EB40
 STY $C6     : $E954



 $C7/199:   Flag: Reverse On/Off; On = $01, Off = $00 - c64ref 

Kernal-Reference:

 LDX $C7     : $E693
 STA $C7     : $E789 $E852
 STX $C7     : $E895



 $C8/200:   Pointer: End of Line for Input - c64ref 

   Used to suppress trailing spaces

Kernal-Reference:

 CMP $C8     : $E62C
 CPY $C8     : $E659
 STA $C8     : $F16E
 STY $C8     : $E610



 $C9-$CA/201-202:   Cursor X/Y (Line/Column) position at start of Input - c64ref 

Kernal-Reference:

 CPX $C9     : $E591 $E624
 DEC $C9     : $E8FA
 LDA $C9     : $E61B
 LSR $C9     : $E87C
 STA $C9     : $F161

 LDA $CA     : $E628
 STA $CA     : $F15D



 $CC/204:   Flag: Cursor blink; $00 = Enabled, $01 = Disabled - c64ref 

Kernal-Reference:

 LDA $CC     : $EA34
 STA $CC     : $E542 $E5CF



 $CD/205:   Timer: Count down for Cursor blink toggle - c64ref 

Kernal-Reference:

 DEC $CD     : $EA38
 STA $CD     : $E540 $EA16 $EA3E



 $CE/206:   Character under Cursor while Cursor Inverted - c64ref 

Kernal-Reference:

 LDA $CE     : $E5DB $EA5A
 STA $CE     : $EA4D



 $CF/207:   Flag: Cursor Status; $00 = Off, $01 = On - c64ref 

Kernal-Reference:

 INC $CF     : $EA4B
 LDA $CF     : $E5D7
 LSR $CF     : $EA42
 STA $CF     : $E520
 STY $CF     : $E5E2



 $D0/208:   Flag: Input from Screen = $03, Keyboard = $00 - c64ref 

Kernal-Reference:

 LDA $D0     : $E636
 STA $D0     : $E65F $E71F $F16A
 STY $D0     : $E604



 $D1-$D2/209-210:   Pointer: Current Screen Line Address

Kernal-Reference:

 LDA $D1     : $EA24
     ($D1),Y : $E606 $E63C $E763 $E7F4 $E80B $EA47
 STA $D1     : $E9F3
     ($D1),Y : $E766 $E775 $E80E $E81D $E9D6 $EA0C $EA1E

 LDA $D2     : $EA28
 STA $D2     : $E9FC



 $D3/211:   Cursor Column on current Line, including Wrap-round Line, if any - c64ref 

Kernal-Reference:

 CMP $D3     : $E6BD $E8A5 $E8B7
 CPY $D3     : $E7FA $E817
 INC $D3     : $E654 $E6B9
 LDA $D3     : $E56E $E83C $F15B
 LDY $D3     : $E515 $E63A $E721 $EA1C $EA40
 STA $D3     : $E577 $E62A $E6FE $E7C4 $E843
 STX $D3     : $E705 $E899
 STY $D3     : $E50E $E568 $E617 $E713 $E75D $E79A $E7A8 $E85F



 $D4/212:   Flag: Editor in Quote Mode; $00 = Not - c64ref 

Kernal-Reference:

 LDA $D4     : $E688
 LDX $D4     : $E64C $E77E $E7EA
 LSR $D4     : $E6AE
 STA $D4     : $E68C
 STX $D4     : $E897
 STY $D4     : $E619



 $D5/213:   Current logical Line length: 39 or 79 - c64ref 

Kernal-Reference:

 CMP $D5     : $E7B8
 CPY $D5     : $E76F $E79D
 LDA $D5     : $E6BB $E6E6 $F16C
 LDY $D5     : $E602 $E711 $E7F2 $E805
 STA $D5     : $E58C $E6EB



 $D6/214:   Current Screen Line number of Cursor - c64ref 

Kernal-Reference:

 DEC $D6     : $E6D6 $E6F7 $E7A1 $E7BE $E83A $E8B0 $E8F8 $E97C
 INC $D6     : $E7B6 $E8C8 $E933
 LDA $D6     : $F15F
 LDX $D6     : $E513 $E56C $E61F $E6CD $E6D8 $E701 $E836 $E87E $E8C2 $E956
               $E965
 STX $D6     : $E50C $E70C $E88C
 STY $D6     : $E56A



 $D7/215:   Screen value of current Input Character/Last Character Output - c64ref 

Kernal-Reference:

 ASL $D7     : $E642
 BIT $D7     : $E644
 CPX $D7     : $F9E4
 EOR $D7     : $FC45
 LDA $D7     : $E67A $E723 $FC39
 LSR $D7     : $FA04
 STA $D7     : $E63E $E674 $E717 $FC47
 STX $D7     : $F9AA $FC20



 $D8/216:   Count of number of inserts outstanding - c64ref 

Kernal-Reference:

 DEC $D8     : $E69D
 INC $D8     : $E824
 LDA $D8     : $E6AA
     $D8,X   : $E99F
 LDX $D8     : $E699 $E745 $E829
 STX $D8     : $E893



 $D9-$F2/217-242:   Screen Line Link Table

  Used by ByteBoiler: Depacker ($F0-$F2)

Kernal-Reference:

 ASL $D9,X   : $E6DA
 LDA $D9     : $E92F
     $D9,X   : $E6DF $E6ED $E888 $E918 $E968 $E9F5
 LDY $D9,X   : $E570 $E582 $E9B4
 LSR $D9,X   : $E6DC
 STA $D9,X   : $E55C $E6E3 $E922
 STY $D9,X   : $E54D

 LDA $DA,X   : $E90C $E9B0
 LDY $DA,X   : $E91C
 STA $DA,X   : $E9BA

 LDA $F1     : $E929
 STA $F1     : $E92D



 $F3-$F4/243-244:   Pointer: Current Color RAM Location

  Used by ByteBoiler: Depacker

Kernal-Reference:

 LDA ($F3),Y : $E769 $E811 $EA52
 STA $F3     : $EA26
     ($F3),Y : $E4DD $E76C $E77A $E814 $E822 $E9DA $EA21

 STA $F4     : $EA2E



 $F5-$F6/245-246:   Vector: Current Keyboard decoding Table

   Points to $EB81

  Used by ByteBoiler: Depacker

Kernal-Reference:

 LDA ($F5),Y : $EAB7 $EAE2
 STA $F5     : $EA9D $EB6F

 STA $F6     : $EAA1 $EB74



 $F7-$F8/247-248:   RS232 Input Buffer Pointer

  Used by pucrunch: Bit-Stream, Escape Code

  Used by ByteBoiler: Depacker

Kernal-Reference:

 LDA ($F7),Y : $F096
 STA ($F7),Y : $EFB1
 STX $F7     : $F472

 LDA $F8     : $F2B5 $F46B
 STA $F8     : $F2C1
 STY $F8     : $F470



 $F9-$FA/249-250:   RS232 Output Buffer Pointer

  Used by pucrunch: Depacker - Part 1
                              ($FA = destination address lo)

  Used by ByteBoiler: Depacker

Kernal-Reference:

 LDA ($F9),Y : $EF26
 STA ($F9),Y : $F026
 STX $F9     : $F47B

 LDA $FA     : $F2BA $F474
 STA $FA     : $F2C3
 STY $FA     : $F479



 $FB-$FE/251-254:   Free ZeroPage space for User Programs

  Used by pucrunch: Depacker - Part 1
                              ($FB = destination address hi)

  Used by ByteBoiler: Depacker

  Used by The Cruncher AB: Temporary

  Used by Exomizer: Bit buffers, Destination address lo ($FE)



 $FF/255:   BASIC temporary Data Area
 $FF-$010A/255-266:   Assembly Area for Floating point to ASCII
                              conversion

  Used by pucrunch: Depacker - Part 1

  Used by ByteBoiler: Depacker

  Used by The Cruncher AB: Temporary

  Used by Exomizer: Destination address hi

Kernal-Reference:

 LDA $00FF,Y : $BEC6
 STA $00FF,Y : $BDE7 $BE58 $BE61 $BEA5 $BEAF $BF04



 $0100-$01FF/256-511:   6510 Hardware Stack Area
 $0100-$013E/256-318:   Tape Input Error log

  Used by pucrunch: Depacker - Part 1  ($0100 - $01E0)

  Used by ByteBoiler: Depacker ($0100 - $01EF)

  Used by Exomizer: Depacker - main code ($0100 - $01BA)

Kernal-Reference:

 CMP $0100,X : $FB10
 STA $0100,X : $FAFE
     $0100,Y : $BEE8 $BF09

 CMP $0101,X : $FB17
 LDA $0101,X : $A38F $B1F3
 STA $0101,X : $B1FE $FAF9
     $0101,Y : $BEE3

 CMP $0102,X : $A3AB
 LDA $0102,X : $A39A $B1EF
 STA $0102,X : $B1F9
     $0102,Y : $BEFA

 CMP $0103,X : $A3A4
 LDA $0103,X : $A39F
 STA $0103,Y : $BEF6

 LDA $0104,X : $FF4E
 STA $0104,Y : $BEFF

 LDA $0109,X : $AD46
 SBC $0109,X : $AD5C

 LDA $010F,X : $AD61

 LDA $0110,X : $AD66

 LDA $0111,X : $AD70

 LDA $0112,X : $AD6B



 $013F-$01FF/319-511:   BASIC Stack Area

Kernal-Reference:

 LDA $01FB,Y : $A5CE
 STA $01FB,Y : $A5CB $A5EF

 LDA $01FC,Y : $A522
 STX $01FC   : $E3FB

 STA $01FD,Y : $A609
 STX $01FD   : $E3F8

 STA $01FE   : $A511

 STA $01FF   : $ABD3
 STY $01FF   : $A514



 $0200-$0258/512-600:   BASIC Input Buffer (Input Line from Screen)

  Used by pucrunch: Depacker - Part 2  ($0200 - $0258)
                              ($0202+$0203 = source address)

Kernal-Reference:

 LDA $0200   : $A4F3 $ABEA
     $0200,X : $A582 $A5B8 $A5E5 $A604
 STA $0200   : $AC38
     $0200,X : $A569 $AACC
     $0200,Y : $FD56

 STA $0201   : $AB98



 $0259-$0262/601-610:   Active logical File numbers

Kernal-Reference:

 CMP $0259,X : $F319
 LDA $0259,X : $F31F
     $0259,Y : $F2FB
 STA $0259,X : $F2FE $F366



 $0263-$026C/611-620:   Active File First Addresses (Device numbers)

Kernal-Reference:

 LDA $0263,X : $F324
     $0263,Y : $F301
 STA $0263,X : $F304 $F374



 $026D-$0276/621-630:   Active File Secondary Addresses

Kernal-Reference:

 LDA $026D,X : $F329
     $026D,Y : $F307
 STA $026D,X : $F30A $F36F

 STA $0276,X : $E5F6



 $0277-$0280/631-640:   Keyboard Buffer Queue (FIFO)

Kernal-Reference:

 LDY $0277   : $E5B4
 STA $0277,X : $E5BC $EB3C

 LDA $0278,X : $E5B9



 $0281-$0282/641-642:   Pointer: Bottom of Memory for Operating System

   Default Value is $0800

Kernal-Reference:

 LDX $0281   : $FE36
 STX $0281   : $FE3C

 LDY $0282   : $FE39
 STA $0282   : $FD92
 STY $0282   : $FE3F



 $0283-$0284/643-644:   Pointer: Top of Memory for Operating System

   Default Value is $A000

Kernal-Reference:

 LDX $0283   : $FE27
 STX $0283   : $FE2D

 LDY $0284   : $FE2A
 STY $0284   : $FE30



 $0285/645:   Serial IEEE Bus timeout defeat Flag - c64ref 

Kernal-Reference:

 STA $0285   : $FE21



 $0286/646:   Current Character Color code - c64ref 

Kernal-Reference:

 LDA $0286   : $E4DA $E777 $E81F
 LDX $0286   : $E69F $EA57
 STA $0286   : $E536
 STX $0286   : $E8D6



 $0287/647:   Background Color under Cursor - c64ref 

Kernal-Reference:

 LDX $0287   : $E5DD $EA44
 STA $0287   : $EA54



 $0288/648:   High Byte of Screen Memory Address - c64ref 

   Default Value is $04

Kernal-Reference:

 LDA $0288   : $E544
 ORA $0288   : $E9CA $E9F9
 STA $0288   : $FD97



 $0289/649:   Maximum number of Bytes in Keyboard Buffer - c64ref 

   Default Value is $0A

Kernal-Reference:

 CPX $0289   : $EB37
 STA $0289   : $E52E



 $028A/650:   Flag: Repeat keys: - c64ref 

   $00 = Cursors, INST/DEL & Space repeat    (Default)
   $40 = no Keys repeat
   $80 = all Keys repeat

Kernal-Reference:

 BIT $028A   : $EAF2



 $028B/651:   Repeat Key: Speed Counter - c64ref 

   Default Value is $04

Kernal-Reference:

 DEC $028B   : $EB17



 $028C/652:   Repeat Key: First repeat delay Counter - c64ref 

   Default Value is $10

Kernal-Reference:

 DEC $028C   : $EB12
 LDY $028C   : $EB0D
 STA $028C   : $E531
 STY $028C   : $EAEB



 $028D/653:   Flag: Shift Keys - c64ref 

   +-------+--------------------------------------------------------+
   | Bit 2 |  1 = CTRL pressed                                      |
   | Bit 1 |  1 = CBM pressed                                       |
   | Bit 0 |  1 = Shift pressed                                     |
   +-------+--------------------------------------------------------+

Kernal-Reference:

 LDA $028D   : $EB48
 LDY $028D   : $EB2A
 ORA $028D   : $EAC1
 STA $028D   : $EA89 $EAC4



 $028E/654:   Last Shift Key used for debouncing - c64ref 

Kernal-Reference:

 CMP $028E   : $EB4F
 STY $028E   : $EB2D



 $028F-$0290/655-656:   Vector: Routine to determine Keyboard table
                                to use based on Shift Key Pattern

   Points to $EB48

Kernal-Reference:

 JMP ($028F) : $EADD
 STA $028F   : $E524

 STA $0290   : $E529



 $0291/657:   Flag: Upper/Lower Case change - c64ref 

   $00 = Enabled    (Default)
   $80 = Disabled

Kernal-Reference:

 AND $0291   : $EC6F
 LDA $0291   : $EB54
 ORA $0291   : $EC64
 STA $0291   : $E51D $EC72



 $0292/658:   Flag: Auto scroll down - c64ref 

   $00 = Disabled    (Default)

Kernal-Reference:

 LDA $0292   : $E6C5
 STA $0292   : $E5D1
 STY $0292   : $E614



 $0293/659:   RS232 Pseudo 6551 control Register Image - c64ref 

Kernal-Reference:

 BIT $0293   : $EF4E
 LDA $0293   : $EEE9 $EF74 $F423
 STA $0293,Y : $F415



 $0294/660:   RS232 Pseudo 6551 command Register Image - c64ref 

Kernal-Reference:

 BIT $0294   : $EED9 $EFB5
 LDA $0294   : $EF06 $EFE3 $F04F $F44D



 $0295-$0296/661-662:   RS232 Non-standard Bits/Second

Kernal-Reference:

 LDA $0295   : $F446 $FF07
 STA $0295   : $F443

 LDA $0296   : $FF0D $FF2F
 STY $0296   : $F440



 $0297/663:   RS232 Pseudo 6551 Status Register Image - c64ref 

Kernal-Reference:

 LDA $0297   : $F086 $F1C1 $FE0D
 ORA $0297   : $EF33 $EFD2
 STA $0297   : $EF36 $EFD5 $F00F $F093 $F09E $FE13
 STY $0297   : $F40C



 $0298/664:   RS232 Number of Bits left to send - c64ref 

Kernal-Reference:

 LDX $0298   : $EF19 $EFA6 $FF28
 STX $0298   : $F420



 $0299-$029A/665-666:   RS232 Baud Rate; Full Bit time microseconds

Kernal-Reference:

 ADC $0299   : $FEE2
 LDA $0299   : $F033
 STA $0299   : $FF37

 ADC $029A   : $FEEB
 LDA $029A   : $F039
 STA $029A   : $FF3D



 $029B/667:   RS232 Index to End of Input Buffer - c64ref 

Kernal-Reference:

 CPY $029B   : $F08C
 LDA $029B   : $F45C
 LDY $029B   : $EF97
 STY $029B   : $EFA0



 $029C/668:   RS232 Pointer: High Byte of Address of Input Buffer - c64ref 

Kernal-Reference:

 CPY $029C   : $EF9B
 INC $029C   : $F098
 LDY $029C   : $F089
 STA $029C   : $F45F



 $029D/669:   RS232 Pointer: High Byte of Address of Output Buffer - c64ref 

Kernal-Reference:

 CPY $029D   : $F01B
 INC $029D   : $EF2A
 LDY $029D   : $EF1E
 STA $029D   : $F465



 $029E/670:   RS232 Index to End of Output Buffer - c64ref 

Kernal-Reference:

 CPY $029E   : $EF21
 LDA $029E   : $F462
 LDY $029E   : $F017
 STY $029E   : $F020



 $029F-$02A0/671-672:   Temporary store for IRQ Vector during Tape
                        operations

Kernal-Reference:

 LDA $029F   : $FCB0
 STA $029F   : $F898

 LDA $02A0   : $F8BE $FCA8
 STA $02A0   : $F89E $F8DE



 $02A1/673:   RS232 Enables - c64ref 

Kernal-Reference:

 AND $02A1   : $FE73
 EOR $02A1   : $EF3E $FF1A
 LDA $02A1   : $EFF2 $F028 $F062 $F07D $F0A5 $F0AA $FE85 $FEB6 $FEF6
 ORA $02A1   : $EF83
 STA $02A1   : $EF43 $EF86 $F0B8 $FF1D
 STY $02A1   : $F49A



 $02A2/674:   TOD sense during Tape I/O - c64ref 

Kernal-Reference:

 LDA $02A2   : $F911
 STA $02A2   : $F887



 $02A3/675:   Temporary storage during Tape READ - c64ref 

Kernal-Reference:

 LDA $02A3   : $F9B0
 STA $02A3   : $F94B



 $02A4/676:   Temporary D1IRQ Indicator during Tape READ - c64ref 

Kernal-Reference:

 LDA $02A4   : $F9B7
 STA $02A4   : $F917 $F9C0



 $02A5/677:   Temporary for Line Index - c64ref 

Kernal-Reference:

 CPX $02A5   : $E993 $E9AB
 DEC $02A5   : $E8FC
 INC $02A5   : $E935
 LDX $02A5   : $E978 $E9BF
 STX $02A5   : $E96C



 $02A6/678:   Flag: TV Standard: $00 = NTSC, $01 = PAL - c64ref 

Kernal-Reference:

 LDA $02A6   : $F42C $FDDD
 STA $02A6   : $FF68



 $02A7-$02FF/679-767:   Unused



 $02C0-$02FE/704-766:   Sprite #11 Data Area



 $0300-$0301/768-769:   Vector: BASIC Error Message

   Points to $E38B

   X-register holds number of error message

Kernal-Reference:

 JMP ($0300) : $A437 $E388
 STA $0300,X : $E458
     $0300,Y : $FD59



 $0302-$0303/770-771:   Vector: BASIC Input Line and Decode

   Points to $A483
   Modified by AR6 (goes to $DF01)
   Modified by FC3 (goes to $DE41)

Kernal-Reference:

 JMP ($0302) : $A480



 $0304-$0305/772-773:   Vector: BASIC Tokenise Routine

   Points to $A57C
   Modified by FC3 (goes to $DF8D)

Kernal-Reference:

 JMP ($0304) : $A579



 $0306-$0307/774-775:   Vector: BASIC LIST Routine

   Points to $A71A
   Modified by FC3 (goes to $DE49)

Kernal-Reference:

 JMP ($0306) : $A717



 $0308-$0309/776-777:   Vector: BASIC Character dispatch Routine

   Points to $A7E4
   Modified by FC3 (goes to $DE73)

Kernal-Reference:

 JMP ($0308) : $A7E1



 $030A-$030B/778-779:   Vector: BASIC Token evaluation

   Points to $AE86
   Modified by AR6 (goes to $DFB1)
   Modified by FC3 (goes to $DE4F)

Kernal-Reference:

 JMP ($030A) : $AE83



 $030C/780:   Storage for 6510 Accumulator during SYS - c64ref 

Kernal-Reference:

 LDA $030C   : $E13A
 STA $030C   : $E148



 $030D/781:   Storage for 6510 X-Register during SYS - c64ref 

Kernal-Reference:

 LDX $030D   : $E13D
 STX $030D   : $E14B



 $030E/782:   Storage for 6510 Y-Register during SYS - c64ref 

Kernal-Reference:

 LDY $030E   : $E140
 STY $030E   : $E14E



 $030F/783:   Storage for 6510 Status Register during SYS - c64ref 

Kernal-Reference:

 LDA $030F   : $E136
 STA $030F   : $E152



 $0310/784:   USR Function JMP Instruction ($4C) - c64ref 

Kernal-Reference:

 STA $0310   : $E3C3



 $0311-$0312/785-786:   USR Address ($LB,$MB)

Kernal-Reference:

 STA $0311   : $E3CA

 STY $0312   : $E3CD



 $0313/787:   Unused - c64ref 



 $0314-$0315/788-789:   Vector: Hardware IRQ Interrupt Address

   Points to $EA31

Kernal-Reference:

 LDA $0314   : $F895
     $0314,Y : $FD20
 STA $0314   : $FCB3 $FCC0
     $0314,Y : $FD29

 CMP $0315   : $F8C1
 LDA $0315   : $F89B
 STA $0315   : $FCAD $FCC6

Kernal-Reference:

 JMP ($0314) : $FF58



 $0316-$0317/790-791:   Vector: BRK Instruction Interrupt Address

   Points to $FE66
   Modified by AR6 (goes to $DFCD)

Kernal-Reference:

 JMP ($0316) : $FF55



 $0318-$0319/792-793:   Vector: Hardware NMI Interrupt Address

   Points to $FE47

Kernal-Reference:

 JMP ($0318) : $FE44



 $031A-$031B/794-795:   Vector: Kernal OPEN Routine

   Points to $F34A

Kernal-Reference:

 JMP ($031A) : $FFC0



 $031C-$031D/796-797:   Vector: Kernal CLOSE Routine

   Points to $F291

Kernal-Reference:

 JMP ($031C) : $FFC3



 $031E-$031F/798-799:   Vector: Kernal CHKIN Routine

   Points to $F20E

Kernal-Reference:

 JMP ($031E) : $FFC6



 $0320-$0321/800-801:   Vector: Kernal CHKOUT Routine

   Points to $F250

Kernal-Reference:

 JMP ($0320) : $FFC9



 $0322-$0323/802-803:   Vector: Kernal CLRCHN Routine

   Points to $F333

Kernal-Reference:

 JMP ($0322) : $FFCC



 $0324-$0325/804-805:   Vector: Kernal CHRIN Routine

   Points to $F157

Kernal-Reference:

 JMP ($0324) : $FFCF



 $0326-$0327/806-807:   Vector: Kernal CHROUT Routine

   Points to $F1CA

Kernal-Reference:

 JMP ($0326) : $FFD2



 $0328-$0329/808-809:   Vector: Kernal STOP Routine

   Points to $F6ED

Kernal-Reference:

 JMP ($0328) : $FFE1



 $032A-$032B/810-811:   Vector: Kernal GETIN Routine

   Points to $F13E

Kernal-Reference:

 JMP ($032A) : $FFE4



 $032C-$032D/812-813:   Vector: Kernal CLALL Routine

   Points to $F32F

Kernal-Reference:

 JMP ($032C) : $FFE7



 $032E-$032F/814-815:   User Defined Vector

   Points to $FE66



 $0330-$0331/816-817:   Vector: Kernal LOAD Routine

   Points to $F4A5
   Modified by AR6 (goes to $DF6D)
   Modified by FC3 (goes to $DE21)

Kernal-Reference:

 JMP ($0330) : $F4A2



 $0332-$0333/818-819:   Vector: Kernal SAVE Routine

   Points to $F5ED
   Modified by AR6 (goes to $DF6F)
   Modified by FC3 (goes to $DE35)

Kernal-Reference:

 JMP ($0332) : $F5EA



 $0334-$033B/820-827:   Unused

  Used by Exomizer: Depacker - tables ($0334 - $03CF)



 $033C-$03FB/828-1019:   Tape I/O Buffer

  Used by Exomizer: Depacker - tables ($0334 - $03CF)



 $0340-$037E/832-894:   Sprite #13



 $0380-$03BE/896-958:   Sprite #14



 $03C0-$03FE/960-1022:   Sprite #15



 $03FC-$03FF/1020-1023:   Unused



  +------------------------------------------------------------------------
  |
  |      BASIC ROM LISTING
  |
  +------------------------------------------------------------------------
  |
  | BASIC related topics:
  |
  |   CHR$/ASC-Table for Upper Case/Graphics
  |   CHR$/ASC-Table for Lower Case/Upper Case
  |
  |
  |   $A000/40960      Restart Vectors
  |   $A004/40964      'CBMBASIC'-Identifier
  |   $A00C/40972      BASIC Command Vectors - 1
  |   $A052/41042      BASIC Function Vectors
  |   $A080/41088      BASIC Operator Vectors
  |   $A09E/41118      BASIC Command Keyword Table
  |   $A129/41257      BASIC Misc. Keyword Table
  |   $A140/41280      BASIC Operator Keyword Table
  |   $A14D/41293      BASIC Function Keyword Table
  |   $A19E/41374      Error Message Table
  |   $A328/41768      Error Message Pointers
  |   $A364/41828      Misc. Messages
  |   $A38A/41866      Find FOR/GOSUB Entry on Stack
  |   $A3B8/41912      Open Space in Memory
  |   $A3FB/41979      Check Stack Depth
  |   $A408/41992      Check Memory Overlap
  |   $A435/42037      Output ?OUT OF MEMORY Error
  |   $A437/42039      Error Routine
  |   $A469/42089      Break Entry
  |   $A474/42100      Restart BASIC
  |   $A480/42112      Input & Identify BASIC Line
  |   $A49C/42140      Get Line Number & Tokenise Text
  |   $A4A2/42146      Insert BASIC Text
  |   $A533/42291      Rechain Lines
  |   $A560/42336      Input Line Into Buffer
  |   $A579/42361      Tokenise Input Buffer
  |   $A613/42515      Search for Line Number
  |   $A642/42562      Perform [new]
  |   $A65E/42590      Perform [clr]
  |   $A68E/42638      Reset TXTPTR
  |   $A69C/42652      Perform [list]
  |   $A717/42775      Handle LIST Character
  |   $A742/42818      Perform [for]
  |   $A7AE/42926      BASIC Warm Start
  |   $A7C4/42948      Check End of Program
  |   $A7E1/42977      Prepare to execute statement
  |   $A7ED/42989      Perform BASIC Keyword
  |   $A81D/43037      Perform [restore]
  |   $A82C/43052      Perform [stop]
  |   $A82F/43055      Perform [end]
  |   $A831/43057      Perform Break
  |   $A857/43095      Perform [cont]
  |   $A871/43121      Perform [run]
  |   $A883/43139      Perform [gosub]
  |   $A8A0/43168      Perform [goto]
  |   $A8D2/43218      Perform [return]
  |   $A8F8/43256      Perform [data]
  |   $A906/43270      Search for Next Statement / Line
  |   $A928/43304      Perform [if]
  |   $A93B/43323      Perform [rem]
  |   $A94B/43339      Perform [on]
  |   $A96B/43371      Fetch linnum From BASIC
  |   $A9A5/43429      Perform [let]
  |   $A9C4/43460      Assign Integer
  |   $A9D6/43478      Assign Floating Point
  |   $A9D9/43481      Assign String
  |   $A9E3/43491      Assign TI$
  |   $AA2C/43564      Add Digit to FAC#1
  |   $AA80/43648      Perform [print#]
  |   $AA86/43654      Perform [cmd]
  |   $AA9A/43674      Print String From Memory
  |   $AAA0/43680      Perform [print]
  |   $AAB8/43704      Output Variable
  |   $AACA/43722      -Add zero terminator to string
  |   $AAD7/43735      Output CR/LF
  |   $AAE8/43752      Handle comma, TAB(, SPC(
  |   $AB1E/43806      Output String
  |   $AB3B/43835      Output Format Character
  |   $AB4D/43853      Handle Bad Data
  |   $AB7B/43899      Perform [get]
  |   $ABA5/43941      Perform [input#]
  |   $ABBF/43967      Perform [input]
  |   $ABEA/44010      Read Input Buffer
  |   $ABF9/44025      Do Input Prompt
  |   $AC06/44038      Perform [read]
  |   $AC35/44085      General Purpose Read Routine
  |   $ACFC/44284      Input Error Messages
  |   $AD1E/44318      Perform [next]
  |   $AD61/44385      Check Valid Loop
  |   $AD8A/44426      Confirm Result
  |   $AD9E/44446      Evaluate Expression in Text
  |   $AE83/44675      Evaluate Single Term
  |   $AEA8/44712      Constant - pi
  |   $AEAD/44717      Continue Expression
  |   $AEF1/44785      Expression in Brackets
  |   $AEF7/44791      Test ')'
  |   $AEFA/44794      Test '('
  |   $AEFD/44797      Test ','
  |   $AF08/44808      Output ?SYNTAX Error
  |   $AF0D/44813      Set up NOT Function
  |   $AF14/44820      Identify Reserved Variable
  |   $AF28/44840      Search for Variable
  |   $AF48/44872      Convert TI to ASCII String
  |   $AFA7/44967      Identify Function Type
  |   $AFB1/44977      Evaluate String Function
  |   $AFD1/45009      Evaluate Numeric Function
  |   $AFE6/45030      Perform [or], [and]
  |   $B016/45078      Perform <, =, >
  |   $B01B/45083      Numeric Comparison
  |   $B02E/45102      String Comparison
  |   $B07E/45182      Perform [dim]
  |   $B08B/45195      Identify Variable
  |   $B0E7/45287      Locate Ordinary Variable
  |   $B113/45331      Does A hold an alphabetic character?
  |   $B11D/45341      Create New Variable
  |   $B128/45352      Create Variable
  |   $B194/45460      Allocate Array Pointer Space
  |   $B1A5/45477      Constant 32768 in Flpt
  |   $B1AA/45482      FAC#1 to Integer in A/Y
  |   $B1B2/45490      Evaluate Text for Integer
  |   $B1BF/45503      FAC#1 to Positive Integer
  |   $B1D1/45521      Get Array Parameters
  |   $B218/45592      Find Array
  |   $B245/45637      ?BAD SUBSCRIPT
  |   $B248/45640      ?ILLEGAL QUANTITY
  |   $B24D/45645      ?REDIM'D ARRAY
  |   $B261/45665      Create Array
  |   $B30E/45838      Locate Element in Array
  |   $B34C/45900      Number of Bytes in Subscript
  |   $B37D/45949      Evaluate <fre>
  |   $B391/45969      Convert Integer in (AC/YR) to Flpt
  |   $B39E/45982      Evaluate <pos>
  |   $B3A6/45990      Confirm Program Mode
  |   $B3AE/45998      ?UNDEF'D FUNCTION
  |   $B3B3/46003      Perform [def fn]
  |   $B3E1/46049      Check Syntax of FN
  |   $B3F4/46068      Perform [fn]
  |   $B465/46181      Evaluate <str$>
  |   $B487/46215      Set Up String
  |   $B4D5/46293      Save String Descriptor
  |   $B4F4/46324      Allocate Space for String
  |   $B526/46374      Garbage Collection
  |   $B5BD/46525      Search for Next String
  |   $B606/46598      Collect a String
  |   $B63D/46653      Concatenate Two Strings
  |   $B67A/46714      Store String in High RAM
  |   $B6A3/46755      Perform String Housekeeping
  |   $B6DB/46811      Clean Descriptor Stack
  |   $B6EC/46828      Evaluate <chr$>
  |   $B700/46848      Evaluate <left$>
  |   $B72C/46892      Evaluate <right$>
  |   $B737/46903      Evaluate <mid$>
  |   $B761/46945      Pull String Parameters
  |   $B77C/46972      Evaluate <len>
  |   $B782/46978      Exit String Mode
  |   $B78B/46987      Evaluate <asc>
  |   $B79B/47003      Evaluate Text to 1 Byte in XR
  |   $B7AD/47021      Evaluate <val>
  |   $B7B5/47029      Convert ASCII String to Flpt
  |   $B7EB/47083      Get parameters for POKE/WAIT
  |   $B7F7/47095      Convert FAC#1 to Integer in LINNUM
  |   $B80D/47117      Evaluate <peek>
  |   $B824/47140      Perform [poke]
  |   $B82D/47149      Perform [wait]
  |   $B849/47177      Add 0.5 to FAC#1
  |   $B850/47184      Perform Subtraction
  |   $B862/47202      Normalise Addition
  |   $B867/47207      Perform Addition
  |   $B947/47431      2's Complement FAC#1
  |   $B97E/47486      Output ?OVERFLOW Error
  |   $B983/47491      Multiply by Zero Byte
  |   $B9BC/47548      Table of Flpt Constants  1.00
  |   $B9C1/47553      Table of Flpt Constants  #03
  |   $B9C2/47554      Table of Flpt Constants  0.434255942
  |   $B9C7/47559      Table of Flpt Constants  0.57658454
  |   $B9CC/47564      Table of Flpt Constants  0.961800759
  |   $B9D1/47569      Table of Flpt Constants  2.885390073
  |   $B9D6/47574      Table of Flpt Constants  0.707106781
  |   $B9DB/47579      Table of Flpt Constants  1.41421356
  |   $B9E0/47584      Table of Flpt Constants  -0.5
  |   $B9E5/47589      Table of Flpt Constants  0.693147181
  |   $B9EA/47594      Evaluate <log>
  |   $BA28/47656      Perform Multiply
  |   $BA59/47705      Multiply by a Byte
  |   $BA8C/47756      Load FAC#2 From Memory
  |   $BAB7/47799      Test Both Accumulators
  |   $BAD4/47828      Overflow / Underflow
  |   $BAE2/47842      Multiply FAC#1 by 10
  |   $BAF9/47865      Constant 10 in Flpt
  |   $BAFE/47870      Divide FAC#1 by 10
  |   $BB07/47879      Divide FAC#2 by Flpt at (AC/YR)
  |   $BB0F/47887      Divide FAC#2 by FAC#1
  |   $BBA2/48034      Load FAC#1 From Memory
  |   $BBC7/48071      Store FAC#1 in Memory
  |   $BBFC/48124      Copy FAC#2 into FAC#1
  |   $BC0C/48140      Copy FAC#1 into FAC#2
  |   $BC1B/48155      Round FAC#1
  |   $BC2B/48171      Check Sign of FAC#1
  |   $BC39/48185      Evaluate <sgn>
  |   $BC58/48216      Evaluate <abs>
  |   $BC5B/48219      Compare FAC#1 With Memory
  |   $BC9B/48283      Convert FAC#1 to Integer
  |   $BCCC/48332      Evaluate <int>
  |   $BCF3/48371      Convert ASCII String to a Number in FAC
  |   $BDB3/48563      String Conversion Constants    99999999
  |   $BDB8/48568      String Conversion Constants   999999999
  |   $BDBD/48573      String Conversion Constants  1000000000
  |   $BDC2/48578      Output 'IN' and Line Number
  |   $BDCD/48589      Output Positive Integer in A/X
  |   $BDDD/48605      Convert FAC#1 to ASCII String
  |   $BE68/48744      Convert TI to String
  |   $BF11/48913      Table of Constants  0.5
  |   $BF16/48918      Table of Constants  4-byte powers of 10
  |   $BF3A/48954      Table of Constants  TI Constants
  |   $BF71/49009      Evaluate <sqr>
  |   $BF7B/49019      Evaluate <power>
  |   $BFB4/49076      Negate FAC#1
  |   $BFBF/49087      Table of Constants  1.44269504
  |   $BFC4/49092      Table of Constants  #07
  |   $BFC5/49093      Table of Constants  2.149875 E-5
  |   $BFCA/49098      Table of Constants  1.435231 E-4
  |   $BFCF/49103      Table of Constants  1.342263 E-3
  |   $BFD4/49108      Table of Constants  9.6414017 E-3
  |   $BFD9/49113      Table of Constants  5.550513 E-2
  |   $BFDE/49118      Table of Constants  2.402263 E-4
  |   $BFE3/49123      Table of Constants  6.931471 E-1
  |   $BFE8/49128      Table of Constants  1.00
  |   $BFED/49133      Evaluate <exp>
  |
  +------------------------------------------------------------------------



  +------------------------------------------------------------------------
  |
  |      KERNAL ROM LISTING
  |
  +------------------------------------------------------------------------
  |
  | KERNAL related topics:
  |
  |   CHR$/ASC-Table for Upper Case/Graphics
  |   CHR$/ASC-Table for Lower Case/Upper Case
  |   Kernal Differences
  |
  |
  |   $E000/57344      EXP continued From BASIC ROM
  |   $E043/57411      Series Evaluation
  |   $E08D/57485      Constants for RND
  |   $E097/57495      Evaluate <rnd>
  |   $E0F9/57593      Handle I/O Error in BASIC
  |   $E10C/57612      Output Character
  |   $E112/57618      Input Character
  |   $E118/57624      Set Up For Output
  |   $E11E/57630      Set Up For Input
  |   $E124/57636      Get One Character
  |   $E12A/57642      Perform [sys]
  |   $E156/57686      Perform [save]
  |   $E165/57701      Perform [verify]
  |   $E168/57704      Perform [load]
  |   $E1BE/57790      Perform [open]
  |   $E1C7/57799      Perform [close]
  |   $E1D4/57812      Get Parameters For LOAD/SAVE
  |   $E200/57856      Get Next One Byte Parameter
  |   $E206/57862      Check Default Parameters
  |   $E20E/57870      Check For Comma
  |   $E219/57881      Get Parameters For OPEN/CLOSE
  |   $E264/57956      Evaluate <cos>
  |   $E26B/57963      Evaluate <sin>
  |   $E2B4/58036      Evaluate <tan>
  |   $E2E0/58080      Table of Trig Constants   1.570796327
  |   $E2E5/58085      Table of Trig Constants   6.28318531
  |   $E2EA/58090      Table of Trig Constants   0.25
  |   $E2EF/58095      Table of Trig Constants   #05
  |   $E2F0/58096      Table of Trig Constants   -14.3813907
  |   $E2F5/58101      Table of Trig Constants   42.0077971
  |   $E2FA/58106      Table of Trig Constants   -76.7041703
  |   $E2FF/58111      Table of Trig Constants   81.6052237
  |   $E304/58116      Table of Trig Constants   -41.3417021
  |   $E309/58121      Table of Trig Constants   6.28318531
  |   $E30E/58126      Evaluate <atn>
  |   $E33E/58174      Table of ATN Constants   #0b
  |   $E33F/58175      Table of ATN Constants   -0.00068479391
  |   $E344/58180      Table of ATN Constants   0.00485094216
  |   $E349/58185      Table of ATN Constants   -0.161117018
  |   $E34E/58190      Table of ATN Constants   0.034209638
  |   $E353/58195      Table of ATN Constants   -0.0542791328
  |   $E358/58200      Table of ATN Constants   0.0724571965
  |   $E35D/58205      Table of ATN Constants   -0.0898023954
  |   $E362/58210      Table of ATN Constants   0.110932413
  |   $E367/58215      Table of ATN Constants   -0.142839808
  |   $E36C/58220      Table of ATN Constants   0.19999912
  |   $E371/58225      Table of ATN Constants   -0.333333316
  |   $E376/58230      Table of ATN Constants   1.00
  |   $E37B/58235      BASIC Warm Start [RUNSTOP-RESTORE]
  |   $E394/58260      BASIC Cold Start
  |   $E3A2/58274      CHRGET For Zero-page
  |   $E3BA/58298      RND Seed For zero-page
  |   $E3BF/58303      Initialize BASIC RAM
  |   $E422/58402      Output Power-Up Message
  |   $E447/58439      Table of BASIC Vectors (for 0300)
  |   $E453/58451      Initialize Vectors
  |   $E45F/58463      Power-Up Message
  |   $E4AC/58540      Version Indicator(?)
  |   $E4AD/58541      Patch for BASIC Call to CHKOUT
  |   $E4B7/58551      Unused Bytes For Future Patches
  |   $E4D3/58579      Patch for RS232-Routines
  |   $E4DA/58586      Reset Character Color
  |   $E4E0/58592      Pause After Finding Tape File
  |   $E4EC/58604      RS232 Timing Table -- PAL
  |   $E500/58624      Get I/O Address
  |   $E505/58629      Get Screen Size
  |   $E50A/58634      Put / Get Row And Column
  |   $E518/58648      Initialize I/O
  |   $E544/58692      Clear Screen
  |   $E566/58726      Home Cursor
  |   $E56C/58732      Set Screen Pointers
  |   $E59A/58778      Set I/O Defaults (Unused Entry)
  |   $E5A0/58784      Set I/O Defaults
  |   $E5B4/58804      Get Character From Keyboard Buffer
  |   $E5CA/58826      Input From Keyboard
  |   $E632/58930      Input From Screen or Keyboard
  |   $E684/59012      Quotes Test
  |   $E691/59025      Set Up Screen Print
  |   $E6B6/59062      Advance Cursor
  |   $E6ED/59117      Retreat Cursor
  |   $E701/59137      Back on to Previous Line
  |   $E716/59158      Output to Screen
  |   $E72A/59178      -unshifted characters-
  |   $E7D4/59348      -shifted characters-
  |   $E87C/59516      Go to Next Line
  |   $E891/59537      Output <CR>
  |   $E8A1/59553      Check Line Decrement
  |   $E8B3/59571      Check Line Increment
  |   $E8CB/59595      Set Color Code
  |   $E8DA/59610      Color Code Table
  |   $E8EA/59626      Scroll Screen
  |   $E965/59749      Open A Space On The Screen
  |   $E9C8/59848      Move A Screen Line
  |   $E9E0/59872      Syncronise Color Transfer
  |   $E9F0/59888      Set Start of Line
  |   $E9FF/59903      Clear Screen Line
  |   $EA13/59923      Print To Screen
  |   $EA24/59940      Syncronise Color Pointer
  |   $EA31/59953      Main IRQ Entry Point
  |   $EA81/60033      Restore A/X/Y and End IRQ
  |   $EA87/60039      Scan Keyboard
  |   $EADD/60125      Process Key Image
  |   $EB48/60232      Check for Shift, CTRL, C=
  |   $EB79/60281      Pointers to Keyboard decoding tables
  |   $EB81/60289      Keyboard 1 -- Unshifted
  |   $EBC2/60354      Keyboard 2 -- Shifted
  |   $EC03/60419      Keyboard 3 -- Commodore
  |   $EC44/60484      Graphics/Text Control
  |   $EC78/60536      Keyboard 4 -- Control
  |   $ECB9/60601      Video Chip Setup Table
  |   $ECE7/60647      Shift-Run Equivalent
  |   $ECF0/60656      Low Byte Screen Line Addresses
  |   $ED09/60681      Send TALK Command on Serial Bus
  |   $ED0C/60684      Send LISTEN Command on Serial Bus
  |   $ED40/60736      Send Data On Serial Bus
  |   $EDAD/60845      Flag Errors: Status #80 - DEVICE NOT PRESENT
  |   $EDB0/60848      Flag Errors: Status #03 - WRITE TIMEOUT
  |   $EDB9/60857      Send LISTEN Secondary Address
  |   $EDBE/60862      Clear ATN
  |   $EDC7/60871      Send TALK Secondary Address
  |   $EDCC/60876      Wait For Clock
  |   $EDDD/60893      Send Serial Deferred
  |   $EDEF/60911      Send UNTALK
  |   $EDFE/60926      Send UNLISTEN
  |   $EE13/60947      Receive From Serial Bus
  |   $EE85/61061      Serial Clock On
  |   $EE8E/61070      Serial Clock Off
  |   $EE97/61079      Serial Output 1
  |   $EEA0/61088      Serial Output 0
  |   $EEA9/61097      Get Serial Data And Clock In
  |   $EEB3/61107      Delay 1 ms
  |   $EEBB/61115      RS232 Send
  |   $EF06/61190      Send New RS232 Byte
  |   $EF2E/61230      'No DSR' / 'No CTS' Error
  |   $EF39/61241      Disable Timer
  |   $EF4A/61258      Compute Bit Count
  |   $EF59/61273      RS232 Receive
  |   $EF7E/61310      Set Up To Receive
  |   $EF90/61328      Process RS232 Byte
  |   $EFE1/61409      Submit to RS232
  |   $F00D/61453      No DSR (Data Set Ready) Error
  |   $F017/61463      Send to RS232 Buffer
  |   $F04D/61517      Input From RS232
  |   $F086/61574      Get From RS232
  |   $F0A4/61604      Serial Bus Idle
  |   $F0BD/61629      Table of Kernal I/O Messages
  |   $F12B/61739      Print Message if Direct
  |   $F12F/61743      Print Message
  |   $F13E/61758      Get a byte
  |   $F157/61783      Input a byte
  |   $F199/61849      Get From Tape / Serial / RS232
  |   $F1CA/61898      Output One Character
  |   $F20E/61966      Set Input Device
  |   $F250/62032      Set Output Device
  |   $F291/62097      Close File
  |   $F30F/62223      Find File
  |   $F31F/62239      Set File values
  |   $F32F/62255      Abort All Files
  |   $F333/62259      Restore Default I/O
  |   $F34A/62282      Open File
  |   $F3D5/62421      Send Secondary Address
  |   $F409/62473      Open RS232
  |   $F49E/62622      Load RAM
  |   $F4B8/62648      Load File From Serial Bus
  |   $F533/62771      Load File From Tape
  |   $F5AF/62895      Print "SEARCHING"
  |   $F5C1/62913      Print Filename
  |   $F5D2/62930      Print "LOADING / VERIFYING"
  |   $F5DD/62941      Save RAM
  |   $F5FA/62970      Save to Serial Bus
  |   $F659/63065      Save to Tape
  |   $F68F/63119      Print "SAVING"
  |   $F69B/63131      Bump Clock
  |   $F6DD/63197      Get Time
  |   $F6E4/63204      Set Time
  |   $F6ED/63213      Check STOP Key
  |   $F6FB/63227      Output I/O Error Messages: 'TOO MANY FILES'
  |   $F6FE/63230      Output I/O Error Messages: 'FILE OPEN'
  |   $F701/63233      Output I/O Error Messages: 'FILE NOT OPEN'
  |   $F704/63236      Output I/O Error Messages: 'FILE NOT FOUND'
  |   $F707/63239      Output I/O Error Messages: 'DEVICE NOT PRESENT'
  |   $F70A/63242      Output I/O Error Messages: 'NOT INPUT FILE'
  |   $F70D/63245      Output I/O Error Messages: 'NOT OUTPUT FILE'
  |   $F710/63248      Output I/O Error Messages: 'MISSING FILENAME'
  |   $F713/63251      Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'
  |   $F72C/63276      Find Any Tape Header
  |   $F76A/63338      Write Tape Header
  |   $F7D0/63440      Get Buffer Address
  |   $F7D7/63447      Set Buffer Stat / End Pointers
  |   $F7EA/63466      Find Specific Tape Header
  |   $F80D/63501      Bump Tape Pointer
  |   $F817/63511      Print "PRESS PLAY ON TAPE"
  |   $F82E/63534      Check Tape Status
  |   $F838/63544      Print "PRESS RECORD..."
  |   $F841/63553      Initiate Tape Read
  |   $F864/63588      Initiate Tape Write
  |   $F875/63605      Common Tape Code
  |   $F8D0/63696      Check Tape Stop
  |   $F8E2/63714      Set Read Timing
  |   $F92C/63788      Read Tape Bits
  |   $FA60/64096      Store Tape Characters
  |   $FB8E/64398      Reset Tape Pointer
  |   $FB97/64407      New Character Setup
  |   $FBA6/64422      Send Tone to Tape
  |   $FBC8/64456      Write Data to Tape
  |   $FBCD/64461      IRQ Entry Point
  |   $FC57/64599      Write Tape Leader
  |   $FC93/64659      Restore Normal IRQ
  |   $FCB8/64696      Set IRQ Vector
  |   $FCCA/64714      Stop Tape Motor
  |   $FCD1/64721      Check Read / Write Pointer
  |   $FCDB/64731      Bump Read / Write Pointer
  |   $FCE2/64738      Power-Up RESET Entry
  |   $FD02/64770      Check For 8-ROM
  |   $FD10/64784      8-ROM Mask 'CBM80'
  |   $FD15/64789      Restore Kernal Vectors
  |   $FD1A/64794      Change Vectors For User
  |   $FD30/64816      Kernal Reset Vectors
  |   $FD50/64848      Initialise System Constants
  |   $FD9B/64923      IRQ Vectors For Tape I/O
  |   $FDA3/64931      Initialise I/O
  |   $FDDD/64989      Enable Timer
  |   $FDF9/65017      Set Filename
  |   $FE00/65024      Set Logical File Parameters
  |   $FE07/65031      Get I/O Status Word
  |   $FE18/65048      Control OS Messages
  |   $FE21/65057      Set IEEE Timeout
  |   $FE25/65061      Read / Set Top of Memory
  |   $FE34/65076      Read / Set Bottom of Memory
  |   $FE43/65091      NMI Transfer Entry
  |   $FE66/65126      Warm Start Basic
  |   $FEBC/65212      Exit Interrupt
  |   $FEC2/65218      RS232 Timing Table - NTSC
  |   $FED6/65238      NMI RS232 In
  |   $FF07/65287      NMI RS232 Out
  |   $FF43/65347      Fake IRQ Entry
  |   $FF48/65352      IRQ Entry
  |   $FF5B/65371      Initialize screen editor
  |   $FF80/65408      Kernal Version Number
  |   $FF81/65409      Init Editor & Video Chips
  |   $FF84/65412      Init I/O Devices, Ports & Timers
  |   $FF87/65415      Init Ram & Buffers
  |   $FF8A/65418      Restore Vectors
  |   $FF8D/65421      Change Vectors For User
  |   $FF90/65424      Control OS Messages
  |   $FF93/65427      Send SA After Listen
  |   $FF96/65430      Send SA After Talk
  |   $FF99/65433      Set/Read System RAM Top
  |   $FF9C/65436      Set/Read System RAM Bottom
  |   $FF9F/65439      Scan Keyboard
  |   $FFA2/65442      Set Timeout In IEEE
  |   $FFA5/65445      Handshake Serial Byte In
  |   $FFA8/65448      Handshake Serial Byte Out
  |   $FFAB/65451      Command Serial Bus UNTALK
  |   $FFAE/65454      Command Serial Bus UNLISTEN
  |   $FFB1/65457      Command Serial Bus LISTEN
  |   $FFB4/65460      Command Serial Bus TALK
  |   $FFB7/65463      Read I/O Status Word
  |   $FFBA/65466      Set Logical File Parameters
  |   $FFBD/65469      Set Filename
  |   $FFC0/65472      Open Vector
  |   $FFC3/65475      Close Vector
  |   $FFC6/65478      Set Input
  |   $FFC9/65481      Set Output
  |   $FFCC/65484      Restore I/O Vector
  |   $FFCF/65487      Input Vector, chrin
  |   $FFD2/65490      Output Vector, chrout
  |   $FFD5/65493      Load RAM From Device
  |   $FFD8/65496      Save RAM To Device
  |   $FFDB/65499      Set Real-Time Clock
  |   $FFDE/65502      Read Real-Time Clock
  |   $FFE1/65505      Test-Stop Vector
  |   $FFE4/65508      Get From Keyboad
  |   $FFE7/65511      Close All Channels And Files
  |   $FFEA/65514      Increment Real-Time Clock
  |   $FFED/65517      Return Screen Organization
  |   $FFF0/65520      Read / Set Cursor X/Y Position
  |   $FFF3/65523      Return I/O Base Address
  |   $FFF6/65526      -
  |   $FFF8/65528      SYSTEM
  |   $FFFA/65530      Vector: NMI
  |   $FFFC/65532      Vector: RESET
  |   $FFFE/65534      Vector: IRQ
  |
  +------------------------------------------------------------------------



 $A000/40960:   Restart Vectors - c64ref 

Jump from $FCFF ($A000):
Jump from $FE6F ($A002):

A000: 94 E3 7B E3                $E394,$E37B



 $A004/40964:   'CBMBASIC'-Identifier - c64ref 

A004: 43 42 4D 42 41 53 49 43    'CBMBASIC'



 $A00C/40972:   BASIC Command Vectors - 1 - c64ref 

A00C: 30 A8 41 A7 1D AD F7 A8    $A830,$A741,$AD1D,$A8F7
A014: A4 AB BE AB 80 B0 05 AC    $ABA4,$ABBE,$B080,$AC05
A01C: A4 A9 9F A8 70 A8 27 A9    $A9A4,$A89F,$A870,$A927
A024: 1C A8 82 A8 D1 A8 3A A9    $A81C,$A882,$A8D1,$A93A
A02C: 2E A8 4A A9 2C B8 67 E1    $A82E,$A94A,$B82C,$E167
A034: 55 E1 64 E1 B2 B3 23 B8    $E155,$E164,$B3B2,$B823
A03C: 7F AA 9F AA 56 A8 9B A6    $AA7F,$AA9F,$A856,$A69B
A044: 5D A6 85 AA 29 E1 BD E1    $A65D,$AA85,$E129,$E1BD
A04C: C6 E1 7A AB 41 A6          $E1C6,$AB7A,$A641


Kernal-Reference:

 LDA $A00C,Y : $A7FD

 LDA $A00D,Y : $A7F9


 $A052/41042:   BASIC Function Vectors - c64ref 

A052: 39 BC CC BC 58 BC 10 03    $BC39,$BCCC,$BC58,$0310
A05A: 7D B3 9E B3 71 BF 97 E0    $B37D,$B39E,$BF71,$E097
A062: EA B9 ED BF 64 E2 6B E2    $B9EA,$BFED,$E264,$E26B
A06A: B4 E2 0E E3 0D B8 7C B7    $E2B4,$E30E,$B80D,$B77C
A072: 65 B4 AD B7 8B B7 EC B6    $B465,$B7AD,$B78B,$B6EC
A07A: 00 B7 2C B7 37 B7          $B700,$B72C,$B737



 $A080/41088:   BASIC Operator Vectors - c64ref 

A080: 79 69 B8 79 52 B8 7B 2A
A088: BA 7B 11 BB 7F 7A BF 50
A090: E8 AF 46 E5 AF 7D B3 BF
A098: 5A D3 AE 64 15 B0


Kernal-Reference:

 CMP $A080,Y : $ADF1 $AE19
 LDX $A080,Y : $AE35

 LDA $A081,Y : $AE24

 LDA $A082,Y : $AE20

 LDA $A09D,Y : $A5FA


 $A09E/41118:   BASIC Command Keyword Table - c64ref 

A09E: 45 4E C4 46 4F D2 4E 45    'END, FOR, NE'
A0A6: 58 D4 44 41 54 C1 49 4E    'XT, DATA, IN'
A0AE: 50 55 54 A3 49 4E 50 55    'PUT#, INPU'
A0B6: D4 44 49 CD 52 45 41 C4    'T, DIM, READ,'
A0BE: 4C 45 D4 47 4F 54 CF 52    'LET, GOTO, R'
A0C6: 55 CE 49 C6 52 45 53 54    'UN, IF, REST'
A0CE: 4F 52 C5 47 4F 53 55 C2    'ORE, GOSUB,'
A0D6: 52 45 54 55 52 CE 52 45    'RETURN, RE'
A0DE: CD 53 54 4F D0 4F CE 57    'M, STOP, ON, W'
A0E6: 41 49 D4 4C 4F 41 C4 53    'AIT, LOAD, S'
A0EE: 41 56 C5 56 45 52 49 46    'AVE, VERIF'
A0F6: D9 44 45 C6 50 4F 4B C5    'Y, DEF, POKE,'
A0FE: 50 52 49 4E 54 A3 50 52    'PRINT#, PR'
A106: 49 4E D4 43 4F 4E D4 4C    'INT, CONT, L'
A10E: 49 53 D4 43 4C D2 43 4D    'IST, CLR, CM'
A116: C4 53 59 D3 4F 50 45 CE    'D, SYS, OPEN,'
A11E: 43 4C 4F 53 C5 47 45 D4    'CLOSE, GET,'
A126: 4E 45 D7                   'NEW,'


Kernal-Reference:

 LDA $A09E,Y : $A5FF $A730 $A738
 SBC $A09E,Y : $A5BC


 $A129/41257:   BASIC Misc. Keyword Table

A129: 54 41 42 A8 54 CF 46 CE    'TAB(, TO, FN,'
A131: 53 50 43 A8 54 48 45 CE    'SPC(, THEN,'
A139: 4E 4F D4 53 54 45 D0       'NOT, STEP,'



 $A140/41280:   BASIC Operator Keyword Table - c64ref 

A140: AB AD AA AF DE 41 4E C4    '+, -, *, /, ^, AND,'
A148: 4F D2 BE BD BC             'OR, >, =, <,'



 $A14D/41293:   BASIC Function Keyword Table

A14D: 53 47 CE 49 4E D4 41 42    'SGN, INT, AB'
A155: D3 55 53 D2 46 52 C5 50    'S, USR, FRE, P'
A15D: 4F D3 53 51 D2 52 4E C4    'OS, SQR, RND,'
A165: 4C 4F C7 45 58 D0 43 4F    'LOG, EXP, CO'
A16D: D3 53 49 CE 54 41 CE 41    'S, SIN, TAN, A'
A175: 54 CE 50 45 45 CB 4C 45    'TN, PEEK, LE'
A17D: CE 53 54 52 A4 56 41 CC    'N, STR$, VAL,'
A185: 41 53 C3 43 48 52 A4 4C    'ASC, CHR$, L'
A18D: 45 46 54 A4 52 49 47 48    'EFT$, RIGH'
A195: 54 A4 4D 49 44 A4 47 CF    'T$, MID$, GO,'
A19D: 00                         '{0}'



 $A19E/41374:   Error Message Table

A19E: 54 4F 4F 20 4D 41 4E 59    'TOO MANY'
A1A6: 20 46 49 4C 45 D3 46 49    ' FILES, FI'
A1AE: 4C 45 20 4F 50 45 CE 46    'LE OPEN, F'
A1B6: 49 4C 45 20 4E 4F 54 20    'ILE NOT '
A1BE: 4F 50 45 CE 46 49 4C 45    'OPEN, FILE'
A1C6: 20 4E 4F 54 20 46 4F 55    ' NOT FOU'
A1CE: 4E C4 44 45 56 49 43 45    'ND, DEVICE'
A1D6: 20 4E 4F 54 20 50 52 45    ' NOT PRE'
A1DE: 53 45 4E D4 4E 4F 54 20    'SENT, NOT '
A1E6: 49 4E 50 55 54 20 46 49    'INPUT FI'
A1EE: 4C C5 4E 4F 54 20 4F 55    'LE, NOT OU'
A1F6: 54 50 55 54 20 46 49 4C    'TPUT FIL'
A1FE: C5 4D 49 53 53 49 4E 47    'E, MISSING'
A206: 20 46 49 4C 45 20 4E 41    ' FILE NA'
A20E: 4D C5 49 4C 4C 45 47 41    'ME, ILLEGA'
A216: 4C 20 44 45 56 49 43 45    'L DEVICE'
A21E: 20 4E 55 4D 42 45 D2 4E    ' NUMBER, N'
A226: 45 58 54 20 57 49 54 48    'EXT WITH'
A22E: 4F 55 54 20 46 4F D2 53    'OUT FOR, S'
A236: 59 4E 54 41 D8 52 45 54    'YNTAX, RET'
A23E: 55 52 4E 20 57 49 54 48    'URN WITH'
A246: 4F 55 54 20 47 4F 53 55    'OUT GOSU'
A24E: C2 4F 55 54 20 4F 46 20    'B, OUT OF '
A256: 44 41 54 C1 49 4C 4C 45    'DATA, ILLE'
A25E: 47 41 4C 20 51 55 41 4E    'GAL QUAN'
A266: 54 49 54 D9 4F 56 45 52    'TITY, OVER'
A26E: 46 4C 4F D7 4F 55 54 20    'FLOW, OUT '
A276: 4F 46 20 4D 45 4D 4F 52    'OF MEMOR'
A27E: D9 55 4E 44 45 46 27 44    'Y, UNDEF'D'
A286: 20 53 54 41 54 45 4D 45    ' STATEME'
A28E: 4E D4 42 41 44 20 53 55    'NT, BAD SU'
A296: 42 53 43 52 49 50 D4 52    'BSCRIPT, R'
A29E: 45 44 49 4D 27 44 20 41    'EDIM'D A'
A2A6: 52 52 41 D9 44 49 56 49    'RRAY, DIVI'
A2AE: 53 49 4F 4E 20 42 59 20    'SION BY '
A2B6: 5A 45 52 CF 49 4C 4C 45    'ZERO, ILLE'
A2BE: 47 41 4C 20 44 49 52 45    'GAL DIRE'
A2C6: 43 D4 54 59 50 45 20 4D    'CT, TYPE M'
A2CE: 49 53 4D 41 54 43 C8 53    'ISMATCH, S'
A2D6: 54 52 49 4E 47 20 54 4F    'TRING TO'
A2DE: 4F 20 4C 4F 4E C7 46 49    'O LONG, FI'
A2E6: 4C 45 20 44 41 54 C1 46    'LE DATA, F'
A2EE: 4F 52 4D 55 4C 41 20 54    'ORMULA T'
A2F6: 4F 4F 20 43 4F 4D 50 4C    'OO COMPL'
A2FE: 45 D8 43 41 4E 27 54 20    'EX, CAN'T '
A306: 43 4F 4E 54 49 4E 55 C5    'CONTINUE,'
A30E: 55 4E 44 45 46 27 44 20    'UNDEF'D '
A316: 46 55 4E 43 54 49 4F CE    'FUNCTION,'
A31E: 56 45 52 49 46 D9 4C 4F    'VERIFY, LO'
A326: 41 C4                      'AD'


Kernal-Reference:

 LDA $A326,X : $A43D

 LDA $A327,X : $A442


 $A328/41768:   Error Message Pointers - c64ref 

A328: 9E A1 AC A1 B5 A1 C2 A1    $A19E,$A1AC,$A1B5,$A1C2
A330: D0 A1 E2 A1 F0 A1 FF A1    $A1D0,$A1E2,$A1F0,$A1FF
A338: 10 A2 25 A2 35 A2 3B A2    $A210,$A225,$A235,$A23B
A340: 4F A2 5A A2 6A A2 72 A2    $A24F,$A25A,$A26A,$A272
A348: 7F A2 90 A2 9D A2 AA A2    $A27F,$A290,$A29D,$A2AA
A350: BA A2 C8 A2 D5 A2 E4 A2    $A2BA,$A2C8,$A2D5,$A2E4
A358: ED A2 00 A3 0E A3 1E A3    $A2ED,$A300,$A30E,$A31E
A360: 24 A3 83 A3                $A324,$A383



 $A364/41828:   Misc. Messages - c64ref 

A364: 0D 4F 4B 0D 00 20 20 45    '{CR}OK{CR}{0}  E'
A36C: 52 52 4F 52 00 20 49 4E    'RROR{0} IN'
A374: 20 00 0D 0A 52 45 41 44    ' {0}{CR}{10}READ'
A37C: 59 2E 0D 0A 00 0D 0A 42    'Y.{CR}{10}{0}{CR}{10}B'
A384: 52 45 41 4B 00 A0          'REAK{0} '



 $A38A/41866:   Find FOR/GOSUB Entry on Stack - c64ref 

Jump from $A749, $A8D8, $AD2B:

A38A: BA        TSX
A38B: E8        INX
A38C: E8        INX
A38D: E8        INX
A38E: E8        INX

Jump from $A3B5:

A38F: BD 01 01  LDA $0101,X   ; 6510 Hardware Stack Area
A392: C9 81     CMP #$81
A394: D0 21     BNE $A3B7
A396: A5 4A     LDA $4A       ; Pointer: Index Variable for FOR/NEXT loop
A398: D0 0A     BNE $A3A4
A39A: BD 02 01  LDA $0102,X   ; 6510 Hardware Stack Area
A39D: 85 49     STA $49       ; Pointer: Index Variable for FOR/NEXT loop
A39F: BD 03 01  LDA $0103,X   ; 6510 Hardware Stack Area
A3A2: 85 4A     STA $4A       ; Pointer: Index Variable for FOR/NEXT loop

Jump from $A398:

A3A4: DD 03 01  CMP $0103,X   ; 6510 Hardware Stack Area
A3A7: D0 07     BNE $A3B0
A3A9: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
A3AB: DD 02 01  CMP $0102,X   ; 6510 Hardware Stack Area
A3AE: F0 07     BEQ $A3B7

Jump from $A3A7:

A3B0: 8A        TXA
A3B1: 18        CLC
A3B2: 69 12     ADC #$12
A3B4: AA        TAX
A3B5: D0 D8     BNE $A38F

Jump from $A394, $A3AE:

A3B7: 60        RTS



 $A3B8/41912:   Open Space in Memory - c64ref 

Jump from $A50A, $B15D:

A3B8: 20 08 A4  JSR $A408     ; Check Memory Overlap
A3BB: 85 31     STA $31       ; Pointer: End of BASIC Arrays + 1
A3BD: 84 32     STY $32       ; Pointer: End of BASIC Arrays + 1

Jump from $B628:

A3BF: 38        SEC
A3C0: A5 5A     LDA $5A       ; Temporary storage for FLPT value
A3C2: E5 5F     SBC $5F       ; Temporary storage for FLPT value
A3C4: 85 22     STA $22       ; Second Utility Pointer
A3C6: A8        TAY
A3C7: A5 5B     LDA $5B       ; Temporary storage for FLPT value
A3C9: E5 60     SBC $60       ; Temporary storage for FLPT value
A3CB: AA        TAX
A3CC: E8        INX
A3CD: 98        TYA
A3CE: F0 23     BEQ $A3F3
A3D0: A5 5A     LDA $5A       ; Temporary storage for FLPT value
A3D2: 38        SEC
A3D3: E5 22     SBC $22       ; Second Utility Pointer
A3D5: 85 5A     STA $5A       ; Temporary storage for FLPT value
A3D7: B0 03     BCS $A3DC
A3D9: C6 5B     DEC $5B       ; Temporary storage for FLPT value
A3DB: 38        SEC

Jump from $A3D7:

A3DC: A5 58     LDA $58       ; Temporary storage for FLPT value
A3DE: E5 22     SBC $22       ; Second Utility Pointer
A3E0: 85 58     STA $58       ; Temporary storage for FLPT value
A3E2: B0 08     BCS $A3EC
A3E4: C6 59     DEC $59       ; Temporary storage for FLPT value
A3E6: 90 04     BCC $A3EC

Jump from $A3ED:

A3E8: B1 5A     LDA ($5A),Y   ; Temporary storage for FLPT value
A3EA: 91 58     STA ($58),Y   ; Temporary storage for FLPT value

Jump from $A3E2, $A3E6, $A3F8:

A3EC: 88        DEY
A3ED: D0 F9     BNE $A3E8
A3EF: B1 5A     LDA ($5A),Y   ; Temporary storage for FLPT value
A3F1: 91 58     STA ($58),Y   ; Temporary storage for FLPT value

Jump from $A3CE:

A3F3: C6 5B     DEC $5B       ; Temporary storage for FLPT value
A3F5: C6 59     DEC $59       ; Temporary storage for FLPT value
A3F7: CA        DEX
A3F8: D0 F2     BNE $A3EC
A3FA: 60        RTS



 $A3FB/41979:   Check Stack Depth - c64ref 

Jump from $A757, $A885, $ADAE:

A3FB: 0A        ASL
A3FC: 69 3E     ADC #$3E
A3FE: B0 35     BCS $A435     ; Output ?OUT OF MEMORY Error
A400: 85 22     STA $22       ; Second Utility Pointer
A402: BA        TSX
A403: E4 22     CPX $22       ; Second Utility Pointer
A405: 90 2E     BCC $A435     ; Output ?OUT OF MEMORY Error
A407: 60        RTS



 $A408/41992:   Check Memory Overlap - c64ref 

Jump from $A3B8, $B264, $B2B9, $E426:

A408: C4 34     CPY $34       ; Pointer: Bottom of String space
A40A: 90 28     BCC $A434
A40C: D0 04     BNE $A412
A40E: C5 33     CMP $33       ; Pointer: Bottom of String space
A410: 90 22     BCC $A434

Jump from $A40C:

A412: 48        PHA
A413: A2 09     LDX #$09
A415: 98        TYA

Jump from $A41A:

A416: 48        PHA
A417: B5 57     LDA $57,X     ; Temporary storage for FLPT value
A419: CA        DEX
A41A: 10 FA     BPL $A416
A41C: 20 26 B5  JSR $B526     ; Garbage Collection
A41F: A2 F7     LDX #$F7

Jump from $A425:

A421: 68        PLA
A422: 95 61     STA $61,X     ; FAC Exponent
A424: E8        INX
A425: 30 FA     BMI $A421
A427: 68        PLA
A428: A8        TAY
A429: 68        PLA
A42A: C4 34     CPY $34       ; Pointer: Bottom of String space
A42C: 90 06     BCC $A434
A42E: D0 05     BNE $A435     ; Output ?OUT OF MEMORY Error
A430: C5 33     CMP $33       ; Pointer: Bottom of String space
A432: B0 01     BCS $A435     ; Output ?OUT OF MEMORY Error

Jump from $A40A, $A410, $A42C:

A434: 60        RTS



 $A435/42037:   Output ?OUT OF MEMORY Error - c64ref 

Jump from $A3FE, $A405, $A42E, $A432, $B30B:

A435: A2 10     LDX #$10



 $A437/42039:   Error Routine - c64ref 

Jump from $A573, $A85F, $A8E5, $AB68, $AD32, $AD9B, $AF0A, $B24A, $B3B0,
          $B4D2, $B65A, $B980, $BB8C, $E109, $E19E:

A437: 6C 00 03  JMP ($0300)   ; Vector: BASIC Error Message

Jump from $E38E:

A43A: 8A        TXA
A43B: 0A        ASL
A43C: AA        TAX
A43D: BD 26 A3  LDA $A326,X   ; Error Message Table
A440: 85 22     STA $22       ; Second Utility Pointer
A442: BD 27 A3  LDA $A327,X   ; Error Message Table
A445: 85 23     STA $23       ; Second Utility Pointer
A447: 20 CC FF  JSR $FFCC     ; Restore I/O Vector
A44A: A9 00     LDA #$00
A44C: 85 13     STA $13       ; File number of current Input Device
A44E: 20 D7 AA  JSR $AAD7     ; Output CR/LF
A451: 20 45 AB  JSR $AB45     ; Output Format Character
A454: A0 00     LDY #$00

Jump from $A460:

A456: B1 22     LDA ($22),Y   ; Second Utility Pointer
A458: 48        PHA
A459: 29 7F     AND #$7F
A45B: 20 47 AB  JSR $AB47     ; Output Format Character
A45E: C8        INY
A45F: 68        PLA
A460: 10 F4     BPL $A456
A462: 20 7A A6  JSR $A67A     ; Perform [clr]
A465: A9 69     LDA #$69
A467: A0 A3     LDY #$A3



 $A469/42089:   Break Entry - c64ref 

Jump from $A851:

A469: 20 1E AB  JSR $AB1E     ; Output String
A46C: A4 3A     LDY $3A       ; Current BASIC Line number
A46E: C8        INY
A46F: F0 03     BEQ $A474     ; Restart BASIC
A471: 20 C2 BD  JSR $BDC2     ; Output 'IN' and Line Number



 $A474/42100:   Restart BASIC - c64ref 

Jump from $A46F, $E391:

A474: A9 76     LDA #$76
A476: A0 A3     LDY #$A3
A478: 20 1E AB  JSR $AB1E     ; Output String
A47B: A9 80     LDA #$80
A47D: 20 90 FF  JSR $FF90     ; Control OS Messages



 $A480/42112:   Input & Identify BASIC Line - c64ref 

Jump from $A48E, $A4F6, $A530:

A480: 6C 02 03  JMP ($0302)   ; Vector: BASIC Input Line and Decode
A483: 20 60 A5  JSR $A560     ; Input Line Into Buffer
A486: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
A488: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
A48A: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A48D: AA        TAX
A48E: F0 F0     BEQ $A480
A490: A2 FF     LDX #$FF
A492: 86 3A     STX $3A       ; Current BASIC Line number
A494: 90 06     BCC $A49C     ; Get Line Number & Tokenise Text
A496: 20 79 A5  JSR $A579     ; Tokenise Input Buffer
A499: 4C E1 A7  JMP $A7E1     ; Prepare to execute statement



 $A49C/42140:   Get Line Number & Tokenise Text - c64ref 

Jump from $A494:

A49C: 20 6B A9  JSR $A96B     ; Fetch linnum From BASIC
A49F: 20 79 A5  JSR $A579     ; Tokenise Input Buffer



 $A4A2/42146:   Insert BASIC Text - c64ref 

A4A2: 84 0B     STY $0B       ; Input Buffer Pointer/Number of Subscripts
A4A4: 20 13 A6  JSR $A613     ; Search for Line Number
A4A7: 90 44     BCC $A4ED
A4A9: A0 01     LDY #$01
A4AB: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A4AD: 85 23     STA $23       ; Second Utility Pointer
A4AF: A5 2D     LDA $2D       ; Pointer: Start of BASIC Variables
A4B1: 85 22     STA $22       ; Second Utility Pointer
A4B3: A5 60     LDA $60       ; Temporary storage for FLPT value
A4B5: 85 25     STA $25       ; Second Utility Pointer
A4B7: A5 5F     LDA $5F       ; Temporary storage for FLPT value
A4B9: 88        DEY
A4BA: F1 5F     SBC ($5F),Y   ; Temporary storage for FLPT value
A4BC: 18        CLC
A4BD: 65 2D     ADC $2D       ; Pointer: Start of BASIC Variables
A4BF: 85 2D     STA $2D       ; Pointer: Start of BASIC Variables
A4C1: 85 24     STA $24       ; Second Utility Pointer
A4C3: A5 2E     LDA $2E       ; Pointer: Start of BASIC Variables
A4C5: 69 FF     ADC #$FF
A4C7: 85 2E     STA $2E       ; Pointer: Start of BASIC Variables
A4C9: E5 60     SBC $60       ; Temporary storage for FLPT value
A4CB: AA        TAX
A4CC: 38        SEC
A4CD: A5 5F     LDA $5F       ; Temporary storage for FLPT value
A4CF: E5 2D     SBC $2D       ; Pointer: Start of BASIC Variables
A4D1: A8        TAY
A4D2: B0 03     BCS $A4D7
A4D4: E8        INX
A4D5: C6 25     DEC $25       ; Second Utility Pointer

Jump from $A4D2:

A4D7: 18        CLC
A4D8: 65 22     ADC $22       ; Second Utility Pointer
A4DA: 90 03     BCC $A4DF
A4DC: C6 23     DEC $23       ; Second Utility Pointer
A4DE: 18        CLC

Jump from $A4DA, $A4E4, $A4EB:

A4DF: B1 22     LDA ($22),Y   ; Second Utility Pointer
A4E1: 91 24     STA ($24),Y   ; Second Utility Pointer
A4E3: C8        INY
A4E4: D0 F9     BNE $A4DF
A4E6: E6 23     INC $23       ; Second Utility Pointer
A4E8: E6 25     INC $25       ; Second Utility Pointer
A4EA: CA        DEX
A4EB: D0 F2     BNE $A4DF

Jump from $A4A7:

A4ED: 20 59 A6  JSR $A659     ; Perform [new]
A4F0: 20 33 A5  JSR $A533     ; Rechain Lines
A4F3: AD 00 02  LDA $0200     ; BASIC Input Buffer (Input Line from Screen)
A4F6: F0 88     BEQ $A480     ; Input & Identify BASIC Line
A4F8: 18        CLC
A4F9: A5 2D     LDA $2D       ; Pointer: Start of BASIC Variables
A4FB: 85 5A     STA $5A       ; Temporary storage for FLPT value
A4FD: 65 0B     ADC $0B       ; Input Buffer Pointer/Number of Subscripts
A4FF: 85 58     STA $58       ; Temporary storage for FLPT value
A501: A4 2E     LDY $2E       ; Pointer: Start of BASIC Variables
A503: 84 5B     STY $5B       ; Temporary storage for FLPT value
A505: 90 01     BCC $A508
A507: C8        INY

Jump from $A505:

A508: 84 59     STY $59       ; Temporary storage for FLPT value
A50A: 20 B8 A3  JSR $A3B8     ; Open Space in Memory
A50D: A5 14     LDA $14       ; Temporary: Integer value
A50F: A4 15     LDY $15       ; Temporary: Integer value
A511: 8D FE 01  STA $01FE     ; BASIC Stack Area
A514: 8C FF 01  STY $01FF     ; BASIC Stack Area
A517: A5 31     LDA $31       ; Pointer: End of BASIC Arrays + 1
A519: A4 32     LDY $32       ; Pointer: End of BASIC Arrays + 1
A51B: 85 2D     STA $2D       ; Pointer: Start of BASIC Variables
A51D: 84 2E     STY $2E       ; Pointer: Start of BASIC Variables
A51F: A4 0B     LDY $0B       ; Input Buffer Pointer/Number of Subscripts
A521: 88        DEY

Jump from $A528:

A522: B9 FC 01  LDA $01FC,Y   ; BASIC Stack Area
A525: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
A527: 88        DEY
A528: 10 F8     BPL $A522

Jump from $E1B2:

A52A: 20 59 A6  JSR $A659     ; Perform [new]
A52D: 20 33 A5  JSR $A533     ; Rechain Lines
A530: 4C 80 A4  JMP $A480     ; Input & Identify BASIC Line



 $A533/42291:   Rechain Lines - c64ref 

Jump from $A4F0, $A52D, $E1B8:

A533: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A535: A4 2C     LDY $2C       ; Pointer: Start of BASIC Text Area
A537: 85 22     STA $22       ; Second Utility Pointer
A539: 84 23     STY $23       ; Second Utility Pointer
A53B: 18        CLC

Jump from $A55D:

A53C: A0 01     LDY #$01
A53E: B1 22     LDA ($22),Y   ; Second Utility Pointer
A540: F0 1D     BEQ $A55F
A542: A0 04     LDY #$04

Jump from $A547:

A544: C8        INY
A545: B1 22     LDA ($22),Y   ; Second Utility Pointer
A547: D0 FB     BNE $A544
A549: C8        INY
A54A: 98        TYA
A54B: 65 22     ADC $22       ; Second Utility Pointer
A54D: AA        TAX
A54E: A0 00     LDY #$00
A550: 91 22     STA ($22),Y   ; Second Utility Pointer
A552: A5 23     LDA $23       ; Second Utility Pointer
A554: 69 00     ADC #$00
A556: C8        INY
A557: 91 22     STA ($22),Y   ; Second Utility Pointer
A559: 86 22     STX $22       ; Second Utility Pointer
A55B: 85 23     STA $23       ; Second Utility Pointer
A55D: 90 DD     BCC $A53C

Jump from $A540:

A55F: 60        RTS



 $A560/42336:   Input Line Into Buffer - c64ref 

Jump from $A483, $AC03:

A560: A2 00     LDX #$00

Jump from $A56F:

A562: 20 12 E1  JSR $E112     ; Input Character
A565: C9 0D     CMP #$0D
A567: F0 0D     BEQ $A576
A569: 9D 00 02  STA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
A56C: E8        INX
A56D: E0 59     CPX #$59
A56F: 90 F1     BCC $A562
A571: A2 17     LDX #$17
A573: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $A567:

A576: 4C CA AA  JMP $AACA     ; -Add zero terminator to string



 $A579/42361:   Tokenise Input Buffer - c64ref 

Jump from $A496, $A49F:

A579: 6C 04 03  JMP ($0304)   ; Vector: BASIC Tokenise Routine
A57C: A6 7A     LDX $7A       ; Pointer: Current Byte of BASIC Text
A57E: A0 04     LDY #$04
A580: 84 0F     STY $0F       ; Flag: DATA scan/List Quote/Garbage collection

Jump from $A58C, $A5E1:

A582: BD 00 02  LDA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
A585: 10 07     BPL $A58E
A587: C9 FF     CMP #$FF
A589: F0 3E     BEQ $A5C9
A58B: E8        INX
A58C: D0 F4     BNE $A582

Jump from $A585:

A58E: C9 20     CMP #$20
A590: F0 37     BEQ $A5C9
A592: 85 08     STA $08       ; Flag: Scan for Quote at end of String
A594: C9 22     CMP #$22
A596: F0 56     BEQ $A5EE
A598: 24 0F     BIT $0F       ; Flag: DATA scan/List Quote/Garbage collection
A59A: 70 2D     BVS $A5C9
A59C: C9 3F     CMP #$3F
A59E: D0 04     BNE $A5A4
A5A0: A9 99     LDA #$99
A5A2: D0 25     BNE $A5C9

Jump from $A59E:

A5A4: C9 30     CMP #$30
A5A6: 90 04     BCC $A5AC
A5A8: C9 3C     CMP #$3C
A5AA: 90 1D     BCC $A5C9

Jump from $A5A6:

A5AC: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion
A5AE: A0 00     LDY #$00
A5B0: 84 0B     STY $0B       ; Input Buffer Pointer/Number of Subscripts
A5B2: 88        DEY
A5B3: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
A5B5: CA        DEX

Jump from $A5BF:

A5B6: C8        INY
A5B7: E8        INX

Jump from $A602:

A5B8: BD 00 02  LDA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
A5BB: 38        SEC
A5BC: F9 9E A0  SBC $A09E,Y   ; BASIC Command Keyword Table
A5BF: F0 F5     BEQ $A5B6
A5C1: C9 80     CMP #$80
A5C3: D0 30     BNE $A5F5
A5C5: 05 0B     ORA $0B       ; Input Buffer Pointer/Number of Subscripts

Jump from $A607:

A5C7: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $A589, $A590, $A59A, $A5A2, $A5AA, $A5E8, $A5EC:

A5C9: E8        INX
A5CA: C8        INY
A5CB: 99 FB 01  STA $01FB,Y   ; BASIC Stack Area
A5CE: B9 FB 01  LDA $01FB,Y   ; BASIC Stack Area
A5D1: F0 36     BEQ $A609
A5D3: 38        SEC
A5D4: E9 3A     SBC #$3A
A5D6: F0 04     BEQ $A5DC
A5D8: C9 49     CMP #$49
A5DA: D0 02     BNE $A5DE

Jump from $A5D6:

A5DC: 85 0F     STA $0F       ; Flag: DATA scan/List Quote/Garbage collection

Jump from $A5DA:

A5DE: 38        SEC
A5DF: E9 55     SBC #$55
A5E1: D0 9F     BNE $A582
A5E3: 85 08     STA $08       ; Flag: Scan for Quote at end of String

Jump from $A5F3:

A5E5: BD 00 02  LDA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
A5E8: F0 DF     BEQ $A5C9
A5EA: C5 08     CMP $08       ; Flag: Scan for Quote at end of String
A5EC: F0 DB     BEQ $A5C9

Jump from $A596:

A5EE: C8        INY
A5EF: 99 FB 01  STA $01FB,Y   ; BASIC Stack Area
A5F2: E8        INX
A5F3: D0 F0     BNE $A5E5

Jump from $A5C3:

A5F5: A6 7A     LDX $7A       ; Pointer: Current Byte of BASIC Text
A5F7: E6 0B     INC $0B       ; Input Buffer Pointer/Number of Subscripts

Jump from $A5FD:

A5F9: C8        INY
A5FA: B9 9D A0  LDA $A09D,Y   ; BASIC Operator Vectors
A5FD: 10 FA     BPL $A5F9
A5FF: B9 9E A0  LDA $A09E,Y   ; BASIC Command Keyword Table
A602: D0 B4     BNE $A5B8
A604: BD 00 02  LDA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
A607: 10 BE     BPL $A5C7

Jump from $A5D1:

A609: 99 FD 01  STA $01FD,Y   ; BASIC Stack Area
A60C: C6 7B     DEC $7B       ; Pointer: Current Byte of BASIC Text
A60E: A9 FF     LDA #$FF
A610: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A612: 60        RTS



 $A613/42515:   Search for Line Number - c64ref 

Jump from $A4A4, $A6A7:

A613: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A615: A6 2C     LDX $2C       ; Pointer: Start of BASIC Text Area

Jump from $A63E, $A8C0:

A617: A0 01     LDY #$01
A619: 85 5F     STA $5F       ; Temporary storage for FLPT value
A61B: 86 60     STX $60       ; Temporary storage for FLPT value
A61D: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A61F: F0 1F     BEQ $A640
A621: C8        INY
A622: C8        INY
A623: A5 15     LDA $15       ; Temporary: Integer value
A625: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
A627: 90 18     BCC $A641
A629: F0 03     BEQ $A62E
A62B: 88        DEY
A62C: D0 09     BNE $A637

Jump from $A629:

A62E: A5 14     LDA $14       ; Temporary: Integer value
A630: 88        DEY
A631: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
A633: 90 0C     BCC $A641
A635: F0 0A     BEQ $A641

Jump from $A62C:

A637: 88        DEY
A638: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A63A: AA        TAX
A63B: 88        DEY
A63C: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A63E: B0 D7     BCS $A617

Jump from $A61F:

A640: 18        CLC

Jump from $A627, $A633, $A635, $A642, $A6B1, $A6B9:

A641: 60        RTS



 $A642/42562:   Perform [new] - c64ref 

A642: D0 FD     BNE $A641     ; Search for Line Number

Jump from $E444:

A644: A9 00     LDA #$00
A646: A8        TAY
A647: 91 2B     STA ($2B),Y   ; Pointer: Start of BASIC Text Area
A649: C8        INY
A64A: 91 2B     STA ($2B),Y   ; Pointer: Start of BASIC Text Area
A64C: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A64E: 18        CLC
A64F: 69 02     ADC #$02
A651: 85 2D     STA $2D       ; Pointer: Start of BASIC Variables
A653: A5 2C     LDA $2C       ; Pointer: Start of BASIC Text Area
A655: 69 00     ADC #$00
A657: 85 2E     STA $2E       ; Pointer: Start of BASIC Variables

Jump from $A4ED, $A52A, $A87A:

A659: 20 8E A6  JSR $A68E     ; Reset TXTPTR
A65C: A9 00     LDA #$00


Kernal-Reference:

 BIT $A650   : $EFC4


 $A65E/42590:   Perform [clr] - c64ref 

A65E: D0 2D     BNE $A68D

Jump from $A87D:

A660: 20 E7 FF  JSR $FFE7     ; Close All Channels And Files

Jump from $E101:

A663: A5 37     LDA $37       ; Pointer: Highest Address available to BASIC
A665: A4 38     LDY $38       ; Pointer: Highest Address available to BASIC
A667: 85 33     STA $33       ; Pointer: Bottom of String space
A669: 84 34     STY $34       ; Pointer: Bottom of String space
A66B: A5 2D     LDA $2D       ; Pointer: Start of BASIC Variables
A66D: A4 2E     LDY $2E       ; Pointer: Start of BASIC Variables
A66F: 85 2F     STA $2F       ; Pointer: Start of BASIC Arrays
A671: 84 30     STY $30       ; Pointer: Start of BASIC Arrays
A673: 85 31     STA $31       ; Pointer: End of BASIC Arrays + 1
A675: 84 32     STY $32       ; Pointer: End of BASIC Arrays + 1

Jump from $E1BB:

A677: 20 1D A8  JSR $A81D     ; Perform [restore]

Jump from $A462, $E382:

A67A: A2 19     LDX #$19
A67C: 86 16     STX $16       ; Pointer: Temporary String Stack
A67E: 68        PLA
A67F: A8        TAY
A680: 68        PLA
A681: A2 FA     LDX #$FA
A683: 9A        TXS
A684: 48        PHA
A685: 98        TYA
A686: 48        PHA
A687: A9 00     LDA #$00
A689: 85 3E     STA $3E       ; Pointer: BASIC Statement for CONT
A68B: 85 10     STA $10       ; Flag: Subscript reference/User Function call

Jump from $A65E, $A6A2:

A68D: 60        RTS



 $A68E/42638:   Reset TXTPTR - c64ref 

Jump from $A659, $E1B5:

A68E: 18        CLC
A68F: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A691: 69 FF     ADC #$FF
A693: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A695: A5 2C     LDA $2C       ; Pointer: Start of BASIC Text Area
A697: 69 FF     ADC #$FF
A699: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text
A69B: 60        RTS



 $A69C/42652:   Perform [list] - c64ref 

A69C: 90 06     BCC $A6A4
A69E: F0 04     BEQ $A6A4
A6A0: C9 AB     CMP #$AB
A6A2: D0 E9     BNE $A68D     ; Perform [clr]

Jump from $A69C, $A69E:

A6A4: 20 6B A9  JSR $A96B     ; Fetch linnum From BASIC
A6A7: 20 13 A6  JSR $A613     ; Search for Line Number
A6AA: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
A6AD: F0 0C     BEQ $A6BB
A6AF: C9 AB     CMP #$AB
A6B1: D0 8E     BNE $A641     ; Search for Line Number
A6B3: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A6B6: 20 6B A9  JSR $A96B     ; Fetch linnum From BASIC
A6B9: D0 86     BNE $A641     ; Search for Line Number

Jump from $A6AD:

A6BB: 68        PLA
A6BC: 68        PLA
A6BD: A5 14     LDA $14       ; Temporary: Integer value
A6BF: 05 15     ORA $15       ; Temporary: Integer value
A6C1: D0 06     BNE $A6C9
A6C3: A9 FF     LDA #$FF
A6C5: 85 14     STA $14       ; Temporary: Integer value
A6C7: 85 15     STA $15       ; Temporary: Integer value

Jump from $A6C1, $A712:

A6C9: A0 01     LDY #$01
A6CB: 84 0F     STY $0F       ; Flag: DATA scan/List Quote/Garbage collection
A6CD: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A6CF: F0 43     BEQ $A714
A6D1: 20 2C A8  JSR $A82C     ; Perform [stop]
A6D4: 20 D7 AA  JSR $AAD7     ; Output CR/LF
A6D7: C8        INY
A6D8: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A6DA: AA        TAX
A6DB: C8        INY
A6DC: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A6DE: C5 15     CMP $15       ; Temporary: Integer value
A6E0: D0 04     BNE $A6E6
A6E2: E4 14     CPX $14       ; Temporary: Integer value
A6E4: F0 02     BEQ $A6E8

Jump from $A6E0:

A6E6: B0 2C     BCS $A714

Jump from $A6E4:

A6E8: 84 49     STY $49       ; Pointer: Index Variable for FOR/NEXT loop
A6EA: 20 CD BD  JSR $BDCD     ; Output Positive Integer in A/X
A6ED: A9 20     LDA #$20

Jump from $A73B:

A6EF: A4 49     LDY $49       ; Pointer: Index Variable for FOR/NEXT loop
A6F1: 29 7F     AND #$7F

Jump from $A71A, $A71E, $A722:

A6F3: 20 47 AB  JSR $AB47     ; Output Format Character
A6F6: C9 22     CMP #$22
A6F8: D0 06     BNE $A700
A6FA: A5 0F     LDA $0F       ; Flag: DATA scan/List Quote/Garbage collection
A6FC: 49 FF     EOR #$FF
A6FE: 85 0F     STA $0F       ; Flag: DATA scan/List Quote/Garbage collection

Jump from $A6F8:

A700: C8        INY
A701: F0 11     BEQ $A714
A703: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A705: D0 10     BNE $A717     ; Handle LIST Character
A707: A8        TAY
A708: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A70A: AA        TAX
A70B: C8        INY
A70C: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
A70E: 86 5F     STX $5F       ; Temporary storage for FLPT value
A710: 85 60     STA $60       ; Temporary storage for FLPT value
A712: D0 B5     BNE $A6C9

Jump from $A6CF, $A6E6, $A701:

A714: 4C 86 E3  JMP $E386     ; BASIC Warm Start [RUNSTOP-RESTORE]



 $A717/42775:   Handle LIST Character - c64ref 

Jump from $A705:

A717: 6C 06 03  JMP ($0306)   ; Vector: BASIC LIST Routine
A71A: 10 D7     BPL $A6F3     ; Perform [list]
A71C: C9 FF     CMP #$FF
A71E: F0 D3     BEQ $A6F3     ; Perform [list]
A720: 24 0F     BIT $0F       ; Flag: DATA scan/List Quote/Garbage collection
A722: 30 CF     BMI $A6F3     ; Perform [list]
A724: 38        SEC
A725: E9 7F     SBC #$7F
A727: AA        TAX
A728: 84 49     STY $49       ; Pointer: Index Variable for FOR/NEXT loop
A72A: A0 FF     LDY #$FF

Jump from $A735:

A72C: CA        DEX
A72D: F0 08     BEQ $A737

Jump from $A733:

A72F: C8        INY
A730: B9 9E A0  LDA $A09E,Y   ; BASIC Command Keyword Table
A733: 10 FA     BPL $A72F
A735: 30 F5     BMI $A72C

Jump from $A72D, $A740:

A737: C8        INY
A738: B9 9E A0  LDA $A09E,Y   ; BASIC Command Keyword Table
A73B: 30 B2     BMI $A6EF     ; Perform [list]
A73D: 20 47 AB  JSR $AB47     ; Output Format Character
A740: D0 F5     BNE $A737



 $A742/42818:   Perform [for] - c64ref 

A742: A9 80     LDA #$80
A744: 85 10     STA $10       ; Flag: Subscript reference/User Function call
A746: 20 A5 A9  JSR $A9A5     ; Perform [let]
A749: 20 8A A3  JSR $A38A     ; Find FOR/GOSUB Entry on Stack
A74C: D0 05     BNE $A753
A74E: 8A        TXA
A74F: 69 0F     ADC #$0F
A751: AA        TAX
A752: 9A        TXS

Jump from $A74C:

A753: 68        PLA
A754: 68        PLA
A755: A9 09     LDA #$09
A757: 20 FB A3  JSR $A3FB     ; Check Stack Depth
A75A: 20 06 A9  JSR $A906     ; Search for Next Statement / Line
A75D: 18        CLC
A75E: 98        TYA
A75F: 65 7A     ADC $7A       ; Pointer: Current Byte of BASIC Text
A761: 48        PHA
A762: A5 7B     LDA $7B       ; Pointer: Current Byte of BASIC Text
A764: 69 00     ADC #$00
A766: 48        PHA
A767: A5 3A     LDA $3A       ; Current BASIC Line number
A769: 48        PHA
A76A: A5 39     LDA $39       ; Current BASIC Line number
A76C: 48        PHA
A76D: A9 A4     LDA #$A4
A76F: 20 FF AE  JSR $AEFF     ; Test ','
A772: 20 8D AD  JSR $AD8D     ; Confirm Result
A775: 20 8A AD  JSR $AD8A     ; Confirm Result
A778: A5 66     LDA $66       ; FAC Sign
A77A: 09 7F     ORA #$7F
A77C: 25 62     AND $62       ; FAC Mantissa
A77E: 85 62     STA $62       ; FAC Mantissa
A780: A9 8B     LDA #$8B
A782: A0 A7     LDY #$A7
A784: 85 22     STA $22       ; Second Utility Pointer
A786: 84 23     STY $23       ; Second Utility Pointer
A788: 4C 43 AE  JMP $AE43     ; Evaluate Expression in Text
A78B: A9 BC     LDA #$BC
A78D: A0 B9     LDY #$B9
A78F: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
A792: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
A795: C9 A9     CMP #$A9
A797: D0 06     BNE $A79F
A799: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A79C: 20 8A AD  JSR $AD8A     ; Confirm Result

Jump from $A797:

A79F: 20 2B BC  JSR $BC2B     ; Check Sign of FAC#1
A7A2: 20 38 AE  JSR $AE38     ; Evaluate Expression in Text
A7A5: A5 4A     LDA $4A       ; Pointer: Index Variable for FOR/NEXT loop
A7A7: 48        PHA
A7A8: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
A7AA: 48        PHA
A7AB: A9 81     LDA #$81
A7AD: 48        PHA



 $A7AE/42926:   BASIC Warm Start - c64ref 

Jump from $A7EA, $A89D, $AD75:

A7AE: 20 2C A8  JSR $A82C     ; Perform [stop]
A7B1: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
A7B3: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
A7B5: C0 02     CPY #$02
A7B7: EA        NOP
A7B8: F0 04     BEQ $A7BE
A7BA: 85 3D     STA $3D       ; Pointer: BASIC Statement for CONT
A7BC: 84 3E     STY $3E       ; Pointer: BASIC Statement for CONT

Jump from $A7B8:

A7BE: A0 00     LDY #$00
A7C0: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
A7C2: D0 43     BNE $A807     ; Perform BASIC Keyword



 $A7C4/42948:   Check End of Program - c64ref 

A7C4: A0 02     LDY #$02
A7C6: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
A7C8: 18        CLC
A7C9: D0 03     BNE $A7CE
A7CB: 4C 4B A8  JMP $A84B     ; Perform Break

Jump from $A7C9:

A7CE: C8        INY
A7CF: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
A7D1: 85 39     STA $39       ; Current BASIC Line number
A7D3: C8        INY
A7D4: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
A7D6: 85 3A     STA $3A       ; Current BASIC Line number
A7D8: 98        TYA
A7D9: 65 7A     ADC $7A       ; Pointer: Current Byte of BASIC Text
A7DB: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A7DD: 90 02     BCC $A7E1     ; Prepare to execute statement
A7DF: E6 7B     INC $7B       ; Pointer: Current Byte of BASIC Text



 $A7E1/42977:   Prepare to execute statement - c64ref 

Jump from $A499, $A7DD, $A809:

A7E1: 6C 08 03  JMP ($0308)   ; Vector: BASIC Character dispatch Routine
A7E4: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A7E7: 20 ED A7  JSR $A7ED     ; Perform BASIC Keyword
A7EA: 4C AE A7  JMP $A7AE     ; BASIC Warm Start



 $A7ED/42989:   Perform BASIC Keyword - c64ref 

Jump from $A7E7, $A948:

A7ED: F0 3C     BEQ $A82B     ; Perform [restore]

Jump from $A95C:

A7EF: E9 80     SBC #$80
A7F1: 90 11     BCC $A804
A7F3: C9 23     CMP #$23
A7F5: B0 17     BCS $A80E
A7F7: 0A        ASL
A7F8: A8        TAY
A7F9: B9 0D A0  LDA $A00D,Y   ; BASIC Command Vectors - 1
A7FC: 48        PHA
A7FD: B9 0C A0  LDA $A00C,Y   ; BASIC Command Vectors - 1
A800: 48        PHA
A801: 4C 73 00  JMP $0073     ; CHRGET: Get next Byte of BASIC Text

Jump from $A7F1:

A804: 4C A5 A9  JMP $A9A5     ; Perform [let]

Jump from $A7C2:

A807: C9 3A     CMP #$3A
A809: F0 D6     BEQ $A7E1     ; Prepare to execute statement

Jump from $A810:

A80B: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $A7F5:

A80E: C9 4B     CMP #$4B
A810: D0 F9     BNE $A80B
A812: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A815: A9 A4     LDA #$A4
A817: 20 FF AE  JSR $AEFF     ; Test ','
A81A: 4C A0 A8  JMP $A8A0     ; Perform [goto]



 $A81D/43037:   Perform [restore] - c64ref 

Jump from $A677:

A81D: 38        SEC
A81E: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A820: E9 01     SBC #$01
A822: A4 2C     LDY $2C       ; Pointer: Start of BASIC Text Area
A824: B0 01     BCS $A827
A826: 88        DEY

Jump from $A824, $ACE7:

A827: 85 41     STA $41       ; Pointer: Used by READ - current DATA Item
A829: 84 42     STY $42       ; Pointer: Used by READ - current DATA Item

Jump from $A7ED:

A82B: 60        RTS



 $A82C/43052:   Perform [stop] - c64ref 

Jump from $A6D1, $A7AE:

A82C: 20 E1 FF  JSR $FFE1     ; Test-Stop Vector



 $A82F/43055:   Perform [end] - c64ref 

A82F: B0 01     BCS $A832     ; Perform Break



 $A831/43057:   Perform Break - c64ref 

A831: 18        CLC

Jump from $A82F:

A832: D0 3C     BNE $A870     ; Perform [cont]
A834: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
A836: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
A838: A6 3A     LDX $3A       ; Current BASIC Line number
A83A: E8        INX
A83B: F0 0C     BEQ $A849
A83D: 85 3D     STA $3D       ; Pointer: BASIC Statement for CONT
A83F: 84 3E     STY $3E       ; Pointer: BASIC Statement for CONT
A841: A5 39     LDA $39       ; Current BASIC Line number
A843: A4 3A     LDY $3A       ; Current BASIC Line number
A845: 85 3B     STA $3B       ; Previous BASIC Line number
A847: 84 3C     STY $3C       ; Previous BASIC Line number

Jump from $A83B:

A849: 68        PLA
A84A: 68        PLA

Jump from $A7CB:

A84B: A9 81     LDA #$81
A84D: A0 A3     LDY #$A3
A84F: 90 03     BCC $A854
A851: 4C 69 A4  JMP $A469     ; Break Entry

Jump from $A84F:

A854: 4C 86 E3  JMP $E386     ; BASIC Warm Start [RUNSTOP-RESTORE]



 $A857/43095:   Perform [cont] - c64ref 

A857: D0 17     BNE $A870
A859: A2 1A     LDX #$1A
A85B: A4 3E     LDY $3E       ; Pointer: BASIC Statement for CONT
A85D: D0 03     BNE $A862
A85F: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $A85D:

A862: A5 3D     LDA $3D       ; Pointer: BASIC Statement for CONT
A864: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A866: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
A868: A5 3B     LDA $3B       ; Previous BASIC Line number
A86A: A4 3C     LDY $3C       ; Previous BASIC Line number
A86C: 85 39     STA $39       ; Current BASIC Line number
A86E: 84 3A     STY $3A       ; Current BASIC Line number

Jump from $A857, $A832:

A870: 60        RTS



 $A871/43121:   Perform [run] - c64ref 

A871: 08        PHP
A872: A9 00     LDA #$00
A874: 20 90 FF  JSR $FF90     ; Control OS Messages
A877: 28        PLP
A878: D0 03     BNE $A87D
A87A: 4C 59 A6  JMP $A659     ; Perform [new]

Jump from $A878:

A87D: 20 60 A6  JSR $A660     ; Perform [clr]
A880: 4C 97 A8  JMP $A897     ; Perform [gosub]



 $A883/43139:   Perform [gosub] - c64ref 

A883: A9 03     LDA #$03
A885: 20 FB A3  JSR $A3FB     ; Check Stack Depth
A888: A5 7B     LDA $7B       ; Pointer: Current Byte of BASIC Text
A88A: 48        PHA
A88B: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
A88D: 48        PHA
A88E: A5 3A     LDA $3A       ; Current BASIC Line number
A890: 48        PHA
A891: A5 39     LDA $39       ; Current BASIC Line number
A893: 48        PHA
A894: A9 8D     LDA #$8D
A896: 48        PHA

Jump from $A880:

A897: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
A89A: 20 A0 A8  JSR $A8A0     ; Perform [goto]
A89D: 4C AE A7  JMP $A7AE     ; BASIC Warm Start



 $A8A0/43168:   Perform [goto] - c64ref 

Jump from $A81A, $A89A, $A945:

A8A0: 20 6B A9  JSR $A96B     ; Fetch linnum From BASIC
A8A3: 20 09 A9  JSR $A909     ; Search for Next Statement / Line
A8A6: 38        SEC
A8A7: A5 39     LDA $39       ; Current BASIC Line number
A8A9: E5 14     SBC $14       ; Temporary: Integer value
A8AB: A5 3A     LDA $3A       ; Current BASIC Line number
A8AD: E5 15     SBC $15       ; Temporary: Integer value
A8AF: B0 0B     BCS $A8BC
A8B1: 98        TYA
A8B2: 38        SEC
A8B3: 65 7A     ADC $7A       ; Pointer: Current Byte of BASIC Text
A8B5: A6 7B     LDX $7B       ; Pointer: Current Byte of BASIC Text
A8B7: 90 07     BCC $A8C0
A8B9: E8        INX
A8BA: B0 04     BCS $A8C0

Jump from $A8AF:

A8BC: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
A8BE: A6 2C     LDX $2C       ; Pointer: Start of BASIC Text Area

Jump from $A8B7, $A8BA:

A8C0: 20 17 A6  JSR $A617     ; Search for Line Number
A8C3: 90 1E     BCC $A8E3     ; Perform [return]
A8C5: A5 5F     LDA $5F       ; Temporary storage for FLPT value
A8C7: E9 01     SBC #$01
A8C9: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A8CB: A5 60     LDA $60       ; Temporary storage for FLPT value
A8CD: E9 00     SBC #$00
A8CF: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text

Jump from $A8D2:

A8D1: 60        RTS



 $A8D2/43218:   Perform [return] - c64ref 

A8D2: D0 FD     BNE $A8D1     ; Perform [goto]
A8D4: A9 FF     LDA #$FF
A8D6: 85 4A     STA $4A       ; Pointer: Index Variable for FOR/NEXT loop
A8D8: 20 8A A3  JSR $A38A     ; Find FOR/GOSUB Entry on Stack
A8DB: 9A        TXS
A8DC: C9 8D     CMP #$8D
A8DE: F0 0B     BEQ $A8EB
A8E0: A2 0C     LDX #$0C
A8E2: 2C        .BYTE $2C

Jump from $A8C3:

A8E3: A2 11     LDX #$11
A8E5: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $A955:

A8E8: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $A8DE:

A8EB: 68        PLA
A8EC: 68        PLA
A8ED: 85 39     STA $39       ; Current BASIC Line number
A8EF: 68        PLA
A8F0: 85 3A     STA $3A       ; Current BASIC Line number
A8F2: 68        PLA
A8F3: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A8F5: 68        PLA
A8F6: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text



 $A8F8/43256:   Perform [data] - c64ref 

Jump from $ABE7, $B3DB:

A8F8: 20 06 A9  JSR $A906     ; Search for Next Statement / Line

Jump from $A93E, $ABF6, $ACD1:

A8FB: 98        TYA
A8FC: 18        CLC
A8FD: 65 7A     ADC $7A       ; Pointer: Current Byte of BASIC Text
A8FF: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
A901: 90 02     BCC $A905
A903: E6 7B     INC $7B       ; Pointer: Current Byte of BASIC Text

Jump from $A901, $A91B, $A91F:

A905: 60        RTS



 $A906/43270:   Search for Next Statement / Line - c64ref 

Jump from $A75A, $A8F8, $ABF3, $ACB8:

A906: A2 3A     LDX #$3A
A908: 2C        .BYTE $2C

Jump from $A8A3, $A93B:

A909: A2 00     LDX #$00
A90B: 86 07     STX $07       ; Temporary Integer during OR/AND
A90D: A0 00     LDY #$00
A90F: 84 08     STY $08       ; Flag: Scan for Quote at end of String

Jump from $A926:

A911: A5 08     LDA $08       ; Flag: Scan for Quote at end of String
A913: A6 07     LDX $07       ; Temporary Integer during OR/AND
A915: 85 07     STA $07       ; Temporary Integer during OR/AND
A917: 86 08     STX $08       ; Flag: Scan for Quote at end of String

Jump from $A924:

A919: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
A91B: F0 E8     BEQ $A905     ; Perform [data]
A91D: C5 08     CMP $08       ; Flag: Scan for Quote at end of String
A91F: F0 E4     BEQ $A905     ; Perform [data]
A921: C8        INY
A922: C9 22     CMP #$22
A924: D0 F3     BNE $A919
A926: F0 E9     BEQ $A911



 $A928/43304:   Perform [if] - c64ref 

A928: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text
A92B: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
A92E: C9 89     CMP #$89
A930: F0 05     BEQ $A937
A932: A9 A7     LDA #$A7
A934: 20 FF AE  JSR $AEFF     ; Test ','

Jump from $A930:

A937: A5 61     LDA $61       ; FAC Exponent
A939: D0 05     BNE $A940     ; Perform [rem]



 $A93B/43323:   Perform [rem] - c64ref 

A93B: 20 09 A9  JSR $A909     ; Search for Next Statement / Line
A93E: F0 BB     BEQ $A8FB     ; Perform [data]

Jump from $A939:

A940: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
A943: B0 03     BCS $A948
A945: 4C A0 A8  JMP $A8A0     ; Perform [goto]

Jump from $A943:

A948: 4C ED A7  JMP $A7ED     ; Perform BASIC Keyword



 $A94B/43339:   Perform [on] - c64ref 

A94B: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
A94E: 48        PHA
A94F: C9 8D     CMP #$8D
A951: F0 04     BEQ $A957

Jump from $A97D:

A953: C9 89     CMP #$89
A955: D0 91     BNE $A8E8     ; Perform [return]

Jump from $A951, $A967:

A957: C6 65     DEC $65       ; FAC Mantissa
A959: D0 04     BNE $A95F
A95B: 68        PLA
A95C: 4C EF A7  JMP $A7EF     ; Perform BASIC Keyword

Jump from $A959:

A95F: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A962: 20 6B A9  JSR $A96B     ; Fetch linnum From BASIC
A965: C9 2C     CMP #$2C
A967: F0 EE     BEQ $A957
A969: 68        PLA

Jump from $A971:

A96A: 60        RTS



 $A96B/43371:   Fetch linnum From BASIC - c64ref 

Jump from $A49C, $A6A4, $A6B6, $A8A0, $A962:

A96B: A2 00     LDX #$00
A96D: 86 14     STX $14       ; Temporary: Integer value
A96F: 86 15     STX $15       ; Temporary: Integer value

Jump from $A9A2:

A971: B0 F7     BCS $A96A     ; Perform [on]
A973: E9 2F     SBC #$2F
A975: 85 07     STA $07       ; Temporary Integer during OR/AND
A977: A5 15     LDA $15       ; Temporary: Integer value
A979: 85 22     STA $22       ; Second Utility Pointer
A97B: C9 19     CMP #$19
A97D: B0 D4     BCS $A953     ; Perform [on]
A97F: A5 14     LDA $14       ; Temporary: Integer value
A981: 0A        ASL
A982: 26 22     ROL $22       ; Second Utility Pointer
A984: 0A        ASL
A985: 26 22     ROL $22       ; Second Utility Pointer
A987: 65 14     ADC $14       ; Temporary: Integer value
A989: 85 14     STA $14       ; Temporary: Integer value
A98B: A5 22     LDA $22       ; Second Utility Pointer
A98D: 65 15     ADC $15       ; Temporary: Integer value
A98F: 85 15     STA $15       ; Temporary: Integer value
A991: 06 14     ASL $14       ; Temporary: Integer value
A993: 26 15     ROL $15       ; Temporary: Integer value
A995: A5 14     LDA $14       ; Temporary: Integer value
A997: 65 07     ADC $07       ; Temporary Integer during OR/AND
A999: 85 14     STA $14       ; Temporary: Integer value
A99B: 90 02     BCC $A99F
A99D: E6 15     INC $15       ; Temporary: Integer value

Jump from $A99B:

A99F: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
A9A2: 4C 71 A9  JMP $A971



 $A9A5/43429:   Perform [let] - c64ref 

Jump from $A746, $A804:

A9A5: 20 8B B0  JSR $B08B     ; Identify Variable
A9A8: 85 49     STA $49       ; Pointer: Index Variable for FOR/NEXT loop
A9AA: 84 4A     STY $4A       ; Pointer: Index Variable for FOR/NEXT loop
A9AC: A9 B2     LDA #$B2
A9AE: 20 FF AE  JSR $AEFF     ; Test ','
A9B1: A5 0E     LDA $0E       ; Data type Flag
A9B3: 48        PHA
A9B4: A5 0D     LDA $0D       ; Data type Flag
A9B6: 48        PHA
A9B7: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text
A9BA: 68        PLA
A9BB: 2A        ROL
A9BC: 20 90 AD  JSR $AD90     ; Confirm Result
A9BF: D0 18     BNE $A9D9     ; Assign String
A9C1: 68        PLA

Jump from $AC8E:

A9C2: 10 12     BPL $A9D6     ; Assign Floating Point



 $A9C4/43460:   Assign Integer - c64ref 

A9C4: 20 1B BC  JSR $BC1B     ; Round FAC#1
A9C7: 20 BF B1  JSR $B1BF     ; FAC#1 to Positive Integer
A9CA: A0 00     LDY #$00
A9CC: A5 64     LDA $64       ; FAC Mantissa
A9CE: 91 49     STA ($49),Y   ; Pointer: Index Variable for FOR/NEXT loop
A9D0: C8        INY
A9D1: A5 65     LDA $65       ; FAC Mantissa
A9D3: 91 49     STA ($49),Y   ; Pointer: Index Variable for FOR/NEXT loop
A9D5: 60        RTS



 $A9D6/43478:   Assign Floating Point - c64ref 

Jump from $A9C2:

A9D6: 4C D0 BB  JMP $BBD0     ; Store FAC#1 in Memory



 $A9D9/43481:   Assign String - c64ref 

Jump from $A9BF:

A9D9: 68        PLA

Jump from $AC83:

A9DA: A4 4A     LDY $4A       ; Pointer: Index Variable for FOR/NEXT loop
A9DC: C0 BF     CPY #$BF
A9DE: D0 4C     BNE $AA2C     ; Add Digit to FAC#1
A9E0: 20 A6 B6  JSR $B6A6     ; Perform String Housekeeping



 $A9E3/43491:   Assign TI$ - c64ref 

A9E3: C9 06     CMP #$06
A9E5: D0 3D     BNE $AA24
A9E7: A0 00     LDY #$00
A9E9: 84 61     STY $61       ; FAC Exponent
A9EB: 84 66     STY $66       ; FAC Sign

Jump from $AA0C:

A9ED: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion
A9EF: 20 1D AA  JSR $AA1D
A9F2: 20 E2 BA  JSR $BAE2     ; Multiply FAC#1 by 10
A9F5: E6 71     INC $71       ; Pointer: Used during CRUNCH/ASCII conversion
A9F7: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
A9F9: 20 1D AA  JSR $AA1D
A9FC: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
A9FF: AA        TAX
AA00: F0 05     BEQ $AA07
AA02: E8        INX
AA03: 8A        TXA
AA04: 20 ED BA  JSR $BAED     ; Multiply FAC#1 by 10

Jump from $AA00:

AA07: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
AA09: C8        INY
AA0A: C0 06     CPY #$06
AA0C: D0 DF     BNE $A9ED
AA0E: 20 E2 BA  JSR $BAE2     ; Multiply FAC#1 by 10
AA11: 20 9B BC  JSR $BC9B     ; Convert FAC#1 to Integer
AA14: A6 64     LDX $64       ; FAC Mantissa
AA16: A4 63     LDY $63       ; FAC Mantissa
AA18: A5 65     LDA $65       ; FAC Mantissa
AA1A: 4C DB FF  JMP $FFDB     ; Set Real-Time Clock

Jump from $A9EF, $A9F9:

AA1D: B1 22     LDA ($22),Y   ; Second Utility Pointer
AA1F: 20 80 00  JSR $0080     ; CHRGOT: Get same Byte again
AA22: 90 03     BCC $AA27

Jump from $A9E5:

AA24: 4C 48 B2  JMP $B248     ; ?ILLEGAL QUANTITY

Jump from $AA22:

AA27: E9 2F     SBC #$2F
AA29: 4C 7E BD  JMP $BD7E     ; Convert ASCII String to a Number in FAC



 $AA2C/43564:   Add Digit to FAC#1 - c64ref 

Jump from $A9DE:

AA2C: A0 02     LDY #$02
AA2E: B1 64     LDA ($64),Y   ; FAC Mantissa
AA30: C5 34     CMP $34       ; Pointer: Bottom of String space
AA32: 90 17     BCC $AA4B
AA34: D0 07     BNE $AA3D
AA36: 88        DEY
AA37: B1 64     LDA ($64),Y   ; FAC Mantissa
AA39: C5 33     CMP $33       ; Pointer: Bottom of String space
AA3B: 90 0E     BCC $AA4B

Jump from $AA34:

AA3D: A4 65     LDY $65       ; FAC Mantissa
AA3F: C4 2E     CPY $2E       ; Pointer: Start of BASIC Variables
AA41: 90 08     BCC $AA4B
AA43: D0 0D     BNE $AA52
AA45: A5 64     LDA $64       ; FAC Mantissa
AA47: C5 2D     CMP $2D       ; Pointer: Start of BASIC Variables
AA49: B0 07     BCS $AA52

Jump from $AA32, $AA3B, $AA41:

AA4B: A5 64     LDA $64       ; FAC Mantissa
AA4D: A4 65     LDY $65       ; FAC Mantissa
AA4F: 4C 68 AA  JMP $AA68

Jump from $AA43, $AA49:

AA52: A0 00     LDY #$00
AA54: B1 64     LDA ($64),Y   ; FAC Mantissa
AA56: 20 75 B4  JSR $B475     ; Evaluate <str$>
AA59: A5 50     LDA $50       ; Temporary storage for FLPT value
AA5B: A4 51     LDY $51       ; Temporary storage for FLPT value
AA5D: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
AA5F: 84 70     STY $70       ; FAC low-order rounding
AA61: 20 7A B6  JSR $B67A     ; Store String in High RAM
AA64: A9 61     LDA #$61
AA66: A0 00     LDY #$00

Jump from $AA4F:

AA68: 85 50     STA $50       ; Temporary storage for FLPT value
AA6A: 84 51     STY $51       ; Temporary storage for FLPT value
AA6C: 20 DB B6  JSR $B6DB     ; Clean Descriptor Stack
AA6F: A0 00     LDY #$00
AA71: B1 50     LDA ($50),Y   ; Temporary storage for FLPT value
AA73: 91 49     STA ($49),Y   ; Pointer: Index Variable for FOR/NEXT loop
AA75: C8        INY
AA76: B1 50     LDA ($50),Y   ; Temporary storage for FLPT value
AA78: 91 49     STA ($49),Y   ; Pointer: Index Variable for FOR/NEXT loop
AA7A: C8        INY
AA7B: B1 50     LDA ($50),Y   ; Temporary storage for FLPT value
AA7D: 91 49     STA ($49),Y   ; Pointer: Index Variable for FOR/NEXT loop
AA7F: 60        RTS



 $AA80/43648:   Perform [print#] - c64ref 

AA80: 20 86 AA  JSR $AA86     ; Perform [cmd]
AA83: 4C B5 AB  JMP $ABB5     ; Perform [input#]



 $AA86/43654:   Perform [cmd] - c64ref 

Jump from $AA80:

AA86: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
AA89: F0 05     BEQ $AA90
AA8B: A9 2C     LDA #$2C
AA8D: 20 FF AE  JSR $AEFF     ; Test ','

Jump from $AA89:

AA90: 08        PHP
AA91: 86 13     STX $13       ; File number of current Input Device
AA93: 20 18 E1  JSR $E118     ; Set Up For Output
AA96: 28        PLP
AA97: 4C A0 AA  JMP $AAA0     ; Perform [print]



 $AA9A/43674:   Print String From Memory - c64ref 

Jump from $AABA:

AA9A: 20 21 AB  JSR $AB21     ; Output String

Jump from $AAC8:

AA9D: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again



 $AAA0/43680:   Perform [print] - c64ref 

Jump from $AA97:

AAA0: F0 35     BEQ $AAD7     ; Output CR/LF

Jump from $AB16:

AAA2: F0 43     BEQ $AAE7     ; Output CR/LF
AAA4: C9 A3     CMP #$A3
AAA6: F0 50     BEQ $AAF8     ; Handle comma, TAB(, SPC(
AAA8: C9 A6     CMP #$A6
AAAA: 18        CLC
AAAB: F0 4B     BEQ $AAF8     ; Handle comma, TAB(, SPC(
AAAD: C9 2C     CMP #$2C
AAAF: F0 37     BEQ $AAE8     ; Handle comma, TAB(, SPC(
AAB1: C9 3B     CMP #$3B
AAB3: F0 5E     BEQ $AB13     ; Handle comma, TAB(, SPC(
AAB5: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text



 $AAB8/43704:   Output Variable - c64ref 

AAB8: 24 0D     BIT $0D       ; Data type Flag
AABA: 30 DE     BMI $AA9A     ; Print String From Memory
AABC: 20 DD BD  JSR $BDDD     ; Convert FAC#1 to ASCII String
AABF: 20 87 B4  JSR $B487     ; Set Up String
AAC2: 20 21 AB  JSR $AB21     ; Output String
AAC5: 20 3B AB  JSR $AB3B     ; Output Format Character
AAC8: D0 D3     BNE $AA9D     ; Print String From Memory



 $AACA/43722:   -Add zero terminator to string - c64ref 

Jump from $A576:

AACA: A9 00     LDA #$00
AACC: 9D 00 02  STA $0200,X   ; BASIC Input Buffer (Input Line from Screen)
AACF: A2 FF     LDX #$FF
AAD1: A0 01     LDY #$01
AAD3: A5 13     LDA $13       ; File number of current Input Device
AAD5: D0 10     BNE $AAE7     ; Output CR/LF



 $AAD7/43735:   Output CR/LF - c64ref 

Jump from $A44E, $A6D4, $AAA0:

AAD7: A9 0D     LDA #$0D
AAD9: 20 47 AB  JSR $AB47     ; Output Format Character
AADC: 24 13     BIT $13       ; File number of current Input Device
AADE: 10 05     BPL $AAE5
AAE0: A9 0A     LDA #$0A
AAE2: 20 47 AB  JSR $AB47     ; Output Format Character

Jump from $AADE, $AB35:

AAE5: 49 FF     EOR #$FF

Jump from $AAA2, $AAD5, $AB29:

AAE7: 60        RTS



 $AAE8/43752:   Handle comma, TAB(, SPC( - c64ref 

Jump from $AAAF:

AAE8: 38        SEC
AAE9: 20 F0 FF  JSR $FFF0     ; Read / Set Cursor X/Y Position
AAEC: 98        TYA
AAED: 38        SEC

Jump from $AAF0:

AAEE: E9 0A     SBC #$0A
AAF0: B0 FC     BCS $AAEE
AAF2: 49 FF     EOR #$FF
AAF4: 69 01     ADC #$01
AAF6: D0 16     BNE $AB0E

Jump from $AAA6, $AAAB:

AAF8: 08        PHP
AAF9: 38        SEC
AAFA: 20 F0 FF  JSR $FFF0     ; Read / Set Cursor X/Y Position
AAFD: 84 09     STY $09       ; Screen Column for last TAB
AAFF: 20 9B B7  JSR $B79B     ; Evaluate Text to 1 Byte in XR
AB02: C9 29     CMP #$29
AB04: D0 59     BNE $AB5F     ; Handle Bad Data
AB06: 28        PLP
AB07: 90 06     BCC $AB0F
AB09: 8A        TXA
AB0A: E5 09     SBC $09       ; Screen Column for last TAB
AB0C: 90 05     BCC $AB13

Jump from $AAF6:

AB0E: AA        TAX

Jump from $AB07:

AB0F: E8        INX

Jump from $AB1C:

AB10: CA        DEX
AB11: D0 06     BNE $AB19

Jump from $AB0C, $AAB3:

AB13: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AB16: 4C A2 AA  JMP $AAA2     ; Perform [print]

Jump from $AB11:

AB19: 20 3B AB  JSR $AB3B     ; Output Format Character
AB1C: D0 F2     BNE $AB10



 $AB1E/43806:   Output String - c64ref 

Jump from $A469, $A478, $AB6F, $ACF8, $BDDA, $E191, $E1AF, $E42D, $E441:

AB1E: 20 87 B4  JSR $B487     ; Set Up String

Jump from $AA9A, $AAC2, $ABCB:

AB21: 20 A6 B6  JSR $B6A6     ; Perform String Housekeeping
AB24: AA        TAX
AB25: A0 00     LDY #$00
AB27: E8        INX

Jump from $AB33, $AB38:

AB28: CA        DEX
AB29: F0 BC     BEQ $AAE7     ; Output CR/LF
AB2B: B1 22     LDA ($22),Y   ; Second Utility Pointer
AB2D: 20 47 AB  JSR $AB47     ; Output Format Character
AB30: C8        INY
AB31: C9 0D     CMP #$0D
AB33: D0 F3     BNE $AB28
AB35: 20 E5 AA  JSR $AAE5     ; Output CR/LF
AB38: 4C 28 AB  JMP $AB28



 $AB3B/43835:   Output Format Character - c64ref 

Jump from $AAC5, $AB19, $AC00:

AB3B: A5 13     LDA $13       ; File number of current Input Device
AB3D: F0 03     BEQ $AB42
AB3F: A9 20     LDA #$20
AB41: 2C        .BYTE $2C

Jump from $AB3D:

AB42: A9 1D     LDA #$1D
AB44: 2C        .BYTE $2C

Jump from $A451, $ABFD, $AC47:

AB45: A9 3F     LDA #$3F

Jump from $A45B, $A6F3, $A73D, $AAD9, $AAE2, $AB2D:

AB47: 20 0C E1  JSR $E10C     ; Output Character
AB4A: 29 FF     AND #$FF
AB4C: 60        RTS



 $AB4D/43853:   Handle Bad Data - c64ref 

Jump from $AC9A:

AB4D: A5 11     LDA $11       ; Input Flag
AB4F: F0 11     BEQ $AB62
AB51: 30 04     BMI $AB57
AB53: A0 FF     LDY #$FF
AB55: D0 04     BNE $AB5B

Jump from $AB51:

AB57: A5 3F     LDA $3F       ; Current DATA Line number
AB59: A4 40     LDY $40       ; Current DATA Line number

Jump from $AB55:

AB5B: 85 39     STA $39       ; Current BASIC Line number
AB5D: 84 3A     STY $3A       ; Current BASIC Line number

Jump from $AB04:

AB5F: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $AB4F:

AB62: A5 13     LDA $13       ; File number of current Input Device
AB64: F0 05     BEQ $AB6B
AB66: A2 18     LDX #$18
AB68: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $AB64:

AB6B: A9 0C     LDA #$0C
AB6D: A0 AD     LDY #$AD
AB6F: 20 1E AB  JSR $AB1E     ; Output String
AB72: A5 3D     LDA $3D       ; Pointer: BASIC Statement for CONT
AB74: A4 3E     LDY $3E       ; Pointer: BASIC Statement for CONT
AB76: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
AB78: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
AB7A: 60        RTS



 $AB7B/43899:   Perform [get] - c64ref 

AB7B: 20 A6 B3  JSR $B3A6     ; Confirm Program Mode
AB7E: C9 23     CMP #$23
AB80: D0 10     BNE $AB92
AB82: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AB85: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
AB88: A9 2C     LDA #$2C
AB8A: 20 FF AE  JSR $AEFF     ; Test ','
AB8D: 86 13     STX $13       ; File number of current Input Device
AB8F: 20 1E E1  JSR $E11E     ; Set Up For Input

Jump from $AB80:

AB92: A2 01     LDX #$01
AB94: A0 02     LDY #$02
AB96: A9 00     LDA #$00
AB98: 8D 01 02  STA $0201     ; BASIC Input Buffer (Input Line from Screen)
AB9B: A9 40     LDA #$40
AB9D: 20 0F AC  JSR $AC0F     ; Perform [read]
ABA0: A6 13     LDX $13       ; File number of current Input Device
ABA2: D0 13     BNE $ABB7     ; Perform [input#]
ABA4: 60        RTS



 $ABA5/43941:   Perform [input#] - c64ref 

ABA5: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
ABA8: A9 2C     LDA #$2C
ABAA: 20 FF AE  JSR $AEFF     ; Test ','
ABAD: 86 13     STX $13       ; File number of current Input Device
ABAF: 20 1E E1  JSR $E11E     ; Set Up For Input
ABB2: 20 CE AB  JSR $ABCE     ; Perform [input]

Jump from $AA83, $ABE4:

ABB5: A5 13     LDA $13       ; File number of current Input Device

Jump from $ABA2:

ABB7: 20 CC FF  JSR $FFCC     ; Restore I/O Vector
ABBA: A2 00     LDX #$00
ABBC: 86 13     STX $13       ; File number of current Input Device
ABBE: 60        RTS



 $ABBF/43967:   Perform [input] - c64ref 

ABBF: C9 22     CMP #$22
ABC1: D0 0B     BNE $ABCE
ABC3: 20 BD AE  JSR $AEBD     ; Continue Expression
ABC6: A9 3B     LDA #$3B
ABC8: 20 FF AE  JSR $AEFF     ; Test ','
ABCB: 20 21 AB  JSR $AB21     ; Output String

Jump from $ABC1, $ABB2:

ABCE: 20 A6 B3  JSR $B3A6     ; Confirm Program Mode
ABD1: A9 2C     LDA #$2C
ABD3: 8D FF 01  STA $01FF     ; BASIC Stack Area

Jump from $ABF1:

ABD6: 20 F9 AB  JSR $ABF9     ; Do Input Prompt
ABD9: A5 13     LDA $13       ; File number of current Input Device
ABDB: F0 0D     BEQ $ABEA     ; Read Input Buffer
ABDD: 20 B7 FF  JSR $FFB7     ; Read I/O Status Word
ABE0: 29 02     AND #$02
ABE2: F0 06     BEQ $ABEA     ; Read Input Buffer
ABE4: 20 B5 AB  JSR $ABB5     ; Perform [input#]
ABE7: 4C F8 A8  JMP $A8F8     ; Perform [data]



 $ABEA/44010:   Read Input Buffer - c64ref 

Jump from $ABDB, $ABE2:

ABEA: AD 00 02  LDA $0200     ; BASIC Input Buffer (Input Line from Screen)
ABED: D0 1E     BNE $AC0D     ; Perform [read]
ABEF: A5 13     LDA $13       ; File number of current Input Device
ABF1: D0 E3     BNE $ABD6     ; Perform [input]
ABF3: 20 06 A9  JSR $A906     ; Search for Next Statement / Line
ABF6: 4C FB A8  JMP $A8FB     ; Perform [data]



 $ABF9/44025:   Do Input Prompt - c64ref 

Jump from $ABD6, $AC4A:

ABF9: A5 13     LDA $13       ; File number of current Input Device
ABFB: D0 06     BNE $AC03
ABFD: 20 45 AB  JSR $AB45     ; Output Format Character
AC00: 20 3B AB  JSR $AB3B     ; Output Format Character

Jump from $ABFB:

AC03: 4C 60 A5  JMP $A560     ; Input Line Into Buffer



 $AC06/44038:   Perform [read] - c64ref 

AC06: A6 41     LDX $41       ; Pointer: Used by READ - current DATA Item
AC08: A4 42     LDY $42       ; Pointer: Used by READ - current DATA Item
AC0A: A9 98     LDA #$98
AC0C: 2C        .BYTE $2C

Jump from $ABED:

AC0D: A9 00     LDA #$00

Jump from $AB9D:

AC0F: 85 11     STA $11       ; Input Flag
AC11: 86 43     STX $43       ; Pointer: Temporary storage during INPUT
AC13: 84 44     STY $44       ; Pointer: Temporary storage during INPUT

Jump from $ACB5:

AC15: 20 8B B0  JSR $B08B     ; Identify Variable
AC18: 85 49     STA $49       ; Pointer: Index Variable for FOR/NEXT loop
AC1A: 84 4A     STY $4A       ; Pointer: Index Variable for FOR/NEXT loop
AC1C: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
AC1E: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
AC20: 85 4B     STA $4B       ; Temporary storage for TXTPTR
AC22: 84 4C     STY $4C       ; Temporary storage for TXTPTR
AC24: A6 43     LDX $43       ; Pointer: Temporary storage during INPUT
AC26: A4 44     LDY $44       ; Pointer: Temporary storage during INPUT
AC28: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
AC2A: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
AC2C: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
AC2F: D0 20     BNE $AC51     ; General Purpose Read Routine
AC31: 24 11     BIT $11       ; Input Flag
AC33: 50 0C     BVC $AC41     ; General Purpose Read Routine



 $AC35/44085:   General Purpose Read Routine - c64ref 

AC35: 20 24 E1  JSR $E124     ; Get One Character
AC38: 8D 00 02  STA $0200     ; BASIC Input Buffer (Input Line from Screen)
AC3B: A2 FF     LDX #$FF
AC3D: A0 01     LDY #$01
AC3F: D0 0C     BNE $AC4D

Jump from $AC33:

AC41: 30 75     BMI $ACB8
AC43: A5 13     LDA $13       ; File number of current Input Device
AC45: D0 03     BNE $AC4A
AC47: 20 45 AB  JSR $AB45     ; Output Format Character

Jump from $AC45:

AC4A: 20 F9 AB  JSR $ABF9     ; Do Input Prompt

Jump from $AC3F:

AC4D: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
AC4F: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text

Jump from $ACDC, $AC2F:

AC51: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AC54: 24 0D     BIT $0D       ; Data type Flag
AC56: 10 31     BPL $AC89
AC58: 24 11     BIT $11       ; Input Flag
AC5A: 50 09     BVC $AC65
AC5C: E8        INX
AC5D: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
AC5F: A9 00     LDA #$00
AC61: 85 07     STA $07       ; Temporary Integer during OR/AND
AC63: F0 0C     BEQ $AC71

Jump from $AC5A:

AC65: 85 07     STA $07       ; Temporary Integer during OR/AND
AC67: C9 22     CMP #$22
AC69: F0 07     BEQ $AC72
AC6B: A9 3A     LDA #$3A
AC6D: 85 07     STA $07       ; Temporary Integer during OR/AND
AC6F: A9 2C     LDA #$2C

Jump from $AC63:

AC71: 18        CLC

Jump from $AC69:

AC72: 85 08     STA $08       ; Flag: Scan for Quote at end of String
AC74: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
AC76: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
AC78: 69 00     ADC #$00
AC7A: 90 01     BCC $AC7D
AC7C: C8        INY

Jump from $AC7A:

AC7D: 20 8D B4  JSR $B48D     ; Set Up String
AC80: 20 E2 B7  JSR $B7E2     ; Convert ASCII String to Flpt
AC83: 20 DA A9  JSR $A9DA     ; Assign String
AC86: 4C 91 AC  JMP $AC91

Jump from $AC56:

AC89: 20 F3 BC  JSR $BCF3     ; Convert ASCII String to a Number in FAC
AC8C: A5 0E     LDA $0E       ; Data type Flag
AC8E: 20 C2 A9  JSR $A9C2     ; Perform [let]

Jump from $AC86:

AC91: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
AC94: F0 07     BEQ $AC9D
AC96: C9 2C     CMP #$2C
AC98: F0 03     BEQ $AC9D
AC9A: 4C 4D AB  JMP $AB4D     ; Handle Bad Data

Jump from $AC94, $AC98:

AC9D: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
AC9F: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
ACA1: 85 43     STA $43       ; Pointer: Temporary storage during INPUT
ACA3: 84 44     STY $44       ; Pointer: Temporary storage during INPUT
ACA5: A5 4B     LDA $4B       ; Temporary storage for TXTPTR
ACA7: A4 4C     LDY $4C       ; Temporary storage for TXTPTR
ACA9: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
ACAB: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
ACAD: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
ACB0: F0 2D     BEQ $ACDF
ACB2: 20 FD AE  JSR $AEFD     ; Test ','
ACB5: 4C 15 AC  JMP $AC15     ; Perform [read]

Jump from $AC41, $ACDA:

ACB8: 20 06 A9  JSR $A906     ; Search for Next Statement / Line
ACBB: C8        INY
ACBC: AA        TAX
ACBD: D0 12     BNE $ACD1
ACBF: A2 0D     LDX #$0D
ACC1: C8        INY
ACC2: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
ACC4: F0 6C     BEQ $AD32     ; Perform [next]
ACC6: C8        INY
ACC7: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
ACC9: 85 3F     STA $3F       ; Current DATA Line number
ACCB: C8        INY
ACCC: B1 7A     LDA ($7A),Y   ; Pointer: Current Byte of BASIC Text
ACCE: C8        INY
ACCF: 85 40     STA $40       ; Current DATA Line number

Jump from $ACBD:

ACD1: 20 FB A8  JSR $A8FB     ; Perform [data]
ACD4: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
ACD7: AA        TAX
ACD8: E0 83     CPX #$83
ACDA: D0 DC     BNE $ACB8
ACDC: 4C 51 AC  JMP $AC51

Jump from $ACB0:

ACDF: A5 43     LDA $43       ; Pointer: Temporary storage during INPUT
ACE1: A4 44     LDY $44       ; Pointer: Temporary storage during INPUT
ACE3: A6 11     LDX $11       ; Input Flag
ACE5: 10 03     BPL $ACEA
ACE7: 4C 27 A8  JMP $A827     ; Perform [restore]

Jump from $ACE5:

ACEA: A0 00     LDY #$00
ACEC: B1 43     LDA ($43),Y   ; Pointer: Temporary storage during INPUT
ACEE: F0 0B     BEQ $ACFB
ACF0: A5 13     LDA $13       ; File number of current Input Device
ACF2: D0 07     BNE $ACFB
ACF4: A9 FC     LDA #$FC
ACF6: A0 AC     LDY #$AC
ACF8: 4C 1E AB  JMP $AB1E     ; Output String

Jump from $ACEE, $ACF2:

ACFB: 60        RTS



 $ACFC/44284:   Input Error Messages - c64ref 

ACFC: 3F 45 58 54 52 41 20 49
AD04: 47 4E 4F 52 45 44 0D 00
AD0C: 3F 52 45 44 4F 20 46 52
AD14: 4F 4D 20 53 54 41 52 54
AD1C: 0D 00



 $AD1E/44318:   Perform [next] - c64ref 

AD1E: D0 04     BNE $AD24
AD20: A0 00     LDY #$00
AD22: F0 03     BEQ $AD27

Jump from $AD1E, $AD87:

AD24: 20 8B B0  JSR $B08B     ; Identify Variable

Jump from $AD22:

AD27: 85 49     STA $49       ; Pointer: Index Variable for FOR/NEXT loop
AD29: 84 4A     STY $4A       ; Pointer: Index Variable for FOR/NEXT loop
AD2B: 20 8A A3  JSR $A38A     ; Find FOR/GOSUB Entry on Stack
AD2E: F0 05     BEQ $AD35
AD30: A2 0A     LDX #$0A

Jump from $ACC4:

AD32: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $AD2E:

AD35: 9A        TXS
AD36: 8A        TXA
AD37: 18        CLC
AD38: 69 04     ADC #$04
AD3A: 48        PHA
AD3B: 69 06     ADC #$06
AD3D: 85 24     STA $24       ; Second Utility Pointer
AD3F: 68        PLA
AD40: A0 01     LDY #$01
AD42: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
AD45: BA        TSX
AD46: BD 09 01  LDA $0109,X   ; 6510 Hardware Stack Area
AD49: 85 66     STA $66       ; FAC Sign
AD4B: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
AD4D: A4 4A     LDY $4A       ; Pointer: Index Variable for FOR/NEXT loop
AD4F: 20 67 B8  JSR $B867     ; Perform Addition
AD52: 20 D0 BB  JSR $BBD0     ; Store FAC#1 in Memory
AD55: A0 01     LDY #$01
AD57: 20 5D BC  JSR $BC5D     ; Compare FAC#1 With Memory
AD5A: BA        TSX
AD5B: 38        SEC
AD5C: FD 09 01  SBC $0109,X   ; 6510 Hardware Stack Area
AD5F: F0 17     BEQ $AD78     ; Check Valid Loop



 $AD61/44385:   Check Valid Loop - c64ref 

AD61: BD 0F 01  LDA $010F,X   ; 6510 Hardware Stack Area
AD64: 85 39     STA $39       ; Current BASIC Line number
AD66: BD 10 01  LDA $0110,X   ; 6510 Hardware Stack Area
AD69: 85 3A     STA $3A       ; Current BASIC Line number
AD6B: BD 12 01  LDA $0112,X   ; 6510 Hardware Stack Area
AD6E: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
AD70: BD 11 01  LDA $0111,X   ; 6510 Hardware Stack Area
AD73: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text

Jump from $AD82:

AD75: 4C AE A7  JMP $A7AE     ; BASIC Warm Start

Jump from $AD5F:

AD78: 8A        TXA
AD79: 69 11     ADC #$11
AD7B: AA        TAX
AD7C: 9A        TXS
AD7D: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
AD80: C9 2C     CMP #$2C
AD82: D0 F1     BNE $AD75
AD84: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AD87: 20 24 AD  JSR $AD24     ; Perform [next]



 $AD8A/44426:   Confirm Result - c64ref 

Jump from $A775, $A79C, $B438, $B79E, $B7EB, $E12A:

AD8A: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text

Jump from $A772, $ADF6, $AE61, $AFE3, $B1B8, $B3C3, $B3F1, $B400, $B465:

AD8D: 18        CLC
AD8E: 24        .BYTE $24

Jump from $AFBA, $B646, $B6A3:

AD8F: 38        SEC

Jump from $A9BC, $B016:

AD90: 24 0D     BIT $0D       ; Data type Flag
AD92: 30 03     BMI $AD97
AD94: B0 03     BCS $AD99

Jump from $AD97:

AD96: 60        RTS

Jump from $AD92:

AD97: B0 FD     BCS $AD96

Jump from $AD94:

AD99: A2 16     LDX #$16
AD9B: 4C 37 A4  JMP $A437     ; Error Routine



 $AD9E/44446:   Evaluate Expression in Text - c64ref 

Jump from $A928, $A9B7, $AAB5, $AD8A, $AEF4, $AFB4, $B1B5, $E257:

AD9E: A6 7A     LDX $7A       ; Pointer: Current Byte of BASIC Text
ADA0: D0 02     BNE $ADA4
ADA2: C6 7B     DEC $7B       ; Pointer: Current Byte of BASIC Text

Jump from $ADA0:

ADA4: C6 7A     DEC $7A       ; Pointer: Current Byte of BASIC Text
ADA6: A2 00     LDX #$00
ADA8: 24        .BYTE $24

Jump from $AE2D:

ADA9: 48        PHA
ADAA: 8A        TXA
ADAB: 48        PHA
ADAC: A9 01     LDA #$01
ADAE: 20 FB A3  JSR $A3FB     ; Check Stack Depth
ADB1: 20 83 AE  JSR $AE83     ; Evaluate Single Term
ADB4: A9 00     LDA #$00
ADB6: 85 4D     STA $4D       ; Mask used during FRMEVL

Jump from $B677:

ADB8: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again

Jump from $ADD4:

ADBB: 38        SEC
ADBC: E9 B1     SBC #$B1
ADBE: 90 17     BCC $ADD7
ADC0: C9 03     CMP #$03
ADC2: B0 13     BCS $ADD7
ADC4: C9 01     CMP #$01
ADC6: 2A        ROL
ADC7: 49 01     EOR #$01
ADC9: 45 4D     EOR $4D       ; Mask used during FRMEVL
ADCB: C5 4D     CMP $4D       ; Mask used during FRMEVL
ADCD: 90 61     BCC $AE30
ADCF: 85 4D     STA $4D       ; Mask used during FRMEVL
ADD1: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
ADD4: 4C BB AD  JMP $ADBB

Jump from $ADBE, $ADC2:

ADD7: A6 4D     LDX $4D       ; Mask used during FRMEVL
ADD9: D0 2C     BNE $AE07
ADDB: B0 7B     BCS $AE58
ADDD: 69 07     ADC #$07
ADDF: 90 77     BCC $AE58
ADE1: 65 0D     ADC $0D       ; Data type Flag
ADE3: D0 03     BNE $ADE8
ADE5: 4C 3D B6  JMP $B63D     ; Concatenate Two Strings

Jump from $ADE3:

ADE8: 69 FF     ADC #$FF
ADEA: 85 22     STA $22       ; Second Utility Pointer
ADEC: 0A        ASL
ADED: 65 22     ADC $22       ; Second Utility Pointer
ADEF: A8        TAY

Jump from $AE17:

ADF0: 68        PLA
ADF1: D9 80 A0  CMP $A080,Y   ; BASIC Operator Vectors
ADF4: B0 67     BCS $AE5D
ADF6: 20 8D AD  JSR $AD8D     ; Confirm Result

Jump from $AE1E:

ADF9: 48        PHA

Jump from $AF11:

ADFA: 20 20 AE  JSR $AE20
ADFD: 68        PLA
ADFE: A4 4B     LDY $4B       ; Temporary storage for TXTPTR
AE00: 10 17     BPL $AE19
AE02: AA        TAX
AE03: F0 56     BEQ $AE5B
AE05: D0 5F     BNE $AE66

Jump from $ADD9:

AE07: 46 0D     LSR $0D       ; Data type Flag
AE09: 8A        TXA
AE0A: 2A        ROL
AE0B: A6 7A     LDX $7A       ; Pointer: Current Byte of BASIC Text
AE0D: D0 02     BNE $AE11
AE0F: C6 7B     DEC $7B       ; Pointer: Current Byte of BASIC Text

Jump from $AE0D:

AE11: C6 7A     DEC $7A       ; Pointer: Current Byte of BASIC Text
AE13: A0 1B     LDY #$1B
AE15: 85 4D     STA $4D       ; Mask used during FRMEVL
AE17: D0 D7     BNE $ADF0

Jump from $AE00:

AE19: D9 80 A0  CMP $A080,Y   ; BASIC Operator Vectors
AE1C: B0 48     BCS $AE66
AE1E: 90 D9     BCC $ADF9

Jump from $ADFA:

AE20: B9 82 A0  LDA $A082,Y   ; BASIC Operator Vectors
AE23: 48        PHA
AE24: B9 81 A0  LDA $A081,Y   ; BASIC Operator Vectors
AE27: 48        PHA
AE28: 20 33 AE  JSR $AE33
AE2B: A5 4D     LDA $4D       ; Mask used during FRMEVL
AE2D: 4C A9 AD  JMP $ADA9

Jump from $ADCD:

AE30: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $AE28:

AE33: A5 66     LDA $66       ; FAC Sign
AE35: BE 80 A0  LDX $A080,Y   ; BASIC Operator Vectors

Jump from $A7A2:

AE38: A8        TAY
AE39: 68        PLA
AE3A: 85 22     STA $22       ; Second Utility Pointer
AE3C: E6 22     INC $22       ; Second Utility Pointer
AE3E: 68        PLA
AE3F: 85 23     STA $23       ; Second Utility Pointer
AE41: 98        TYA
AE42: 48        PHA

Jump from $A788:

AE43: 20 1B BC  JSR $BC1B     ; Round FAC#1
AE46: A5 65     LDA $65       ; FAC Mantissa
AE48: 48        PHA
AE49: A5 64     LDA $64       ; FAC Mantissa
AE4B: 48        PHA
AE4C: A5 63     LDA $63       ; FAC Mantissa
AE4E: 48        PHA
AE4F: A5 62     LDA $62       ; FAC Mantissa
AE51: 48        PHA
AE52: A5 61     LDA $61       ; FAC Exponent
AE54: 48        PHA
AE55: 6C 22 00  JMP ($0022)   ; Second Utility Pointer

Jump from $ADDB, $ADDF:

AE58: A0 FF     LDY #$FF
AE5A: 68        PLA

Jump from $AE03:

AE5B: F0 23     BEQ $AE80

Jump from $ADF4:

AE5D: C9 64     CMP #$64
AE5F: F0 03     BEQ $AE64
AE61: 20 8D AD  JSR $AD8D     ; Confirm Result

Jump from $AE5F:

AE64: 84 4B     STY $4B       ; Temporary storage for TXTPTR

Jump from $AE05, $AE1C:

AE66: 68        PLA
AE67: 4A        LSR
AE68: 85 12     STA $12       ; Flag: TAN sign/Comparative result
AE6A: 68        PLA
AE6B: 85 69     STA $69       ; AFAC Exponent
AE6D: 68        PLA
AE6E: 85 6A     STA $6A       ; AFAC Mantissa
AE70: 68        PLA
AE71: 85 6B     STA $6B       ; AFAC Mantissa
AE73: 68        PLA
AE74: 85 6C     STA $6C       ; AFAC Mantissa
AE76: 68        PLA
AE77: 85 6D     STA $6D       ; AFAC Mantissa
AE79: 68        PLA
AE7A: 85 6E     STA $6E       ; AFAC Sign
AE7C: 45 66     EOR $66       ; FAC Sign
AE7E: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation

Jump from $AE5B:

AE80: A5 61     LDA $61       ; FAC Exponent
AE82: 60        RTS



 $AE83/44675:   Evaluate Single Term - c64ref 

Jump from $ADB1, $B643:

AE83: 6C 0A 03  JMP ($030A)   ; Vector: BASIC Token evaluation
AE86: A9 00     LDA #$00
AE88: 85 0D     STA $0D       ; Data type Flag

Jump from $AEB7:

AE8A: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AE8D: B0 03     BCS $AE92

Jump from $AEAF:

AE8F: 4C F3 BC  JMP $BCF3     ; Convert ASCII String to a Number in FAC

Jump from $AE8D:

AE92: 20 13 B1  JSR $B113     ; Does A hold an alphabetic character?
AE95: 90 03     BCC $AE9A
AE97: 4C 28 AF  JMP $AF28     ; Search for Variable

Jump from $AE95:

AE9A: C9 FF     CMP #$FF
AE9C: D0 0F     BNE $AEAD     ; Continue Expression
AE9E: A9 A8     LDA #$A8
AEA0: A0 AE     LDY #$AE
AEA2: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
AEA5: 4C 73 00  JMP $0073     ; CHRGET: Get next Byte of BASIC Text


Kernal-Reference:

 BIT $AE91   : $F51B


 $AEA8/44712:   Constant - pi - c64ref 

AEA8: 82 49 0F DA A1



 $AEAD/44717:   Continue Expression - c64ref 

Jump from $AE9C:

AEAD: C9 2E     CMP #$2E
AEAF: F0 DE     BEQ $AE8F     ; Evaluate Single Term
AEB1: C9 AB     CMP #$AB
AEB3: F0 58     BEQ $AF0D     ; Set up NOT Function
AEB5: C9 AA     CMP #$AA
AEB7: F0 D1     BEQ $AE8A     ; Evaluate Single Term
AEB9: C9 22     CMP #$22
AEBB: D0 0F     BNE $AECC

Jump from $ABC3:

AEBD: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
AEBF: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
AEC1: 69 00     ADC #$00
AEC3: 90 01     BCC $AEC6
AEC5: C8        INY

Jump from $AEC3:

AEC6: 20 87 B4  JSR $B487     ; Set Up String
AEC9: 4C E2 B7  JMP $B7E2     ; Convert ASCII String to Flpt

Jump from $AEBB:

AECC: C9 A8     CMP #$A8
AECE: D0 13     BNE $AEE3
AED0: A0 18     LDY #$18
AED2: D0 3B     BNE $AF0F     ; Set up NOT Function
AED4: 20 BF B1  JSR $B1BF     ; FAC#1 to Positive Integer
AED7: A5 65     LDA $65       ; FAC Mantissa
AED9: 49 FF     EOR #$FF
AEDB: A8        TAY
AEDC: A5 64     LDA $64       ; FAC Mantissa
AEDE: 49 FF     EOR #$FF
AEE0: 4C 91 B3  JMP $B391     ; Convert Integer in (AC/YR) to Flpt

Jump from $AECE:

AEE3: C9 A5     CMP #$A5
AEE5: D0 03     BNE $AEEA
AEE7: 4C F4 B3  JMP $B3F4     ; Perform [fn]

Jump from $AEE5:

AEEA: C9 B4     CMP #$B4
AEEC: 90 03     BCC $AEF1     ; Expression in Brackets
AEEE: 4C A7 AF  JMP $AFA7     ; Identify Function Type



 $AEF1/44785:   Expression in Brackets - c64ref 

Jump from $AEEC, $AFD1, $B3FD:

AEF1: 20 FA AE  JSR $AEFA     ; Test '('
AEF4: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text



 $AEF7/44791:   Test ')' - c64ref 

Jump from $B20B, $B3C6, $B761:

AEF7: A9 29     LDA #$29
AEF9: 2C        .BYTE $2C



 $AEFA/44794:   Test '(' - c64ref 

Jump from $AEF1, $AFB1, $B3B9:

AEFA: A9 28     LDA #$28
AEFC: 2C        .BYTE $2C



 $AEFD/44797:   Test ',' - c64ref 

Jump from $ACB2, $AFB7, $B07E, $B742, $B7F1, $E20E:

AEFD: A9 2C     LDA #$2C

Jump from $A76F, $A817, $A934, $A9AE, $AA8D, $AB8A, $ABAA, $ABC8, $B3CB, $B3E3:

AEFF: A0 00     LDY #$00
AF01: D1 7A     CMP ($7A),Y   ; Pointer: Current Byte of BASIC Text
AF03: D0 03     BNE $AF08     ; Output ?SYNTAX Error
AF05: 4C 73 00  JMP $0073     ; CHRGET: Get next Byte of BASIC Text



 $AF08/44808:   Output ?SYNTAX Error - c64ref 

Jump from $A80B, $A8E8, $AB5F, $AE30, $AF03, $B09C, $B138, $B446, $E216:

AF08: A2 0B     LDX #$0B
AF0A: 4C 37 A4  JMP $A437     ; Error Routine



 $AF0D/44813:   Set up NOT Function - c64ref 

Jump from $AEB3:

AF0D: A0 15     LDY #$15

Jump from $AED2:

AF0F: 68        PLA
AF10: 68        PLA
AF11: 4C FA AD  JMP $ADFA     ; Evaluate Expression in Text



 $AF14/44820:   Identify Reserved Variable - c64ref 

Jump from $AF3B, $AF6E:

AF14: 38        SEC
AF15: A5 64     LDA $64       ; FAC Mantissa
AF17: E9 00     SBC #$00
AF19: A5 65     LDA $65       ; FAC Mantissa
AF1B: E9 A0     SBC #$A0
AF1D: 90 08     BCC $AF27
AF1F: A9 A2     LDA #$A2
AF21: E5 64     SBC $64       ; FAC Mantissa
AF23: A9 E3     LDA #$E3
AF25: E5 65     SBC $65       ; FAC Mantissa

Jump from $AF1D:

AF27: 60        RTS



 $AF28/44840:   Search for Variable - c64ref 

Jump from $AE97:

AF28: 20 8B B0  JSR $B08B     ; Identify Variable
AF2B: 85 64     STA $64       ; FAC Mantissa
AF2D: 84 65     STY $65       ; FAC Mantissa
AF2F: A6 45     LDX $45       ; Name of Variable being sought in Variable Table
AF31: A4 46     LDY $46       ; Name of Variable being sought in Variable Table
AF33: A5 0D     LDA $0D       ; Data type Flag
AF35: F0 26     BEQ $AF5D     ; Convert TI to ASCII String
AF37: A9 00     LDA #$00
AF39: 85 70     STA $70       ; FAC low-order rounding
AF3B: 20 14 AF  JSR $AF14     ; Identify Reserved Variable
AF3E: 90 1C     BCC $AF5C     ; Convert TI to ASCII String
AF40: E0 54     CPX #$54
AF42: D0 18     BNE $AF5C     ; Convert TI to ASCII String
AF44: C0 C9     CPY #$C9
AF46: D0 14     BNE $AF5C     ; Convert TI to ASCII String



 $AF48/44872:   Convert TI to ASCII String - c64ref 

AF48: 20 84 AF  JSR $AF84
AF4B: 84 5E     STY $5E       ; Temporary storage for FLPT value
AF4D: 88        DEY
AF4E: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion
AF50: A0 06     LDY #$06
AF52: 84 5D     STY $5D       ; Temporary storage for FLPT value
AF54: A0 24     LDY #$24
AF56: 20 68 BE  JSR $BE68     ; Convert TI to String
AF59: 4C 6F B4  JMP $B46F     ; Evaluate <str$>

Jump from $AF3E, $AF42, $AF46:

AF5C: 60        RTS

Jump from $AF35:

AF5D: 24 0E     BIT $0E       ; Data type Flag
AF5F: 10 0D     BPL $AF6E
AF61: A0 00     LDY #$00
AF63: B1 64     LDA ($64),Y   ; FAC Mantissa
AF65: AA        TAX
AF66: C8        INY
AF67: B1 64     LDA ($64),Y   ; FAC Mantissa
AF69: A8        TAY
AF6A: 8A        TXA
AF6B: 4C 91 B3  JMP $B391     ; Convert Integer in (AC/YR) to Flpt

Jump from $AF5F:

AF6E: 20 14 AF  JSR $AF14     ; Identify Reserved Variable
AF71: 90 2D     BCC $AFA0
AF73: E0 54     CPX #$54
AF75: D0 1B     BNE $AF92
AF77: C0 49     CPY #$49
AF79: D0 25     BNE $AFA0
AF7B: 20 84 AF  JSR $AF84
AF7E: 98        TYA
AF7F: A2 A0     LDX #$A0
AF81: 4C 4F BC  JMP $BC4F     ; Evaluate <sgn>

Jump from $AF48, $AF7B:

AF84: 20 DE FF  JSR $FFDE     ; Read Real-Time Clock
AF87: 86 64     STX $64       ; FAC Mantissa
AF89: 84 63     STY $63       ; FAC Mantissa
AF8B: 85 65     STA $65       ; FAC Mantissa
AF8D: A0 00     LDY #$00
AF8F: 84 62     STY $62       ; FAC Mantissa
AF91: 60        RTS

Jump from $AF75:

AF92: E0 53     CPX #$53
AF94: D0 0A     BNE $AFA0
AF96: C0 54     CPY #$54
AF98: D0 06     BNE $AFA0
AF9A: 20 B7 FF  JSR $FFB7     ; Read I/O Status Word
AF9D: 4C 3C BC  JMP $BC3C     ; Evaluate <sgn>

Jump from $AF71, $AF79, $AF94, $AF98:

AFA0: A5 64     LDA $64       ; FAC Mantissa
AFA2: A4 65     LDY $65       ; FAC Mantissa
AFA4: 4C A2 BB  JMP $BBA2     ; Load FAC#1 From Memory



 $AFA7/44967:   Identify Function Type - c64ref 

Jump from $AEEE:

AFA7: 0A        ASL
AFA8: 48        PHA
AFA9: AA        TAX
AFAA: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
AFAD: E0 8F     CPX #$8F
AFAF: 90 20     BCC $AFD1     ; Evaluate Numeric Function



 $AFB1/44977:   Evaluate String Function - c64ref 

AFB1: 20 FA AE  JSR $AEFA     ; Test '('
AFB4: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text
AFB7: 20 FD AE  JSR $AEFD     ; Test ','
AFBA: 20 8F AD  JSR $AD8F     ; Confirm Result
AFBD: 68        PLA
AFBE: AA        TAX
AFBF: A5 65     LDA $65       ; FAC Mantissa
AFC1: 48        PHA
AFC2: A5 64     LDA $64       ; FAC Mantissa
AFC4: 48        PHA
AFC5: 8A        TXA
AFC6: 48        PHA
AFC7: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
AFCA: 68        PLA
AFCB: A8        TAY
AFCC: 8A        TXA
AFCD: 48        PHA
AFCE: 4C D6 AF  JMP $AFD6     ; Evaluate Numeric Function



 $AFD1/45009:   Evaluate Numeric Function - c64ref 

Jump from $AFAF:

AFD1: 20 F1 AE  JSR $AEF1     ; Expression in Brackets
AFD4: 68        PLA
AFD5: A8        TAY

Jump from $AFCE:

AFD6: B9 EA 9F  LDA $9FEA,Y
AFD9: 85 55     STA $55       ; Jump Vector used in Function Evaluation
AFDB: B9 EB 9F  LDA $9FEB,Y
AFDE: 85 56     STA $56       ; Jump Vector used in Function Evaluation
AFE0: 20 54 00  JSR $0054     ; Jump Vector used in Function Evaluation
AFE3: 4C 8D AD  JMP $AD8D     ; Confirm Result



 $AFE6/45030:   Perform [or], [and] - c64ref 

AFE6: A0 FF     LDY #$FF
AFE8: 2C        .BYTE $2C
AFE9: A0 00     LDY #$00
AFEB: 84 0B     STY $0B       ; Input Buffer Pointer/Number of Subscripts
AFED: 20 BF B1  JSR $B1BF     ; FAC#1 to Positive Integer
AFF0: A5 64     LDA $64       ; FAC Mantissa
AFF2: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
AFF4: 85 07     STA $07       ; Temporary Integer during OR/AND
AFF6: A5 65     LDA $65       ; FAC Mantissa
AFF8: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
AFFA: 85 08     STA $08       ; Flag: Scan for Quote at end of String
AFFC: 20 FC BB  JSR $BBFC     ; Copy FAC#2 into FAC#1
AFFF: 20 BF B1  JSR $B1BF     ; FAC#1 to Positive Integer
B002: A5 65     LDA $65       ; FAC Mantissa
B004: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
B006: 25 08     AND $08       ; Flag: Scan for Quote at end of String
B008: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
B00A: A8        TAY
B00B: A5 64     LDA $64       ; FAC Mantissa
B00D: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
B00F: 25 07     AND $07       ; Temporary Integer during OR/AND
B011: 45 0B     EOR $0B       ; Input Buffer Pointer/Number of Subscripts
B013: 4C 91 B3  JMP $B391     ; Convert Integer in (AC/YR) to Flpt



 $B016/45078:   Perform <, =, > - c64ref 

B016: 20 90 AD  JSR $AD90     ; Confirm Result
B019: B0 13     BCS $B02E     ; String Comparison



 $B01B/45083:   Numeric Comparison - c64ref 

B01B: A5 6E     LDA $6E       ; AFAC Sign
B01D: 09 7F     ORA #$7F
B01F: 25 6A     AND $6A       ; AFAC Mantissa
B021: 85 6A     STA $6A       ; AFAC Mantissa
B023: A9 69     LDA #$69
B025: A0 00     LDY #$00
B027: 20 5B BC  JSR $BC5B     ; Compare FAC#1 With Memory
B02A: AA        TAX
B02B: 4C 61 B0  JMP $B061     ; String Comparison



 $B02E/45102:   String Comparison - c64ref 

Jump from $B019:

B02E: A9 00     LDA #$00
B030: 85 0D     STA $0D       ; Data type Flag
B032: C6 4D     DEC $4D       ; Mask used during FRMEVL
B034: 20 A6 B6  JSR $B6A6     ; Perform String Housekeeping
B037: 85 61     STA $61       ; FAC Exponent
B039: 86 62     STX $62       ; FAC Mantissa
B03B: 84 63     STY $63       ; FAC Mantissa
B03D: A5 6C     LDA $6C       ; AFAC Mantissa
B03F: A4 6D     LDY $6D       ; AFAC Mantissa
B041: 20 AA B6  JSR $B6AA     ; Perform String Housekeeping
B044: 86 6C     STX $6C       ; AFAC Mantissa
B046: 84 6D     STY $6D       ; AFAC Mantissa
B048: AA        TAX
B049: 38        SEC
B04A: E5 61     SBC $61       ; FAC Exponent
B04C: F0 08     BEQ $B056
B04E: A9 01     LDA #$01
B050: 90 04     BCC $B056
B052: A6 61     LDX $61       ; FAC Exponent
B054: A9 FF     LDA #$FF

Jump from $B04C, $B050:

B056: 85 66     STA $66       ; FAC Sign
B058: A0 FF     LDY #$FF
B05A: E8        INX

Jump from $B06A:

B05B: C8        INY
B05C: CA        DEX
B05D: D0 07     BNE $B066
B05F: A6 66     LDX $66       ; FAC Sign

Jump from $B02B:

B061: 30 0F     BMI $B072
B063: 18        CLC
B064: 90 0C     BCC $B072

Jump from $B05D:

B066: B1 6C     LDA ($6C),Y   ; AFAC Mantissa
B068: D1 62     CMP ($62),Y   ; FAC Mantissa
B06A: F0 EF     BEQ $B05B
B06C: A2 FF     LDX #$FF
B06E: B0 02     BCS $B072
B070: A2 01     LDX #$01

Jump from $B061, $B064, $B06E:

B072: E8        INX
B073: 8A        TXA
B074: 2A        ROL
B075: 25 12     AND $12       ; Flag: TAN sign/Comparative result
B077: F0 02     BEQ $B07B
B079: A9 FF     LDA #$FF

Jump from $B077:

B07B: 4C 3C BC  JMP $BC3C     ; Evaluate <sgn>



 $B07E/45182:   Perform [dim] - c64ref 

Jump from $B088:

B07E: 20 FD AE  JSR $AEFD     ; Test ','
B081: AA        TAX
B082: 20 90 B0  JSR $B090     ; Identify Variable
B085: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B088: D0 F4     BNE $B07E
B08A: 60        RTS



 $B08B/45195:   Identify Variable - c64ref 

Jump from $A9A5, $AC15, $AD24, $AF28, $B3C0:

B08B: A2 00     LDX #$00
B08D: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again

Jump from $B082:

B090: 86 0C     STX $0C       ; Flag: Default Array dimension

Jump from $B3EA:

B092: 85 45     STA $45       ; Name of Variable being sought in Variable Table
B094: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B097: 20 13 B1  JSR $B113     ; Does A hold an alphabetic character?
B09A: B0 03     BCS $B09F

Jump from $B0CA:

B09C: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $B09A:

B09F: A2 00     LDX #$00
B0A1: 86 0D     STX $0D       ; Data type Flag
B0A3: 86 0E     STX $0E       ; Data type Flag
B0A5: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
B0A8: 90 05     BCC $B0AF
B0AA: 20 13 B1  JSR $B113     ; Does A hold an alphabetic character?
B0AD: 90 0B     BCC $B0BA

Jump from $B0A8:

B0AF: AA        TAX

Jump from $B0B3, $B0B8:

B0B0: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
B0B3: 90 FB     BCC $B0B0
B0B5: 20 13 B1  JSR $B113     ; Does A hold an alphabetic character?
B0B8: B0 F6     BCS $B0B0

Jump from $B0AD:

B0BA: C9 24     CMP #$24
B0BC: D0 06     BNE $B0C4
B0BE: A9 FF     LDA #$FF
B0C0: 85 0D     STA $0D       ; Data type Flag
B0C2: D0 10     BNE $B0D4

Jump from $B0BC:

B0C4: C9 25     CMP #$25
B0C6: D0 13     BNE $B0DB
B0C8: A5 10     LDA $10       ; Flag: Subscript reference/User Function call
B0CA: D0 D0     BNE $B09C
B0CC: A9 80     LDA #$80
B0CE: 85 0E     STA $0E       ; Data type Flag
B0D0: 05 45     ORA $45       ; Name of Variable being sought in Variable Table
B0D2: 85 45     STA $45       ; Name of Variable being sought in Variable Table

Jump from $B0C2:

B0D4: 8A        TXA
B0D5: 09 80     ORA #$80
B0D7: AA        TAX
B0D8: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text

Jump from $B0C6:

B0DB: 86 46     STX $46       ; Name of Variable being sought in Variable Table
B0DD: 38        SEC
B0DE: 05 10     ORA $10       ; Flag: Subscript reference/User Function call
B0E0: E9 28     SBC #$28
B0E2: D0 03     BNE $B0E7     ; Locate Ordinary Variable
B0E4: 4C D1 B1  JMP $B1D1     ; Get Array Parameters


Kernal-Reference:

 BIT $B0E6   : $F9DD


 $B0E7/45287:   Locate Ordinary Variable - c64ref 

Jump from $B0E2:

B0E7: A0 00     LDY #$00
B0E9: 84 10     STY $10       ; Flag: Subscript reference/User Function call
B0EB: A5 2D     LDA $2D       ; Pointer: Start of BASIC Variables
B0ED: A6 2E     LDX $2E       ; Pointer: Start of BASIC Variables

Jump from $B111:

B0EF: 86 60     STX $60       ; Temporary storage for FLPT value

Jump from $B10E:

B0F1: 85 5F     STA $5F       ; Temporary storage for FLPT value
B0F3: E4 30     CPX $30       ; Pointer: Start of BASIC Arrays
B0F5: D0 04     BNE $B0FB
B0F7: C5 2F     CMP $2F       ; Pointer: Start of BASIC Arrays
B0F9: F0 22     BEQ $B11D     ; Create New Variable

Jump from $B0F5:

B0FB: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B0FD: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B0FF: D0 08     BNE $B109
B101: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B103: C8        INY
B104: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B106: F0 7D     BEQ $B185     ; Create Variable
B108: 88        DEY

Jump from $B0FF:

B109: 18        CLC
B10A: A5 5F     LDA $5F       ; Temporary storage for FLPT value
B10C: 69 07     ADC #$07
B10E: 90 E1     BCC $B0F1
B110: E8        INX
B111: D0 DC     BNE $B0EF



 $B113/45331:   Does A hold an alphabetic character? - c64ref 

Jump from $AE92, $B097, $B0AA, $B0B5:

B113: C9 41     CMP #$41
B115: 90 05     BCC $B11C
B117: E9 5B     SBC #$5B
B119: 38        SEC
B11A: E9 A5     SBC #$A5

Jump from $B115:

B11C: 60        RTS



 $B11D/45341:   Create New Variable - c64ref 

Jump from $B0F9:

B11D: 68        PLA
B11E: 48        PHA
B11F: C9 2A     CMP #$2A
B121: D0 05     BNE $B128     ; Create Variable

Jump from $B132:

B123: A9 13     LDA #$13
B125: A0 BF     LDY #$BF
B127: 60        RTS



 $B128/45352:   Create Variable - c64ref 

Jump from $B121:

B128: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B12A: A4 46     LDY $46       ; Name of Variable being sought in Variable Table
B12C: C9 54     CMP #$54
B12E: D0 0B     BNE $B13B
B130: C0 C9     CPY #$C9
B132: F0 EF     BEQ $B123     ; Create New Variable
B134: C0 49     CPY #$49
B136: D0 03     BNE $B13B

Jump from $B141:

B138: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $B12E, $B136:

B13B: C9 53     CMP #$53
B13D: D0 04     BNE $B143
B13F: C0 54     CPY #$54
B141: F0 F5     BEQ $B138

Jump from $B13D:

B143: A5 2F     LDA $2F       ; Pointer: Start of BASIC Arrays
B145: A4 30     LDY $30       ; Pointer: Start of BASIC Arrays
B147: 85 5F     STA $5F       ; Temporary storage for FLPT value
B149: 84 60     STY $60       ; Temporary storage for FLPT value
B14B: A5 31     LDA $31       ; Pointer: End of BASIC Arrays + 1
B14D: A4 32     LDY $32       ; Pointer: End of BASIC Arrays + 1
B14F: 85 5A     STA $5A       ; Temporary storage for FLPT value
B151: 84 5B     STY $5B       ; Temporary storage for FLPT value
B153: 18        CLC
B154: 69 07     ADC #$07
B156: 90 01     BCC $B159
B158: C8        INY

Jump from $B156:

B159: 85 58     STA $58       ; Temporary storage for FLPT value
B15B: 84 59     STY $59       ; Temporary storage for FLPT value
B15D: 20 B8 A3  JSR $A3B8     ; Open Space in Memory
B160: A5 58     LDA $58       ; Temporary storage for FLPT value
B162: A4 59     LDY $59       ; Temporary storage for FLPT value
B164: C8        INY
B165: 85 2F     STA $2F       ; Pointer: Start of BASIC Arrays
B167: 84 30     STY $30       ; Pointer: Start of BASIC Arrays
B169: A0 00     LDY #$00
B16B: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B16D: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B16F: C8        INY
B170: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B172: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B174: A9 00     LDA #$00
B176: C8        INY
B177: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B179: C8        INY
B17A: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B17C: C8        INY
B17D: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B17F: C8        INY
B180: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B182: C8        INY
B183: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value

Jump from $B106:

B185: A5 5F     LDA $5F       ; Temporary storage for FLPT value
B187: 18        CLC
B188: 69 02     ADC #$02
B18A: A4 60     LDY $60       ; Temporary storage for FLPT value
B18C: 90 01     BCC $B18F
B18E: C8        INY

Jump from $B18C:

B18F: 85 47     STA $47       ; Value/Descriptor-Pointer
B191: 84 48     STY $48       ; Value/Descriptor-Pointer
B193: 60        RTS



 $B194/45460:   Allocate Array Pointer Space - c64ref 

Jump from $B253, $B261:

B194: A5 0B     LDA $0B       ; Input Buffer Pointer/Number of Subscripts
B196: 0A        ASL
B197: 69 05     ADC #$05
B199: 65 5F     ADC $5F       ; Temporary storage for FLPT value
B19B: A4 60     LDY $60       ; Temporary storage for FLPT value
B19D: 90 01     BCC $B1A0
B19F: C8        INY

Jump from $B19D:

B1A0: 85 58     STA $58       ; Temporary storage for FLPT value
B1A2: 84 59     STY $59       ; Temporary storage for FLPT value
B1A4: 60        RTS



 $B1A5/45477:   Constant 32768 in Flpt - c64ref 

B1A5: 90 80 00 00 00



 $B1AA/45482:   FAC#1 to Integer in A/Y - c64ref 

B1AA: 20 BF B1  JSR $B1BF     ; FAC#1 to Positive Integer
B1AD: A5 64     LDA $64       ; FAC Mantissa
B1AF: A4 65     LDY $65       ; FAC Mantissa
B1B1: 60        RTS



 $B1B2/45490:   Evaluate Text for Integer - c64ref 

Jump from $B1E3:

B1B2: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
B1B5: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text

Jump from $B7A1:

B1B8: 20 8D AD  JSR $AD8D     ; Confirm Result
B1BB: A5 66     LDA $66       ; FAC Sign
B1BD: 30 0D     BMI $B1CC     ; FAC#1 to Positive Integer



 $B1BF/45503:   FAC#1 to Positive Integer - c64ref 

Jump from $A9C7, $AED4, $AFED, $AFFF, $B1AA:

B1BF: A5 61     LDA $61       ; FAC Exponent
B1C1: C9 90     CMP #$90
B1C3: 90 09     BCC $B1CE
B1C5: A9 A5     LDA #$A5
B1C7: A0 B1     LDY #$B1
B1C9: 20 5B BC  JSR $BC5B     ; Compare FAC#1 With Memory

Jump from $B1BD:

B1CC: D0 7A     BNE $B248     ; ?ILLEGAL QUANTITY

Jump from $B1C3:

B1CE: 4C 9B BC  JMP $BC9B     ; Convert FAC#1 to Integer



 $B1D1/45521:   Get Array Parameters - c64ref 

Jump from $B0E4:

B1D1: A5 0C     LDA $0C       ; Flag: Default Array dimension
B1D3: 05 0E     ORA $0E       ; Data type Flag
B1D5: 48        PHA
B1D6: A5 0D     LDA $0D       ; Data type Flag
B1D8: 48        PHA
B1D9: A0 00     LDY #$00

Jump from $B207:

B1DB: 98        TYA
B1DC: 48        PHA
B1DD: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B1DF: 48        PHA
B1E0: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B1E2: 48        PHA
B1E3: 20 B2 B1  JSR $B1B2     ; Evaluate Text for Integer
B1E6: 68        PLA
B1E7: 85 45     STA $45       ; Name of Variable being sought in Variable Table
B1E9: 68        PLA
B1EA: 85 46     STA $46       ; Name of Variable being sought in Variable Table
B1EC: 68        PLA
B1ED: A8        TAY
B1EE: BA        TSX
B1EF: BD 02 01  LDA $0102,X   ; 6510 Hardware Stack Area
B1F2: 48        PHA
B1F3: BD 01 01  LDA $0101,X   ; 6510 Hardware Stack Area
B1F6: 48        PHA
B1F7: A5 64     LDA $64       ; FAC Mantissa
B1F9: 9D 02 01  STA $0102,X   ; 6510 Hardware Stack Area
B1FC: A5 65     LDA $65       ; FAC Mantissa
B1FE: 9D 01 01  STA $0101,X   ; 6510 Hardware Stack Area
B201: C8        INY
B202: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B205: C9 2C     CMP #$2C
B207: F0 D2     BEQ $B1DB
B209: 84 0B     STY $0B       ; Input Buffer Pointer/Number of Subscripts
B20B: 20 F7 AE  JSR $AEF7     ; Test ')'
B20E: 68        PLA
B20F: 85 0D     STA $0D       ; Data type Flag
B211: 68        PLA
B212: 85 0E     STA $0E       ; Data type Flag
B214: 29 7F     AND #$7F
B216: 85 0C     STA $0C       ; Flag: Default Array dimension



 $B218/45592:   Find Array - c64ref 

B218: A6 2F     LDX $2F       ; Pointer: Start of BASIC Arrays
B21A: A5 30     LDA $30       ; Pointer: Start of BASIC Arrays

Jump from $B243:

B21C: 86 5F     STX $5F       ; Temporary storage for FLPT value
B21E: 85 60     STA $60       ; Temporary storage for FLPT value
B220: C5 32     CMP $32       ; Pointer: End of BASIC Arrays + 1
B222: D0 04     BNE $B228
B224: E4 31     CPX $31       ; Pointer: End of BASIC Arrays + 1
B226: F0 39     BEQ $B261     ; Create Array

Jump from $B222:

B228: A0 00     LDY #$00
B22A: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
B22C: C8        INY
B22D: C5 45     CMP $45       ; Name of Variable being sought in Variable Table
B22F: D0 06     BNE $B237
B231: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B233: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B235: F0 16     BEQ $B24D     ; ?REDIM'D ARRAY

Jump from $B22F:

B237: C8        INY
B238: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
B23A: 18        CLC
B23B: 65 5F     ADC $5F       ; Temporary storage for FLPT value
B23D: AA        TAX
B23E: C8        INY
B23F: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
B241: 65 60     ADC $60       ; Temporary storage for FLPT value
B243: 90 D7     BCC $B21C



 $B245/45637:   ?BAD SUBSCRIPT - c64ref 

Jump from $B25C, $B308:

B245: A2 12     LDX #$12
B247: 2C        .BYTE $2C



 $B248/45640:   ?ILLEGAL QUANTITY - c64ref 

Jump from $AA24, $B1CC, $B798, $B9F1:

B248: A2 0E     LDX #$0E

Jump from $B251:

B24A: 4C 37 A4  JMP $A437     ; Error Routine



 $B24D/45645:   ?REDIM'D ARRAY - c64ref 

Jump from $B235:

B24D: A2 13     LDX #$13
B24F: A5 0C     LDA $0C       ; Flag: Default Array dimension
B251: D0 F7     BNE $B24A     ; ?ILLEGAL QUANTITY
B253: 20 94 B1  JSR $B194     ; Allocate Array Pointer Space
B256: A5 0B     LDA $0B       ; Input Buffer Pointer/Number of Subscripts
B258: A0 04     LDY #$04
B25A: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B25C: D0 E7     BNE $B245     ; ?BAD SUBSCRIPT
B25E: 4C EA B2  JMP $B2EA     ; Create Array



 $B261/45665:   Create Array - c64ref 

Jump from $B226:

B261: 20 94 B1  JSR $B194     ; Allocate Array Pointer Space
B264: 20 08 A4  JSR $A408     ; Check Memory Overlap
B267: A0 00     LDY #$00
B269: 84 72     STY $72       ; Pointer: Used during CRUNCH/ASCII conversion
B26B: A2 05     LDX #$05
B26D: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B26F: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B271: 10 01     BPL $B274
B273: CA        DEX

Jump from $B271:

B274: C8        INY
B275: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B277: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B279: 10 02     BPL $B27D
B27B: CA        DEX
B27C: CA        DEX

Jump from $B279:

B27D: 86 71     STX $71       ; Pointer: Used during CRUNCH/ASCII conversion
B27F: A5 0B     LDA $0B       ; Input Buffer Pointer/Number of Subscripts
B281: C8        INY
B282: C8        INY
B283: C8        INY
B284: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value

Jump from $B2A8:

B286: A2 0B     LDX #$0B
B288: A9 00     LDA #$00
B28A: 24 0C     BIT $0C       ; Flag: Default Array dimension
B28C: 50 08     BVC $B296
B28E: 68        PLA
B28F: 18        CLC
B290: 69 01     ADC #$01
B292: AA        TAX
B293: 68        PLA
B294: 69 00     ADC #$00

Jump from $B28C:

B296: C8        INY
B297: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B299: C8        INY
B29A: 8A        TXA
B29B: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B29D: 20 4C B3  JSR $B34C     ; Number of Bytes in Subscript
B2A0: 86 71     STX $71       ; Pointer: Used during CRUNCH/ASCII conversion
B2A2: 85 72     STA $72       ; Pointer: Used during CRUNCH/ASCII conversion
B2A4: A4 22     LDY $22       ; Second Utility Pointer
B2A6: C6 0B     DEC $0B       ; Input Buffer Pointer/Number of Subscripts
B2A8: D0 DC     BNE $B286
B2AA: 65 59     ADC $59       ; Temporary storage for FLPT value
B2AC: B0 5D     BCS $B30B
B2AE: 85 59     STA $59       ; Temporary storage for FLPT value
B2B0: A8        TAY
B2B1: 8A        TXA
B2B2: 65 58     ADC $58       ; Temporary storage for FLPT value
B2B4: 90 03     BCC $B2B9
B2B6: C8        INY
B2B7: F0 52     BEQ $B30B

Jump from $B2B4:

B2B9: 20 08 A4  JSR $A408     ; Check Memory Overlap
B2BC: 85 31     STA $31       ; Pointer: End of BASIC Arrays + 1
B2BE: 84 32     STY $32       ; Pointer: End of BASIC Arrays + 1
B2C0: A9 00     LDA #$00
B2C2: E6 72     INC $72       ; Pointer: Used during CRUNCH/ASCII conversion
B2C4: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
B2C6: F0 05     BEQ $B2CD

Jump from $B2CB, $B2D1:

B2C8: 88        DEY
B2C9: 91 58     STA ($58),Y   ; Temporary storage for FLPT value
B2CB: D0 FB     BNE $B2C8

Jump from $B2C6:

B2CD: C6 59     DEC $59       ; Temporary storage for FLPT value
B2CF: C6 72     DEC $72       ; Pointer: Used during CRUNCH/ASCII conversion
B2D1: D0 F5     BNE $B2C8
B2D3: E6 59     INC $59       ; Temporary storage for FLPT value
B2D5: 38        SEC
B2D6: A5 31     LDA $31       ; Pointer: End of BASIC Arrays + 1
B2D8: E5 5F     SBC $5F       ; Temporary storage for FLPT value
B2DA: A0 02     LDY #$02
B2DC: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B2DE: A5 32     LDA $32       ; Pointer: End of BASIC Arrays + 1
B2E0: C8        INY
B2E1: E5 60     SBC $60       ; Temporary storage for FLPT value
B2E3: 91 5F     STA ($5F),Y   ; Temporary storage for FLPT value
B2E5: A5 0C     LDA $0C       ; Flag: Default Array dimension
B2E7: D0 62     BNE $B34B     ; Locate Element in Array
B2E9: C8        INY

Jump from $B25E:

B2EA: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
B2EC: 85 0B     STA $0B       ; Input Buffer Pointer/Number of Subscripts
B2EE: A9 00     LDA #$00
B2F0: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $B326:

B2F2: 85 72     STA $72       ; Pointer: Used during CRUNCH/ASCII conversion
B2F4: C8        INY
B2F5: 68        PLA
B2F6: AA        TAX
B2F7: 85 64     STA $64       ; FAC Mantissa
B2F9: 68        PLA
B2FA: 85 65     STA $65       ; FAC Mantissa
B2FC: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B2FE: 90 0E     BCC $B30E     ; Locate Element in Array
B300: D0 06     BNE $B308
B302: C8        INY
B303: 8A        TXA
B304: D1 5F     CMP ($5F),Y   ; Temporary storage for FLPT value
B306: 90 07     BCC $B30F     ; Locate Element in Array

Jump from $B300:

B308: 4C 45 B2  JMP $B245     ; ?BAD SUBSCRIPT

Jump from $B2AC, $B2B7, $B365, $B376:

B30B: 4C 35 A4  JMP $A435     ; Output ?OUT OF MEMORY Error



 $B30E/45838:   Locate Element in Array - c64ref 

Jump from $B2FE:

B30E: C8        INY

Jump from $B306:

B30F: A5 72     LDA $72       ; Pointer: Used during CRUNCH/ASCII conversion
B311: 05 71     ORA $71       ; Pointer: Used during CRUNCH/ASCII conversion
B313: 18        CLC
B314: F0 0A     BEQ $B320
B316: 20 4C B3  JSR $B34C     ; Number of Bytes in Subscript
B319: 8A        TXA
B31A: 65 64     ADC $64       ; FAC Mantissa
B31C: AA        TAX
B31D: 98        TYA
B31E: A4 22     LDY $22       ; Second Utility Pointer

Jump from $B314:

B320: 65 65     ADC $65       ; FAC Mantissa
B322: 86 71     STX $71       ; Pointer: Used during CRUNCH/ASCII conversion
B324: C6 0B     DEC $0B       ; Input Buffer Pointer/Number of Subscripts
B326: D0 CA     BNE $B2F2     ; Create Array
B328: 85 72     STA $72       ; Pointer: Used during CRUNCH/ASCII conversion
B32A: A2 05     LDX #$05
B32C: A5 45     LDA $45       ; Name of Variable being sought in Variable Table
B32E: 10 01     BPL $B331
B330: CA        DEX

Jump from $B32E:

B331: A5 46     LDA $46       ; Name of Variable being sought in Variable Table
B333: 10 02     BPL $B337
B335: CA        DEX
B336: CA        DEX

Jump from $B333:

B337: 86 28     STX $28       ; Floating point product of Multiply and Divide
B339: A9 00     LDA #$00
B33B: 20 55 B3  JSR $B355     ; Number of Bytes in Subscript
B33E: 8A        TXA
B33F: 65 58     ADC $58       ; Temporary storage for FLPT value
B341: 85 47     STA $47       ; Value/Descriptor-Pointer
B343: 98        TYA
B344: 65 59     ADC $59       ; Temporary storage for FLPT value
B346: 85 48     STA $48       ; Value/Descriptor-Pointer
B348: A8        TAY
B349: A5 47     LDA $47       ; Value/Descriptor-Pointer

Jump from $B2E7, $B3A9:

B34B: 60        RTS



 $B34C/45900:   Number of Bytes in Subscript - c64ref 

Jump from $B29D, $B316:

B34C: 84 22     STY $22       ; Second Utility Pointer
B34E: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value
B350: 85 28     STA $28       ; Floating point product of Multiply and Divide
B352: 88        DEY
B353: B1 5F     LDA ($5F),Y   ; Temporary storage for FLPT value

Jump from $B33B:

B355: 85 29     STA $29       ; Floating point product of Multiply and Divide
B357: A9 10     LDA #$10
B359: 85 5D     STA $5D       ; Temporary storage for FLPT value
B35B: A2 00     LDX #$00
B35D: A0 00     LDY #$00

Jump from $B37A:

B35F: 8A        TXA
B360: 0A        ASL
B361: AA        TAX
B362: 98        TYA
B363: 2A        ROL
B364: A8        TAY
B365: B0 A4     BCS $B30B     ; Create Array
B367: 06 71     ASL $71       ; Pointer: Used during CRUNCH/ASCII conversion
B369: 26 72     ROL $72       ; Pointer: Used during CRUNCH/ASCII conversion
B36B: 90 0B     BCC $B378
B36D: 18        CLC
B36E: 8A        TXA
B36F: 65 28     ADC $28       ; Floating point product of Multiply and Divide
B371: AA        TAX
B372: 98        TYA
B373: 65 29     ADC $29       ; Floating point product of Multiply and Divide
B375: A8        TAY
B376: B0 93     BCS $B30B     ; Create Array

Jump from $B36B:

B378: C6 5D     DEC $5D       ; Temporary storage for FLPT value
B37A: D0 E3     BNE $B35F
B37C: 60        RTS



 $B37D/45949:   Evaluate <fre> - c64ref 

B37D: A5 0D     LDA $0D       ; Data type Flag
B37F: F0 03     BEQ $B384
B381: 20 A6 B6  JSR $B6A6     ; Perform String Housekeeping

Jump from $B37F:

B384: 20 26 B5  JSR $B526     ; Garbage Collection
B387: 38        SEC
B388: A5 33     LDA $33       ; Pointer: Bottom of String space
B38A: E5 31     SBC $31       ; Pointer: End of BASIC Arrays + 1
B38C: A8        TAY
B38D: A5 34     LDA $34       ; Pointer: Bottom of String space
B38F: E5 32     SBC $32       ; Pointer: End of BASIC Arrays + 1



 $B391/45969:   Convert Integer in (AC/YR) to Flpt - c64ref 

Jump from $AEE0, $AF6B, $B013, $B3A4:

B391: A2 00     LDX #$00
B393: 86 0D     STX $0D       ; Data type Flag
B395: 85 62     STA $62       ; FAC Mantissa
B397: 84 63     STY $63       ; FAC Mantissa
B399: A2 90     LDX #$90
B39B: 4C 44 BC  JMP $BC44     ; Evaluate <sgn>



 $B39E/45982:   Evaluate <pos> - c64ref 

B39E: 38        SEC
B39F: 20 F0 FF  JSR $FFF0     ; Read / Set Cursor X/Y Position

Jump from $B77F, $B795, $B821:

B3A2: A9 00     LDA #$00
B3A4: F0 EB     BEQ $B391     ; Convert Integer in (AC/YR) to Flpt



 $B3A6/45990:   Confirm Program Mode - c64ref 

Jump from $AB7B, $ABCE, $B3B6:

B3A6: A6 3A     LDX $3A       ; Current BASIC Line number
B3A8: E8        INX
B3A9: D0 A0     BNE $B34B     ; Locate Element in Array
B3AB: A2 15     LDX #$15
B3AD: 2C        .BYTE $2C



 $B3AE/45998:   ?UNDEF'D FUNCTION - c64ref 

Jump from $B413:

B3AE: A2 1B     LDX #$1B
B3B0: 4C 37 A4  JMP $A437     ; Error Routine



 $B3B3/46003:   Perform [def fn] - c64ref 

B3B3: 20 E1 B3  JSR $B3E1     ; Check Syntax of FN
B3B6: 20 A6 B3  JSR $B3A6     ; Confirm Program Mode
B3B9: 20 FA AE  JSR $AEFA     ; Test '('
B3BC: A9 80     LDA #$80
B3BE: 85 10     STA $10       ; Flag: Subscript reference/User Function call
B3C0: 20 8B B0  JSR $B08B     ; Identify Variable
B3C3: 20 8D AD  JSR $AD8D     ; Confirm Result
B3C6: 20 F7 AE  JSR $AEF7     ; Test ')'
B3C9: A9 B2     LDA #$B2
B3CB: 20 FF AE  JSR $AEFF     ; Test ','
B3CE: 48        PHA
B3CF: A5 48     LDA $48       ; Value/Descriptor-Pointer
B3D1: 48        PHA
B3D2: A5 47     LDA $47       ; Value/Descriptor-Pointer
B3D4: 48        PHA
B3D5: A5 7B     LDA $7B       ; Pointer: Current Byte of BASIC Text
B3D7: 48        PHA
B3D8: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
B3DA: 48        PHA
B3DB: 20 F8 A8  JSR $A8F8     ; Perform [data]
B3DE: 4C 4F B4  JMP $B44F     ; Perform [fn]



 $B3E1/46049:   Check Syntax of FN - c64ref 

Jump from $B3B3, $B3F4:

B3E1: A9 A5     LDA #$A5
B3E3: 20 FF AE  JSR $AEFF     ; Test ','
B3E6: 09 80     ORA #$80
B3E8: 85 10     STA $10       ; Flag: Subscript reference/User Function call
B3EA: 20 92 B0  JSR $B092     ; Identify Variable
B3ED: 85 4E     STA $4E       ; Temporary storage for FLPT value
B3EF: 84 4F     STY $4F       ; Temporary storage for FLPT value
B3F1: 4C 8D AD  JMP $AD8D     ; Confirm Result



 $B3F4/46068:   Perform [fn] - c64ref 

Jump from $AEE7:

B3F4: 20 E1 B3  JSR $B3E1     ; Check Syntax of FN
B3F7: A5 4F     LDA $4F       ; Temporary storage for FLPT value
B3F9: 48        PHA
B3FA: A5 4E     LDA $4E       ; Temporary storage for FLPT value
B3FC: 48        PHA
B3FD: 20 F1 AE  JSR $AEF1     ; Expression in Brackets
B400: 20 8D AD  JSR $AD8D     ; Confirm Result
B403: 68        PLA
B404: 85 4E     STA $4E       ; Temporary storage for FLPT value
B406: 68        PLA
B407: 85 4F     STA $4F       ; Temporary storage for FLPT value
B409: A0 02     LDY #$02
B40B: B1 4E     LDA ($4E),Y   ; Temporary storage for FLPT value
B40D: 85 47     STA $47       ; Value/Descriptor-Pointer
B40F: AA        TAX
B410: C8        INY
B411: B1 4E     LDA ($4E),Y   ; Temporary storage for FLPT value
B413: F0 99     BEQ $B3AE     ; ?UNDEF'D FUNCTION
B415: 85 48     STA $48       ; Value/Descriptor-Pointer
B417: C8        INY

Jump from $B41C:

B418: B1 47     LDA ($47),Y   ; Value/Descriptor-Pointer
B41A: 48        PHA
B41B: 88        DEY
B41C: 10 FA     BPL $B418
B41E: A4 48     LDY $48       ; Value/Descriptor-Pointer
B420: 20 D4 BB  JSR $BBD4     ; Store FAC#1 in Memory
B423: A5 7B     LDA $7B       ; Pointer: Current Byte of BASIC Text
B425: 48        PHA
B426: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
B428: 48        PHA
B429: B1 4E     LDA ($4E),Y   ; Temporary storage for FLPT value
B42B: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
B42D: C8        INY
B42E: B1 4E     LDA ($4E),Y   ; Temporary storage for FLPT value
B430: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text
B432: A5 48     LDA $48       ; Value/Descriptor-Pointer
B434: 48        PHA
B435: A5 47     LDA $47       ; Value/Descriptor-Pointer
B437: 48        PHA
B438: 20 8A AD  JSR $AD8A     ; Confirm Result
B43B: 68        PLA
B43C: 85 4E     STA $4E       ; Temporary storage for FLPT value
B43E: 68        PLA
B43F: 85 4F     STA $4F       ; Temporary storage for FLPT value
B441: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B444: F0 03     BEQ $B449
B446: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error

Jump from $B444:

B449: 68        PLA
B44A: 85 7A     STA $7A       ; Pointer: Current Byte of BASIC Text
B44C: 68        PLA
B44D: 85 7B     STA $7B       ; Pointer: Current Byte of BASIC Text

Jump from $B3DE:

B44F: A0 00     LDY #$00
B451: 68        PLA
B452: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B454: 68        PLA
B455: C8        INY
B456: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B458: 68        PLA
B459: C8        INY
B45A: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B45C: 68        PLA
B45D: C8        INY
B45E: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B460: 68        PLA
B461: C8        INY
B462: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B464: 60        RTS



 $B465/46181:   Evaluate <str$> - c64ref 

B465: 20 8D AD  JSR $AD8D     ; Confirm Result
B468: A0 00     LDY #$00
B46A: 20 DF BD  JSR $BDDF     ; Convert FAC#1 to ASCII String
B46D: 68        PLA
B46E: 68        PLA

Jump from $AF59:

B46F: A9 FF     LDA #$FF
B471: A0 00     LDY #$00
B473: F0 12     BEQ $B487     ; Set Up String

Jump from $AA56, $B4C0, $B65D:

B475: A6 64     LDX $64       ; FAC Mantissa
B477: A4 65     LDY $65       ; FAC Mantissa
B479: 86 50     STX $50       ; Temporary storage for FLPT value
B47B: 84 51     STY $51       ; Temporary storage for FLPT value

Jump from $B6F3, $B70F:

B47D: 20 F4 B4  JSR $B4F4     ; Allocate Space for String
B480: 86 62     STX $62       ; FAC Mantissa
B482: 84 63     STY $63       ; FAC Mantissa
B484: 85 61     STA $61       ; FAC Exponent
B486: 60        RTS



 $B487/46215:   Set Up String - c64ref 

Jump from $AABF, $AB1E, $AEC6, $B473:

B487: A2 22     LDX #$22
B489: 86 07     STX $07       ; Temporary Integer during OR/AND
B48B: 86 08     STX $08       ; Flag: Scan for Quote at end of String

Jump from $AC7D:

B48D: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
B48F: 84 70     STY $70       ; FAC low-order rounding
B491: 85 62     STA $62       ; FAC Mantissa
B493: 84 63     STY $63       ; FAC Mantissa
B495: A0 FF     LDY #$FF

Jump from $B4A2:

B497: C8        INY
B498: B1 6F     LDA ($6F),Y   ; Sign of result of Arithmetic Evaluation
B49A: F0 0C     BEQ $B4A8
B49C: C5 07     CMP $07       ; Temporary Integer during OR/AND
B49E: F0 04     BEQ $B4A4
B4A0: C5 08     CMP $08       ; Flag: Scan for Quote at end of String
B4A2: D0 F3     BNE $B497

Jump from $B49E:

B4A4: C9 22     CMP #$22
B4A6: F0 01     BEQ $B4A9

Jump from $B49A:

B4A8: 18        CLC

Jump from $B4A6:

B4A9: 84 61     STY $61       ; FAC Exponent
B4AB: 98        TYA
B4AC: 65 6F     ADC $6F       ; Sign of result of Arithmetic Evaluation
B4AE: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion
B4B0: A6 70     LDX $70       ; FAC low-order rounding
B4B2: 90 01     BCC $B4B5
B4B4: E8        INX

Jump from $B4B2:

B4B5: 86 72     STX $72       ; Pointer: Used during CRUNCH/ASCII conversion
B4B7: A5 70     LDA $70       ; FAC low-order rounding
B4B9: F0 04     BEQ $B4BF
B4BB: C9 02     CMP #$02
B4BD: D0 0B     BNE $B4CA

Jump from $B4B9:

B4BF: 98        TYA
B4C0: 20 75 B4  JSR $B475     ; Evaluate <str$>
B4C3: A6 6F     LDX $6F       ; Sign of result of Arithmetic Evaluation
B4C5: A4 70     LDY $70       ; FAC low-order rounding
B4C7: 20 88 B6  JSR $B688     ; Store String in High RAM

Jump from $B4BD, $B674, $B6FD, $B729:

B4CA: A6 16     LDX $16       ; Pointer: Temporary String Stack
B4CC: E0 22     CPX #$22
B4CE: D0 05     BNE $B4D5     ; Save String Descriptor
B4D0: A2 19     LDX #$19

Jump from $B51A:

B4D2: 4C 37 A4  JMP $A437     ; Error Routine



 $B4D5/46293:   Save String Descriptor - c64ref 

Jump from $B4CE:

B4D5: A5 61     LDA $61       ; FAC Exponent
B4D7: 95 00     STA $00,X     ; 6510 On-chip Data Direction Register
B4D9: A5 62     LDA $62       ; FAC Mantissa
B4DB: 95 01     STA $01,X     ; 6510 On-chip 8-bit Input/Output Register
B4DD: A5 63     LDA $63       ; FAC Mantissa
B4DF: 95 02     STA $02,X     ; Unused
B4E1: A0 00     LDY #$00
B4E3: 86 64     STX $64       ; FAC Mantissa
B4E5: 84 65     STY $65       ; FAC Mantissa
B4E7: 84 70     STY $70       ; FAC low-order rounding
B4E9: 88        DEY
B4EA: 84 0D     STY $0D       ; Data type Flag
B4EC: 86 17     STX $17       ; Last temporary String Address
B4EE: E8        INX
B4EF: E8        INX
B4F0: E8        INX
B4F1: 86 16     STX $16       ; Pointer: Temporary String Stack
B4F3: 60        RTS



 $B4F4/46324:   Allocate Space for String - c64ref 

Jump from $B47D:

B4F4: 46 0F     LSR $0F       ; Flag: DATA scan/List Quote/Garbage collection

Jump from $B524:

B4F6: 48        PHA
B4F7: 49 FF     EOR #$FF
B4F9: 38        SEC
B4FA: 65 33     ADC $33       ; Pointer: Bottom of String space
B4FC: A4 34     LDY $34       ; Pointer: Bottom of String space
B4FE: B0 01     BCS $B501
B500: 88        DEY

Jump from $B4FE:

B501: C4 32     CPY $32       ; Pointer: End of BASIC Arrays + 1
B503: 90 11     BCC $B516
B505: D0 04     BNE $B50B
B507: C5 31     CMP $31       ; Pointer: End of BASIC Arrays + 1
B509: 90 0B     BCC $B516

Jump from $B505:

B50B: 85 33     STA $33       ; Pointer: Bottom of String space
B50D: 84 34     STY $34       ; Pointer: Bottom of String space
B50F: 85 35     STA $35       ; Utility String Pointer
B511: 84 36     STY $36       ; Utility String Pointer
B513: AA        TAX
B514: 68        PLA
B515: 60        RTS

Jump from $B503, $B509:

B516: A2 10     LDX #$10
B518: A5 0F     LDA $0F       ; Flag: DATA scan/List Quote/Garbage collection
B51A: 30 B6     BMI $B4D2     ; Set Up String
B51C: 20 26 B5  JSR $B526     ; Garbage Collection
B51F: A9 80     LDA #$80
B521: 85 0F     STA $0F       ; Flag: DATA scan/List Quote/Garbage collection
B523: 68        PLA
B524: D0 D0     BNE $B4F6



 $B526/46374:   Garbage Collection - c64ref 

Jump from $A41C, $B384, $B51C:

B526: A6 37     LDX $37       ; Pointer: Highest Address available to BASIC
B528: A5 38     LDA $38       ; Pointer: Highest Address available to BASIC

Jump from $B63A:

B52A: 86 33     STX $33       ; Pointer: Bottom of String space
B52C: 85 34     STA $34       ; Pointer: Bottom of String space
B52E: A0 00     LDY #$00
B530: 84 4F     STY $4F       ; Temporary storage for FLPT value
B532: 84 4E     STY $4E       ; Temporary storage for FLPT value
B534: A5 31     LDA $31       ; Pointer: End of BASIC Arrays + 1
B536: A6 32     LDX $32       ; Pointer: End of BASIC Arrays + 1
B538: 85 5F     STA $5F       ; Temporary storage for FLPT value
B53A: 86 60     STX $60       ; Temporary storage for FLPT value
B53C: A9 19     LDA #$19
B53E: A2 00     LDX #$00
B540: 85 22     STA $22       ; Second Utility Pointer
B542: 86 23     STX $23       ; Second Utility Pointer

Jump from $B54B:

B544: C5 16     CMP $16       ; Pointer: Temporary String Stack
B546: F0 05     BEQ $B54D
B548: 20 C7 B5  JSR $B5C7     ; Search for Next String
B54B: F0 F7     BEQ $B544

Jump from $B546:

B54D: A9 07     LDA #$07
B54F: 85 53     STA $53       ; Length of String during Garbage collection
B551: A5 2D     LDA $2D       ; Pointer: Start of BASIC Variables
B553: A6 2E     LDX $2E       ; Pointer: Start of BASIC Variables
B555: 85 22     STA $22       ; Second Utility Pointer
B557: 86 23     STX $23       ; Second Utility Pointer

Jump from $B564:

B559: E4 30     CPX $30       ; Pointer: Start of BASIC Arrays
B55B: D0 04     BNE $B561
B55D: C5 2F     CMP $2F       ; Pointer: Start of BASIC Arrays
B55F: F0 05     BEQ $B566

Jump from $B55B:

B561: 20 BD B5  JSR $B5BD     ; Search for Next String
B564: F0 F3     BEQ $B559

Jump from $B55F:

B566: 85 58     STA $58       ; Temporary storage for FLPT value
B568: 86 59     STX $59       ; Temporary storage for FLPT value
B56A: A9 03     LDA #$03
B56C: 85 53     STA $53       ; Length of String during Garbage collection

Jump from $B599, $B59C:

B56E: A5 58     LDA $58       ; Temporary storage for FLPT value
B570: A6 59     LDX $59       ; Temporary storage for FLPT value

Jump from $B5B6:

B572: E4 32     CPX $32       ; Pointer: End of BASIC Arrays + 1
B574: D0 07     BNE $B57D
B576: C5 31     CMP $31       ; Pointer: End of BASIC Arrays + 1
B578: D0 03     BNE $B57D
B57A: 4C 06 B6  JMP $B606     ; Collect a String

Jump from $B574, $B578:

B57D: 85 22     STA $22       ; Second Utility Pointer
B57F: 86 23     STX $23       ; Second Utility Pointer
B581: A0 00     LDY #$00
B583: B1 22     LDA ($22),Y   ; Second Utility Pointer
B585: AA        TAX
B586: C8        INY
B587: B1 22     LDA ($22),Y   ; Second Utility Pointer
B589: 08        PHP
B58A: C8        INY
B58B: B1 22     LDA ($22),Y   ; Second Utility Pointer
B58D: 65 58     ADC $58       ; Temporary storage for FLPT value
B58F: 85 58     STA $58       ; Temporary storage for FLPT value
B591: C8        INY
B592: B1 22     LDA ($22),Y   ; Second Utility Pointer
B594: 65 59     ADC $59       ; Temporary storage for FLPT value
B596: 85 59     STA $59       ; Temporary storage for FLPT value
B598: 28        PLP
B599: 10 D3     BPL $B56E
B59B: 8A        TXA
B59C: 30 D0     BMI $B56E
B59E: C8        INY
B59F: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5A1: A0 00     LDY #$00
B5A3: 0A        ASL
B5A4: 69 05     ADC #$05
B5A6: 65 22     ADC $22       ; Second Utility Pointer
B5A8: 85 22     STA $22       ; Second Utility Pointer
B5AA: 90 02     BCC $B5AE
B5AC: E6 23     INC $23       ; Second Utility Pointer

Jump from $B5AA:

B5AE: A6 23     LDX $23       ; Second Utility Pointer

Jump from $B5BB:

B5B0: E4 59     CPX $59       ; Temporary storage for FLPT value
B5B2: D0 04     BNE $B5B8
B5B4: C5 58     CMP $58       ; Temporary storage for FLPT value
B5B6: F0 BA     BEQ $B572

Jump from $B5B2:

B5B8: 20 C7 B5  JSR $B5C7     ; Search for Next String
B5BB: F0 F3     BEQ $B5B0



 $B5BD/46525:   Search for Next String - c64ref 

Jump from $B561:

B5BD: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5BF: 30 35     BMI $B5F6
B5C1: C8        INY
B5C2: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5C4: 10 30     BPL $B5F6
B5C6: C8        INY

Jump from $B548, $B5B8:

B5C7: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5C9: F0 2B     BEQ $B5F6
B5CB: C8        INY
B5CC: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5CE: AA        TAX
B5CF: C8        INY
B5D0: B1 22     LDA ($22),Y   ; Second Utility Pointer
B5D2: C5 34     CMP $34       ; Pointer: Bottom of String space
B5D4: 90 06     BCC $B5DC
B5D6: D0 1E     BNE $B5F6
B5D8: E4 33     CPX $33       ; Pointer: Bottom of String space
B5DA: B0 1A     BCS $B5F6

Jump from $B5D4:

B5DC: C5 60     CMP $60       ; Temporary storage for FLPT value
B5DE: 90 16     BCC $B5F6
B5E0: D0 04     BNE $B5E6
B5E2: E4 5F     CPX $5F       ; Temporary storage for FLPT value
B5E4: 90 10     BCC $B5F6

Jump from $B5E0:

B5E6: 86 5F     STX $5F       ; Temporary storage for FLPT value
B5E8: 85 60     STA $60       ; Temporary storage for FLPT value
B5EA: A5 22     LDA $22       ; Second Utility Pointer
B5EC: A6 23     LDX $23       ; Second Utility Pointer
B5EE: 85 4E     STA $4E       ; Temporary storage for FLPT value
B5F0: 86 4F     STX $4F       ; Temporary storage for FLPT value
B5F2: A5 53     LDA $53       ; Length of String during Garbage collection
B5F4: 85 55     STA $55       ; Jump Vector used in Function Evaluation

Jump from $B5BF, $B5C4, $B5C9, $B5D6, $B5DA, $B5DE, $B5E4:

B5F6: A5 53     LDA $53       ; Length of String during Garbage collection
B5F8: 18        CLC
B5F9: 65 22     ADC $22       ; Second Utility Pointer
B5FB: 85 22     STA $22       ; Second Utility Pointer
B5FD: 90 02     BCC $B601
B5FF: E6 23     INC $23       ; Second Utility Pointer

Jump from $B5FD, $B60A:

B601: A6 23     LDX $23       ; Second Utility Pointer
B603: A0 00     LDY #$00
B605: 60        RTS



 $B606/46598:   Collect a String - c64ref 

Jump from $B57A:

B606: A5 4F     LDA $4F       ; Temporary storage for FLPT value
B608: 05 4E     ORA $4E       ; Temporary storage for FLPT value
B60A: F0 F5     BEQ $B601     ; Search for Next String
B60C: A5 55     LDA $55       ; Jump Vector used in Function Evaluation
B60E: 29 04     AND #$04
B610: 4A        LSR
B611: A8        TAY
B612: 85 55     STA $55       ; Jump Vector used in Function Evaluation
B614: B1 4E     LDA ($4E),Y   ; Temporary storage for FLPT value
B616: 65 5F     ADC $5F       ; Temporary storage for FLPT value
B618: 85 5A     STA $5A       ; Temporary storage for FLPT value
B61A: A5 60     LDA $60       ; Temporary storage for FLPT value
B61C: 69 00     ADC #$00
B61E: 85 5B     STA $5B       ; Temporary storage for FLPT value
B620: A5 33     LDA $33       ; Pointer: Bottom of String space
B622: A6 34     LDX $34       ; Pointer: Bottom of String space
B624: 85 58     STA $58       ; Temporary storage for FLPT value
B626: 86 59     STX $59       ; Temporary storage for FLPT value
B628: 20 BF A3  JSR $A3BF     ; Open Space in Memory
B62B: A4 55     LDY $55       ; Jump Vector used in Function Evaluation
B62D: C8        INY
B62E: A5 58     LDA $58       ; Temporary storage for FLPT value
B630: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B632: AA        TAX
B633: E6 59     INC $59       ; Temporary storage for FLPT value
B635: A5 59     LDA $59       ; Temporary storage for FLPT value
B637: C8        INY
B638: 91 4E     STA ($4E),Y   ; Temporary storage for FLPT value
B63A: 4C 2A B5  JMP $B52A     ; Garbage Collection



 $B63D/46653:   Concatenate Two Strings - c64ref 

Jump from $ADE5:

B63D: A5 65     LDA $65       ; FAC Mantissa
B63F: 48        PHA
B640: A5 64     LDA $64       ; FAC Mantissa
B642: 48        PHA
B643: 20 83 AE  JSR $AE83     ; Evaluate Single Term
B646: 20 8F AD  JSR $AD8F     ; Confirm Result
B649: 68        PLA
B64A: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
B64C: 68        PLA
B64D: 85 70     STA $70       ; FAC low-order rounding
B64F: A0 00     LDY #$00
B651: B1 6F     LDA ($6F),Y   ; Sign of result of Arithmetic Evaluation
B653: 18        CLC
B654: 71 64     ADC ($64),Y   ; FAC Mantissa
B656: 90 05     BCC $B65D
B658: A2 17     LDX #$17
B65A: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $B656:

B65D: 20 75 B4  JSR $B475     ; Evaluate <str$>
B660: 20 7A B6  JSR $B67A     ; Store String in High RAM
B663: A5 50     LDA $50       ; Temporary storage for FLPT value
B665: A4 51     LDY $51       ; Temporary storage for FLPT value
B667: 20 AA B6  JSR $B6AA     ; Perform String Housekeeping
B66A: 20 8C B6  JSR $B68C     ; Store String in High RAM
B66D: A5 6F     LDA $6F       ; Sign of result of Arithmetic Evaluation
B66F: A4 70     LDY $70       ; FAC low-order rounding
B671: 20 AA B6  JSR $B6AA     ; Perform String Housekeeping
B674: 20 CA B4  JSR $B4CA     ; Set Up String
B677: 4C B8 AD  JMP $ADB8     ; Evaluate Expression in Text



 $B67A/46714:   Store String in High RAM - c64ref 

Jump from $AA61, $B660:

B67A: A0 00     LDY #$00
B67C: B1 6F     LDA ($6F),Y   ; Sign of result of Arithmetic Evaluation
B67E: 48        PHA
B67F: C8        INY
B680: B1 6F     LDA ($6F),Y   ; Sign of result of Arithmetic Evaluation
B682: AA        TAX
B683: C8        INY
B684: B1 6F     LDA ($6F),Y   ; Sign of result of Arithmetic Evaluation
B686: A8        TAY
B687: 68        PLA

Jump from $B4C7:

B688: 86 22     STX $22       ; Second Utility Pointer
B68A: 84 23     STY $23       ; Second Utility Pointer

Jump from $B66A, $B726:

B68C: A8        TAY
B68D: F0 0A     BEQ $B699
B68F: 48        PHA

Jump from $B696:

B690: 88        DEY
B691: B1 22     LDA ($22),Y   ; Second Utility Pointer
B693: 91 35     STA ($35),Y   ; Utility String Pointer
B695: 98        TYA
B696: D0 F8     BNE $B690
B698: 68        PLA

Jump from $B68D:

B699: 18        CLC
B69A: 65 35     ADC $35       ; Utility String Pointer
B69C: 85 35     STA $35       ; Utility String Pointer
B69E: 90 02     BCC $B6A2
B6A0: E6 36     INC $36       ; Utility String Pointer

Jump from $B69E:

B6A2: 60        RTS



 $B6A3/46755:   Perform String Housekeeping - c64ref 

Jump from $B782, $E25A:

B6A3: 20 8F AD  JSR $AD8F     ; Confirm Result

Jump from $A9E0, $AB21, $B034, $B381:

B6A6: A5 64     LDA $64       ; FAC Mantissa
B6A8: A4 65     LDY $65       ; FAC Mantissa

Jump from $B041, $B667, $B671, $B716:

B6AA: 85 22     STA $22       ; Second Utility Pointer
B6AC: 84 23     STY $23       ; Second Utility Pointer
B6AE: 20 DB B6  JSR $B6DB     ; Clean Descriptor Stack
B6B1: 08        PHP
B6B2: A0 00     LDY #$00
B6B4: B1 22     LDA ($22),Y   ; Second Utility Pointer
B6B6: 48        PHA
B6B7: C8        INY
B6B8: B1 22     LDA ($22),Y   ; Second Utility Pointer
B6BA: AA        TAX
B6BB: C8        INY
B6BC: B1 22     LDA ($22),Y   ; Second Utility Pointer
B6BE: A8        TAY
B6BF: 68        PLA
B6C0: 28        PLP
B6C1: D0 13     BNE $B6D6
B6C3: C4 34     CPY $34       ; Pointer: Bottom of String space
B6C5: D0 0F     BNE $B6D6
B6C7: E4 33     CPX $33       ; Pointer: Bottom of String space
B6C9: D0 0B     BNE $B6D6
B6CB: 48        PHA
B6CC: 18        CLC
B6CD: 65 33     ADC $33       ; Pointer: Bottom of String space
B6CF: 85 33     STA $33       ; Pointer: Bottom of String space
B6D1: 90 02     BCC $B6D5
B6D3: E6 34     INC $34       ; Pointer: Bottom of String space

Jump from $B6D1:

B6D5: 68        PLA

Jump from $B6C1, $B6C5, $B6C9:

B6D6: 86 22     STX $22       ; Second Utility Pointer
B6D8: 84 23     STY $23       ; Second Utility Pointer
B6DA: 60        RTS



 $B6DB/46811:   Clean Descriptor Stack - c64ref 

Jump from $AA6C, $B6AE:

B6DB: C4 18     CPY $18       ; Last temporary String Address
B6DD: D0 0C     BNE $B6EB
B6DF: C5 17     CMP $17       ; Last temporary String Address
B6E1: D0 08     BNE $B6EB
B6E3: 85 16     STA $16       ; Pointer: Temporary String Stack
B6E5: E9 03     SBC #$03
B6E7: 85 17     STA $17       ; Last temporary String Address
B6E9: A0 00     LDY #$00

Jump from $B6DD, $B6E1:

B6EB: 60        RTS



 $B6EC/46828:   Evaluate <chr$> - c64ref 

B6EC: 20 A1 B7  JSR $B7A1     ; Evaluate Text to 1 Byte in XR
B6EF: 8A        TXA
B6F0: 48        PHA
B6F1: A9 01     LDA #$01
B6F3: 20 7D B4  JSR $B47D     ; Evaluate <str$>
B6F6: 68        PLA
B6F7: A0 00     LDY #$00
B6F9: 91 62     STA ($62),Y   ; FAC Mantissa
B6FB: 68        PLA
B6FC: 68        PLA
B6FD: 4C CA B4  JMP $B4CA     ; Set Up String



 $B700/46848:   Evaluate <left$> - c64ref 

B700: 20 61 B7  JSR $B761     ; Pull String Parameters
B703: D1 50     CMP ($50),Y   ; Temporary storage for FLPT value
B705: 98        TYA

Jump from $B734:

B706: 90 04     BCC $B70C
B708: B1 50     LDA ($50),Y   ; Temporary storage for FLPT value
B70A: AA        TAX
B70B: 98        TYA

Jump from $B706:

B70C: 48        PHA

Jump from $B755:

B70D: 8A        TXA

Jump from $B75B, $B75F:

B70E: 48        PHA
B70F: 20 7D B4  JSR $B47D     ; Evaluate <str$>
B712: A5 50     LDA $50       ; Temporary storage for FLPT value
B714: A4 51     LDY $51       ; Temporary storage for FLPT value
B716: 20 AA B6  JSR $B6AA     ; Perform String Housekeeping
B719: 68        PLA
B71A: A8        TAY
B71B: 68        PLA
B71C: 18        CLC
B71D: 65 22     ADC $22       ; Second Utility Pointer
B71F: 85 22     STA $22       ; Second Utility Pointer
B721: 90 02     BCC $B725
B723: E6 23     INC $23       ; Second Utility Pointer

Jump from $B721:

B725: 98        TYA
B726: 20 8C B6  JSR $B68C     ; Store String in High RAM
B729: 4C CA B4  JMP $B4CA     ; Set Up String



 $B72C/46892:   Evaluate <right$> - c64ref 

B72C: 20 61 B7  JSR $B761     ; Pull String Parameters
B72F: 18        CLC
B730: F1 50     SBC ($50),Y   ; Temporary storage for FLPT value
B732: 49 FF     EOR #$FF
B734: 4C 06 B7  JMP $B706     ; Evaluate <left$>



 $B737/46903:   Evaluate <mid$> - c64ref 

B737: A9 FF     LDA #$FF
B739: 85 65     STA $65       ; FAC Mantissa
B73B: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B73E: C9 29     CMP #$29
B740: F0 06     BEQ $B748
B742: 20 FD AE  JSR $AEFD     ; Test ','
B745: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR

Jump from $B740:

B748: 20 61 B7  JSR $B761     ; Pull String Parameters
B74B: F0 4B     BEQ $B798     ; Evaluate <asc>
B74D: CA        DEX
B74E: 8A        TXA
B74F: 48        PHA
B750: 18        CLC
B751: A2 00     LDX #$00
B753: F1 50     SBC ($50),Y   ; Temporary storage for FLPT value
B755: B0 B6     BCS $B70D     ; Evaluate <left$>
B757: 49 FF     EOR #$FF
B759: C5 65     CMP $65       ; FAC Mantissa
B75B: 90 B1     BCC $B70E     ; Evaluate <left$>
B75D: A5 65     LDA $65       ; FAC Mantissa
B75F: B0 AD     BCS $B70E     ; Evaluate <left$>



 $B761/46945:   Pull String Parameters - c64ref 

Jump from $B700, $B72C, $B748:

B761: 20 F7 AE  JSR $AEF7     ; Test ')'
B764: 68        PLA
B765: A8        TAY
B766: 68        PLA
B767: 85 55     STA $55       ; Jump Vector used in Function Evaluation
B769: 68        PLA
B76A: 68        PLA
B76B: 68        PLA
B76C: AA        TAX
B76D: 68        PLA
B76E: 85 50     STA $50       ; Temporary storage for FLPT value
B770: 68        PLA
B771: 85 51     STA $51       ; Temporary storage for FLPT value
B773: A5 55     LDA $55       ; Jump Vector used in Function Evaluation
B775: 48        PHA
B776: 98        TYA
B777: 48        PHA
B778: A0 00     LDY #$00
B77A: 8A        TXA
B77B: 60        RTS



 $B77C/46972:   Evaluate <len> - c64ref 

B77C: 20 82 B7  JSR $B782     ; Exit String Mode
B77F: 4C A2 B3  JMP $B3A2     ; Evaluate <pos>



 $B782/46978:   Exit String Mode - c64ref 

Jump from $B77C, $B78B, $B7AD:

B782: 20 A3 B6  JSR $B6A3     ; Perform String Housekeeping
B785: A2 00     LDX #$00
B787: 86 0D     STX $0D       ; Data type Flag
B789: A8        TAY
B78A: 60        RTS



 $B78B/46987:   Evaluate <asc> - c64ref 

B78B: 20 82 B7  JSR $B782     ; Exit String Mode
B78E: F0 08     BEQ $B798
B790: A0 00     LDY #$00
B792: B1 22     LDA ($22),Y   ; Second Utility Pointer
B794: A8        TAY
B795: 4C A2 B3  JMP $B3A2     ; Evaluate <pos>

Jump from $B78E, $B74B, $B7A6, $B7F9, $B7FF:

B798: 4C 48 B2  JMP $B248     ; ?ILLEGAL QUANTITY



 $B79B/47003:   Evaluate Text to 1 Byte in XR - c64ref 

Jump from $AAFF:

B79B: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text

Jump from $A94B, $AA86, $AB85, $ABA5, $AFC7, $B745, $B7F4, $E203, $E221:

B79E: 20 8A AD  JSR $AD8A     ; Confirm Result

Jump from $B6EC:

B7A1: 20 B8 B1  JSR $B1B8     ; Evaluate Text for Integer
B7A4: A6 64     LDX $64       ; FAC Mantissa
B7A6: D0 F0     BNE $B798     ; Evaluate <asc>
B7A8: A6 65     LDX $65       ; FAC Mantissa
B7AA: 4C 79 00  JMP $0079     ; CHRGET: Get next Byte of BASIC Text



 $B7AD/47021:   Evaluate <val> - c64ref 

B7AD: 20 82 B7  JSR $B782     ; Exit String Mode
B7B0: D0 03     BNE $B7B5     ; Convert ASCII String to Flpt
B7B2: 4C F7 B8  JMP $B8F7     ; Perform Addition



 $B7B5/47029:   Convert ASCII String to Flpt - c64ref 

Jump from $B7B0:

B7B5: A6 7A     LDX $7A       ; Pointer: Current Byte of BASIC Text
B7B7: A4 7B     LDY $7B       ; Pointer: Current Byte of BASIC Text
B7B9: 86 71     STX $71       ; Pointer: Used during CRUNCH/ASCII conversion
B7BB: 84 72     STY $72       ; Pointer: Used during CRUNCH/ASCII conversion
B7BD: A6 22     LDX $22       ; Second Utility Pointer
B7BF: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
B7C1: 18        CLC
B7C2: 65 22     ADC $22       ; Second Utility Pointer
B7C4: 85 24     STA $24       ; Second Utility Pointer
B7C6: A6 23     LDX $23       ; Second Utility Pointer
B7C8: 86 7B     STX $7B       ; Pointer: Current Byte of BASIC Text
B7CA: 90 01     BCC $B7CD
B7CC: E8        INX

Jump from $B7CA:

B7CD: 86 25     STX $25       ; Second Utility Pointer
B7CF: A0 00     LDY #$00
B7D1: B1 24     LDA ($24),Y   ; Second Utility Pointer
B7D3: 48        PHA
B7D4: 98        TYA
B7D5: 91 24     STA ($24),Y   ; Second Utility Pointer
B7D7: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B7DA: 20 F3 BC  JSR $BCF3     ; Convert ASCII String to a Number in FAC
B7DD: 68        PLA
B7DE: A0 00     LDY #$00
B7E0: 91 24     STA ($24),Y   ; Second Utility Pointer

Jump from $AC80, $AEC9:

B7E2: A6 71     LDX $71       ; Pointer: Used during CRUNCH/ASCII conversion
B7E4: A4 72     LDY $72       ; Pointer: Used during CRUNCH/ASCII conversion
B7E6: 86 7A     STX $7A       ; Pointer: Current Byte of BASIC Text
B7E8: 84 7B     STY $7B       ; Pointer: Current Byte of BASIC Text
B7EA: 60        RTS



 $B7EB/47083:   Get parameters for POKE/WAIT - c64ref 

Jump from $B824, $B82D:

B7EB: 20 8A AD  JSR $AD8A     ; Confirm Result
B7EE: 20 F7 B7  JSR $B7F7     ; Convert FAC#1 to Integer in LINNUM

Jump from $B839:

B7F1: 20 FD AE  JSR $AEFD     ; Test ','
B7F4: 4C 9E B7  JMP $B79E     ; Evaluate Text to 1 Byte in XR



 $B7F7/47095:   Convert FAC#1 to Integer in LINNUM - c64ref 

Jump from $B7EE, $B813, $E12D:

B7F7: A5 66     LDA $66       ; FAC Sign
B7F9: 30 9D     BMI $B798     ; Evaluate <asc>
B7FB: A5 61     LDA $61       ; FAC Exponent
B7FD: C9 91     CMP #$91
B7FF: B0 97     BCS $B798     ; Evaluate <asc>
B801: 20 9B BC  JSR $BC9B     ; Convert FAC#1 to Integer
B804: A5 64     LDA $64       ; FAC Mantissa
B806: A4 65     LDY $65       ; FAC Mantissa
B808: 84 14     STY $14       ; Temporary: Integer value
B80A: 85 15     STA $15       ; Temporary: Integer value
B80C: 60        RTS



 $B80D/47117:   Evaluate <peek> - c64ref 

B80D: A5 15     LDA $15       ; Temporary: Integer value
B80F: 48        PHA
B810: A5 14     LDA $14       ; Temporary: Integer value
B812: 48        PHA
B813: 20 F7 B7  JSR $B7F7     ; Convert FAC#1 to Integer in LINNUM
B816: A0 00     LDY #$00
B818: B1 14     LDA ($14),Y   ; Temporary: Integer value
B81A: A8        TAY
B81B: 68        PLA
B81C: 85 14     STA $14       ; Temporary: Integer value
B81E: 68        PLA
B81F: 85 15     STA $15       ; Temporary: Integer value
B821: 4C A2 B3  JMP $B3A2     ; Evaluate <pos>



 $B824/47140:   Perform [poke] - c64ref 

B824: 20 EB B7  JSR $B7EB     ; Get parameters for POKE/WAIT
B827: 8A        TXA
B828: A0 00     LDY #$00
B82A: 91 14     STA ($14),Y   ; Temporary: Integer value
B82C: 60        RTS



 $B82D/47149:   Perform [wait] - c64ref 

B82D: 20 EB B7  JSR $B7EB     ; Get parameters for POKE/WAIT
B830: 86 49     STX $49       ; Pointer: Index Variable for FOR/NEXT loop
B832: A2 00     LDX #$00
B834: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
B837: F0 03     BEQ $B83C
B839: 20 F1 B7  JSR $B7F1     ; Get parameters for POKE/WAIT

Jump from $B837:

B83C: 86 4A     STX $4A       ; Pointer: Index Variable for FOR/NEXT loop
B83E: A0 00     LDY #$00

Jump from $B846:

B840: B1 14     LDA ($14),Y   ; Temporary: Integer value
B842: 45 4A     EOR $4A       ; Pointer: Index Variable for FOR/NEXT loop
B844: 25 49     AND $49       ; Pointer: Index Variable for FOR/NEXT loop
B846: F0 F8     BEQ $B840

Jump from $B878:

B848: 60        RTS



 $B849/47177:   Add 0.5 to FAC#1 - c64ref 

Jump from $BE2F, $E290:

B849: A9 11     LDA #$11
B84B: A0 BF     LDY #$BF
B84D: 4C 67 B8  JMP $B867     ; Perform Addition



 $B850/47184:   Perform Subtraction - c64ref 

Jump from $BA0F, $E288, $E334:

B850: 20 8C BA  JSR $BA8C     ; Load FAC#2 From Memory

Jump from $E02D, $E281:

B853: A5 66     LDA $66       ; FAC Sign
B855: 49 FF     EOR #$FF
B857: 85 66     STA $66       ; FAC Sign
B859: 45 6E     EOR $6E       ; AFAC Sign
B85B: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
B85D: A5 61     LDA $61       ; FAC Exponent
B85F: 4C 6A B8  JMP $B86A     ; Perform Addition



 $B862/47202:   Normalise Addition - c64ref 

Jump from $B899:

B862: 20 99 B9  JSR $B999     ; Multiply by Zero Byte
B865: 90 3C     BCC $B8A3     ; Perform Addition



 $B867/47207:   Perform Addition - c64ref 

Jump from $AD4F, $B84D, $BA01, $BA1D, $E081, $E0D0, $E268, $E2A4:

B867: 20 8C BA  JSR $BA8C     ; Load FAC#2 From Memory

Jump from $B85F, $BD8E:

B86A: D0 03     BNE $B86F
B86C: 4C FC BB  JMP $BBFC     ; Copy FAC#2 into FAC#1

Jump from $B86A:

B86F: A6 70     LDX $70       ; FAC low-order rounding
B871: 86 56     STX $56       ; Jump Vector used in Function Evaluation
B873: A2 69     LDX #$69
B875: A5 69     LDA $69       ; AFAC Exponent

Jump from $BAF1:

B877: A8        TAY
B878: F0 CE     BEQ $B848     ; Perform [wait]
B87A: 38        SEC
B87B: E5 61     SBC $61       ; FAC Exponent
B87D: F0 24     BEQ $B8A3
B87F: 90 12     BCC $B893
B881: 84 61     STY $61       ; FAC Exponent
B883: A4 6E     LDY $6E       ; AFAC Sign
B885: 84 66     STY $66       ; FAC Sign
B887: 49 FF     EOR #$FF
B889: 69 00     ADC #$00
B88B: A0 00     LDY #$00
B88D: 84 56     STY $56       ; Jump Vector used in Function Evaluation
B88F: A2 61     LDX #$61
B891: D0 04     BNE $B897

Jump from $B87F:

B893: A0 00     LDY #$00
B895: 84 70     STY $70       ; FAC low-order rounding

Jump from $B891:

B897: C9 F9     CMP #$F9
B899: 30 C7     BMI $B862     ; Normalise Addition
B89B: A8        TAY
B89C: A5 70     LDA $70       ; FAC low-order rounding
B89E: 56 01     LSR $01,X     ; 6510 On-chip 8-bit Input/Output Register
B8A0: 20 B0 B9  JSR $B9B0     ; Multiply by Zero Byte

Jump from $B87D, $B865:

B8A3: 24 6F     BIT $6F       ; Sign of result of Arithmetic Evaluation
B8A5: 10 57     BPL $B8FE
B8A7: A0 61     LDY #$61
B8A9: E0 69     CPX #$69
B8AB: F0 02     BEQ $B8AF
B8AD: A0 69     LDY #$69

Jump from $B8AB:

B8AF: 38        SEC
B8B0: 49 FF     EOR #$FF
B8B2: 65 56     ADC $56       ; Jump Vector used in Function Evaluation
B8B4: 85 70     STA $70       ; FAC low-order rounding
B8B6: B9 04 00  LDA $0004,Y   ; Jump Vector: Convert FAC to Integer
B8B9: F5 04     SBC $04,X     ; Jump Vector: Convert FAC to Integer
B8BB: 85 65     STA $65       ; FAC Mantissa
B8BD: B9 03 00  LDA $0003,Y   ; Jump Vector: Convert FAC to Integer
B8C0: F5 03     SBC $03,X     ; Jump Vector: Convert FAC to Integer
B8C2: 85 64     STA $64       ; FAC Mantissa
B8C4: B9 02 00  LDA $0002,Y   ; Unused
B8C7: F5 02     SBC $02,X     ; Unused
B8C9: 85 63     STA $63       ; FAC Mantissa
B8CB: B9 01 00  LDA $0001,Y   ; 6510 On-chip 8-bit Input/Output Register
B8CE: F5 01     SBC $01,X     ; 6510 On-chip 8-bit Input/Output Register
B8D0: 85 62     STA $62       ; FAC Mantissa

Jump from $BC55, $BCE6:

B8D2: B0 03     BCS $B8D7
B8D4: 20 47 B9  JSR $B947     ; 2's Complement FAC#1

Jump from $B8D2, $BB9F, $E0EF:

B8D7: A0 00     LDY #$00
B8D9: 98        TYA
B8DA: 18        CLC

Jump from $B8F5:

B8DB: A6 62     LDX $62       ; FAC Mantissa
B8DD: D0 4A     BNE $B929
B8DF: A6 63     LDX $63       ; FAC Mantissa
B8E1: 86 62     STX $62       ; FAC Mantissa
B8E3: A6 64     LDX $64       ; FAC Mantissa
B8E5: 86 63     STX $63       ; FAC Mantissa
B8E7: A6 65     LDX $65       ; FAC Mantissa
B8E9: 86 64     STX $64       ; FAC Mantissa
B8EB: A6 70     LDX $70       ; FAC low-order rounding
B8ED: 86 65     STX $65       ; FAC Mantissa
B8EF: 84 70     STY $70       ; FAC low-order rounding
B8F1: 69 08     ADC #$08
B8F3: C9 20     CMP #$20
B8F5: D0 E4     BNE $B8DB

Jump from $B92E, $B7B2, $BADC:

B8F7: A9 00     LDA #$00

Jump from $BF81:

B8F9: 85 61     STA $61       ; FAC Exponent

Jump from $BACC:

B8FB: 85 66     STA $66       ; FAC Sign
B8FD: 60        RTS

Jump from $B8A5:

B8FE: 65 56     ADC $56       ; Jump Vector used in Function Evaluation
B900: 85 70     STA $70       ; FAC low-order rounding
B902: A5 65     LDA $65       ; FAC Mantissa
B904: 65 6D     ADC $6D       ; AFAC Mantissa
B906: 85 65     STA $65       ; FAC Mantissa
B908: A5 64     LDA $64       ; FAC Mantissa
B90A: 65 6C     ADC $6C       ; AFAC Mantissa
B90C: 85 64     STA $64       ; FAC Mantissa
B90E: A5 63     LDA $63       ; FAC Mantissa
B910: 65 6B     ADC $6B       ; AFAC Mantissa
B912: 85 63     STA $63       ; FAC Mantissa
B914: A5 62     LDA $62       ; FAC Mantissa
B916: 65 6A     ADC $6A       ; AFAC Mantissa
B918: 85 62     STA $62       ; FAC Mantissa
B91A: 4C 36 B9  JMP $B936

Jump from $B929:

B91D: 69 01     ADC #$01
B91F: 06 70     ASL $70       ; FAC low-order rounding
B921: 26 65     ROL $65       ; FAC Mantissa
B923: 26 64     ROL $64       ; FAC Mantissa
B925: 26 63     ROL $63       ; FAC Mantissa
B927: 26 62     ROL $62       ; FAC Mantissa

Jump from $B8DD:

B929: 10 F2     BPL $B91D
B92B: 38        SEC
B92C: E5 61     SBC $61       ; FAC Exponent
B92E: B0 C7     BCS $B8F7
B930: 49 FF     EOR #$FF
B932: 69 01     ADC #$01
B934: 85 61     STA $61       ; FAC Exponent

Jump from $B91A:

B936: 90 0E     BCC $B946

Jump from $BC28:

B938: E6 61     INC $61       ; FAC Exponent
B93A: F0 42     BEQ $B97E     ; Output ?OVERFLOW Error
B93C: 66 62     ROR $62       ; FAC Mantissa
B93E: 66 63     ROR $63       ; FAC Mantissa
B940: 66 64     ROR $64       ; FAC Mantissa
B942: 66 65     ROR $65       ; FAC Mantissa
B944: 66 70     ROR $70       ; FAC low-order rounding

Jump from $B936:

B946: 60        RTS



 $B947/47431:   2's Complement FAC#1 - c64ref 

Jump from $B8D4:

B947: A5 66     LDA $66       ; FAC Sign
B949: 49 FF     EOR #$FF
B94B: 85 66     STA $66       ; FAC Sign

Jump from $BCAB:

B94D: A5 62     LDA $62       ; FAC Mantissa
B94F: 49 FF     EOR #$FF
B951: 85 62     STA $62       ; FAC Mantissa
B953: A5 63     LDA $63       ; FAC Mantissa
B955: 49 FF     EOR #$FF
B957: 85 63     STA $63       ; FAC Mantissa
B959: A5 64     LDA $64       ; FAC Mantissa
B95B: 49 FF     EOR #$FF
B95D: 85 64     STA $64       ; FAC Mantissa
B95F: A5 65     LDA $65       ; FAC Mantissa
B961: 49 FF     EOR #$FF
B963: 85 65     STA $65       ; FAC Mantissa
B965: A5 70     LDA $70       ; FAC low-order rounding
B967: 49 FF     EOR #$FF
B969: 85 70     STA $70       ; FAC low-order rounding
B96B: E6 70     INC $70       ; FAC low-order rounding
B96D: D0 0E     BNE $B97D

Jump from $BC23:

B96F: E6 65     INC $65       ; FAC Mantissa
B971: D0 0A     BNE $B97D
B973: E6 64     INC $64       ; FAC Mantissa
B975: D0 06     BNE $B97D
B977: E6 63     INC $63       ; FAC Mantissa
B979: D0 02     BNE $B97D
B97B: E6 62     INC $62       ; FAC Mantissa

Jump from $B96D, $B971, $B975, $B979:

B97D: 60        RTS



 $B97E/47486:   Output ?OVERFLOW Error - c64ref 

Jump from $B93A, $BADF, $BD9D:

B97E: A2 0F     LDX #$0F
B980: 4C 37 A4  JMP $A437     ; Error Routine



 $B983/47491:   Multiply by Zero Byte - c64ref 

Jump from $BA5B:

B983: A2 25     LDX #$25

Jump from $B99B, $B99D:

B985: B4 04     LDY $04,X     ; Jump Vector: Convert FAC to Integer
B987: 84 70     STY $70       ; FAC low-order rounding
B989: B4 03     LDY $03,X     ; Jump Vector: Convert FAC to Integer
B98B: 94 04     STY $04,X     ; Jump Vector: Convert FAC to Integer
B98D: B4 02     LDY $02,X     ; Unused
B98F: 94 03     STY $03,X     ; Jump Vector: Convert FAC to Integer
B991: B4 01     LDY $01,X     ; 6510 On-chip 8-bit Input/Output Register
B993: 94 02     STY $02,X     ; Unused
B995: A4 68     LDY $68       ; Bit Overflow Area during normalisation Routine
B997: 94 01     STY $01,X     ; 6510 On-chip 8-bit Input/Output Register

Jump from $B862, $BCB5:

B999: 69 08     ADC #$08
B99B: 30 E8     BMI $B985
B99D: F0 E6     BEQ $B985
B99F: E9 08     SBC #$08
B9A1: A8        TAY
B9A2: A5 70     LDA $70       ; FAC low-order rounding
B9A4: B0 14     BCS $B9BA

Jump from $B9B8:

B9A6: 16 01     ASL $01,X     ; 6510 On-chip 8-bit Input/Output Register
B9A8: 90 02     BCC $B9AC
B9AA: F6 01     INC $01,X     ; 6510 On-chip 8-bit Input/Output Register

Jump from $B9A8:

B9AC: 76 01     ROR $01,X     ; 6510 On-chip 8-bit Input/Output Register
B9AE: 76 01     ROR $01,X     ; 6510 On-chip 8-bit Input/Output Register

Jump from $B8A0, $BCC6:

B9B0: 76 02     ROR $02,X     ; Unused
B9B2: 76 03     ROR $03,X     ; Jump Vector: Convert FAC to Integer
B9B4: 76 04     ROR $04,X     ; Jump Vector: Convert FAC to Integer
B9B6: 6A        ROR
B9B7: C8        INY
B9B8: D0 EC     BNE $B9A6

Jump from $B9A4:

B9BA: 18        CLC
B9BB: 60        RTS



 $B9BC/47548:   Table of Flpt Constants  1.00 - c64ref 

B9BC: 81 00 00 00 00



 $B9C1/47553:   Table of Flpt Constants  #03 - c64ref 

B9C1: 03



 $B9C2/47554:   Table of Flpt Constants  0.434255942 - c64ref 

B9C2: 7F 5E 56 CB 79



 $B9C7/47559:   Table of Flpt Constants  0.57658454 - c64ref 

B9C7: 80 13 9B 0B 64



 $B9CC/47564:   Table of Flpt Constants  0.961800759 - c64ref 

B9CC: 80 76 38 93 16



 $B9D1/47569:   Table of Flpt Constants  2.885390073 - c64ref 

B9D1: 82 38 AA 3B 20



 $B9D6/47574:   Table of Flpt Constants  0.707106781 - c64ref 

B9D6: 80 35 04 F3 34



 $B9DB/47579:   Table of Flpt Constants  1.41421356 - c64ref 

B9DB: 81 35 04 F3 34



 $B9E0/47584:   Table of Flpt Constants  -0.5 - c64ref 

B9E0: 80 80 00 00 00



 $B9E5/47589:   Table of Flpt Constants  0.693147181 - c64ref 

B9E5: 80 31 72 17 F8



 $B9EA/47594:   Evaluate <log> - c64ref 

Jump from $BFA3:

B9EA: 20 2B BC  JSR $BC2B     ; Check Sign of FAC#1
B9ED: F0 02     BEQ $B9F1
B9EF: 10 03     BPL $B9F4

Jump from $B9ED:

B9F1: 4C 48 B2  JMP $B248     ; ?ILLEGAL QUANTITY

Jump from $B9EF:

B9F4: A5 61     LDA $61       ; FAC Exponent
B9F6: E9 7F     SBC #$7F
B9F8: 48        PHA
B9F9: A9 80     LDA #$80
B9FB: 85 61     STA $61       ; FAC Exponent
B9FD: A9 D6     LDA #$D6
B9FF: A0 B9     LDY #$B9
BA01: 20 67 B8  JSR $B867     ; Perform Addition
BA04: A9 DB     LDA #$DB
BA06: A0 B9     LDY #$B9
BA08: 20 0F BB  JSR $BB0F     ; Divide FAC#2 by FAC#1
BA0B: A9 BC     LDA #$BC
BA0D: A0 B9     LDY #$B9
BA0F: 20 50 B8  JSR $B850     ; Perform Subtraction
BA12: A9 C1     LDA #$C1
BA14: A0 B9     LDY #$B9
BA16: 20 43 E0  JSR $E043     ; Series Evaluation
BA19: A9 E0     LDA #$E0
BA1B: A0 B9     LDY #$B9
BA1D: 20 67 B8  JSR $B867     ; Perform Addition
BA20: 68        PLA
BA21: 20 7E BD  JSR $BD7E     ; Convert ASCII String to a Number in FAC
BA24: A9 E5     LDA #$E5
BA26: A0 B9     LDY #$B9



 $BA28/47656:   Perform Multiply - c64ref 

Jump from $BE04, $BFAA, $BFF1, $E04C, $E056, $E070, $E0C9:

BA28: 20 8C BA  JSR $BA8C     ; Load FAC#2 From Memory
BA2B: D0 03     BNE $BA30
BA2D: 4C 8B BA  JMP $BA8B     ; Multiply by a Byte

Jump from $BA2B:

BA30: 20 B7 BA  JSR $BAB7     ; Test Both Accumulators
BA33: A9 00     LDA #$00
BA35: 85 26     STA $26       ; Floating point product of Multiply and Divide
BA37: 85 27     STA $27       ; Floating point product of Multiply and Divide
BA39: 85 28     STA $28       ; Floating point product of Multiply and Divide
BA3B: 85 29     STA $29       ; Floating point product of Multiply and Divide
BA3D: A5 70     LDA $70       ; FAC low-order rounding
BA3F: 20 59 BA  JSR $BA59     ; Multiply by a Byte
BA42: A5 65     LDA $65       ; FAC Mantissa
BA44: 20 59 BA  JSR $BA59     ; Multiply by a Byte
BA47: A5 64     LDA $64       ; FAC Mantissa
BA49: 20 59 BA  JSR $BA59     ; Multiply by a Byte
BA4C: A5 63     LDA $63       ; FAC Mantissa
BA4E: 20 59 BA  JSR $BA59     ; Multiply by a Byte
BA51: A5 62     LDA $62       ; FAC Mantissa
BA53: 20 5E BA  JSR $BA5E     ; Multiply by a Byte
BA56: 4C 8F BB  JMP $BB8F     ; Divide FAC#2 by FAC#1



 $BA59/47705:   Multiply by a Byte - c64ref 

Jump from $BA3F, $BA44, $BA49, $BA4E:

BA59: D0 03     BNE $BA5E
BA5B: 4C 83 B9  JMP $B983     ; Multiply by Zero Byte

Jump from $BA59, $BA53:

BA5E: 4A        LSR
BA5F: 09 80     ORA #$80

Jump from $BA89:

BA61: A8        TAY
BA62: 90 19     BCC $BA7D
BA64: 18        CLC
BA65: A5 29     LDA $29       ; Floating point product of Multiply and Divide
BA67: 65 6D     ADC $6D       ; AFAC Mantissa
BA69: 85 29     STA $29       ; Floating point product of Multiply and Divide
BA6B: A5 28     LDA $28       ; Floating point product of Multiply and Divide
BA6D: 65 6C     ADC $6C       ; AFAC Mantissa
BA6F: 85 28     STA $28       ; Floating point product of Multiply and Divide
BA71: A5 27     LDA $27       ; Floating point product of Multiply and Divide
BA73: 65 6B     ADC $6B       ; AFAC Mantissa
BA75: 85 27     STA $27       ; Floating point product of Multiply and Divide
BA77: A5 26     LDA $26       ; Floating point product of Multiply and Divide
BA79: 65 6A     ADC $6A       ; AFAC Mantissa
BA7B: 85 26     STA $26       ; Floating point product of Multiply and Divide

Jump from $BA62:

BA7D: 66 26     ROR $26       ; Floating point product of Multiply and Divide
BA7F: 66 27     ROR $27       ; Floating point product of Multiply and Divide
BA81: 66 28     ROR $28       ; Floating point product of Multiply and Divide
BA83: 66 29     ROR $29       ; Floating point product of Multiply and Divide
BA85: 66 70     ROR $70       ; FAC low-order rounding
BA87: 98        TYA
BA88: 4A        LSR
BA89: D0 D6     BNE $BA61

Jump from $BA2D:

BA8B: 60        RTS



 $BA8C/47756:   Load FAC#2 From Memory - c64ref 

Jump from $B850, $B867, $BA28, $BB0F:

BA8C: 85 22     STA $22       ; Second Utility Pointer
BA8E: 84 23     STY $23       ; Second Utility Pointer
BA90: A0 04     LDY #$04
BA92: B1 22     LDA ($22),Y   ; Second Utility Pointer
BA94: 85 6D     STA $6D       ; AFAC Mantissa
BA96: 88        DEY
BA97: B1 22     LDA ($22),Y   ; Second Utility Pointer
BA99: 85 6C     STA $6C       ; AFAC Mantissa
BA9B: 88        DEY
BA9C: B1 22     LDA ($22),Y   ; Second Utility Pointer
BA9E: 85 6B     STA $6B       ; AFAC Mantissa
BAA0: 88        DEY
BAA1: B1 22     LDA ($22),Y   ; Second Utility Pointer
BAA3: 85 6E     STA $6E       ; AFAC Sign
BAA5: 45 66     EOR $66       ; FAC Sign
BAA7: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
BAA9: A5 6E     LDA $6E       ; AFAC Sign
BAAB: 09 80     ORA #$80
BAAD: 85 6A     STA $6A       ; AFAC Mantissa
BAAF: 88        DEY
BAB0: B1 22     LDA ($22),Y   ; Second Utility Pointer
BAB2: 85 69     STA $69       ; AFAC Exponent
BAB4: A5 61     LDA $61       ; FAC Exponent
BAB6: 60        RTS



 $BAB7/47799:   Test Both Accumulators - c64ref 

Jump from $BA30, $BB1E:

BAB7: A5 69     LDA $69       ; AFAC Exponent

Jump from $E03F:

BAB9: F0 1F     BEQ $BADA     ; Overflow / Underflow
BABB: 18        CLC
BABC: 65 61     ADC $61       ; FAC Exponent
BABE: 90 04     BCC $BAC4
BAC0: 30 1D     BMI $BADF     ; Overflow / Underflow
BAC2: 18        CLC
BAC3: 2C        .BYTE $2C

Jump from $BABE:

BAC4: 10 14     BPL $BADA     ; Overflow / Underflow
BAC6: 69 80     ADC #$80
BAC8: 85 61     STA $61       ; FAC Exponent
BACA: D0 03     BNE $BACF
BACC: 4C FB B8  JMP $B8FB     ; Perform Addition

Jump from $BACA:

BACF: A5 6F     LDA $6F       ; Sign of result of Arithmetic Evaluation
BAD1: 85 66     STA $66       ; FAC Sign
BAD3: 60        RTS



 $BAD4/47828:   Overflow / Underflow - c64ref 

Jump from $E00B:

BAD4: A5 66     LDA $66       ; FAC Sign
BAD6: 49 FF     EOR #$FF
BAD8: 30 05     BMI $BADF

Jump from $BAB9, $BAC4:

BADA: 68        PLA
BADB: 68        PLA
BADC: 4C F7 B8  JMP $B8F7     ; Perform Addition

Jump from $BAD8, $BAC0, $BAEB, $BAF6, $BB23:

BADF: 4C 7E B9  JMP $B97E     ; Output ?OVERFLOW Error



 $BAE2/47842:   Multiply FAC#1 by 10 - c64ref 

Jump from $A9F2, $AA0E, $BD5B, $BD71, $BE21:

BAE2: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
BAE5: AA        TAX
BAE6: F0 10     BEQ $BAF8
BAE8: 18        CLC
BAE9: 69 02     ADC #$02
BAEB: B0 F2     BCS $BADF     ; Overflow / Underflow

Jump from $AA04:

BAED: A2 00     LDX #$00
BAEF: 86 6F     STX $6F       ; Sign of result of Arithmetic Evaluation
BAF1: 20 77 B8  JSR $B877     ; Perform Addition
BAF4: E6 61     INC $61       ; FAC Exponent
BAF6: F0 E7     BEQ $BADF     ; Overflow / Underflow

Jump from $BAE6:

BAF8: 60        RTS



 $BAF9/47865:   Constant 10 in Flpt - c64ref 

BAF9: 84 20 00 00 00



 $BAFE/47870:   Divide FAC#1 by 10 - c64ref 

Jump from $BD52, $BE28:

BAFE: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
BB01: A9 F9     LDA #$F9
BB03: A0 BA     LDY #$BA
BB05: A2 00     LDX #$00



 $BB07/47879:   Divide FAC#2 by Flpt at (AC/YR) - c64ref 

Jump from $E274:

BB07: 86 6F     STX $6F       ; Sign of result of Arithmetic Evaluation
BB09: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
BB0C: 4C 12 BB  JMP $BB12     ; Divide FAC#2 by FAC#1



 $BB0F/47887:   Divide FAC#2 by FAC#1 - c64ref 

Jump from $BA08, $E2D9, $E321:

BB0F: 20 8C BA  JSR $BA8C     ; Load FAC#2 From Memory

Jump from $BB0C:

BB12: F0 76     BEQ $BB8A
BB14: 20 1B BC  JSR $BC1B     ; Round FAC#1
BB17: A9 00     LDA #$00
BB19: 38        SEC
BB1A: E5 61     SBC $61       ; FAC Exponent
BB1C: 85 61     STA $61       ; FAC Exponent
BB1E: 20 B7 BA  JSR $BAB7     ; Test Both Accumulators
BB21: E6 61     INC $61       ; FAC Exponent
BB23: F0 BA     BEQ $BADF     ; Overflow / Underflow
BB25: A2 FC     LDX #$FC
BB27: A9 01     LDA #$01

Jump from $BB59:

BB29: A4 6A     LDY $6A       ; AFAC Mantissa
BB2B: C4 62     CPY $62       ; FAC Mantissa
BB2D: D0 10     BNE $BB3F
BB2F: A4 6B     LDY $6B       ; AFAC Mantissa
BB31: C4 63     CPY $63       ; FAC Mantissa
BB33: D0 0A     BNE $BB3F
BB35: A4 6C     LDY $6C       ; AFAC Mantissa
BB37: C4 64     CPY $64       ; FAC Mantissa
BB39: D0 04     BNE $BB3F
BB3B: A4 6D     LDY $6D       ; AFAC Mantissa
BB3D: C4 65     CPY $65       ; FAC Mantissa

Jump from $BB2D, $BB33, $BB39, $BB57, $BB5B:

BB3F: 08        PHP
BB40: 2A        ROL
BB41: 90 09     BCC $BB4C
BB43: E8        INX
BB44: 95 29     STA $29,X     ; Floating point product of Multiply and Divide
BB46: F0 32     BEQ $BB7A
BB48: 10 34     BPL $BB7E
BB4A: A9 01     LDA #$01

Jump from $BB41, $BB7C:

BB4C: 28        PLP
BB4D: B0 0E     BCS $BB5D

Jump from $BB77:

BB4F: 06 6D     ASL $6D       ; AFAC Mantissa
BB51: 26 6C     ROL $6C       ; AFAC Mantissa
BB53: 26 6B     ROL $6B       ; AFAC Mantissa
BB55: 26 6A     ROL $6A       ; AFAC Mantissa
BB57: B0 E6     BCS $BB3F
BB59: 30 CE     BMI $BB29
BB5B: 10 E2     BPL $BB3F

Jump from $BB4D:

BB5D: A8        TAY
BB5E: A5 6D     LDA $6D       ; AFAC Mantissa
BB60: E5 65     SBC $65       ; FAC Mantissa
BB62: 85 6D     STA $6D       ; AFAC Mantissa
BB64: A5 6C     LDA $6C       ; AFAC Mantissa
BB66: E5 64     SBC $64       ; FAC Mantissa
BB68: 85 6C     STA $6C       ; AFAC Mantissa
BB6A: A5 6B     LDA $6B       ; AFAC Mantissa
BB6C: E5 63     SBC $63       ; FAC Mantissa
BB6E: 85 6B     STA $6B       ; AFAC Mantissa
BB70: A5 6A     LDA $6A       ; AFAC Mantissa
BB72: E5 62     SBC $62       ; FAC Mantissa
BB74: 85 6A     STA $6A       ; AFAC Mantissa
BB76: 98        TYA
BB77: 4C 4F BB  JMP $BB4F

Jump from $BB46:

BB7A: A9 40     LDA #$40
BB7C: D0 CE     BNE $BB4C

Jump from $BB48:

BB7E: 0A        ASL
BB7F: 0A        ASL
BB80: 0A        ASL
BB81: 0A        ASL
BB82: 0A        ASL
BB83: 0A        ASL
BB84: 85 70     STA $70       ; FAC low-order rounding
BB86: 28        PLP
BB87: 4C 8F BB  JMP $BB8F

Jump from $BB12:

BB8A: A2 14     LDX #$14
BB8C: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $BB87, $BA56:

BB8F: A5 26     LDA $26       ; Floating point product of Multiply and Divide
BB91: 85 62     STA $62       ; FAC Mantissa
BB93: A5 27     LDA $27       ; Floating point product of Multiply and Divide
BB95: 85 63     STA $63       ; FAC Mantissa
BB97: A5 28     LDA $28       ; Floating point product of Multiply and Divide
BB99: 85 64     STA $64       ; FAC Mantissa
BB9B: A5 29     LDA $29       ; Floating point product of Multiply and Divide
BB9D: 85 65     STA $65       ; FAC Mantissa
BB9F: 4C D7 B8  JMP $B8D7     ; Perform Addition



 $BBA2/48034:   Load FAC#1 From Memory - c64ref 

Jump from $A78F, $AD42, $AEA2, $AFA4, $BB09, $BF78, $E0C2, $E2C9:

BBA2: 85 22     STA $22       ; Second Utility Pointer
BBA4: 84 23     STY $23       ; Second Utility Pointer
BBA6: A0 04     LDY #$04
BBA8: B1 22     LDA ($22),Y   ; Second Utility Pointer
BBAA: 85 65     STA $65       ; FAC Mantissa
BBAC: 88        DEY
BBAD: B1 22     LDA ($22),Y   ; Second Utility Pointer
BBAF: 85 64     STA $64       ; FAC Mantissa
BBB1: 88        DEY
BBB2: B1 22     LDA ($22),Y   ; Second Utility Pointer
BBB4: 85 63     STA $63       ; FAC Mantissa
BBB6: 88        DEY
BBB7: B1 22     LDA ($22),Y   ; Second Utility Pointer
BBB9: 85 66     STA $66       ; FAC Sign
BBBB: 09 80     ORA #$80
BBBD: 85 62     STA $62       ; FAC Mantissa
BBBF: 88        DEY
BBC0: B1 22     LDA ($22),Y   ; Second Utility Pointer
BBC2: 85 61     STA $61       ; FAC Exponent
BBC4: 84 70     STY $70       ; FAC low-order rounding
BBC6: 60        RTS



 $BBC7/48071:   Store FAC#1 in Memory - c64ref 

Jump from $E05D:

BBC7: A2 5C     LDX #$5C
BBC9: 2C        .BYTE $2C

Jump from $E047, $E2B4:

BBCA: A2 57     LDX #$57
BBCC: A0 00     LDY #$00
BBCE: F0 04     BEQ $BBD4

Jump from $A9D6, $AD52:

BBD0: A6 49     LDX $49       ; Pointer: Index Variable for FOR/NEXT loop
BBD2: A4 4A     LDY $4A       ; Pointer: Index Variable for FOR/NEXT loop

Jump from $BBCE, $B420, $BF88, $E0F6:

BBD4: 20 1B BC  JSR $BC1B     ; Round FAC#1
BBD7: 86 22     STX $22       ; Second Utility Pointer
BBD9: 84 23     STY $23       ; Second Utility Pointer
BBDB: A0 04     LDY #$04
BBDD: A5 65     LDA $65       ; FAC Mantissa
BBDF: 91 22     STA ($22),Y   ; Second Utility Pointer
BBE1: 88        DEY
BBE2: A5 64     LDA $64       ; FAC Mantissa
BBE4: 91 22     STA ($22),Y   ; Second Utility Pointer
BBE6: 88        DEY
BBE7: A5 63     LDA $63       ; FAC Mantissa
BBE9: 91 22     STA ($22),Y   ; Second Utility Pointer
BBEB: 88        DEY
BBEC: A5 66     LDA $66       ; FAC Sign
BBEE: 09 7F     ORA #$7F
BBF0: 25 62     AND $62       ; FAC Mantissa
BBF2: 91 22     STA ($22),Y   ; Second Utility Pointer
BBF4: 88        DEY
BBF5: A5 61     LDA $61       ; FAC Exponent
BBF7: 91 22     STA ($22),Y   ; Second Utility Pointer
BBF9: 84 70     STY $70       ; FAC low-order rounding
BBFB: 60        RTS



 $BBFC/48124:   Copy FAC#2 into FAC#1 - c64ref 

Jump from $AFFC, $B86C:

BBFC: A5 6E     LDA $6E       ; AFAC Sign

Jump from $BF9E:

BBFE: 85 66     STA $66       ; FAC Sign
BC00: A2 05     LDX #$05

Jump from $BC07:

BC02: B5 68     LDA $68,X     ; Bit Overflow Area during normalisation Routine
BC04: 95 60     STA $60,X     ; Temporary storage for FLPT value
BC06: CA        DEX
BC07: D0 F9     BNE $BC02
BC09: 86 70     STX $70       ; FAC low-order rounding
BC0B: 60        RTS



 $BC0C/48140:   Copy FAC#1 into FAC#2 - c64ref 

Jump from $A9FC, $BAE2, $BAFE, $BD7F, $BF71, $E26B, $E277:

BC0C: 20 1B BC  JSR $BC1B     ; Round FAC#1

Jump from $E002:

BC0F: A2 06     LDX #$06

Jump from $BC16:

BC11: B5 60     LDA $60,X     ; Temporary storage for FLPT value
BC13: 95 68     STA $68,X     ; Bit Overflow Area during normalisation Routine
BC15: CA        DEX
BC16: D0 F9     BNE $BC11
BC18: 86 70     STX $70       ; FAC low-order rounding

Jump from $BC1D, $BC21, $BC26:

BC1A: 60        RTS



 $BC1B/48155:   Round FAC#1 - c64ref 

Jump from $A9C4, $AE43, $BB14, $BBD4, $BC0C:

BC1B: A5 61     LDA $61       ; FAC Exponent
BC1D: F0 FB     BEQ $BC1A     ; Copy FAC#1 into FAC#2
BC1F: 06 70     ASL $70       ; FAC low-order rounding
BC21: 90 F7     BCC $BC1A     ; Copy FAC#1 into FAC#2

Jump from $BFFA:

BC23: 20 6F B9  JSR $B96F     ; 2's Complement FAC#1
BC26: D0 F2     BNE $BC1A     ; Copy FAC#1 into FAC#2
BC28: 4C 38 B9  JMP $B938     ; Perform Addition



 $BC2B/48171:   Check Sign of FAC#1 - c64ref 

Jump from $A79F, $B9EA, $BC39, $BC65, $E097:

BC2B: A5 61     LDA $61       ; FAC Exponent
BC2D: F0 09     BEQ $BC38

Jump from $BC6B:

BC2F: A5 66     LDA $66       ; FAC Sign

Jump from $BC98:

BC31: 2A        ROL
BC32: A9 FF     LDA #$FF
BC34: B0 02     BCS $BC38
BC36: A9 01     LDA #$01

Jump from $BC2D, $BC34:

BC38: 60        RTS



 $BC39/48185:   Evaluate <sgn> - c64ref 

BC39: 20 2B BC  JSR $BC2B     ; Check Sign of FAC#1

Jump from $AF9D, $B07B, $BD83:

BC3C: 85 62     STA $62       ; FAC Mantissa
BC3E: A9 00     LDA #$00
BC40: 85 63     STA $63       ; FAC Mantissa
BC42: A2 88     LDX #$88

Jump from $B39B:

BC44: A5 62     LDA $62       ; FAC Mantissa
BC46: 49 FF     EOR #$FF
BC48: 2A        ROL

Jump from $BDD4:

BC49: A9 00     LDA #$00
BC4B: 85 65     STA $65       ; FAC Mantissa
BC4D: 85 64     STA $64       ; FAC Mantissa

Jump from $AF81:

BC4F: 86 61     STX $61       ; FAC Exponent
BC51: 85 70     STA $70       ; FAC low-order rounding
BC53: 85 66     STA $66       ; FAC Sign
BC55: 4C D2 B8  JMP $B8D2     ; Perform Addition



 $BC58/48216:   Evaluate <abs> - c64ref 

BC58: 46 66     LSR $66       ; FAC Sign
BC5A: 60        RTS



 $BC5B/48219:   Compare FAC#1 With Memory - c64ref 

Jump from $B027, $B1C9, $BE0F, $BE1A, $BF96:

BC5B: 85 24     STA $24       ; Second Utility Pointer

Jump from $AD57:

BC5D: 84 25     STY $25       ; Second Utility Pointer
BC5F: A0 00     LDY #$00
BC61: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC63: C8        INY
BC64: AA        TAX
BC65: F0 C4     BEQ $BC2B     ; Check Sign of FAC#1
BC67: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC69: 45 66     EOR $66       ; FAC Sign
BC6B: 30 C2     BMI $BC2F     ; Check Sign of FAC#1
BC6D: E4 61     CPX $61       ; FAC Exponent
BC6F: D0 21     BNE $BC92
BC71: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC73: 09 80     ORA #$80
BC75: C5 62     CMP $62       ; FAC Mantissa
BC77: D0 19     BNE $BC92
BC79: C8        INY
BC7A: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC7C: C5 63     CMP $63       ; FAC Mantissa
BC7E: D0 12     BNE $BC92
BC80: C8        INY
BC81: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC83: C5 64     CMP $64       ; FAC Mantissa
BC85: D0 0B     BNE $BC92
BC87: C8        INY
BC88: A9 7F     LDA #$7F
BC8A: C5 70     CMP $70       ; FAC low-order rounding
BC8C: B1 24     LDA ($24),Y   ; Second Utility Pointer
BC8E: E5 65     SBC $65       ; FAC Mantissa
BC90: F0 28     BEQ $BCBA     ; Convert FAC#1 to Integer

Jump from $BC6F, $BC77, $BC7E, $BC85:

BC92: A5 66     LDA $66       ; FAC Sign
BC94: 90 02     BCC $BC98
BC96: 49 FF     EOR #$FF

Jump from $BC94:

BC98: 4C 31 BC  JMP $BC31     ; Check Sign of FAC#1



 $BC9B/48283:   Convert FAC#1 to Integer - c64ref 

Jump from $AA11, $B1CE, $B801, $BCD2, $BE32:

BC9B: A5 61     LDA $61       ; FAC Exponent
BC9D: F0 4A     BEQ $BCE9     ; Evaluate <int>
BC9F: 38        SEC
BCA0: E9 A0     SBC #$A0
BCA2: 24 66     BIT $66       ; FAC Sign
BCA4: 10 09     BPL $BCAF
BCA6: AA        TAX
BCA7: A9 FF     LDA #$FF
BCA9: 85 68     STA $68       ; Bit Overflow Area during normalisation Routine
BCAB: 20 4D B9  JSR $B94D     ; 2's Complement FAC#1
BCAE: 8A        TXA

Jump from $BCA4:

BCAF: A2 61     LDX #$61
BCB1: C9 F9     CMP #$F9
BCB3: 10 06     BPL $BCBB
BCB5: 20 99 B9  JSR $B999     ; Multiply by Zero Byte
BCB8: 84 68     STY $68       ; Bit Overflow Area during normalisation Routine

Jump from $BC90:

BCBA: 60        RTS

Jump from $BCB3:

BCBB: A8        TAY
BCBC: A5 66     LDA $66       ; FAC Sign
BCBE: 29 80     AND #$80
BCC0: 46 62     LSR $62       ; FAC Mantissa
BCC2: 05 62     ORA $62       ; FAC Mantissa
BCC4: 85 62     STA $62       ; FAC Mantissa
BCC6: 20 B0 B9  JSR $B9B0     ; Multiply by Zero Byte
BCC9: 84 68     STY $68       ; Bit Overflow Area during normalisation Routine
BCCB: 60        RTS



 $BCCC/48332:   Evaluate <int> - c64ref 

Jump from $BF8F, $E00E, $E27A:

BCCC: A5 61     LDA $61       ; FAC Exponent
BCCE: C9 A0     CMP #$A0
BCD0: B0 20     BCS $BCF2
BCD2: 20 9B BC  JSR $BC9B     ; Convert FAC#1 to Integer
BCD5: 84 70     STY $70       ; FAC low-order rounding
BCD7: A5 66     LDA $66       ; FAC Sign
BCD9: 84 66     STY $66       ; FAC Sign
BCDB: 49 80     EOR #$80
BCDD: 2A        ROL
BCDE: A9 A0     LDA #$A0
BCE0: 85 61     STA $61       ; FAC Exponent
BCE2: A5 65     LDA $65       ; FAC Mantissa
BCE4: 85 07     STA $07       ; Temporary Integer during OR/AND
BCE6: 4C D2 B8  JMP $B8D2     ; Perform Addition

Jump from $BC9D:

BCE9: 85 62     STA $62       ; FAC Mantissa
BCEB: 85 63     STA $63       ; FAC Mantissa
BCED: 85 64     STA $64       ; FAC Mantissa
BCEF: 85 65     STA $65       ; FAC Mantissa
BCF1: A8        TAY

Jump from $BCD0:

BCF2: 60        RTS



 $BCF3/48371:   Convert ASCII String to a Number in FAC - c64ref 

Jump from $AC89, $AE8F, $B7DA:

BCF3: A0 00     LDY #$00
BCF5: A2 0A     LDX #$0A

Jump from $BCFA:

BCF7: 94 5D     STY $5D,X     ; Temporary storage for FLPT value
BCF9: CA        DEX
BCFA: 10 FB     BPL $BCF7
BCFC: 90 0F     BCC $BD0D
BCFE: C9 2D     CMP #$2D
BD00: D0 04     BNE $BD06
BD02: 86 67     STX $67       ; Pointer: Series Evaluation Constant
BD04: F0 04     BEQ $BD0A

Jump from $BD00:

BD06: C9 2B     CMP #$2B
BD08: D0 05     BNE $BD0F

Jump from $BD04, $BD45, $BD7B:

BD0A: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text

Jump from $BCFC:

BD0D: 90 5B     BCC $BD6A

Jump from $BD08:

BD0F: C9 2E     CMP #$2E
BD11: F0 2E     BEQ $BD41
BD13: C9 45     CMP #$45
BD15: D0 30     BNE $BD47
BD17: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text
BD1A: 90 17     BCC $BD33
BD1C: C9 AB     CMP #$AB
BD1E: F0 0E     BEQ $BD2E
BD20: C9 2D     CMP #$2D
BD22: F0 0A     BEQ $BD2E
BD24: C9 AA     CMP #$AA
BD26: F0 08     BEQ $BD30
BD28: C9 2B     CMP #$2B
BD2A: F0 04     BEQ $BD30
BD2C: D0 07     BNE $BD35

Jump from $BD1E, $BD22:

BD2E: 66 60     ROR $60       ; Temporary storage for FLPT value

Jump from $BD26, $BD2A, $BDB0:

BD30: 20 73 00  JSR $0073     ; CHRGET: Get next Byte of BASIC Text

Jump from $BD1A:

BD33: 90 5C     BCC $BD91

Jump from $BD2C:

BD35: 24 60     BIT $60       ; Temporary storage for FLPT value
BD37: 10 0E     BPL $BD47
BD39: A9 00     LDA #$00
BD3B: 38        SEC
BD3C: E5 5E     SBC $5E       ; Temporary storage for FLPT value
BD3E: 4C 49 BD  JMP $BD49

Jump from $BD11:

BD41: 66 5F     ROR $5F       ; Temporary storage for FLPT value
BD43: 24 5F     BIT $5F       ; Temporary storage for FLPT value
BD45: 50 C3     BVC $BD0A

Jump from $BD15, $BD37:

BD47: A5 5E     LDA $5E       ; Temporary storage for FLPT value

Jump from $BD3E:

BD49: 38        SEC
BD4A: E5 5D     SBC $5D       ; Temporary storage for FLPT value
BD4C: 85 5E     STA $5E       ; Temporary storage for FLPT value
BD4E: F0 12     BEQ $BD62
BD50: 10 09     BPL $BD5B

Jump from $BD57:

BD52: 20 FE BA  JSR $BAFE     ; Divide FAC#1 by 10
BD55: E6 5E     INC $5E       ; Temporary storage for FLPT value
BD57: D0 F9     BNE $BD52
BD59: F0 07     BEQ $BD62

Jump from $BD50, $BD60:

BD5B: 20 E2 BA  JSR $BAE2     ; Multiply FAC#1 by 10
BD5E: C6 5E     DEC $5E       ; Temporary storage for FLPT value
BD60: D0 F9     BNE $BD5B

Jump from $BD4E, $BD59:

BD62: A5 67     LDA $67       ; Pointer: Series Evaluation Constant
BD64: 30 01     BMI $BD67
BD66: 60        RTS

Jump from $BD64:

BD67: 4C B4 BF  JMP $BFB4     ; Negate FAC#1

Jump from $BD0D:

BD6A: 48        PHA
BD6B: 24 5F     BIT $5F       ; Temporary storage for FLPT value
BD6D: 10 02     BPL $BD71
BD6F: E6 5D     INC $5D       ; Temporary storage for FLPT value

Jump from $BD6D:

BD71: 20 E2 BA  JSR $BAE2     ; Multiply FAC#1 by 10
BD74: 68        PLA
BD75: 38        SEC
BD76: E9 30     SBC #$30
BD78: 20 7E BD  JSR $BD7E
BD7B: 4C 0A BD  JMP $BD0A

Jump from $BD78, $AA29, $BA21:

BD7E: 48        PHA
BD7F: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
BD82: 68        PLA
BD83: 20 3C BC  JSR $BC3C     ; Evaluate <sgn>
BD86: A5 6E     LDA $6E       ; AFAC Sign
BD88: 45 66     EOR $66       ; FAC Sign
BD8A: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
BD8C: A6 61     LDX $61       ; FAC Exponent
BD8E: 4C 6A B8  JMP $B86A     ; Perform Addition

Jump from $BD33:

BD91: A5 5E     LDA $5E       ; Temporary storage for FLPT value
BD93: C9 0A     CMP #$0A
BD95: 90 09     BCC $BDA0
BD97: A9 64     LDA #$64
BD99: 24 60     BIT $60       ; Temporary storage for FLPT value
BD9B: 30 11     BMI $BDAE
BD9D: 4C 7E B9  JMP $B97E     ; Output ?OVERFLOW Error

Jump from $BD95:

BDA0: 0A        ASL
BDA1: 0A        ASL
BDA2: 18        CLC
BDA3: 65 5E     ADC $5E       ; Temporary storage for FLPT value
BDA5: 0A        ASL
BDA6: 18        CLC
BDA7: A0 00     LDY #$00
BDA9: 71 7A     ADC ($7A),Y   ; Pointer: Current Byte of BASIC Text
BDAB: 38        SEC
BDAC: E9 30     SBC #$30

Jump from $BD9B:

BDAE: 85 5E     STA $5E       ; Temporary storage for FLPT value
BDB0: 4C 30 BD  JMP $BD30



 $BDB3/48563:   String Conversion Constants    99999999 - c64ref 

BDB3: 9B 3E BC 1F FD



 $BDB8/48568:   String Conversion Constants   999999999 - c64ref 

BDB8: 9E 6E 6B 27 FD



 $BDBD/48573:   String Conversion Constants  1000000000 - c64ref 

BDBD: 9E 6E 6B 28 00



 $BDC2/48578:   Output 'IN' and Line Number - c64ref 

Jump from $A471:

BDC2: A9 71     LDA #$71
BDC4: A0 A3     LDY #$A3
BDC6: 20 DA BD  JSR $BDDA     ; Output Positive Integer in A/X
BDC9: A5 3A     LDA $3A       ; Current BASIC Line number
BDCB: A6 39     LDX $39       ; Current BASIC Line number



 $BDCD/48589:   Output Positive Integer in A/X - c64ref 

Jump from $A6EA, $E43A:

BDCD: 85 62     STA $62       ; FAC Mantissa
BDCF: 86 63     STX $63       ; FAC Mantissa
BDD1: A2 90     LDX #$90
BDD3: 38        SEC
BDD4: 20 49 BC  JSR $BC49     ; Evaluate <sgn>
BDD7: 20 DF BD  JSR $BDDF     ; Convert FAC#1 to ASCII String

Jump from $BDC6:

BDDA: 4C 1E AB  JMP $AB1E     ; Output String



 $BDDD/48605:   Convert FAC#1 to ASCII String - c64ref 

Jump from $AABC:

BDDD: A0 01     LDY #$01

Jump from $B46A, $BDD7:

BDDF: A9 20     LDA #$20
BDE1: 24 66     BIT $66       ; FAC Sign
BDE3: 10 02     BPL $BDE7
BDE5: A9 2D     LDA #$2D

Jump from $BDE3:

BDE7: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII
BDEA: 85 66     STA $66       ; FAC Sign
BDEC: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion
BDEE: C8        INY
BDEF: A9 30     LDA #$30
BDF1: A6 61     LDX $61       ; FAC Exponent
BDF3: D0 03     BNE $BDF8
BDF5: 4C 04 BF  JMP $BF04     ; Convert TI to String

Jump from $BDF3:

BDF8: A9 00     LDA #$00
BDFA: E0 80     CPX #$80
BDFC: F0 02     BEQ $BE00
BDFE: B0 09     BCS $BE09

Jump from $BDFC:

BE00: A9 BD     LDA #$BD
BE02: A0 BD     LDY #$BD
BE04: 20 28 BA  JSR $BA28     ; Perform Multiply
BE07: A9 F7     LDA #$F7

Jump from $BDFE:

BE09: 85 5D     STA $5D       ; Temporary storage for FLPT value

Jump from $BE2D:

BE0B: A9 B8     LDA #$B8
BE0D: A0 BD     LDY #$BD
BE0F: 20 5B BC  JSR $BC5B     ; Compare FAC#1 With Memory
BE12: F0 1E     BEQ $BE32
BE14: 10 12     BPL $BE28

Jump from $BE26:

BE16: A9 B3     LDA #$B3
BE18: A0 BD     LDY #$BD
BE1A: 20 5B BC  JSR $BC5B     ; Compare FAC#1 With Memory
BE1D: F0 02     BEQ $BE21
BE1F: 10 0E     BPL $BE2F

Jump from $BE1D:

BE21: 20 E2 BA  JSR $BAE2     ; Multiply FAC#1 by 10
BE24: C6 5D     DEC $5D       ; Temporary storage for FLPT value
BE26: D0 EE     BNE $BE16

Jump from $BE14:

BE28: 20 FE BA  JSR $BAFE     ; Divide FAC#1 by 10
BE2B: E6 5D     INC $5D       ; Temporary storage for FLPT value
BE2D: D0 DC     BNE $BE0B

Jump from $BE1F:

BE2F: 20 49 B8  JSR $B849     ; Add 0.5 to FAC#1

Jump from $BE12:

BE32: 20 9B BC  JSR $BC9B     ; Convert FAC#1 to Integer
BE35: A2 01     LDX #$01
BE37: A5 5D     LDA $5D       ; Temporary storage for FLPT value
BE39: 18        CLC
BE3A: 69 0A     ADC #$0A
BE3C: 30 09     BMI $BE47
BE3E: C9 0B     CMP #$0B
BE40: B0 06     BCS $BE48
BE42: 69 FF     ADC #$FF
BE44: AA        TAX
BE45: A9 02     LDA #$02

Jump from $BE3C:

BE47: 38        SEC

Jump from $BE40:

BE48: E9 02     SBC #$02
BE4A: 85 5E     STA $5E       ; Temporary storage for FLPT value
BE4C: 86 5D     STX $5D       ; Temporary storage for FLPT value
BE4E: 8A        TXA
BE4F: F0 02     BEQ $BE53
BE51: 10 13     BPL $BE66

Jump from $BE4F:

BE53: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
BE55: A9 2E     LDA #$2E
BE57: C8        INY
BE58: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII
BE5B: 8A        TXA
BE5C: F0 06     BEQ $BE64
BE5E: A9 30     LDA #$30
BE60: C8        INY
BE61: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII

Jump from $BE5C:

BE64: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $BE51:

BE66: A0 00     LDY #$00



 $BE68/48744:   Convert TI to String - c64ref 

Jump from $AF56:

BE68: A2 80     LDX #$80

Jump from $BE8A, $BE8E, $BEC2:

BE6A: A5 65     LDA $65       ; FAC Mantissa
BE6C: 18        CLC
BE6D: 79 19 BF  ADC $BF19,Y   ; Table of Constants  4-byte powers of 10
BE70: 85 65     STA $65       ; FAC Mantissa
BE72: A5 64     LDA $64       ; FAC Mantissa
BE74: 79 18 BF  ADC $BF18,Y   ; Table of Constants  4-byte powers of 10
BE77: 85 64     STA $64       ; FAC Mantissa
BE79: A5 63     LDA $63       ; FAC Mantissa
BE7B: 79 17 BF  ADC $BF17,Y   ; Table of Constants  4-byte powers of 10
BE7E: 85 63     STA $63       ; FAC Mantissa
BE80: A5 62     LDA $62       ; FAC Mantissa
BE82: 79 16 BF  ADC $BF16,Y   ; Table of Constants  4-byte powers of 10
BE85: 85 62     STA $62       ; FAC Mantissa
BE87: E8        INX
BE88: B0 04     BCS $BE8E
BE8A: 10 DE     BPL $BE6A
BE8C: 30 02     BMI $BE90

Jump from $BE88:

BE8E: 30 DA     BMI $BE6A

Jump from $BE8C:

BE90: 8A        TXA
BE91: 90 04     BCC $BE97
BE93: 49 FF     EOR #$FF
BE95: 69 0A     ADC #$0A

Jump from $BE91:

BE97: 69 2F     ADC #$2F
BE99: C8        INY
BE9A: C8        INY
BE9B: C8        INY
BE9C: C8        INY
BE9D: 84 47     STY $47       ; Value/Descriptor-Pointer
BE9F: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
BEA1: C8        INY
BEA2: AA        TAX
BEA3: 29 7F     AND #$7F
BEA5: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII
BEA8: C6 5D     DEC $5D       ; Temporary storage for FLPT value
BEAA: D0 06     BNE $BEB2
BEAC: A9 2E     LDA #$2E
BEAE: C8        INY
BEAF: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII

Jump from $BEAA:

BEB2: 84 71     STY $71       ; Pointer: Used during CRUNCH/ASCII conversion
BEB4: A4 47     LDY $47       ; Value/Descriptor-Pointer
BEB6: 8A        TXA
BEB7: 49 FF     EOR #$FF
BEB9: 29 80     AND #$80
BEBB: AA        TAX
BEBC: C0 24     CPY #$24
BEBE: F0 04     BEQ $BEC4
BEC0: C0 3C     CPY #$3C
BEC2: D0 A6     BNE $BE6A

Jump from $BEBE:

BEC4: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $BECC:

BEC6: B9 FF 00  LDA $00FF,Y   ; Assembly Area for Floating point to ASCII
BEC9: 88        DEY
BECA: C9 30     CMP #$30
BECC: F0 F8     BEQ $BEC6
BECE: C9 2E     CMP #$2E
BED0: F0 01     BEQ $BED3
BED2: C8        INY

Jump from $BED0:

BED3: A9 2B     LDA #$2B
BED5: A6 5E     LDX $5E       ; Temporary storage for FLPT value
BED7: F0 2E     BEQ $BF07
BED9: 10 08     BPL $BEE3
BEDB: A9 00     LDA #$00
BEDD: 38        SEC
BEDE: E5 5E     SBC $5E       ; Temporary storage for FLPT value
BEE0: AA        TAX
BEE1: A9 2D     LDA #$2D

Jump from $BED9:

BEE3: 99 01 01  STA $0101,Y   ; 6510 Hardware Stack Area
BEE6: A9 45     LDA #$45
BEE8: 99 00 01  STA $0100,Y   ; 6510 Hardware Stack Area
BEEB: 8A        TXA
BEEC: A2 2F     LDX #$2F
BEEE: 38        SEC

Jump from $BEF2:

BEEF: E8        INX
BEF0: E9 0A     SBC #$0A
BEF2: B0 FB     BCS $BEEF
BEF4: 69 3A     ADC #$3A
BEF6: 99 03 01  STA $0103,Y   ; 6510 Hardware Stack Area
BEF9: 8A        TXA
BEFA: 99 02 01  STA $0102,Y   ; 6510 Hardware Stack Area
BEFD: A9 00     LDA #$00
BEFF: 99 04 01  STA $0104,Y   ; 6510 Hardware Stack Area
BF02: F0 08     BEQ $BF0C

Jump from $BDF5:

BF04: 99 FF 00  STA $00FF,Y   ; Assembly Area for Floating point to ASCII

Jump from $BED7:

BF07: A9 00     LDA #$00
BF09: 99 00 01  STA $0100,Y   ; 6510 Hardware Stack Area

Jump from $BF02:

BF0C: A9 00     LDA #$00
BF0E: A0 01     LDY #$01
BF10: 60        RTS



 $BF11/48913:   Table of Constants  0.5 - c64ref 

BF11: 80 00 00 00 00



 $BF16/48918:   Table of Constants  4-byte powers of 10 - c64ref 

BF16: FA 0A 1F 00 00 98 96 80
BF1E: FF F0 BD C0 00 01 86 A0
BF26: FF FF D8 F0 00 00 03 E8
BF2E: FF FF FF 9C 00 00 00 0A
BF36: FF FF FF FF


Kernal-Reference:

 ADC $BF16,Y : $BE82

 ADC $BF17,Y : $BE7B

 ADC $BF18,Y : $BE74

 ADC $BF19,Y : $BE6D


 $BF3A/48954:   Table of Constants  TI Constants - c64ref 

BF3A: FF DF 0A 80 00 03 4B C0
BF42: FF FF 73 60 00 00 0E 10
BF4A: FF FF FD A8 00 00 00 3C
BF52: EC AA AA AA AA AA AA AA
BF5A: AA AA AA AA AA AA AA AA
BF62: AA AA AA AA AA AA AA AA
BF6A: AA AA AA AA AA AA AA



 $BF71/49009:   Evaluate <sqr> - c64ref 

BF71: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
BF74: A9 11     LDA #$11
BF76: A0 BF     LDY #$BF
BF78: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory



 $BF7B/49019:   Evaluate <power> - c64ref 

BF7B: F0 70     BEQ $BFED     ; Evaluate <exp>
BF7D: A5 69     LDA $69       ; AFAC Exponent
BF7F: D0 03     BNE $BF84
BF81: 4C F9 B8  JMP $B8F9     ; Perform Addition

Jump from $BF7F:

BF84: A2 4E     LDX #$4E
BF86: A0 00     LDY #$00
BF88: 20 D4 BB  JSR $BBD4     ; Store FAC#1 in Memory
BF8B: A5 6E     LDA $6E       ; AFAC Sign
BF8D: 10 0F     BPL $BF9E
BF8F: 20 CC BC  JSR $BCCC     ; Evaluate <int>
BF92: A9 4E     LDA #$4E
BF94: A0 00     LDY #$00
BF96: 20 5B BC  JSR $BC5B     ; Compare FAC#1 With Memory
BF99: D0 03     BNE $BF9E
BF9B: 98        TYA
BF9C: A4 07     LDY $07       ; Temporary Integer during OR/AND

Jump from $BF8D, $BF99:

BF9E: 20 FE BB  JSR $BBFE     ; Copy FAC#2 into FAC#1
BFA1: 98        TYA
BFA2: 48        PHA
BFA3: 20 EA B9  JSR $B9EA     ; Evaluate <log>
BFA6: A9 4E     LDA #$4E
BFA8: A0 00     LDY #$00
BFAA: 20 28 BA  JSR $BA28     ; Perform Multiply
BFAD: 20 ED BF  JSR $BFED     ; Evaluate <exp>
BFB0: 68        PLA
BFB1: 4A        LSR
BFB2: 90 0A     BCC $BFBE     ; Negate FAC#1



 $BFB4/49076:   Negate FAC#1 - c64ref 

Jump from $BD67, $E030, $E29D, $E2AA, $E313, $E33A:

BFB4: A5 61     LDA $61       ; FAC Exponent
BFB6: F0 06     BEQ $BFBE
BFB8: A5 66     LDA $66       ; FAC Sign
BFBA: 49 FF     EOR #$FF
BFBC: 85 66     STA $66       ; FAC Sign

Jump from $BFB6, $BFB2:

BFBE: 60        RTS



 $BFBF/49087:   Table of Constants  1.44269504 - c64ref 

BFBF: 81 38 AA 3B 29



 $BFC4/49092:   Table of Constants  #07 - c64ref 

BFC4: 07



 $BFC5/49093:   Table of Constants  2.149875 E-5 - c64ref 

BFC5: 71 34 58 3E 56



 $BFCA/49098:   Table of Constants  1.435231 E-4 - c64ref 

BFCA: 74 16 7E B3 1B



 $BFCF/49103:   Table of Constants  1.342263 E-3 - c64ref 

BFCF: 77 2F EE E3 85



 $BFD4/49108:   Table of Constants  9.6414017 E-3 - c64ref 

BFD4: 7A 1D 84 1C 2A



 $BFD9/49113:   Table of Constants  5.550513 E-2 - c64ref 

BFD9: 7C 63 59 58 0A



 $BFDE/49118:   Table of Constants  2.402263 E-4 - c64ref 

BFDE: 7E 75 FD E7 C6



 $BFE3/49123:   Table of Constants  6.931471 E-1 - c64ref 

BFE3: 80 31 72 18 10



 $BFE8/49128:   Table of Constants  1.00 - c64ref 

BFE8: 81 00 00 00 00



 $BFED/49133:   Evaluate <exp> - c64ref 

Jump from $BF7B, $BFAD:

BFED: A9 BF     LDA #$BF
BFEF: A0 BF     LDY #$BF
BFF1: 20 28 BA  JSR $BA28     ; Perform Multiply
BFF4: A5 70     LDA $70       ; FAC low-order rounding
BFF6: 69 50     ADC #$50
BFF8: 90 03     BCC $BFFD
BFFA: 20 23 BC  JSR $BC23     ; Round FAC#1

Jump from $BFF8:

BFFD: 4C 00 E0  JMP $E000     ; EXP continued From BASIC ROM



 $E000/57344:   EXP continued From BASIC ROM - c64ref 

Jump from $BFFD:

E000: 85 56     STA $56       ; Jump Vector used in Function Evaluation
E002: 20 0F BC  JSR $BC0F     ; Copy FAC#1 into FAC#2
E005: A5 61     LDA $61       ; FAC Exponent
E007: C9 88     CMP #$88
E009: 90 03     BCC $E00E

Jump from $E016:

E00B: 20 D4 BA  JSR $BAD4     ; Overflow / Underflow

Jump from $E009:

E00E: 20 CC BC  JSR $BCCC     ; Evaluate <int>
E011: A5 07     LDA $07       ; Temporary Integer during OR/AND
E013: 18        CLC
E014: 69 81     ADC #$81
E016: F0 F3     BEQ $E00B
E018: 38        SEC
E019: E9 01     SBC #$01
E01B: 48        PHA
E01C: A2 05     LDX #$05

Jump from $E027:

E01E: B5 69     LDA $69,X     ; AFAC Exponent
E020: B4 61     LDY $61,X     ; FAC Exponent
E022: 95 61     STA $61,X     ; FAC Exponent
E024: 94 69     STY $69,X     ; AFAC Exponent
E026: CA        DEX
E027: 10 F5     BPL $E01E
E029: A5 56     LDA $56       ; Jump Vector used in Function Evaluation
E02B: 85 70     STA $70       ; FAC low-order rounding
E02D: 20 53 B8  JSR $B853     ; Perform Subtraction
E030: 20 B4 BF  JSR $BFB4     ; Negate FAC#1
E033: A9 C4     LDA #$C4
E035: A0 BF     LDY #$BF
E037: 20 59 E0  JSR $E059     ; Series Evaluation
E03A: A9 00     LDA #$00
E03C: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
E03E: 68        PLA
E03F: 20 B9 BA  JSR $BAB9     ; Test Both Accumulators
E042: 60        RTS



 $E043/57411:   Series Evaluation - c64ref 

Jump from $BA16, $E2B1, $E328:

E043: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion
E045: 84 72     STY $72       ; Pointer: Used during CRUNCH/ASCII conversion
E047: 20 CA BB  JSR $BBCA     ; Store FAC#1 in Memory
E04A: A9 57     LDA #$57
E04C: 20 28 BA  JSR $BA28     ; Perform Multiply
E04F: 20 5D E0  JSR $E05D
E052: A9 57     LDA #$57
E054: A0 00     LDY #$00
E056: 4C 28 BA  JMP $BA28     ; Perform Multiply

Jump from $E037:

E059: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion
E05B: 84 72     STY $72       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $E04F:

E05D: 20 C7 BB  JSR $BBC7     ; Store FAC#1 in Memory
E060: B1 71     LDA ($71),Y   ; Pointer: Used during CRUNCH/ASCII conversion
E062: 85 67     STA $67       ; Pointer: Series Evaluation Constant
E064: A4 71     LDY $71       ; Pointer: Used during CRUNCH/ASCII conversion
E066: C8        INY
E067: 98        TYA
E068: D0 02     BNE $E06C
E06A: E6 72     INC $72       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $E068:

E06C: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion
E06E: A4 72     LDY $72       ; Pointer: Used during CRUNCH/ASCII conversion

Jump from $E08A:

E070: 20 28 BA  JSR $BA28     ; Perform Multiply
E073: A5 71     LDA $71       ; Pointer: Used during CRUNCH/ASCII conversion
E075: A4 72     LDY $72       ; Pointer: Used during CRUNCH/ASCII conversion
E077: 18        CLC
E078: 69 05     ADC #$05
E07A: 90 01     BCC $E07D
E07C: C8        INY

Jump from $E07A:

E07D: 85 71     STA $71       ; Pointer: Used during CRUNCH/ASCII conversion
E07F: 84 72     STY $72       ; Pointer: Used during CRUNCH/ASCII conversion
E081: 20 67 B8  JSR $B867     ; Perform Addition
E084: A9 5C     LDA #$5C
E086: A0 00     LDY #$00
E088: C6 67     DEC $67       ; Pointer: Series Evaluation Constant
E08A: D0 E4     BNE $E070
E08C: 60        RTS



 $E08D/57485:   Constants for RND - c64ref 

E08D: 98 35 44 7A 00 68 28 B1
E095: 46 00



 $E097/57495:   Evaluate <rnd> - c64ref 

E097: 20 2B BC  JSR $BC2B     ; Check Sign of FAC#1
E09A: 30 37     BMI $E0D3
E09C: D0 20     BNE $E0BE
E09E: 20 F3 FF  JSR $FFF3     ; Return I/O Base Address
E0A1: 86 22     STX $22       ; Second Utility Pointer
E0A3: 84 23     STY $23       ; Second Utility Pointer
E0A5: A0 04     LDY #$04
E0A7: B1 22     LDA ($22),Y   ; Second Utility Pointer
E0A9: 85 62     STA $62       ; FAC Mantissa
E0AB: C8        INY
E0AC: B1 22     LDA ($22),Y   ; Second Utility Pointer
E0AE: 85 64     STA $64       ; FAC Mantissa
E0B0: A0 08     LDY #$08
E0B2: B1 22     LDA ($22),Y   ; Second Utility Pointer
E0B4: 85 63     STA $63       ; FAC Mantissa
E0B6: C8        INY
E0B7: B1 22     LDA ($22),Y   ; Second Utility Pointer
E0B9: 85 65     STA $65       ; FAC Mantissa
E0BB: 4C E3 E0  JMP $E0E3

Jump from $E09C:

E0BE: A9 8B     LDA #$8B
E0C0: A0 00     LDY #$00
E0C2: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
E0C5: A9 8D     LDA #$8D
E0C7: A0 E0     LDY #$E0
E0C9: 20 28 BA  JSR $BA28     ; Perform Multiply
E0CC: A9 92     LDA #$92
E0CE: A0 E0     LDY #$E0
E0D0: 20 67 B8  JSR $B867     ; Perform Addition

Jump from $E09A:

E0D3: A6 65     LDX $65       ; FAC Mantissa
E0D5: A5 62     LDA $62       ; FAC Mantissa
E0D7: 85 65     STA $65       ; FAC Mantissa
E0D9: 86 62     STX $62       ; FAC Mantissa
E0DB: A6 63     LDX $63       ; FAC Mantissa
E0DD: A5 64     LDA $64       ; FAC Mantissa
E0DF: 85 63     STA $63       ; FAC Mantissa
E0E1: 86 64     STX $64       ; FAC Mantissa

Jump from $E0BB:

E0E3: A9 00     LDA #$00
E0E5: 85 66     STA $66       ; FAC Sign
E0E7: A5 61     LDA $61       ; FAC Exponent
E0E9: 85 70     STA $70       ; FAC low-order rounding
E0EB: A9 80     LDA #$80
E0ED: 85 61     STA $61       ; FAC Exponent
E0EF: 20 D7 B8  JSR $B8D7     ; Perform Addition
E0F2: A2 8B     LDX #$8B
E0F4: A0 00     LDY #$00

Jump from $E2C2:

E0F6: 4C D4 BB  JMP $BBD4     ; Store FAC#1 in Memory



 $E0F9/57593:   Handle I/O Error in BASIC - c64ref 

Jump from $E10F, $E115, $E11B, $E121, $E127, $E162, $E1D1:

E0F9: C9 F0     CMP #$F0
E0FB: D0 07     BNE $E104
E0FD: 84 38     STY $38       ; Pointer: Highest Address available to BASIC
E0FF: 86 37     STX $37       ; Pointer: Highest Address available to BASIC
E101: 4C 63 A6  JMP $A663     ; Perform [clr]

Jump from $E0FB:

E104: AA        TAX
E105: D0 02     BNE $E109
E107: A2 1E     LDX #$1E

Jump from $E105:

E109: 4C 37 A4  JMP $A437     ; Error Routine



 $E10C/57612:   Output Character - c64ref 

Jump from $AB47:

E10C: 20 D2 FF  JSR $FFD2     ; Output Vector, chrout
E10F: B0 E8     BCS $E0F9     ; Handle I/O Error in BASIC
E111: 60        RTS



 $E112/57618:   Input Character - c64ref 

Jump from $A562:

E112: 20 CF FF  JSR $FFCF     ; Input Vector, chrin
E115: B0 E2     BCS $E0F9     ; Handle I/O Error in BASIC
E117: 60        RTS



 $E118/57624:   Set Up For Output - c64ref 

Jump from $AA93:

E118: 20 AD E4  JSR $E4AD     ; Patch for BASIC Call to CHKOUT
E11B: B0 DC     BCS $E0F9     ; Handle I/O Error in BASIC
E11D: 60        RTS



 $E11E/57630:   Set Up For Input - c64ref 

Jump from $AB8F, $ABAF:

E11E: 20 C6 FF  JSR $FFC6     ; Set Input
E121: B0 D6     BCS $E0F9     ; Handle I/O Error in BASIC
E123: 60        RTS



 $E124/57636:   Get One Character - c64ref 

Jump from $AC35:

E124: 20 E4 FF  JSR $FFE4     ; Get From Keyboad
E127: B0 D0     BCS $E0F9     ; Handle I/O Error in BASIC
E129: 60        RTS



 $E12A/57642:   Perform [sys] - c64ref 

E12A: 20 8A AD  JSR $AD8A     ; Confirm Result
E12D: 20 F7 B7  JSR $B7F7     ; Convert FAC#1 to Integer in LINNUM
E130: A9 E1     LDA #$E1
E132: 48        PHA
E133: A9 46     LDA #$46
E135: 48        PHA
E136: AD 0F 03  LDA $030F     ; Storage for 6510 Status Register during SYS
E139: 48        PHA
E13A: AD 0C 03  LDA $030C     ; Storage for 6510 Accumulator during SYS
E13D: AE 0D 03  LDX $030D     ; Storage for 6510 X-Register during SYS
E140: AC 0E 03  LDY $030E     ; Storage for 6510 Y-Register during SYS
E143: 28        PLP
E144: 6C 14 00  JMP ($0014)   ; Temporary: Integer value
E147: 08        PHP
E148: 8D 0C 03  STA $030C     ; Storage for 6510 Accumulator during SYS
E14B: 8E 0D 03  STX $030D     ; Storage for 6510 X-Register during SYS
E14E: 8C 0E 03  STY $030E     ; Storage for 6510 Y-Register during SYS
E151: 68        PLA
E152: 8D 0F 03  STA $030F     ; Storage for 6510 Status Register during SYS
E155: 60        RTS



 $E156/57686:   Perform [save] - c64ref 

E156: 20 D4 E1  JSR $E1D4     ; Get Parameters For LOAD/SAVE
E159: A6 2D     LDX $2D       ; Pointer: Start of BASIC Variables
E15B: A4 2E     LDY $2E       ; Pointer: Start of BASIC Variables
E15D: A9 2B     LDA #$2B
E15F: 20 D8 FF  JSR $FFD8     ; Save RAM To Device
E162: B0 95     BCS $E0F9     ; Handle I/O Error in BASIC
E164: 60        RTS



 $E165/57701:   Perform [verify] - c64ref 

E165: A9 01     LDA #$01
E167: 2C        .BYTE $2C



 $E168/57704:   Perform [load] - c64ref 

E168: A9 00     LDA #$00
E16A: 85 0A     STA $0A       ; Load/Verify-Flag
E16C: 20 D4 E1  JSR $E1D4     ; Get Parameters For LOAD/SAVE
E16F: A5 0A     LDA $0A       ; Load/Verify-Flag
E171: A6 2B     LDX $2B       ; Pointer: Start of BASIC Text Area
E173: A4 2C     LDY $2C       ; Pointer: Start of BASIC Text Area
E175: 20 D5 FF  JSR $FFD5     ; Load RAM From Device
E178: B0 57     BCS $E1D1     ; Perform [close]
E17A: A5 0A     LDA $0A       ; Load/Verify-Flag
E17C: F0 17     BEQ $E195
E17E: A2 1C     LDX #$1C
E180: 20 B7 FF  JSR $FFB7     ; Read I/O Status Word
E183: 29 10     AND #$10
E185: D0 17     BNE $E19E
E187: A5 7A     LDA $7A       ; Pointer: Current Byte of BASIC Text
E189: C9 02     CMP #$02
E18B: F0 07     BEQ $E194
E18D: A9 64     LDA #$64
E18F: A0 A3     LDY #$A3
E191: 4C 1E AB  JMP $AB1E     ; Output String

Jump from $E18B, $E1CF:

E194: 60        RTS

Jump from $E17C:

E195: 20 B7 FF  JSR $FFB7     ; Read I/O Status Word
E198: 29 BF     AND #$BF
E19A: F0 05     BEQ $E1A1
E19C: A2 1D     LDX #$1D

Jump from $E185:

E19E: 4C 37 A4  JMP $A437     ; Error Routine

Jump from $E19A:

E1A1: A5 7B     LDA $7B       ; Pointer: Current Byte of BASIC Text
E1A3: C9 02     CMP #$02
E1A5: D0 0E     BNE $E1B5
E1A7: 86 2D     STX $2D       ; Pointer: Start of BASIC Variables
E1A9: 84 2E     STY $2E       ; Pointer: Start of BASIC Variables
E1AB: A9 76     LDA #$76
E1AD: A0 A3     LDY #$A3
E1AF: 20 1E AB  JSR $AB1E     ; Output String
E1B2: 4C 2A A5  JMP $A52A     ; Insert BASIC Text

Jump from $E1A5:

E1B5: 20 8E A6  JSR $A68E     ; Reset TXTPTR
E1B8: 20 33 A5  JSR $A533     ; Rechain Lines
E1BB: 4C 77 A6  JMP $A677     ; Perform [clr]



 $E1BE/57790:   Perform [open] - c64ref 

E1BE: 20 19 E2  JSR $E219     ; Get Parameters For OPEN/CLOSE
E1C1: 20 C0 FF  JSR $FFC0     ; Open Vector
E1C4: B0 0B     BCS $E1D1     ; Perform [close]
E1C6: 60        RTS



 $E1C7/57799:   Perform [close] - c64ref 

E1C7: 20 19 E2  JSR $E219     ; Get Parameters For OPEN/CLOSE
E1CA: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
E1CC: 20 C3 FF  JSR $FFC3     ; Close Vector
E1CF: 90 C3     BCC $E194     ; Perform [load]

Jump from $E178, $E1C4:

E1D1: 4C F9 E0  JMP $E0F9     ; Handle I/O Error in BASIC



 $E1D4/57812:   Get Parameters For LOAD/SAVE - c64ref 

Jump from $E156, $E16C:

E1D4: A9 00     LDA #$00
E1D6: 20 BD FF  JSR $FFBD     ; Set Filename
E1D9: A2 08     LDX #$08
E1DB: A0 00     LDY #$00
E1DD: 20 BA FF  JSR $FFBA     ; Set Logical File Parameters
E1E0: 20 06 E2  JSR $E206     ; Check Default Parameters
E1E3: 20 57 E2  JSR $E257     ; Get Parameters For OPEN/CLOSE
E1E6: 20 06 E2  JSR $E206     ; Check Default Parameters
E1E9: 20 00 E2  JSR $E200     ; Get Next One Byte Parameter
E1EC: A0 00     LDY #$00
E1EE: 86 49     STX $49       ; Pointer: Index Variable for FOR/NEXT loop
E1F0: 20 BA FF  JSR $FFBA     ; Set Logical File Parameters
E1F3: 20 06 E2  JSR $E206     ; Check Default Parameters
E1F6: 20 00 E2  JSR $E200     ; Get Next One Byte Parameter
E1F9: 8A        TXA
E1FA: A8        TAY
E1FB: A6 49     LDX $49       ; Pointer: Index Variable for FOR/NEXT loop
E1FD: 4C BA FF  JMP $FFBA     ; Set Logical File Parameters



 $E200/57856:   Get Next One Byte Parameter - c64ref 

Jump from $E1E9, $E1F6, $E231, $E245:

E200: 20 0E E2  JSR $E20E     ; Check For Comma
E203: 4C 9E B7  JMP $B79E     ; Evaluate Text to 1 Byte in XR



 $E206/57862:   Check Default Parameters - c64ref 

Jump from $E1E0, $E1E6, $E1F3, $E22E, $E242, $E251:

E206: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
E209: D0 02     BNE $E20D
E20B: 68        PLA
E20C: 68        PLA

Jump from $E209, $E214:

E20D: 60        RTS



 $E20E/57870:   Check For Comma - c64ref 

Jump from $E200, $E254:

E20E: 20 FD AE  JSR $AEFD     ; Test ','

Jump from $E21E:

E211: 20 79 00  JSR $0079     ; CHRGOT: Get same Byte again
E214: D0 F7     BNE $E20D     ; Check Default Parameters
E216: 4C 08 AF  JMP $AF08     ; Output ?SYNTAX Error



 $E219/57881:   Get Parameters For OPEN/CLOSE - c64ref 

Jump from $E1BE, $E1C7:

E219: A9 00     LDA #$00
E21B: 20 BD FF  JSR $FFBD     ; Set Filename
E21E: 20 11 E2  JSR $E211     ; Check For Comma
E221: 20 9E B7  JSR $B79E     ; Evaluate Text to 1 Byte in XR
E224: 86 49     STX $49       ; Pointer: Index Variable for FOR/NEXT loop
E226: 8A        TXA
E227: A2 01     LDX #$01
E229: A0 00     LDY #$00
E22B: 20 BA FF  JSR $FFBA     ; Set Logical File Parameters
E22E: 20 06 E2  JSR $E206     ; Check Default Parameters
E231: 20 00 E2  JSR $E200     ; Get Next One Byte Parameter
E234: 86 4A     STX $4A       ; Pointer: Index Variable for FOR/NEXT loop
E236: A0 00     LDY #$00
E238: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
E23A: E0 03     CPX #$03
E23C: 90 01     BCC $E23F
E23E: 88        DEY

Jump from $E23C:

E23F: 20 BA FF  JSR $FFBA     ; Set Logical File Parameters
E242: 20 06 E2  JSR $E206     ; Check Default Parameters
E245: 20 00 E2  JSR $E200     ; Get Next One Byte Parameter
E248: 8A        TXA
E249: A8        TAY
E24A: A6 4A     LDX $4A       ; Pointer: Index Variable for FOR/NEXT loop
E24C: A5 49     LDA $49       ; Pointer: Index Variable for FOR/NEXT loop
E24E: 20 BA FF  JSR $FFBA     ; Set Logical File Parameters
E251: 20 06 E2  JSR $E206     ; Check Default Parameters
E254: 20 0E E2  JSR $E20E     ; Check For Comma

Jump from $E1E3:

E257: 20 9E AD  JSR $AD9E     ; Evaluate Expression in Text
E25A: 20 A3 B6  JSR $B6A3     ; Perform String Housekeeping
E25D: A6 22     LDX $22       ; Second Utility Pointer
E25F: A4 23     LDY $23       ; Second Utility Pointer
E261: 4C BD FF  JMP $FFBD     ; Set Filename



 $E264/57956:   Evaluate <cos> - c64ref 

E264: A9 E0     LDA #$E0
E266: A0 E2     LDY #$E2
E268: 20 67 B8  JSR $B867     ; Perform Addition



 $E26B/57963:   Evaluate <sin> - c64ref 

Jump from $E2BB:

E26B: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
E26E: A9 E5     LDA #$E5
E270: A0 E2     LDY #$E2
E272: A6 6E     LDX $6E       ; AFAC Sign
E274: 20 07 BB  JSR $BB07     ; Divide FAC#2 by Flpt at (AC/YR)
E277: 20 0C BC  JSR $BC0C     ; Copy FAC#1 into FAC#2
E27A: 20 CC BC  JSR $BCCC     ; Evaluate <int>
E27D: A9 00     LDA #$00
E27F: 85 6F     STA $6F       ; Sign of result of Arithmetic Evaluation
E281: 20 53 B8  JSR $B853     ; Perform Subtraction
E284: A9 EA     LDA #$EA
E286: A0 E2     LDY #$E2
E288: 20 50 B8  JSR $B850     ; Perform Subtraction
E28B: A5 66     LDA $66       ; FAC Sign
E28D: 48        PHA
E28E: 10 0D     BPL $E29D
E290: 20 49 B8  JSR $B849     ; Add 0.5 to FAC#1
E293: A5 66     LDA $66       ; FAC Sign
E295: 30 09     BMI $E2A0
E297: A5 12     LDA $12       ; Flag: TAN sign/Comparative result
E299: 49 FF     EOR #$FF
E29B: 85 12     STA $12       ; Flag: TAN sign/Comparative result

Jump from $E28E, $E2DD:

E29D: 20 B4 BF  JSR $BFB4     ; Negate FAC#1

Jump from $E295:

E2A0: A9 EA     LDA #$EA
E2A2: A0 E2     LDY #$E2
E2A4: 20 67 B8  JSR $B867     ; Perform Addition
E2A7: 68        PLA
E2A8: 10 03     BPL $E2AD
E2AA: 20 B4 BF  JSR $BFB4     ; Negate FAC#1

Jump from $E2A8:

E2AD: A9 EF     LDA #$EF
E2AF: A0 E2     LDY #$E2
E2B1: 4C 43 E0  JMP $E043     ; Series Evaluation



 $E2B4/58036:   Evaluate <tan> - c64ref 

E2B4: 20 CA BB  JSR $BBCA     ; Store FAC#1 in Memory
E2B7: A9 00     LDA #$00
E2B9: 85 12     STA $12       ; Flag: TAN sign/Comparative result
E2BB: 20 6B E2  JSR $E26B     ; Evaluate <sin>
E2BE: A2 4E     LDX #$4E
E2C0: A0 00     LDY #$00
E2C2: 20 F6 E0  JSR $E0F6     ; Evaluate <rnd>
E2C5: A9 57     LDA #$57
E2C7: A0 00     LDY #$00
E2C9: 20 A2 BB  JSR $BBA2     ; Load FAC#1 From Memory
E2CC: A9 00     LDA #$00
E2CE: 85 66     STA $66       ; FAC Sign
E2D0: A5 12     LDA $12       ; Flag: TAN sign/Comparative result
E2D2: 20 DC E2  JSR $E2DC
E2D5: A9 4E     LDA #$4E
E2D7: A0 00     LDY #$00
E2D9: 4C 0F BB  JMP $BB0F     ; Divide FAC#2 by FAC#1

Jump from $E2D2:

E2DC: 48        PHA
E2DD: 4C 9D E2  JMP $E29D     ; Evaluate <sin>



 $E2E0/58080:   Table of Trig Constants   1.570796327 - c64ref 

E2E0: 81 49 0F DA A2



 $E2E5/58085:   Table of Trig Constants   6.28318531 - c64ref 

E2E5: 83 49 0F DA A2



 $E2EA/58090:   Table of Trig Constants   0.25 - c64ref 

E2EA: 7F 00 00 00 00



 $E2EF/58095:   Table of Trig Constants   #05 - c64ref 

E2EF: 05



 $E2F0/58096:   Table of Trig Constants   -14.3813907 - c64ref 

E2F0: 84 E6 1A 2D 1B



 $E2F5/58101:   Table of Trig Constants   42.0077971 - c64ref 

E2F5: 86 28 07 FB F8



 $E2FA/58106:   Table of Trig Constants   -76.7041703 - c64ref 

E2FA: 87 99 68 89 01



 $E2FF/58111:   Table of Trig Constants   81.6052237 - c64ref 

E2FF: 87 23 35 DF E1



 $E304/58116:   Table of Trig Constants   -41.3417021 - c64ref 

E304: 86 A5 5D E7 28



 $E309/58121:   Table of Trig Constants   6.28318531 - c64ref 

E309: 83 49 0F DA A2



 $E30E/58126:   Evaluate <atn> - c64ref 

E30E: A5 66     LDA $66       ; FAC Sign
E310: 48        PHA
E311: 10 03     BPL $E316
E313: 20 B4 BF  JSR $BFB4     ; Negate FAC#1

Jump from $E311:

E316: A5 61     LDA $61       ; FAC Exponent
E318: 48        PHA
E319: C9 81     CMP #$81
E31B: 90 07     BCC $E324
E31D: A9 BC     LDA #$BC
E31F: A0 B9     LDY #$B9
E321: 20 0F BB  JSR $BB0F     ; Divide FAC#2 by FAC#1

Jump from $E31B:

E324: A9 3E     LDA #$3E
E326: A0 E3     LDY #$E3
E328: 20 43 E0  JSR $E043     ; Series Evaluation
E32B: 68        PLA
E32C: C9 81     CMP #$81
E32E: 90 07     BCC $E337
E330: A9 E0     LDA #$E0
E332: A0 E2     LDY #$E2
E334: 20 50 B8  JSR $B850     ; Perform Subtraction

Jump from $E32E:

E337: 68        PLA
E338: 10 03     BPL $E33D
E33A: 4C B4 BF  JMP $BFB4     ; Negate FAC#1

Jump from $E338:

E33D: 60        RTS



 $E33E/58174:   Table of ATN Constants   #0b - c64ref 

E33E: 0B



 $E33F/58175:   Table of ATN Constants   -0.00068479391 - c64ref 

E33F: 76 B3 83 BD D3



 $E344/58180:   Table of ATN Constants   0.00485094216 - c64ref 

E344: 79 1E F4 A6 F5



 $E349/58185:   Table of ATN Constants   -0.161117018 - c64ref 

E349: 7B 83 FC B0 10



 $E34E/58190:   Table of ATN Constants   0.034209638 - c64ref 

E34E: 7C 0C 1F 67 CA



 $E353/58195:   Table of ATN Constants   -0.0542791328 - c64ref 

E353: 7C DE 53 CB C1



 $E358/58200:   Table of ATN Constants   0.0724571965 - c64ref 

E358: 7D 14 64 70 4C



 $E35D/58205:   Table of ATN Constants   -0.0898023954 - c64ref 

E35D: 7D B7 EA 51 7A



 $E362/58210:   Table of ATN Constants   0.110932413 - c64ref 

E362: 7D 63 30 88 7E



 $E367/58215:   Table of ATN Constants   -0.142839808 - c64ref 

E367: 7E 92 44 99 3A



 $E36C/58220:   Table of ATN Constants   0.19999912 - c64ref 

E36C: 7E 4C CC 91 C7



 $E371/58225:   Table of ATN Constants   -0.333333316 - c64ref 

E371: 7F AA AA AA 13



 $E376/58230:   Table of ATN Constants   1.00 - c64ref 

E376: 81 00 00 00 00



 $E37B/58235:   BASIC Warm Start [RUNSTOP-RESTORE] - c64ref 

E37B: 20 CC FF  JSR $FFCC     ; Restore I/O Vector
E37E: A9 00     LDA #$00
E380: 85 13     STA $13       ; File number of current Input Device
E382: 20 7A A6  JSR $A67A     ; Perform [clr]
E385: 58        CLI

Jump from $A714, $A854, $E3A0:

E386: A2 80     LDX #$80
E388: 6C 00 03  JMP ($0300)   ; Vector: BASIC Error Message
E38B: 8A        TXA
E38C: 30 03     BMI $E391
E38E: 4C 3A A4  JMP $A43A     ; Error Routine

Jump from $E38C:

E391: 4C 74 A4  JMP $A474     ; Restart BASIC



 $E394/58260:   BASIC Cold Start - c64ref 

E394: 20 53 E4  JSR $E453     ; Initialize Vectors
E397: 20 BF E3  JSR $E3BF     ; Initialize BASIC RAM
E39A: 20 22 E4  JSR $E422     ; Output Power-Up Message
E39D: A2 FB     LDX #$FB
E39F: 9A        TXS
E3A0: D0 E4     BNE $E386     ; BASIC Warm Start [RUNSTOP-RESTORE]



 $E3A2/58274:   CHRGET For Zero-page - c64ref 

Jump from $E3B1:

E3A2: E6 7A     INC $7A       ; Pointer: Current Byte of BASIC Text
E3A4: D0 02     BNE $E3A8
E3A6: E6 7B     INC $7B       ; Pointer: Current Byte of BASIC Text

Jump from $E3A4:

E3A8: AD 60 EA  LDA $EA60     ; Main IRQ Entry Point
E3AB: C9 3A     CMP #$3A
E3AD: B0 0A     BCS $E3B9
E3AF: C9 20     CMP #$20
E3B1: F0 EF     BEQ $E3A2
E3B3: 38        SEC
E3B4: E9 30     SBC #$30
E3B6: 38        SEC
E3B7: E9 D0     SBC #$D0

Jump from $E3AD:

E3B9: 60        RTS


Kernal-Reference:

 LDA $E3A2,X : $E3E2


 $E3BA/58298:   RND Seed For zero-page - c64ref 

E3BA: 80 4F C7 52 58



 $E3BF/58303:   Initialize BASIC RAM - c64ref 

Jump from $E397:

E3BF: A9 4C     LDA #$4C
E3C1: 85 54     STA $54       ; Jump Vector used in Function Evaluation
E3C3: 8D 10 03  STA $0310     ; USR Function JMP Instruction
E3C6: A9 48     LDA #$48
E3C8: A0 B2     LDY #$B2
E3CA: 8D 11 03  STA $0311     ; USR Address
E3CD: 8C 12 03  STY $0312     ; USR Address
E3D0: A9 91     LDA #$91
E3D2: A0 B3     LDY #$B3
E3D4: 85 05     STA $05       ; Jump Vector: Convert Integer to Floating point
E3D6: 84 06     STY $06       ; Jump Vector: Convert Integer to Floating point
E3D8: A9 AA     LDA #$AA
E3DA: A0 B1     LDY #$B1
E3DC: 85 03     STA $03       ; Jump Vector: Convert FAC to Integer
E3DE: 84 04     STY $04       ; Jump Vector: Convert FAC to Integer
E3E0: A2 1C     LDX #$1C

Jump from $E3E8:

E3E2: BD A2 E3  LDA $E3A2,X   ; CHRGET For Zero-page
E3E5: 95 73     STA $73,X     ; CHRGET: Get next Byte of BASIC Text
E3E7: CA        DEX
E3E8: 10 F8     BPL $E3E2
E3EA: A9 03     LDA #$03
E3EC: 85 53     STA $53       ; Length of String during Garbage collection
E3EE: A9 00     LDA #$00
E3F0: 85 68     STA $68       ; Bit Overflow Area during normalisation Routine
E3F2: 85 13     STA $13       ; File number of current Input Device
E3F4: 85 18     STA $18       ; Last temporary String Address
E3F6: A2 01     LDX #$01
E3F8: 8E FD 01  STX $01FD     ; BASIC Stack Area
E3FB: 8E FC 01  STX $01FC     ; BASIC Stack Area
E3FE: A2 19     LDX #$19
E400: 86 16     STX $16       ; Pointer: Temporary String Stack
E402: 38        SEC
E403: 20 9C FF  JSR $FF9C     ; Set/Read System RAM Bottom
E406: 86 2B     STX $2B       ; Pointer: Start of BASIC Text Area
E408: 84 2C     STY $2C       ; Pointer: Start of BASIC Text Area
E40A: 38        SEC
E40B: 20 99 FF  JSR $FF99     ; Set/Read System RAM Top
E40E: 86 37     STX $37       ; Pointer: Highest Address available to BASIC
E410: 84 38     STY $38       ; Pointer: Highest Address available to BASIC
E412: 86 33     STX $33       ; Pointer: Bottom of String space
E414: 84 34     STY $34       ; Pointer: Bottom of String space
E416: A0 00     LDY #$00
E418: 98        TYA
E419: 91 2B     STA ($2B),Y   ; Pointer: Start of BASIC Text Area
E41B: E6 2B     INC $2B       ; Pointer: Start of BASIC Text Area
E41D: D0 02     BNE $E421
E41F: E6 2C     INC $2C       ; Pointer: Start of BASIC Text Area

Jump from $E41D:

E421: 60        RTS



 $E422/58402:   Output Power-Up Message - c64ref 

Jump from $E39A:

E422: A5 2B     LDA $2B       ; Pointer: Start of BASIC Text Area
E424: A4 2C     LDY $2C       ; Pointer: Start of BASIC Text Area
E426: 20 08 A4  JSR $A408     ; Check Memory Overlap
E429: A9 73     LDA #$73
E42B: A0 E4     LDY #$E4
E42D: 20 1E AB  JSR $AB1E     ; Output String
E430: A5 37     LDA $37       ; Pointer: Highest Address available to BASIC
E432: 38        SEC
E433: E5 2B     SBC $2B       ; Pointer: Start of BASIC Text Area
E435: AA        TAX
E436: A5 38     LDA $38       ; Pointer: Highest Address available to BASIC
E438: E5 2C     SBC $2C       ; Pointer: Start of BASIC Text Area
E43A: 20 CD BD  JSR $BDCD     ; Output Positive Integer in A/X
E43D: A9 60     LDA #$60
E43F: A0 E4     LDY #$E4
E441: 20 1E AB  JSR $AB1E     ; Output String
E444: 4C 44 A6  JMP $A644     ; Perform [new]



 $E447/58439:   Table of BASIC Vectors (for 0300) - c64ref 

E447: 8B E3 83 A4 7C A5 1A A7    $E38B,$A483,$A57C,$A71A
E44F: E4 A7 86 AE                $A7E4,$AE86


Kernal-Reference:

 LDA $E447,X : $E455


 $E453/58451:   Initialize Vectors - c64ref 

Jump from $E394:

E453: A2 0B     LDX #$0B

Jump from $E45C:

E455: BD 47 E4  LDA $E447,X   ; Table of BASIC Vectors (for 0300)
E458: 9D 00 03  STA $0300,X   ; Vector: BASIC Error Message
E45B: CA        DEX
E45C: 10 F7     BPL $E455
E45E: 60        RTS



 $E45F/58463:   Power-Up Message - c64ref 

E45F: 00 20 42 41 53 49 43 20    '{0} BASIC '
E467: 42 59 54 45 53 20 46 52    'BYTES FR'
E46F: 45 45 0D 00 93 0D 20 20    'EE{CR}{0}{CLR}{CR}  '
E477: 20 20 2A 2A 2A 2A 20 43    '  **** C'
E47F: 4F 4D 4D 4F 44 4F 52 45    'OMMODORE'
E487: 20 36 34 20 42 41 53 49    ' 64 BASI'
E48F: 43 20 56 32 20 2A 2A 2A    'C V2 ***'
E497: 2A 0D 0D 20 36 34 4B 20    '*{CR}{CR} 64K '
E49F: 52 41 4D 20 53 59 53 54    'RAM SYST'
E4A7: 45 4D 20 20 00             'EM  {0}'

* SX64:
E477: 20 20 20 2A 2A 2A 2A 4A    '   *****'
E47F: 20 20 53 58 2D 36 34 20    '  SX-64 '
E487: 42 41 53 49 43 20 56 32    'BASIC V2'
E48F: 2E 30 20 20 2A 2A 2A 2A    '.0  ****'
E497: 2A 0D                      '*{CR}'



 $E4AC/58540:   Version Number(?) - c64ref 

E4AC: 5C = Revision 2 (old)
      81 = Revision 3 (new)
      B3 = SX64



 $E4AD/58541:   Patch for BASIC Call to CHKOUT - c64ref 

Jump from $E118:

E4AD: 48        PHA
E4AE: 20 C9 FF  JSR $FFC9     ; Set Output
E4B1: AA        TAX
E4B2: 68        PLA
E4B3: 90 01     BCC $E4B6
E4B5: 8A        TXA

Jump from $E4B3:

E4B6: 60        RTS



 $E4B7/58551:   Unused Bytes For Future Patches - c64ref 

E4B7: AA AA AA AA AA AA AA AA
E4BF: AA AA AA AA AA AA AA AA
E4C7: AA AA AA AA AA AA AA AA
E4CF: AA AA AA AA



 $E4D3/58579:   Patch for RS232-Routines

Jump from $EF94:

E4D3: 85 A9     STA $A9       ; RS232 Flag: Start Bit check/Tape temporary
E4D5: A9 01     LDA #$01
E4D7: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary
E4D9: 60        RTS

* Old KERNAL:
E4D3: AA AA AA AA AA AA AA



 $E4DA/58586:   Reset Character Color - c64ref 

Jump from $EA07:

E4DA: AD 86 02  LDA $0286     ; Current Character Color code
* Old KERNAL:
E4DA: AD 21 D0  LDA $D021     ; VIC: Background Color 0

E4DD: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E4DF: 60        RTS



 $E4E0/58592:   Pause After Finding Tape File - c64ref 

Jump from $F763:

E4E0: 69 02     ADC #$02

Jump from $E4E9:

E4E2: A4 91     LDY $91       ; Flag: $7F = STOP key
E4E4: C8        INY
E4E5: D0 04     BNE $E4EB
E4E7: C5 A1     CMP $A1       ; Real-time jiffy Clock
E4E9: D0 F7     BNE $E4E2

Jump from $E4E5:

E4EB: 60        RTS


Kernal-Reference:

 LDA $E4EA,X : $F43D

 LDY $E4EB,X : $F43A


 $E4EC/58604:   RS232 Timing Table -- PAL - c64ref 

E4EC: 19 26 44 19 1A 11 E8 0D
E4F4: 70 0C 06 06 D1 02 37 01
E4FC: AE 00 69 00



 $E500/58624:   Get I/O Address - c64ref 

Jump from $FFF3:

E500: A2 00     LDX #$00
E502: A0 DC     LDY #$DC
E504: 60        RTS



 $E505/58629:   Get Screen Size - c64ref 

Jump from $FFED:

E505: A2 28     LDX #$28
E507: A0 19     LDY #$19
E509: 60        RTS



 $E50A/58634:   Put / Get Row And Column - c64ref 

Jump from $FFF0:

E50A: B0 07     BCS $E513
E50C: 86 D6     STX $D6       ; Current Screen Line number of Cursor
E50E: 84 D3     STY $D3       ; Cursor Column on current Line
E510: 20 6C E5  JSR $E56C     ; Set Screen Pointers

Jump from $E50A:

E513: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E515: A4 D3     LDY $D3       ; Cursor Column on current Line
E517: 60        RTS



 $E518/58648:   Initialize I/O - c64ref 

Jump from $FE6C, $FF5B:

E518: 20 A0 E5  JSR $E5A0     ; Set I/O Defaults
E51B: A9 00     LDA #$00
E51D: 8D 91 02  STA $0291     ; Flag: Upper/Lower Case change
E520: 85 CF     STA $CF       ; Flag: Cursor Status
E522: A9 48     LDA #$48
E524: 8D 8F 02  STA $028F     ; Vector: Routine to determine Keyboard table
E527: A9 EB     LDA #$EB
E529: 8D 90 02  STA $0290     ; Vector: Routine to determine Keyboard table
E52C: A9 0A     LDA #$0A
E52E: 8D 89 02  STA $0289     ; Maximum number of Bytes in Keyboard Buffer
E531: 8D 8C 02  STA $028C     ; Repeat Key: First repeat delay Counter
E534: A9 0E     LDA #$0E
* SX64:
E534: A9 0E     LDA #$06

E536: 8D 86 02  STA $0286     ; Current Character Color code
E539: A9 04     LDA #$04
E53B: 8D 8B 02  STA $028B     ; Repeat Key: Speed Counter
E53E: A9 0C     LDA #$0C
E540: 85 CD     STA $CD       ; Timer: Count down for Cursor blink toggle
E542: 85 CC     STA $CC       ; Flag: Cursor blink



 $E544/58692:   Clear Screen - c64ref 

Jump from $E86E:

E544: AD 88 02  LDA $0288     ; High Byte of Screen Memory Address
E547: 09 80     ORA #$80
E549: A8        TAY
E54A: A9 00     LDA #$00
E54C: AA        TAX

Jump from $E558:

E54D: 94 D9     STY $D9,X     ; Screen Line Link Table
E54F: 18        CLC
E550: 69 28     ADC #$28
E552: 90 01     BCC $E555
E554: C8        INY

Jump from $E552:

E555: E8        INX
E556: E0 1A     CPX #$1A
E558: D0 F3     BNE $E54D
E55A: A9 FF     LDA #$FF
E55C: 95 D9     STA $D9,X     ; Screen Line Link Table
E55E: A2 18     LDX #$18

Jump from $E564:

E560: 20 FF E9  JSR $E9FF     ; Clear Screen Line
E563: CA        DEX
E564: 10 FA     BPL $E560



 $E566/58726:   Home Cursor - c64ref 

Jump from $E59D, $E78F:

E566: A0 00     LDY #$00
E568: 84 D3     STY $D3       ; Cursor Column on current Line
E56A: 84 D6     STY $D6       ; Current Screen Line number of Cursor



 $E56C/58732:   Set Screen Pointers - c64ref 

Jump from $E510, $E70E, $E847, $E88E:

E56C: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E56E: A5 D3     LDA $D3       ; Cursor Column on current Line

Jump from $E57A:

E570: B4 D9     LDY $D9,X     ; Screen Line Link Table
E572: 30 08     BMI $E57C
E574: 18        CLC
E575: 69 28     ADC #$28
E577: 85 D3     STA $D3       ; Cursor Column on current Line
E579: CA        DEX
E57A: 10 F4     BPL $E570

Jump from $E572:

E57C: 20 F0 E9  JSR $E9F0     ; Set Start of Line
E57F: A9 27     LDA #$27
E581: E8        INX

Jump from $E58A:

E582: B4 D9     LDY $D9,X     ; Screen Line Link Table
E584: 30 06     BMI $E58C
E586: 18        CLC
E587: 69 28     ADC #$28
E589: E8        INX
E58A: 10 F6     BPL $E582

Jump from $E584:

E58C: 85 D5     STA $D5       ; Current logical Line length: 39 or 79
E58E: 4C 24 EA  JMP $EA24     ; Syncronise Color Pointer

Jump from $E621:

E591: E4 C9     CPX $C9       ; Cursor X/Y position at start of Input
E593: F0 03     BEQ $E598
E595: 4C ED E6  JMP $E6ED     ; Retreat Cursor

Jump from $E593:

E598: 60        RTS
E599: EA        NOP

* Old KERNAL:
E57C: B5 D9     LDA $D9,X     ; Screen Line Link Table
E57E: 29 03     AND #$03
E580: 0D 88 02  ORA $0288     ; High Byte of Screen Memory Address
E583: 85 D2     STA $D2       ; Pointer: Current Screen Line Address
E585: BD F0 EC  LDA $ECF0,X   ; Low Byte Screen Line Addresses
E588: 85 D1     STA $D1       ; Pointer: Current Screen Line Address
E58A: A9 27     LDA #$27
E58C: E8        INX

Jump from $E595:

E58D: B4 D9     LDY $D9,X     ; Screen Line Link Table
E58F: 30 06     BMI $E597
E591: 18        CLC
E592: 69 28     ADC #$28
E594: E8        INX
E595: 10 F6     BPL $E58D

Jump from $E58F:

E597: 85 D5     STA $D5       ; Current logical Line length: 39 or 79
E599: 60        RTS



 $E59A/58778:   Set I/O Defaults (Unused Entry) - c64ref 

E59A: 20 A0 E5  JSR $E5A0     ; Set I/O Defaults
E59D: 4C 66 E5  JMP $E566     ; Home Cursor



 $E5A0/58784:   Set I/O Defaults - c64ref 

Jump from $E518, $E59A:

E5A0: A9 03     LDA #$03
E5A2: 85 9A     STA $9A       ; Default Output Device (3)
E5A4: A9 00     LDA #$00
E5A6: 85 99     STA $99       ; Default Input Device (0)
E5A8: A2 2F     LDX #$2F

Jump from $E5B1:

E5AA: BD B8 EC  LDA $ECB8,X   ; Keyboard 4 -- Control
E5AD: 9D FF CF  STA $CFFF,X
E5B0: CA        DEX
E5B1: D0 F7     BNE $E5AA
E5B3: 60        RTS



 $E5B4/58804:   Get Character From Keyboard Buffer - c64ref 

Jump from $E5E7, $F147:

E5B4: AC 77 02  LDY $0277     ; Keyboard Buffer Queue (FIFO)
E5B7: A2 00     LDX #$00

Jump from $E5C2:

E5B9: BD 78 02  LDA $0278,X   ; Keyboard Buffer Queue (FIFO)
E5BC: 9D 77 02  STA $0277,X   ; Keyboard Buffer Queue (FIFO)
E5BF: E8        INX
E5C0: E4 C6     CPX $C6       ; Number of Characters in Keyboard Buffer queue
E5C2: D0 F5     BNE $E5B9
E5C4: C6 C6     DEC $C6       ; Number of Characters in Keyboard Buffer queue
E5C6: 98        TYA
E5C7: 58        CLI
E5C8: 18        CLC
E5C9: 60        RTS



 $E5CA/58826:   Input From Keyboard - c64ref 

Jump from $E600:

E5CA: 20 16 E7  JSR $E716     ; Output to Screen

Jump from $E5D4, $E5FC, $E638:

E5CD: A5 C6     LDA $C6       ; Number of Characters in Keyboard Buffer queue
E5CF: 85 CC     STA $CC       ; Flag: Cursor blink
E5D1: 8D 92 02  STA $0292     ; Flag: Auto scroll down
E5D4: F0 F7     BEQ $E5CD
E5D6: 78        SEI
E5D7: A5 CF     LDA $CF       ; Flag: Cursor Status
E5D9: F0 0C     BEQ $E5E7
E5DB: A5 CE     LDA $CE       ; Character under Cursor while Cursor Inverted
E5DD: AE 87 02  LDX $0287     ; Background Color under Cursor
E5E0: A0 00     LDY #$00
E5E2: 84 CF     STY $CF       ; Flag: Cursor Status
E5E4: 20 13 EA  JSR $EA13     ; Print To Screen

Jump from $E5D9:

E5E7: 20 B4 E5  JSR $E5B4     ; Get Character From Keyboard Buffer
E5EA: C9 83     CMP #$83
E5EC: D0 10     BNE $E5FE
E5EE: A2 09     LDX #$09
* SX64:
E5EE: A2 09     LDX #$0F

E5F0: 78        SEI
E5F1: 86 C6     STX $C6       ; Number of Characters in Keyboard Buffer queue

Jump from $E5FA:

E5F3: BD E6 EC  LDA $ECE6,X   ; Video Chip Setup Table
* SX64:
E5F3: BD D7 F0  LDA $F0D7,X   ; Table of Kernal I/O Messages

E5F6: 9D 76 02  STA $0276,X   ; Active File Secondary Addresses
E5F9: CA        DEX
E5FA: D0 F7     BNE $E5F3
E5FC: F0 CF     BEQ $E5CD

Jump from $E5EC:

E5FE: C9 0D     CMP #$0D
E600: D0 C8     BNE $E5CA
E602: A4 D5     LDY $D5       ; Current logical Line length: 39 or 79
E604: 84 D0     STY $D0       ; Flag: Input from ...

Jump from $E60D:

E606: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
E608: C9 20     CMP #$20
E60A: D0 03     BNE $E60F
E60C: 88        DEY
E60D: D0 F7     BNE $E606

Jump from $E60A:

E60F: C8        INY
E610: 84 C8     STY $C8       ; Pointer: End of Line for Input
E612: A0 00     LDY #$00
E614: 8C 92 02  STY $0292     ; Flag: Auto scroll down
E617: 84 D3     STY $D3       ; Cursor Column on current Line
E619: 84 D4     STY $D4       ; Flag: Editor in Quote Mode
E61B: A5 C9     LDA $C9       ; Cursor X/Y position at start of Input
E61D: 30 1B     BMI $E63A     ; Input From Screen or Keyboard
E61F: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E621: 20 91 E5  JSR $E591     ; Set Screen Pointers
* Old KERNAL:
E621: 20 ED E6  JSR $E6ED     ; Retreat Cursor

E624: E4 C9     CPX $C9       ; Cursor X/Y position at start of Input
E626: D0 12     BNE $E63A     ; Input From Screen or Keyboard
E628: A5 CA     LDA $CA       ; Cursor X/Y position at start of Input
E62A: 85 D3     STA $D3       ; Cursor Column on current Line
E62C: C5 C8     CMP $C8       ; Pointer: End of Line for Input
E62E: 90 0A     BCC $E63A     ; Input From Screen or Keyboard
E630: B0 2B     BCS $E65D     ; Input From Screen or Keyboard



 $E632/58930:   Input From Screen or Keyboard - c64ref 

Jump from $F163, $F170:

E632: 98        TYA
E633: 48        PHA
E634: 8A        TXA
E635: 48        PHA
E636: A5 D0     LDA $D0       ; Flag: Input from ...
E638: F0 93     BEQ $E5CD     ; Input From Keyboard

Jump from $E61D, $E626, $E62E:

E63A: A4 D3     LDY $D3       ; Cursor Column on current Line
E63C: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
E63E: 85 D7     STA $D7       ; Current Input Character/Last Character Output
E640: 29 3F     AND #$3F
E642: 06 D7     ASL $D7       ; Current Input Character/Last Character Output
E644: 24 D7     BIT $D7       ; Current Input Character/Last Character Output
E646: 10 02     BPL $E64A
E648: 09 80     ORA #$80

Jump from $E646:

E64A: 90 04     BCC $E650
E64C: A6 D4     LDX $D4       ; Flag: Editor in Quote Mode
E64E: D0 04     BNE $E654

Jump from $E64A:

E650: 70 02     BVS $E654
E652: 09 40     ORA #$40

Jump from $E64E, $E650:

E654: E6 D3     INC $D3       ; Cursor Column on current Line
E656: 20 84 E6  JSR $E684     ; Quotes Test
E659: C4 C8     CPY $C8       ; Pointer: End of Line for Input
E65B: D0 17     BNE $E674

Jump from $E630:

E65D: A9 00     LDA #$00
E65F: 85 D0     STA $D0       ; Flag: Input from ...
E661: A9 0D     LDA #$0D
E663: A6 99     LDX $99       ; Default Input Device (0)
E665: E0 03     CPX #$03
E667: F0 06     BEQ $E66F
E669: A6 9A     LDX $9A       ; Default Output Device (3)
E66B: E0 03     CPX #$03
E66D: F0 03     BEQ $E672

Jump from $E667:

E66F: 20 16 E7  JSR $E716     ; Output to Screen

Jump from $E66D:

E672: A9 0D     LDA #$0D

Jump from $E65B:

E674: 85 D7     STA $D7       ; Current Input Character/Last Character Output
E676: 68        PLA
E677: AA        TAX
E678: 68        PLA
E679: A8        TAY
E67A: A5 D7     LDA $D7       ; Current Input Character/Last Character Output
E67C: C9 DE     CMP #$DE
E67E: D0 02     BNE $E682
E680: A9 FF     LDA #$FF

Jump from $E67E:

E682: 18        CLC
E683: 60        RTS



 $E684/59012:   Quotes Test - c64ref 

Jump from $E656, $E73F:

E684: C9 22     CMP #$22
E686: D0 08     BNE $E690
E688: A5 D4     LDA $D4       ; Flag: Editor in Quote Mode
E68A: 49 01     EOR #$01
E68C: 85 D4     STA $D4       ; Flag: Editor in Quote Mode
E68E: A9 22     LDA #$22

Jump from $E686:

E690: 60        RTS



 $E691/59025:   Set Up Screen Print - c64ref 

Jump from $E7E0:

E691: 09 40     ORA #$40

Jump from $E742:

E693: A6 C7     LDX $C7       ; Flag: Reverse On/Off
E695: F0 02     BEQ $E699

Jump from $E749, $E782, $E82F:

E697: 09 80     ORA #$80

Jump from $E695:

E699: A6 D8     LDX $D8       ; Count of number of inserts outstanding
E69B: F0 02     BEQ $E69F
E69D: C6 D8     DEC $D8       ; Count of number of inserts outstanding

Jump from $E69B:

E69F: AE 86 02  LDX $0286     ; Current Character Color code
E6A2: 20 13 EA  JSR $EA13     ; Print To Screen
E6A5: 20 B6 E6  JSR $E6B6     ; Advance Cursor

Jump from $E709, $E7AA, $E7CB, $E826, $E861, $E867, $E871, $E89E, $EC5B, $EC75:

E6A8: 68        PLA
E6A9: A8        TAY
E6AA: A5 D8     LDA $D8       ; Count of number of inserts outstanding
E6AC: F0 02     BEQ $E6B0
E6AE: 46 D4     LSR $D4       ; Flag: Editor in Quote Mode

Jump from $E6AC:

E6B0: 68        PLA
E6B1: AA        TAX
E6B2: 68        PLA
E6B3: 18        CLC
E6B4: 58        CLI
E6B5: 60        RTS



 $E6B6/59062:   Advance Cursor - c64ref 

Jump from $E6A5:

E6B6: 20 B3 E8  JSR $E8B3     ; Check Line Increment
E6B9: E6 D3     INC $D3       ; Cursor Column on current Line
E6BB: A5 D5     LDA $D5       ; Current logical Line length: 39 or 79
E6BD: C5 D3     CMP $D3       ; Cursor Column on current Line
E6BF: B0 3F     BCS $E700     ; Retreat Cursor
E6C1: C9 4F     CMP #$4F
E6C3: F0 32     BEQ $E6F7     ; Retreat Cursor
E6C5: AD 92 02  LDA $0292     ; Flag: Auto scroll down
E6C8: F0 03     BEQ $E6CD
E6CA: 4C 67 E9  JMP $E967     ; Open A Space On The Screen

Jump from $E6C8:

E6CD: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E6CF: E0 19     CPX #$19
E6D1: 90 07     BCC $E6DA
E6D3: 20 EA E8  JSR $E8EA     ; Scroll Screen
E6D6: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E6D8: A6 D6     LDX $D6       ; Current Screen Line number of Cursor

Jump from $E6D1, $E97E, $E9C2:

E6DA: 16 D9     ASL $D9,X     ; Screen Line Link Table
E6DC: 56 D9     LSR $D9,X     ; Screen Line Link Table
E6DE: E8        INX
E6DF: B5 D9     LDA $D9,X     ; Screen Line Link Table
E6E1: 09 80     ORA #$80
E6E3: 95 D9     STA $D9,X     ; Screen Line Link Table
E6E5: CA        DEX
E6E6: A5 D5     LDA $D5       ; Current logical Line length: 39 or 79
E6E8: 18        CLC
E6E9: 69 28     ADC #$28
E6EB: 85 D5     STA $D5       ; Current logical Line length: 39 or 79



 $E6ED/59117:   Retreat Cursor - c64ref 

Jump from $E6F2, $E595:

E6ED: B5 D9     LDA $D9,X     ; Screen Line Link Table
E6EF: 30 03     BMI $E6F4
E6F1: CA        DEX
E6F2: D0 F9     BNE $E6ED

Jump from $E6EF:

E6F4: 4C F0 E9  JMP $E9F0     ; Set Start of Line

Jump from $E6C3:

E6F7: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E6F9: 20 7C E8  JSR $E87C     ; Go to Next Line
E6FC: A9 00     LDA #$00
E6FE: 85 D3     STA $D3       ; Cursor Column on current Line

Jump from $E6BF:

E700: 60        RTS



 $E701/59137:   Back on to Previous Line - c64ref 

Jump from $E753, $E864:

E701: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E703: D0 06     BNE $E70B
E705: 86 D3     STX $D3       ; Cursor Column on current Line
E707: 68        PLA
E708: 68        PLA
E709: D0 9D     BNE $E6A8     ; Set Up Screen Print

Jump from $E703:

E70B: CA        DEX
E70C: 86 D6     STX $D6       ; Current Screen Line number of Cursor
E70E: 20 6C E5  JSR $E56C     ; Set Screen Pointers
E711: A4 D5     LDY $D5       ; Current logical Line length: 39 or 79
E713: 84 D3     STY $D3       ; Cursor Column on current Line
E715: 60        RTS



 $E716/59158:   Output to Screen - c64ref 

Jump from $E5CA, $E66F, $F1D2:

E716: 48        PHA
E717: 85 D7     STA $D7       ; Current Input Character/Last Character Output
E719: 8A        TXA
E71A: 48        PHA
E71B: 98        TYA
E71C: 48        PHA
E71D: A9 00     LDA #$00
E71F: 85 D0     STA $D0       ; Flag: Input from ...
E721: A4 D3     LDY $D3       ; Cursor Column on current Line
E723: A5 D7     LDA $D7       ; Current Input Character/Last Character Output
E725: 10 03     BPL $E72A     ; -unshifted characters-
E727: 4C D4 E7  JMP $E7D4     ; -shifted characters-



 $E72A/59178:   -unshifted characters- - c64ref 

Jump from $E725:

E72A: C9 0D     CMP #$0D
E72C: D0 03     BNE $E731
E72E: 4C 91 E8  JMP $E891     ; Output <CR>

Jump from $E72C:

E731: C9 20     CMP #$20
E733: 90 10     BCC $E745
E735: C9 60     CMP #$60
E737: 90 04     BCC $E73D
E739: 29 DF     AND #$DF
E73B: D0 02     BNE $E73F

Jump from $E737:

E73D: 29 3F     AND #$3F

Jump from $E73B:

E73F: 20 84 E6  JSR $E684     ; Quotes Test
E742: 4C 93 E6  JMP $E693     ; Set Up Screen Print

Jump from $E733:

E745: A6 D8     LDX $D8       ; Count of number of inserts outstanding
E747: F0 03     BEQ $E74C
E749: 4C 97 E6  JMP $E697     ; Set Up Screen Print

Jump from $E747:

E74C: C9 14     CMP #$14
E74E: D0 2E     BNE $E77E
E750: 98        TYA
E751: D0 06     BNE $E759
E753: 20 01 E7  JSR $E701     ; Back on to Previous Line
E756: 4C 73 E7  JMP $E773

Jump from $E751:

E759: 20 A1 E8  JSR $E8A1     ; Check Line Decrement
E75C: 88        DEY
E75D: 84 D3     STY $D3       ; Cursor Column on current Line
E75F: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer

Jump from $E771:

E762: C8        INY
E763: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
E765: 88        DEY
E766: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
E768: C8        INY
E769: B1 F3     LDA ($F3),Y   ; Pointer: Current Color RAM Location
E76B: 88        DEY
E76C: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E76E: C8        INY
E76F: C4 D5     CPY $D5       ; Current logical Line length: 39 or 79
E771: D0 EF     BNE $E762

Jump from $E756:

E773: A9 20     LDA #$20
E775: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
E777: AD 86 02  LDA $0286     ; Current Character Color code
E77A: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E77C: 10 4D     BPL $E7CB

Jump from $E74E:

E77E: A6 D4     LDX $D4       ; Flag: Editor in Quote Mode
E780: F0 03     BEQ $E785
E782: 4C 97 E6  JMP $E697     ; Set Up Screen Print

Jump from $E780:

E785: C9 12     CMP #$12
E787: D0 02     BNE $E78B
E789: 85 C7     STA $C7       ; Flag: Reverse On/Off

Jump from $E787:

E78B: C9 13     CMP #$13
E78D: D0 03     BNE $E792
E78F: 20 66 E5  JSR $E566     ; Home Cursor

Jump from $E78D:

E792: C9 1D     CMP #$1D
E794: D0 17     BNE $E7AD
E796: C8        INY
E797: 20 B3 E8  JSR $E8B3     ; Check Line Increment
E79A: 84 D3     STY $D3       ; Cursor Column on current Line
E79C: 88        DEY
E79D: C4 D5     CPY $D5       ; Current logical Line length: 39 or 79
E79F: 90 09     BCC $E7AA
E7A1: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E7A3: 20 7C E8  JSR $E87C     ; Go to Next Line
E7A6: A0 00     LDY #$00

Jump from $E7BA, $E7BC:

E7A8: 84 D3     STY $D3       ; Cursor Column on current Line

Jump from $E79F:

E7AA: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E794:

E7AD: C9 11     CMP #$11
E7AF: D0 1D     BNE $E7CE
E7B1: 18        CLC
E7B2: 98        TYA
E7B3: 69 28     ADC #$28
E7B5: A8        TAY
E7B6: E6 D6     INC $D6       ; Current Screen Line number of Cursor
E7B8: C5 D5     CMP $D5       ; Current logical Line length: 39 or 79
E7BA: 90 EC     BCC $E7A8
E7BC: F0 EA     BEQ $E7A8
E7BE: C6 D6     DEC $D6       ; Current Screen Line number of Cursor

Jump from $E7C6:

E7C0: E9 28     SBC #$28
E7C2: 90 04     BCC $E7C8
E7C4: 85 D3     STA $D3       ; Cursor Column on current Line
E7C6: D0 F8     BNE $E7C0

Jump from $E7C2:

E7C8: 20 7C E8  JSR $E87C     ; Go to Next Line

Jump from $E77C:

E7CB: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E7AF:

E7CE: 20 CB E8  JSR $E8CB     ; Set Color Code
E7D1: 4C 44 EC  JMP $EC44     ; Graphics/Text Control



 $E7D4/59348:   -shifted characters- - c64ref 

Jump from $E727:

E7D4: 29 7F     AND #$7F
E7D6: C9 7F     CMP #$7F
E7D8: D0 02     BNE $E7DC
E7DA: A9 5E     LDA #$5E

Jump from $E7D8:

E7DC: C9 20     CMP #$20
E7DE: 90 03     BCC $E7E3
E7E0: 4C 91 E6  JMP $E691     ; Set Up Screen Print

Jump from $E7DE:

E7E3: C9 0D     CMP #$0D
E7E5: D0 03     BNE $E7EA
E7E7: 4C 91 E8  JMP $E891     ; Output <CR>

Jump from $E7E5:

E7EA: A6 D4     LDX $D4       ; Flag: Editor in Quote Mode
E7EC: D0 3F     BNE $E82D
E7EE: C9 14     CMP #$14
E7F0: D0 37     BNE $E829
E7F2: A4 D5     LDY $D5       ; Current logical Line length: 39 or 79
E7F4: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
E7F6: C9 20     CMP #$20
E7F8: D0 04     BNE $E7FE
E7FA: C4 D3     CPY $D3       ; Cursor Column on current Line
E7FC: D0 07     BNE $E805

Jump from $E7F8:

E7FE: C0 4F     CPY #$4F
E800: F0 24     BEQ $E826
E802: 20 65 E9  JSR $E965     ; Open A Space On The Screen

Jump from $E7FC:

E805: A4 D5     LDY $D5       ; Current logical Line length: 39 or 79
E807: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer

Jump from $E819:

E80A: 88        DEY
E80B: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
E80D: C8        INY
E80E: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
E810: 88        DEY
E811: B1 F3     LDA ($F3),Y   ; Pointer: Current Color RAM Location
E813: C8        INY
E814: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E816: 88        DEY
E817: C4 D3     CPY $D3       ; Cursor Column on current Line
E819: D0 EF     BNE $E80A
E81B: A9 20     LDA #$20
E81D: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
E81F: AD 86 02  LDA $0286     ; Current Character Color code
E822: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E824: E6 D8     INC $D8       ; Count of number of inserts outstanding

Jump from $E800:

E826: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E7F0:

E829: A6 D8     LDX $D8       ; Count of number of inserts outstanding
E82B: F0 05     BEQ $E832

Jump from $E7EC:

E82D: 09 40     ORA #$40
E82F: 4C 97 E6  JMP $E697     ; Set Up Screen Print

Jump from $E82B:

E832: C9 11     CMP #$11
E834: D0 16     BNE $E84C
E836: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E838: F0 37     BEQ $E871
E83A: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E83C: A5 D3     LDA $D3       ; Cursor Column on current Line
E83E: 38        SEC
E83F: E9 28     SBC #$28
E841: 90 04     BCC $E847
E843: 85 D3     STA $D3       ; Cursor Column on current Line
E845: 10 2A     BPL $E871

Jump from $E841:

E847: 20 6C E5  JSR $E56C     ; Set Screen Pointers
E84A: D0 25     BNE $E871

Jump from $E834:

E84C: C9 12     CMP #$12
E84E: D0 04     BNE $E854
E850: A9 00     LDA #$00
E852: 85 C7     STA $C7       ; Flag: Reverse On/Off

Jump from $E84E:

E854: C9 1D     CMP #$1D
E856: D0 12     BNE $E86A
E858: 98        TYA
E859: F0 09     BEQ $E864
E85B: 20 A1 E8  JSR $E8A1     ; Check Line Decrement
E85E: 88        DEY
E85F: 84 D3     STY $D3       ; Cursor Column on current Line
E861: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E859:

E864: 20 01 E7  JSR $E701     ; Back on to Previous Line
E867: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E856:

E86A: C9 13     CMP #$13
E86C: D0 06     BNE $E874
E86E: 20 44 E5  JSR $E544     ; Clear Screen

Jump from $E838, $E845, $E84A:

E871: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $E86C:

E874: 09 80     ORA #$80
E876: 20 CB E8  JSR $E8CB     ; Set Color Code
E879: 4C 4F EC  JMP $EC4F     ; Graphics/Text Control



 $E87C/59516:   Go to Next Line - c64ref 

Jump from $E6F9, $E7A3, $E7C8, $E89B:

E87C: 46 C9     LSR $C9       ; Cursor X/Y position at start of Input
E87E: A6 D6     LDX $D6       ; Current Screen Line number of Cursor

Jump from $E88A:

E880: E8        INX
E881: E0 19     CPX #$19
E883: D0 03     BNE $E888
E885: 20 EA E8  JSR $E8EA     ; Scroll Screen

Jump from $E883:

E888: B5 D9     LDA $D9,X     ; Screen Line Link Table
E88A: 10 F4     BPL $E880
E88C: 86 D6     STX $D6       ; Current Screen Line number of Cursor
E88E: 4C 6C E5  JMP $E56C     ; Set Screen Pointers



 $E891/59537:   Output <CR> - c64ref 

Jump from $E72E, $E7E7:

E891: A2 00     LDX #$00
E893: 86 D8     STX $D8       ; Count of number of inserts outstanding
E895: 86 C7     STX $C7       ; Flag: Reverse On/Off
E897: 86 D4     STX $D4       ; Flag: Editor in Quote Mode
E899: 86 D3     STX $D3       ; Cursor Column on current Line
E89B: 20 7C E8  JSR $E87C     ; Go to Next Line
E89E: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print



 $E8A1/59553:   Check Line Decrement - c64ref 

Jump from $E759, $E85B:

E8A1: A2 02     LDX #$02
E8A3: A9 00     LDA #$00

Jump from $E8AD:

E8A5: C5 D3     CMP $D3       ; Cursor Column on current Line
E8A7: F0 07     BEQ $E8B0
E8A9: 18        CLC
E8AA: 69 28     ADC #$28
E8AC: CA        DEX
E8AD: D0 F6     BNE $E8A5
E8AF: 60        RTS

Jump from $E8A7:

E8B0: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E8B2: 60        RTS



 $E8B3/59571:   Check Line Increment - c64ref 

Jump from $E6B6, $E797:

E8B3: A2 02     LDX #$02
E8B5: A9 27     LDA #$27

Jump from $E8BF:

E8B7: C5 D3     CMP $D3       ; Cursor Column on current Line
E8B9: F0 07     BEQ $E8C2
E8BB: 18        CLC
E8BC: 69 28     ADC #$28
E8BE: CA        DEX
E8BF: D0 F6     BNE $E8B7
E8C1: 60        RTS

Jump from $E8B9:

E8C2: A6 D6     LDX $D6       ; Current Screen Line number of Cursor
E8C4: E0 19     CPX #$19
E8C6: F0 02     BEQ $E8CA
E8C8: E6 D6     INC $D6       ; Current Screen Line number of Cursor

Jump from $E8C6:

E8CA: 60        RTS



 $E8CB/59595:   Set Color Code - c64ref 

Jump from $E7CE, $E876:

E8CB: A2 0F     LDX #$0F

Jump from $E8D3:

E8CD: DD DA E8  CMP $E8DA,X   ; Color Code Table
E8D0: F0 04     BEQ $E8D6
E8D2: CA        DEX
E8D3: 10 F8     BPL $E8CD
E8D5: 60        RTS

Jump from $E8D0:

E8D6: 8E 86 02  STX $0286     ; Current Character Color code
E8D9: 60        RTS



 $E8DA/59610:   Color Code Table - c64ref 

E8DA: 90 05 1C 9F 9C 1E 1F 9E
E8E2: 81 95 96 97 98 99 9A 9B


Kernal-Reference:

 CMP $E8DA,X : $E8CD


 $E8EA/59626:   Scroll Screen - c64ref 

Jump from $E6D3, $E885, $E975:

E8EA: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
E8EC: 48        PHA
E8ED: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
E8EF: 48        PHA
E8F0: A5 AE     LDA $AE       ; Tape End Address/End of Program
E8F2: 48        PHA
E8F3: A5 AF     LDA $AF       ; Tape End Address/End of Program
E8F5: 48        PHA

Jump from $E931:

E8F6: A2 FF     LDX #$FF
E8F8: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E8FA: C6 C9     DEC $C9       ; Cursor X/Y position at start of Input
E8FC: CE A5 02  DEC $02A5     ; Temporary for Line Index

Jump from $E911:

E8FF: E8        INX
E900: 20 F0 E9  JSR $E9F0     ; Set Start of Line
E903: E0 18     CPX #$18
E905: B0 0C     BCS $E913
E907: BD F1 EC  LDA $ECF1,X   ; Low Byte Screen Line Addresses
E90A: 85 AC     STA $AC       ; Pointer: Tape Buffer/Screen scrolling
E90C: B5 DA     LDA $DA,X     ; Screen Line Link Table
E90E: 20 C8 E9  JSR $E9C8     ; Move A Screen Line
E911: 30 EC     BMI $E8FF

Jump from $E905:

E913: 20 FF E9  JSR $E9FF     ; Clear Screen Line
E916: A2 00     LDX #$00

Jump from $E927:

E918: B5 D9     LDA $D9,X     ; Screen Line Link Table
E91A: 29 7F     AND #$7F
E91C: B4 DA     LDY $DA,X     ; Screen Line Link Table
E91E: 10 02     BPL $E922
E920: 09 80     ORA #$80

Jump from $E91E:

E922: 95 D9     STA $D9,X     ; Screen Line Link Table
E924: E8        INX
E925: E0 18     CPX #$18
E927: D0 EF     BNE $E918
E929: A5 F1     LDA $F1       ; Screen Line Link Table
E92B: 09 80     ORA #$80
E92D: 85 F1     STA $F1       ; Screen Line Link Table
E92F: A5 D9     LDA $D9       ; Screen Line Link Table
E931: 10 C3     BPL $E8F6
E933: E6 D6     INC $D6       ; Current Screen Line number of Cursor
E935: EE A5 02  INC $02A5     ; Temporary for Line Index
E938: A9 7F     LDA #$7F
E93A: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
E93D: AD 01 DC  LDA $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
E940: C9 FB     CMP #$FB
E942: 08        PHP
E943: A9 7F     LDA #$7F
E945: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
E948: 28        PLP
E949: D0 0B     BNE $E956
E94B: A0 00     LDY #$00

Jump from $E94F, $E952:

E94D: EA        NOP
E94E: CA        DEX
E94F: D0 FC     BNE $E94D
E951: 88        DEY
E952: D0 F9     BNE $E94D
E954: 84 C6     STY $C6       ; Number of Characters in Keyboard Buffer queue

Jump from $E949:

E956: A6 D6     LDX $D6       ; Current Screen Line number of Cursor

Jump from $E9C5:

E958: 68        PLA
E959: 85 AF     STA $AF       ; Tape End Address/End of Program
E95B: 68        PLA
E95C: 85 AE     STA $AE       ; Tape End Address/End of Program
E95E: 68        PLA
E95F: 85 AD     STA $AD       ; Pointer: Tape Buffer/Screen scrolling
E961: 68        PLA
E962: 85 AC     STA $AC       ; Pointer: Tape Buffer/Screen scrolling
E964: 60        RTS



 $E965/59749:   Open A Space On The Screen - c64ref 

Jump from $E802:

E965: A6 D6     LDX $D6       ; Current Screen Line number of Cursor

Jump from $E96A, $E6CA:

E967: E8        INX
E968: B5 D9     LDA $D9,X     ; Screen Line Link Table
E96A: 10 FB     BPL $E967
E96C: 8E A5 02  STX $02A5     ; Temporary for Line Index
E96F: E0 18     CPX #$18
E971: F0 0E     BEQ $E981
E973: 90 0C     BCC $E981
E975: 20 EA E8  JSR $E8EA     ; Scroll Screen
E978: AE A5 02  LDX $02A5     ; Temporary for Line Index
E97B: CA        DEX
E97C: C6 D6     DEC $D6       ; Current Screen Line number of Cursor
E97E: 4C DA E6  JMP $E6DA     ; Advance Cursor

Jump from $E971, $E973:

E981: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
E983: 48        PHA
E984: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
E986: 48        PHA
E987: A5 AE     LDA $AE       ; Tape End Address/End of Program
E989: 48        PHA
E98A: A5 AF     LDA $AF       ; Tape End Address/End of Program
E98C: 48        PHA
E98D: A2 19     LDX #$19

Jump from $E9A4:

E98F: CA        DEX
E990: 20 F0 E9  JSR $E9F0     ; Set Start of Line
E993: EC A5 02  CPX $02A5     ; Temporary for Line Index
E996: 90 0E     BCC $E9A6
E998: F0 0C     BEQ $E9A6
E99A: BD EF EC  LDA $ECEF,X   ; Shift-Run Equivalent
E99D: 85 AC     STA $AC       ; Pointer: Tape Buffer/Screen scrolling
E99F: B5 D8     LDA $D8,X     ; Count of number of inserts outstanding
E9A1: 20 C8 E9  JSR $E9C8     ; Move A Screen Line
E9A4: 30 E9     BMI $E98F

Jump from $E996, $E998:

E9A6: 20 FF E9  JSR $E9FF     ; Clear Screen Line
E9A9: A2 17     LDX #$17

Jump from $E9BD:

E9AB: EC A5 02  CPX $02A5     ; Temporary for Line Index
E9AE: 90 0F     BCC $E9BF
E9B0: B5 DA     LDA $DA,X     ; Screen Line Link Table
E9B2: 29 7F     AND #$7F
E9B4: B4 D9     LDY $D9,X     ; Screen Line Link Table
E9B6: 10 02     BPL $E9BA
E9B8: 09 80     ORA #$80

Jump from $E9B6:

E9BA: 95 DA     STA $DA,X     ; Screen Line Link Table
E9BC: CA        DEX
E9BD: D0 EC     BNE $E9AB

Jump from $E9AE:

E9BF: AE A5 02  LDX $02A5     ; Temporary for Line Index
E9C2: 20 DA E6  JSR $E6DA     ; Advance Cursor
E9C5: 4C 58 E9  JMP $E958     ; Scroll Screen



 $E9C8/59848:   Move A Screen Line - c64ref 

Jump from $E90E, $E9A1:

E9C8: 29 03     AND #$03
E9CA: 0D 88 02  ORA $0288     ; High Byte of Screen Memory Address
E9CD: 85 AD     STA $AD       ; Pointer: Tape Buffer/Screen scrolling
E9CF: 20 E0 E9  JSR $E9E0     ; Syncronise Color Transfer
E9D2: A0 27     LDY #$27

Jump from $E9DD:

E9D4: B1 AC     LDA ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
E9D6: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
E9D8: B1 AE     LDA ($AE),Y   ; Tape End Address/End of Program
E9DA: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
E9DC: 88        DEY
E9DD: 10 F5     BPL $E9D4
E9DF: 60        RTS



 $E9E0/59872:   Syncronise Color Transfer - c64ref 

Jump from $E9CF:

E9E0: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer
E9E3: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
E9E5: 85 AE     STA $AE       ; Tape End Address/End of Program
E9E7: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
E9E9: 29 03     AND #$03
E9EB: 09 D8     ORA #$D8
E9ED: 85 AF     STA $AF       ; Tape End Address/End of Program
E9EF: 60        RTS



 $E9F0/59888:   Set Start of Line - c64ref 

Jump from $E57C, $E6F4, $E900, $E990, $EA01:

E9F0: BD F0 EC  LDA $ECF0,X   ; Low Byte Screen Line Addresses
E9F3: 85 D1     STA $D1       ; Pointer: Current Screen Line Address
E9F5: B5 D9     LDA $D9,X     ; Screen Line Link Table
E9F7: 29 03     AND #$03
E9F9: 0D 88 02  ORA $0288     ; High Byte of Screen Memory Address
E9FC: 85 D2     STA $D2       ; Pointer: Current Screen Line Address
E9FE: 60        RTS



 $E9FF/59903:   Clear Screen Line - c64ref 

Jump from $E560, $E913, $E9A6:

E9FF: A0 27     LDY #$27
EA01: 20 F0 E9  JSR $E9F0     ; Set Start of Line
EA04: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer

Jump from $EA0F:

EA07: 20 DA E4  JSR $E4DA     ; Reset Character Color
EA0A: A9 20     LDA #$20
EA0C: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
EA0E: 88        DEY
EA0F: 10 F6     BPL $EA07
EA11: 60        RTS
EA12: EA        NOP

* Old KERNAL:
Jump from $EA10:

EA07: A9 20     LDA #$20
EA09: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
EA0B: 20 DA E4  JSR $E4DA     ; Reset Character Color
EA0E: EA        NOP
EA0F: 88        DEY
EA10: 10 F5     BPL $EA07
EA12: 60        RTS




 $EA13/59923:   Print To Screen - c64ref 

Jump from $E5E4, $E6A2:

EA13: A8        TAY
EA14: A9 02     LDA #$02
EA16: 85 CD     STA $CD       ; Timer: Count down for Cursor blink toggle
EA18: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer
EA1B: 98        TYA

Jump from $EA5E:

EA1C: A4 D3     LDY $D3       ; Cursor Column on current Line
EA1E: 91 D1     STA ($D1),Y   ; Pointer: Current Screen Line Address
EA20: 8A        TXA
EA21: 91 F3     STA ($F3),Y   ; Pointer: Current Color RAM Location
EA23: 60        RTS



 $EA24/59940:   Syncronise Color Pointer - c64ref 

Jump from $E58E, $E75F, $E807, $E9E0, $EA04, $EA18, $EA4F:

EA24: A5 D1     LDA $D1       ; Pointer: Current Screen Line Address
EA26: 85 F3     STA $F3       ; Pointer: Current Color RAM Location
EA28: A5 D2     LDA $D2       ; Pointer: Current Screen Line Address
EA2A: 29 03     AND #$03
EA2C: 09 D8     ORA #$D8
EA2E: 85 F4     STA $F4       ; Pointer: Current Color RAM Location
EA30: 60        RTS



 $EA31/59953:   Main IRQ Entry Point - c64ref 

EA31: 20 EA FF  JSR $FFEA     ; Increment Real-Time Clock
EA34: A5 CC     LDA $CC       ; Flag: Cursor blink
EA36: D0 29     BNE $EA61
EA38: C6 CD     DEC $CD       ; Timer: Count down for Cursor blink toggle
EA3A: D0 25     BNE $EA61
EA3C: A9 14     LDA #$14
EA3E: 85 CD     STA $CD       ; Timer: Count down for Cursor blink toggle
EA40: A4 D3     LDY $D3       ; Cursor Column on current Line
EA42: 46 CF     LSR $CF       ; Flag: Cursor Status
EA44: AE 87 02  LDX $0287     ; Background Color under Cursor
EA47: B1 D1     LDA ($D1),Y   ; Pointer: Current Screen Line Address
EA49: B0 11     BCS $EA5C
EA4B: E6 CF     INC $CF       ; Flag: Cursor Status
EA4D: 85 CE     STA $CE       ; Character under Cursor while Cursor Inverted
EA4F: 20 24 EA  JSR $EA24     ; Syncronise Color Pointer
EA52: B1 F3     LDA ($F3),Y   ; Pointer: Current Color RAM Location
EA54: 8D 87 02  STA $0287     ; Background Color under Cursor
EA57: AE 86 02  LDX $0286     ; Current Character Color code
EA5A: A5 CE     LDA $CE       ; Character under Cursor while Cursor Inverted

Jump from $EA49:

EA5C: 49 80     EOR #$80
EA5E: 20 1C EA  JSR $EA1C     ; Print To Screen

Jump from $EA36, $EA3A:

EA61: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
EA63: 29 10     AND #$10
EA65: F0 0A     BEQ $EA71
EA67: A0 00     LDY #$00
EA69: 84 C0     STY $C0       ; Tape Motor Switch
EA6B: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
EA6D: 09 20     ORA #$20
EA6F: D0 08     BNE $EA79

Jump from $EA65:

EA71: A5 C0     LDA $C0       ; Tape Motor Switch
EA73: D0 06     BNE $EA7B
EA75: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
EA77: 29 1F     AND #$1F

Jump from $EA6F:

EA79: 85 01     STA $01       ; 6510 On-chip 8-bit Input/Output Register

Jump from $EA73:

EA7B: 20 87 EA  JSR $EA87     ; Scan Keyboard
EA7E: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register


Kernal-Reference:

 LDA $EA60   : $E3A8


 $EA81/60033:   Restore A/X/Y and End IRQ - c64ref 

EA81: 68        PLA
EA82: A8        TAY
EA83: 68        PLA
EA84: AA        TAX
EA85: 68        PLA
EA86: 40        RTI



 $EA87/60039:   Scan Keyboard - c64ref 

Jump from $EA7B, $FF9F:

EA87: A9 00     LDA #$00
EA89: 8D 8D 02  STA $028D     ; Flag: Shift Keys
EA8C: A0 40     LDY #$40
EA8E: 84 CB     STY $CB       ; Matrix value of last Key pressed
EA90: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
EA93: AE 01 DC  LDX $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
EA96: E0 FF     CPX #$FF
EA98: F0 61     BEQ $EAFB     ; Process Key Image
EA9A: A8        TAY
EA9B: A9 81     LDA #$81
EA9D: 85 F5     STA $F5       ; Vector: Current Keyboard decoding Table
EA9F: A9 EB     LDA #$EB
EAA1: 85 F6     STA $F6       ; Vector: Current Keyboard decoding Table
EAA3: A9 FE     LDA #$FE
EAA5: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)

Jump from $EADA:

EAA8: A2 08     LDX #$08
EAAA: 48        PHA

Jump from $EAB1:

EAAB: AD 01 DC  LDA $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
EAAE: CD 01 DC  CMP $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
EAB1: D0 F8     BNE $EAAB

Jump from $EAD2:

EAB3: 4A        LSR
EAB4: B0 16     BCS $EACC
EAB6: 48        PHA
EAB7: B1 F5     LDA ($F5),Y   ; Vector: Current Keyboard decoding Table
EAB9: C9 05     CMP #$05
EABB: B0 0C     BCS $EAC9
EABD: C9 03     CMP #$03
EABF: F0 08     BEQ $EAC9
EAC1: 0D 8D 02  ORA $028D     ; Flag: Shift Keys
EAC4: 8D 8D 02  STA $028D     ; Flag: Shift Keys
EAC7: 10 02     BPL $EACB

Jump from $EABB, $EABF:

EAC9: 84 CB     STY $CB       ; Matrix value of last Key pressed

Jump from $EAC7:

EACB: 68        PLA

Jump from $EAB4:

EACC: C8        INY
EACD: C0 41     CPY #$41
EACF: B0 0B     BCS $EADC
EAD1: CA        DEX
EAD2: D0 DF     BNE $EAB3
EAD4: 38        SEC
EAD5: 68        PLA
EAD6: 2A        ROL
EAD7: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
EADA: D0 CC     BNE $EAA8

Jump from $EACF:

EADC: 68        PLA



 $EADD/60125:   Process Key Image - c64ref 

EADD: 6C 8F 02  JMP ($028F)   ; Vector: Routine to determine Keyboard table

Jump from $EB76:

EAE0: A4 CB     LDY $CB       ; Matrix value of last Key pressed
EAE2: B1 F5     LDA ($F5),Y   ; Vector: Current Keyboard decoding Table
EAE4: AA        TAX
EAE5: C4 C5     CPY $C5       ; Matrix value of last Key pressed
EAE7: F0 07     BEQ $EAF0
EAE9: A0 10     LDY #$10
EAEB: 8C 8C 02  STY $028C     ; Repeat Key: First repeat delay Counter
EAEE: D0 36     BNE $EB26

Jump from $EAE7:

EAF0: 29 7F     AND #$7F
EAF2: 2C 8A 02  BIT $028A     ; Flag: Repeat keys
EAF5: 30 16     BMI $EB0D
EAF7: 70 49     BVS $EB42
EAF9: C9 7F     CMP #$7F

Jump from $EA98:

EAFB: F0 29     BEQ $EB26
EAFD: C9 14     CMP #$14
EAFF: F0 0C     BEQ $EB0D
EB01: C9 20     CMP #$20
EB03: F0 08     BEQ $EB0D
EB05: C9 1D     CMP #$1D
EB07: F0 04     BEQ $EB0D
EB09: C9 11     CMP #$11
EB0B: D0 35     BNE $EB42

Jump from $EAF5, $EAFF, $EB03, $EB07:

EB0D: AC 8C 02  LDY $028C     ; Repeat Key: First repeat delay Counter
EB10: F0 05     BEQ $EB17
EB12: CE 8C 02  DEC $028C     ; Repeat Key: First repeat delay Counter
EB15: D0 2B     BNE $EB42

Jump from $EB10:

EB17: CE 8B 02  DEC $028B     ; Repeat Key: Speed Counter
EB1A: D0 26     BNE $EB42
EB1C: A0 04     LDY #$04
EB1E: 8C 8B 02  STY $028B     ; Repeat Key: Speed Counter
EB21: A4 C6     LDY $C6       ; Number of Characters in Keyboard Buffer queue
EB23: 88        DEY
EB24: 10 1C     BPL $EB42

Jump from $EAEE, $EAFB:

EB26: A4 CB     LDY $CB       ; Matrix value of last Key pressed
EB28: 84 C5     STY $C5       ; Matrix value of last Key pressed
EB2A: AC 8D 02  LDY $028D     ; Flag: Shift Keys
EB2D: 8C 8E 02  STY $028E     ; Last Shift Key used for debouncing
EB30: E0 FF     CPX #$FF
EB32: F0 0E     BEQ $EB42
EB34: 8A        TXA
EB35: A6 C6     LDX $C6       ; Number of Characters in Keyboard Buffer queue
EB37: EC 89 02  CPX $0289     ; Maximum number of Bytes in Keyboard Buffer
EB3A: B0 06     BCS $EB42
EB3C: 9D 77 02  STA $0277,X   ; Keyboard Buffer Queue (FIFO)
EB3F: E8        INX
EB40: 86 C6     STX $C6       ; Number of Characters in Keyboard Buffer queue

Jump from $EAF7, $EB0B, $EB15, $EB1A, $EB24, $EB32, $EB3A, $EB52:

EB42: A9 7F     LDA #$7F
EB44: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
EB47: 60        RTS



 $EB48/60232:   Check for Shift, CTRL, C= - c64ref 

EB48: AD 8D 02  LDA $028D     ; Flag: Shift Keys
EB4B: C9 03     CMP #$03
EB4D: D0 15     BNE $EB64
EB4F: CD 8E 02  CMP $028E     ; Last Shift Key used for debouncing
EB52: F0 EE     BEQ $EB42     ; Process Key Image
EB54: AD 91 02  LDA $0291     ; Flag: Upper/Lower Case change
EB57: 30 1D     BMI $EB76
EB59: AD 18 D0  LDA $D018     ; VIC: Memory Control Register
EB5C: 49 02     EOR #$02
EB5E: 8D 18 D0  STA $D018     ; VIC: Memory Control Register
EB61: 4C 76 EB  JMP $EB76

Jump from $EB4D:

EB64: 0A        ASL
EB65: C9 08     CMP #$08
EB67: 90 02     BCC $EB6B
EB69: A9 06     LDA #$06

Jump from $EB67:

EB6B: AA        TAX
EB6C: BD 79 EB  LDA $EB79,X   ; Pointers to Keyboard decoding tables
EB6F: 85 F5     STA $F5       ; Vector: Current Keyboard decoding Table
EB71: BD 7A EB  LDA $EB7A,X   ; Pointers to Keyboard decoding tables
EB74: 85 F6     STA $F6       ; Vector: Current Keyboard decoding Table

Jump from $EB57, $EB61:

EB76: 4C E0 EA  JMP $EAE0     ; Process Key Image



 $EB79/60281:   Pointers to Keyboard decoding tables - c64ref 

EB79: 81 EB C2 EB 03 EC 78 EC    $EB81,$EBC2,$EC03,$EC78


Kernal-Reference:

 LDA $EB79,X : $EB6C

 LDA $EB7A,X : $EB71


 $EB81/60289:   Keyboard 1 -- Unshifted - c64ref 

EB81: 14 0D 1D 88 85 86 87 11
EB89: 33 57 41 34 5A 53 45 01
EB91: 35 52 44 36 43 46 54 58
EB99: 37 59 47 38 42 48 55 56
EBA1: 39 49 4A 30 4D 4B 4F 4E
EBA9: 2B 50 4C 2D 2E 3A 40 2C
EBB1: 5C 2A 3B 13 01 3D 5E 2F
EBB9: 31 5F 04 32 20 02 51 03
EBC1: FF



 $EBC2/60354:   Keyboard 2 -- Shifted - c64ref 

EBC2: 94 8D 9D 8C 89 8A 8B 91
EBCA: 23 D7 C1 24 DA D3 C5 01
EBD2: 25 D2 C4 26 C3 C6 D4 D8
EBDA: 27 D9 C7 28 C2 C8 D5 D6
EBE2: 29 C9 CA 30 CD CB CF CE
EBEA: DB D0 CC DD 3E 5B BA 3C
EBF2: A9 C0 5D 93 01 3D DE 3F
EBFA: 21 5F 04 22 A0 02 D1 83
EC02: FF



 $EC03/60419:   Keyboard 3 -- Commodore - c64ref 

EC03: 94 8D 9D 8C 89 8A 8B 91
EC0B: 96 B3 B0 97 AD AE B1 01
EC13: 98 B2 AC 99 BC BB A3 BD
EC1B: 9A B7 A5 9B BF B4 B8 BE
EC23: 29 A2 B5 30 A7 A1 B9 AA
EC2B: A6 AF B6 DC 3E 5B A4 3C
EC33: A8 DF 5D 93 01 3D DE 3F
EC3B: 81 5F 04 95 A0 02 AB 83
EC43: FF



 $EC44/60484:   Graphics/Text Control - c64ref 

Jump from $E7D1:

EC44: C9 0E     CMP #$0E
EC46: D0 07     BNE $EC4F
EC48: AD 18 D0  LDA $D018     ; VIC: Memory Control Register
EC4B: 09 02     ORA #$02
EC4D: D0 09     BNE $EC58

Jump from $EC46, $E879:

EC4F: C9 8E     CMP #$8E
EC51: D0 0B     BNE $EC5E
EC53: AD 18 D0  LDA $D018     ; VIC: Memory Control Register
EC56: 29 FD     AND #$FD

Jump from $EC4D:

EC58: 8D 18 D0  STA $D018     ; VIC: Memory Control Register

Jump from $EC6B:

EC5B: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print

Jump from $EC51:

EC5E: C9 08     CMP #$08
EC60: D0 07     BNE $EC69
EC62: A9 80     LDA #$80
EC64: 0D 91 02  ORA $0291     ; Flag: Upper/Lower Case change
EC67: 30 09     BMI $EC72

Jump from $EC60:

EC69: C9 09     CMP #$09
EC6B: D0 EE     BNE $EC5B
EC6D: A9 7F     LDA #$7F
EC6F: 2D 91 02  AND $0291     ; Flag: Upper/Lower Case change

Jump from $EC67:

EC72: 8D 91 02  STA $0291     ; Flag: Upper/Lower Case change
EC75: 4C A8 E6  JMP $E6A8     ; Set Up Screen Print



 $EC78/60536:   Keyboard 4 -- Control - c64ref 

EC78: FF FF FF FF FF FF FF FF
EC80: 1C 17 01 9F 1A 13 05 FF
EC88: 9C 12 04 1E 03 06 14 18
EC90: 1F 19 07 9E 02 08 15 16
EC98: 12 09 0A 92 0D 0B 0F 0E
ECA0: FF 10 0C FF FF 1B 00 FF
ECA8: 1C FF 1D FF FF 1F 1E FF
ECB0: 90 06 FF 05 FF FF 11 FF
ECB8: FF


Kernal-Reference:

 LDA $ECB8,X : $E5AA


 $ECB9/60601:   Video Chip Setup Table - c64ref 

ECB9: 00 00 00 00 00 00 00 00
ECC1: 00 00 00 00 00 00 00 00
ECC9: 00 9B 37 00 00 00 08 00
ECD1: 14 0F 00 00 00 00 00 00
ECD9: 0E 06 01 02 03 04 00 01
ECE1: 02 03 04 05 06 07

* SX64:
ECD9: 03 01


Kernal-Reference:

 LDA $ECE6,X : $E5F3


 $ECE7/60647:   Shift-Run Equivalent - c64ref 

ECE7: 4C 4F 41 44 0D 52 55 4E    'LOAD{CR}RUN'
ECEF: 0D                         '{CR}'


Kernal-Reference:

 LDA $ECEF,X : $E99A


 $ECF0/60656:   Low Byte Screen Line Addresses - c64ref 

ECF0: 00 28 50 78 A0 C8 F0 18
ECF8: 40 68 90 B8 E0 08 30 58
ED00: 80 A8 D0 F8 20 48 70 98
ED08: C0


Kernal-Reference:

 LDA $ECF0,X : $E9F0

 LDA $ECF1,X : $E907


 $ED09/60681:   Send TALK Command on Serial Bus - c64ref 

Jump from $F238, $F4CD, $FFB4:

ED09: 09 40     ORA #$40
ED0B: 2C        .BYTE $2C



 $ED0C/60684:   Send LISTEN Command on Serial Bus - c64ref 

Jump from $F27A, $F3E3, $F60D, $F648, $FFB1:

ED0C: 09 20     ORA #$20
ED0E: 20 A4 F0  JSR $F0A4     ; Serial Bus Idle

Jump from $EE00:

ED11: 48        PHA
ED12: 24 94     BIT $94       ; Flag: Serial Bus - Output Character buffered
ED14: 10 0A     BPL $ED20
ED16: 38        SEC
ED17: 66 A3     ROR $A3       ; Serial Bus EOI (End Of Input) Flag
ED19: 20 40 ED  JSR $ED40     ; Send Data On Serial Bus
ED1C: 46 94     LSR $94       ; Flag: Serial Bus - Output Character buffered
ED1E: 46 A3     LSR $A3       ; Serial Bus EOI (End Of Input) Flag

Jump from $ED14:

ED20: 68        PLA
ED21: 85 95     STA $95       ; Buffered Character for Serial Bus
ED23: 78        SEI
ED24: 20 97 EE  JSR $EE97     ; Serial Output 1
ED27: C9 3F     CMP #$3F
ED29: D0 03     BNE $ED2E
ED2B: 20 85 EE  JSR $EE85     ; Serial Clock On

Jump from $ED29:

ED2E: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
ED31: 09 08     ORA #$08
ED33: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)

Jump from $EDBB, $EDC9:

ED36: 78        SEI
ED37: 20 8E EE  JSR $EE8E     ; Serial Clock Off
ED3A: 20 97 EE  JSR $EE97     ; Serial Output 1
ED3D: 20 B3 EE  JSR $EEB3     ; Delay 1 ms



 $ED40/60736:   Send Data On Serial Bus - c64ref 

Jump from $ED19, $EDE7:

ED40: 78        SEI
ED41: 20 97 EE  JSR $EE97     ; Serial Output 1
ED44: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
ED47: B0 64     BCS $EDAD     ; Flag Errors: Status #80 - DEVICE NOT PRESENT
ED49: 20 85 EE  JSR $EE85     ; Serial Clock On
ED4C: 24 A3     BIT $A3       ; Serial Bus EOI (End Of Input) Flag
ED4E: 10 0A     BPL $ED5A

Jump from $ED53:

ED50: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
ED53: 90 FB     BCC $ED50

Jump from $ED58:

ED55: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
ED58: B0 FB     BCS $ED55

Jump from $ED4E, $ED5D:

ED5A: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
ED5D: 90 FB     BCC $ED5A
ED5F: 20 8E EE  JSR $EE8E     ; Serial Clock Off
ED62: A9 08     LDA #$08
ED64: 85 A5     STA $A5       ; Tape Synchronising count down

Jump from $ED6C, $ED90:

ED66: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
ED69: CD 00 DD  CMP $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
ED6C: D0 F8     BNE $ED66
ED6E: 0A        ASL
ED6F: 90 3F     BCC $EDB0     ; Flag Errors: Status #03 - WRITE TIMEOUT
ED71: 66 95     ROR $95       ; Buffered Character for Serial Bus
ED73: B0 05     BCS $ED7A
ED75: 20 A0 EE  JSR $EEA0     ; Serial Output 0
ED78: D0 03     BNE $ED7D

Jump from $ED73:

ED7A: 20 97 EE  JSR $EE97     ; Serial Output 1

Jump from $ED78:

ED7D: 20 85 EE  JSR $EE85     ; Serial Clock On
ED80: EA        NOP
ED81: EA        NOP
ED82: EA        NOP
ED83: EA        NOP
ED84: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
ED87: 29 DF     AND #$DF
ED89: 09 10     ORA #$10
ED8B: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
ED8E: C6 A5     DEC $A5       ; Tape Synchronising count down
ED90: D0 D4     BNE $ED66
ED92: A9 04     LDA #$04
ED94: 8D 07 DC  STA $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
ED97: A9 19     LDA #$19
ED99: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
ED9C: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register

Jump from $EDA9:

ED9F: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
EDA2: 29 02     AND #$02
EDA4: D0 0A     BNE $EDB0     ; Flag Errors: Status #03 - WRITE TIMEOUT
EDA6: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
EDA9: B0 F4     BCS $ED9F
EDAB: 58        CLI
EDAC: 60        RTS



 $EDAD/60845:   Flag Errors: Status #80 - DEVICE NOT PRESENT - c64ref 

Jump from $ED47:

EDAD: A9 80     LDA #$80
EDAF: 2C        .BYTE $2C



 $EDB0/60848:   Flag Errors: Status #03 - WRITE TIMEOUT - c64ref 

Jump from $ED6F, $EDA4:

EDB0: A9 03     LDA #$03

Jump from $EE44:

EDB2: 20 1C FE  JSR $FE1C     ; Control OS Messages
EDB5: 58        CLI
EDB6: 18        CLC
EDB7: 90 4A     BCC $EE03     ; Send UNLISTEN



 $EDB9/60857:   Send LISTEN Secondary Address - c64ref 

Jump from $F286, $F3EA, $F612, $F651, $FF93:

EDB9: 85 95     STA $95       ; Buffered Character for Serial Bus
EDBB: 20 36 ED  JSR $ED36     ; Send LISTEN Command on Serial Bus



 $EDBE/60862:   Clear ATN - c64ref 

Jump from $EDD0, $EE03, $F281:

EDBE: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EDC1: 29 F7     AND #$F7
EDC3: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EDC6: 60        RTS



 $EDC7/60871:   Send TALK Secondary Address - c64ref 

Jump from $F245, $F4D2, $FF96:

EDC7: 85 95     STA $95       ; Buffered Character for Serial Bus
EDC9: 20 36 ED  JSR $ED36     ; Send LISTEN Command on Serial Bus



 $EDCC/60876:   Wait For Clock - c64ref 

Jump from $F23F:

EDCC: 78        SEI
EDCD: 20 A0 EE  JSR $EEA0     ; Serial Output 0
EDD0: 20 BE ED  JSR $EDBE     ; Clear ATN
EDD3: 20 85 EE  JSR $EE85     ; Serial Clock On

Jump from $EDD9:

EDD6: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
EDD9: 30 FB     BMI $EDD6
EDDB: 58        CLI
EDDC: 60        RTS



 $EDDD/60893:   Send Serial Deferred - c64ref 

Jump from $F1D8, $F3FE, $F61C, $F621, $F62B, $FFA8:

EDDD: 24 94     BIT $94       ; Flag: Serial Bus - Output Character buffered
EDDF: 30 05     BMI $EDE6
EDE1: 38        SEC
EDE2: 66 94     ROR $94       ; Flag: Serial Bus - Output Character buffered
EDE4: D0 05     BNE $EDEB

Jump from $EDDF:

EDE6: 48        PHA
EDE7: 20 40 ED  JSR $ED40     ; Send Data On Serial Bus
EDEA: 68        PLA

Jump from $EDE4:

EDEB: 85 95     STA $95       ; Buffered Character for Serial Bus
EDED: 18        CLC
EDEE: 60        RTS



 $EDEF/60911:   Send UNTALK - c64ref 

Jump from $F340, $F528, $FFAB:

EDEF: 78        SEI
EDF0: 20 8E EE  JSR $EE8E     ; Serial Clock Off
EDF3: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EDF6: 09 08     ORA #$08
EDF8: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EDFB: A9 5F     LDA #$5F
EDFD: 2C        .BYTE $2C



 $EDFE/60926:   Send UNLISTEN - c64ref 

Jump from $F339, $F63F, $F654, $FFAE:

EDFE: A9 3F     LDA #$3F
EE00: 20 11 ED  JSR $ED11     ; Send LISTEN Command on Serial Bus

Jump from $EDB7:

EE03: 20 BE ED  JSR $EDBE     ; Clear ATN

Jump from $EE7D:

EE06: 8A        TXA
EE07: A2 0A     LDX #$0A

Jump from $EE0A:

EE09: CA        DEX
EE0A: D0 FD     BNE $EE09
EE0C: AA        TAX
EE0D: 20 85 EE  JSR $EE85     ; Serial Clock On
EE10: 4C 97 EE  JMP $EE97     ; Serial Output 1



 $EE13/60947:   Receive From Serial Bus - c64ref 

Jump from $F1B5, $F4D5, $F4E0, $F501, $FFA5:

EE13: 78        SEI
EE14: A9 00     LDA #$00
EE16: 85 A5     STA $A5       ; Tape Synchronising count down
EE18: 20 85 EE  JSR $EE85     ; Serial Clock On

Jump from $EE1E:

EE1B: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
EE1E: 10 FB     BPL $EE1B

Jump from $EE54:

EE20: A9 01     LDA #$01
EE22: 8D 07 DC  STA $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
EE25: A9 19     LDA #$19
EE27: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
EE2A: 20 97 EE  JSR $EE97     ; Serial Output 1
EE2D: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register

Jump from $EE3A:

EE30: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
EE33: 29 02     AND #$02
EE35: D0 07     BNE $EE3E
EE37: 20 A9 EE  JSR $EEA9     ; Get Serial Data And Clock In
EE3A: 30 F4     BMI $EE30
EE3C: 10 18     BPL $EE56

Jump from $EE35:

EE3E: A5 A5     LDA $A5       ; Tape Synchronising count down
EE40: F0 05     BEQ $EE47
EE42: A9 02     LDA #$02
EE44: 4C B2 ED  JMP $EDB2     ; Flag Errors: Status #03 - WRITE TIMEOUT

Jump from $EE40:

EE47: 20 A0 EE  JSR $EEA0     ; Serial Output 0
EE4A: 20 85 EE  JSR $EE85     ; Serial Clock On
EE4D: A9 40     LDA #$40
EE4F: 20 1C FE  JSR $FE1C     ; Control OS Messages
EE52: E6 A5     INC $A5       ; Tape Synchronising count down
EE54: D0 CA     BNE $EE20

Jump from $EE3C:

EE56: A9 08     LDA #$08
EE58: 85 A5     STA $A5       ; Tape Synchronising count down

Jump from $EE60, $EE63, $EE74:

EE5A: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE5D: CD 00 DD  CMP $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE60: D0 F8     BNE $EE5A
EE62: 0A        ASL
EE63: 10 F5     BPL $EE5A
EE65: 66 A4     ROR $A4       ; Serial Bus shift Counter

Jump from $EE6D, $EE70:

EE67: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE6A: CD 00 DD  CMP $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE6D: D0 F8     BNE $EE67
EE6F: 0A        ASL
EE70: 30 F5     BMI $EE67
EE72: C6 A5     DEC $A5       ; Tape Synchronising count down
EE74: D0 E4     BNE $EE5A
EE76: 20 A0 EE  JSR $EEA0     ; Serial Output 0
EE79: 24 90     BIT $90       ; Kernal I/O Status Word ST
EE7B: 50 03     BVC $EE80
EE7D: 20 06 EE  JSR $EE06     ; Send UNLISTEN

Jump from $EE7B:

EE80: A5 A4     LDA $A4       ; Serial Bus shift Counter
EE82: 58        CLI
EE83: 18        CLC
EE84: 60        RTS



 $EE85/61061:   Serial Clock On - c64ref 

Jump from $ED2B, $ED49, $ED7D, $EDD3, $EE0D, $EE18, $EE4A:

EE85: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE88: 29 EF     AND #$EF
EE8A: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE8D: 60        RTS



 $EE8E/61070:   Serial Clock Off - c64ref 

Jump from $ED37, $ED5F, $EDF0, $FF7D:

EE8E: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE91: 09 10     ORA #$10
EE93: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE96: 60        RTS



 $EE97/61079:   Serial Output 1 - c64ref 

Jump from $ED24, $ED3A, $ED41, $ED7A, $EE10, $EE2A:

EE97: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE9A: 29 DF     AND #$DF
EE9C: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EE9F: 60        RTS



 $EEA0/61088:   Serial Output 0 - c64ref 

Jump from $ED75, $EDCD, $EE47, $EE76:

EEA0: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EEA3: 09 20     ORA #$20
EEA5: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EEA8: 60        RTS



 $EEA9/61097:   Get Serial Data And Clock In - c64ref 

Jump from $EEAF, $ED44, $ED50, $ED55, $ED5A, $EDA6, $EDD6, $EE1B, $EE37:

EEA9: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EEAC: CD 00 DD  CMP $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
EEAF: D0 F8     BNE $EEA9
EEB1: 0A        ASL
EEB2: 60        RTS



 $EEB3/61107:   Delay 1 ms - c64ref 

Jump from $ED3D:

EEB3: 8A        TXA
EEB4: A2 B8     LDX #$B8

Jump from $EEB7:

EEB6: CA        DEX
EEB7: D0 FD     BNE $EEB6
EEB9: AA        TAX
EEBA: 60        RTS



 $EEBB/61115:   RS232 Send - c64ref 

Jump from $FE9D:

EEBB: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
EEBD: F0 47     BEQ $EF06     ; Send New RS232 Byte
EEBF: 30 3F     BMI $EF00
EEC1: 46 B6     LSR $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
EEC3: A2 00     LDX #$00
EEC5: 90 01     BCC $EEC8
EEC7: CA        DEX

Jump from $EEC5:

EEC8: 8A        TXA
EEC9: 45 BD     EOR $BD       ; RS232 Output Parity/Tape Byte temporary
EECB: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
EECD: C6 B4     DEC $B4       ; RS232 Write bit count/Tape Read timing Flag
EECF: F0 06     BEQ $EED7

Jump from $EEEC, $EEF0, $EF04:

EED1: 8A        TXA
EED2: 29 04     AND #$04
EED4: 85 B5     STA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
EED6: 60        RTS

Jump from $EECF:

EED7: A9 20     LDA #$20
EED9: 2C 94 02  BIT $0294     ; RS232 Pseudo 6551 command Register Image
EEDC: F0 14     BEQ $EEF2
EEDE: 30 1C     BMI $EEFC
EEE0: 70 14     BVS $EEF6
EEE2: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
EEE4: D0 01     BNE $EEE7

Jump from $EEF4, $EEFA, $EEFE:

EEE6: CA        DEX

Jump from $EEE4, $EEF8, $EEFC:

EEE7: C6 B4     DEC $B4       ; RS232 Write bit count/Tape Read timing Flag
EEE9: AD 93 02  LDA $0293     ; RS232 Pseudo 6551 control Register Image
EEEC: 10 E3     BPL $EED1
EEEE: C6 B4     DEC $B4       ; RS232 Write bit count/Tape Read timing Flag
EEF0: D0 DF     BNE $EED1

Jump from $EEDC:

EEF2: E6 B4     INC $B4       ; RS232 Write bit count/Tape Read timing Flag
EEF4: D0 F0     BNE $EEE6

Jump from $EEE0:

EEF6: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
EEF8: F0 ED     BEQ $EEE7
EEFA: D0 EA     BNE $EEE6

Jump from $EEDE:

EEFC: 70 E9     BVS $EEE7
EEFE: 50 E6     BVC $EEE6

Jump from $EEBF:

EF00: E6 B4     INC $B4       ; RS232 Write bit count/Tape Read timing Flag
EF02: A2 FF     LDX #$FF
EF04: D0 CB     BNE $EED1



 $EF06/61190:   Send New RS232 Byte - c64ref 

Jump from $EEBD, $F044:

EF06: AD 94 02  LDA $0294     ; RS232 Pseudo 6551 command Register Image
EF09: 4A        LSR
EF0A: 90 07     BCC $EF13
EF0C: 2C 01 DD  BIT $DD01     ; CIA2: Data Port B (User Port, RS232)
EF0F: 10 1D     BPL $EF2E     ; 'No DSR' / 'No CTS' Error
EF11: 50 1E     BVC $EF31     ; 'No DSR' / 'No CTS' Error

Jump from $EF0A:

EF13: A9 00     LDA #$00
EF15: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
EF17: 85 B5     STA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
EF19: AE 98 02  LDX $0298     ; RS232 Number of Bits left to send
EF1C: 86 B4     STX $B4       ; RS232 Write bit count/Tape Read timing Flag
EF1E: AC 9D 02  LDY $029D     ; RS232 Pointer: High Byte of Output Buffer
EF21: CC 9E 02  CPY $029E     ; RS232 Index to End of Output Buffer
EF24: F0 13     BEQ $EF39     ; Disable Timer
EF26: B1 F9     LDA ($F9),Y   ; RS232 Output Buffer Pointer
EF28: 85 B6     STA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
EF2A: EE 9D 02  INC $029D     ; RS232 Pointer: High Byte of Output Buffer
EF2D: 60        RTS



 $EF2E/61230:   'No DSR' / 'No CTS' Error - c64ref 

Jump from $EF0F:

EF2E: A9 40     LDA #$40
EF30: 2C        .BYTE $2C

Jump from $EF11:

EF31: A9 10     LDA #$10
EF33: 0D 97 02  ORA $0297     ; RS232 Pseudo 6551 Status Register Image
EF36: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image



 $EF39/61241:   Disable Timer - c64ref 

Jump from $EF24:

EF39: A9 01     LDA #$01

Jump from $EF8D, $F041, $F07A:

EF3B: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
EF3E: 4D A1 02  EOR $02A1     ; RS232 Enables
EF41: 09 80     ORA #$80
EF43: 8D A1 02  STA $02A1     ; RS232 Enables
EF46: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
EF49: 60        RTS



 $EF4A/61258:   Compute Bit Count - c64ref 

Jump from $F41D:

EF4A: A2 09     LDX #$09
EF4C: A9 20     LDA #$20
EF4E: 2C 93 02  BIT $0293     ; RS232 Pseudo 6551 control Register Image
EF51: F0 01     BEQ $EF54
EF53: CA        DEX

Jump from $EF51:

EF54: 50 02     BVC $EF58
EF56: CA        DEX
EF57: CA        DEX

Jump from $EF54:

EF58: 60        RTS



 $EF59/61273:   RS232 Receive - c64ref 

Jump from $FF04:

EF59: A6 A9     LDX $A9       ; RS232 Flag: Start Bit check/Tape temporary
EF5B: D0 33     BNE $EF90     ; Process RS232 Byte
EF5D: C6 A8     DEC $A8       ; RS232 Input Bit count/Tape temporary
EF5F: F0 36     BEQ $EF97     ; Process RS232 Byte
EF61: 30 0D     BMI $EF70
EF63: A5 A7     LDA $A7       ; Tape temporary
EF65: 45 AB     EOR $AB       ; RS232 Input parity/Tape temporary
EF67: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary
EF69: 46 A7     LSR $A7       ; Tape temporary
EF6B: 66 AA     ROR $AA       ; RS232 Input Byte Buffer/Tape temporary

Jump from $EF7C, $EFBA, $EFC2, $EFC5:

EF6D: 60        RTS

Jump from $EFB8:

EF6E: C6 A8     DEC $A8       ; RS232 Input Bit count/Tape temporary

Jump from $EF61:

EF70: A5 A7     LDA $A7       ; Tape temporary
EF72: F0 67     BEQ $EFDB     ; Process RS232 Byte
EF74: AD 93 02  LDA $0293     ; RS232 Pseudo 6551 control Register Image
EF77: 0A        ASL
EF78: A9 01     LDA #$01
EF7A: 65 A8     ADC $A8       ; RS232 Input Bit count/Tape temporary
EF7C: D0 EF     BNE $EF6D



 $EF7E/61310:   Set Up To Receive - c64ref 

Jump from $EF92, $EFD8:

EF7E: A9 90     LDA #$90
EF80: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
EF83: 0D A1 02  ORA $02A1     ; RS232 Enables
EF86: 8D A1 02  STA $02A1     ; RS232 Enables
EF89: 85 A9     STA $A9       ; RS232 Flag: Start Bit check/Tape temporary
EF8B: A9 02     LDA #$02
EF8D: 4C 3B EF  JMP $EF3B     ; Disable Timer



 $EF90/61328:   Process RS232 Byte - c64ref 

Jump from $EF5B:

EF90: A5 A7     LDA $A7       ; Tape temporary
EF92: D0 EA     BNE $EF7E     ; Set Up To Receive
EF94: 4C D3 E4  JMP $E4D3     ; Unused Bytes For Future Patches

* Old KERNAL:
EF94: 85 A9     STA $A9       ; RS232 Flag: Start Bit check/Tape temporary
EF96: 60        RTS

Jump from $EF5F:

EF97: AC 9B 02  LDY $029B     ; RS232 Index to End of Input Buffer
EF9A: C8        INY
EF9B: CC 9C 02  CPY $029C     ; RS232 Pointer: High Byte of Input Buffer
EF9E: F0 2A     BEQ $EFCA
EFA0: 8C 9B 02  STY $029B     ; RS232 Index to End of Input Buffer
EFA3: 88        DEY
EFA4: A5 AA     LDA $AA       ; RS232 Input Byte Buffer/Tape temporary
EFA6: AE 98 02  LDX $0298     ; RS232 Number of Bits left to send

Jump from $EFAF:

EFA9: E0 09     CPX #$09
EFAB: F0 04     BEQ $EFB1
EFAD: 4A        LSR
EFAE: E8        INX
EFAF: D0 F8     BNE $EFA9

Jump from $EFAB:

EFB1: 91 F7     STA ($F7),Y   ; RS232 Input Buffer Pointer
EFB3: A9 20     LDA #$20
EFB5: 2C 94 02  BIT $0294     ; RS232 Pseudo 6551 command Register Image
EFB8: F0 B4     BEQ $EF6E     ; RS232 Receive
EFBA: 30 B1     BMI $EF6D     ; RS232 Receive
EFBC: A5 A7     LDA $A7       ; Tape temporary
EFBE: 45 AB     EOR $AB       ; RS232 Input parity/Tape temporary
EFC0: F0 03     BEQ $EFC5
EFC2: 70 A9     BVS $EF6D     ; RS232 Receive
EFC4: 2C        .BYTE $2C

Jump from $EFC0:

EFC5: 50 A6     BVC $EF6D     ; RS232 Receive
EFC7: A9 01     LDA #$01
EFC9: 2C        .BYTE $2C

Jump from $EF9E:

EFCA: A9 04     LDA #$04
EFCC: 2C        .BYTE $2C

Jump from $EFDF:

EFCD: A9 80     LDA #$80
EFCF: 2C        .BYTE $2C

Jump from $EFDD:

EFD0: A9 02     LDA #$02
EFD2: 0D 97 02  ORA $0297     ; RS232 Pseudo 6551 Status Register Image
EFD5: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image
EFD8: 4C 7E EF  JMP $EF7E     ; Set Up To Receive

Jump from $EF72:

EFDB: A5 AA     LDA $AA       ; RS232 Input Byte Buffer/Tape temporary
EFDD: D0 F1     BNE $EFD0
EFDF: F0 EC     BEQ $EFCD



 $EFE1/61409:   Submit to RS232 - c64ref 

Jump from $F26C:

EFE1: 85 9A     STA $9A       ; Default Output Device (3)
EFE3: AD 94 02  LDA $0294     ; RS232 Pseudo 6551 command Register Image
EFE6: 4A        LSR
EFE7: 90 29     BCC $F012     ; No DSR (Data Set Ready) Error
EFE9: A9 02     LDA #$02
EFEB: 2C 01 DD  BIT $DD01     ; CIA2: Data Port B (User Port, RS232)
EFEE: 10 1D     BPL $F00D     ; No DSR (Data Set Ready) Error
EFF0: D0 20     BNE $F012     ; No DSR (Data Set Ready) Error

Jump from $EFF7:

EFF2: AD A1 02  LDA $02A1     ; RS232 Enables
EFF5: 29 02     AND #$02
EFF7: D0 F9     BNE $EFF2

Jump from $EFFC:

EFF9: 2C 01 DD  BIT $DD01     ; CIA2: Data Port B (User Port, RS232)
EFFC: 70 FB     BVS $EFF9
EFFE: AD 01 DD  LDA $DD01     ; CIA2: Data Port B (User Port, RS232)
F001: 09 02     ORA #$02
F003: 8D 01 DD  STA $DD01     ; CIA2: Data Port B (User Port, RS232)

Jump from $F00B:

F006: 2C 01 DD  BIT $DD01     ; CIA2: Data Port B (User Port, RS232)
F009: 70 07     BVS $F012     ; No DSR (Data Set Ready) Error
F00B: 30 F9     BMI $F006



 $F00D/61453:   No DSR (Data Set Ready) Error - c64ref 

Jump from $EFEE, $F05E, $F459:

F00D: A9 40     LDA #$40
F00F: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image

Jump from $EFE7, $EFF0, $F009:

F012: 18        CLC
F013: 60        RTS

Jump from $F01E:

F014: 20 28 F0  JSR $F028     ; Send to RS232 Buffer



 $F017/61463:   Send to RS232 Buffer - c64ref 

Jump from $F208:

F017: AC 9E 02  LDY $029E     ; RS232 Index to End of Output Buffer
F01A: C8        INY
F01B: CC 9D 02  CPY $029D     ; RS232 Pointer: High Byte of Output Buffer
F01E: F0 F4     BEQ $F014     ; No DSR (Data Set Ready) Error
F020: 8C 9E 02  STY $029E     ; RS232 Index to End of Output Buffer
F023: 88        DEY
F024: A5 9E     LDA $9E       ; Tape Error log pass 1
F026: 91 F9     STA ($F9),Y   ; RS232 Output Buffer Pointer

Jump from $F014:

F028: AD A1 02  LDA $02A1     ; RS232 Enables
F02B: 4A        LSR
F02C: B0 1E     BCS $F04C
F02E: A9 10     LDA #$10
F030: 8D 0E DD  STA $DD0E     ; CIA2: Control Register A
F033: AD 99 02  LDA $0299     ; RS232 Baud Rate; Full Bit time microseconds
F036: 8D 04 DD  STA $DD04     ; CIA2: Timer A Low-Byte  (RS232)
F039: AD 9A 02  LDA $029A     ; RS232 Baud Rate; Full Bit time microseconds
F03C: 8D 05 DD  STA $DD05     ; CIA2: Timer A High-Byte (RS232)
F03F: A9 81     LDA #$81
F041: 20 3B EF  JSR $EF3B     ; Disable Timer
F044: 20 06 EF  JSR $EF06     ; Send New RS232 Byte
F047: A9 11     LDA #$11
F049: 8D 0E DD  STA $DD0E     ; CIA2: Control Register A

Jump from $F02C:

F04C: 60        RTS



 $F04D/61517:   Input From RS232 - c64ref 

Jump from $F227:

F04D: 85 99     STA $99       ; Default Input Device (0)
F04F: AD 94 02  LDA $0294     ; RS232 Pseudo 6551 command Register Image
F052: 4A        LSR
F053: 90 28     BCC $F07D
F055: 29 08     AND #$08
F057: F0 24     BEQ $F07D
F059: A9 02     LDA #$02
F05B: 2C 01 DD  BIT $DD01     ; CIA2: Data Port B (User Port, RS232)
F05E: 10 AD     BPL $F00D     ; No DSR (Data Set Ready) Error
F060: F0 22     BEQ $F084

Jump from $F066:

F062: AD A1 02  LDA $02A1     ; RS232 Enables
F065: 4A        LSR
F066: B0 FA     BCS $F062
F068: AD 01 DD  LDA $DD01     ; CIA2: Data Port B (User Port, RS232)
F06B: 29 FD     AND #$FD
F06D: 8D 01 DD  STA $DD01     ; CIA2: Data Port B (User Port, RS232)

Jump from $F075:

F070: AD 01 DD  LDA $DD01     ; CIA2: Data Port B (User Port, RS232)
F073: 29 04     AND #$04
F075: F0 F9     BEQ $F070

Jump from $F082:

F077: A9 90     LDA #$90
F079: 18        CLC
F07A: 4C 3B EF  JMP $EF3B     ; Disable Timer

Jump from $F053, $F057:

F07D: AD A1 02  LDA $02A1     ; RS232 Enables
F080: 29 12     AND #$12
F082: F0 F3     BEQ $F077

Jump from $F060:

F084: 18        CLC
F085: 60        RTS



 $F086/61574:   Get From RS232 - c64ref 

Jump from $F150:

F086: AD 97 02  LDA $0297     ; RS232 Pseudo 6551 Status Register Image
F089: AC 9C 02  LDY $029C     ; RS232 Pointer: High Byte of Input Buffer
F08C: CC 9B 02  CPY $029B     ; RS232 Index to End of Input Buffer
F08F: F0 0B     BEQ $F09C
F091: 29 F7     AND #$F7
F093: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image
F096: B1 F7     LDA ($F7),Y   ; RS232 Input Buffer Pointer
F098: EE 9C 02  INC $029C     ; RS232 Pointer: High Byte of Input Buffer
F09B: 60        RTS

Jump from $F08F:

F09C: 09 08     ORA #$08
F09E: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image
F0A1: A9 00     LDA #$00
F0A3: 60        RTS



 $F0A4/61604:   Serial Bus Idle - c64ref 

Jump from $ED0E, $F88A:

F0A4: 48        PHA
F0A5: AD A1 02  LDA $02A1     ; RS232 Enables
F0A8: F0 11     BEQ $F0BB

Jump from $F0AF:

F0AA: AD A1 02  LDA $02A1     ; RS232 Enables
F0AD: 29 03     AND #$03
F0AF: D0 F9     BNE $F0AA
F0B1: A9 10     LDA #$10
F0B3: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
F0B6: A9 00     LDA #$00
F0B8: 8D A1 02  STA $02A1     ; RS232 Enables

Jump from $F0A8:

F0BB: 68        PLA
F0BC: 60        RTS



 $F0BD/61629:   Table of Kernal I/O Messages - c64ref 

F0BD: 0D 49 2F 4F 20 45 52 52    '{CR}I/O ERR'
F0C5: 4F 52 20 A3 0D 53 45 41    'OR #, {CR}SEA'
F0CD: 52 43 48 49 4E 47 A0 46    'RCHING F'
F0D5: 4F 52 A0 0D 50 52 45 53    'OR {CR}PRES'
F0DD: 53 20 50 4C 41 59 20 4F    'S PLAY O'
F0E5: 4E 20 54 41 50 C5 50 52    'N TAPE, PR'
F0ED: 45 53 53 20 52 45 43 4F    'ESS RECO'
F0F5: 52 44 20 26 20 50 4C 41    'RD & PLA'
F0FD: 59 20 4F 4E 20 54 41 50    'Y ON TAP'
F105: C5 0D 4C 4F 41 44 49 4E    'E, {CR}LOADIN'
F10D: C7 0D 53 41 56 49 4E 47    'G, {CR}SAVING'
F115: A0 0D 56 45 52 49 46 59    ' {CR}VERIFY'
F11D: 49 4E C7 0D 46 4F 55 4E    'ING, {CR}FOUN'
F125: 44 A0 0D 4F 4B 8D          'D {CR}OK{CR},'

* SX64:
F0D5:          4C 4F 41 44 22       'LOAD"'
F0DD: 3A 2A 22 2C 38 0D 52 55    ':*",8{CR}RU'
F0E5: 4E 0D                      'N{CR}'


Kernal-Reference:

 LDA $F0BD,Y : $F12F


 $F12B/61739:   Print Message if Direct - c64ref 

Jump from $F5DA:

F12B: 24 9D     BIT $9D       ; Error-Mode-Flag
F12D: 10 0D     BPL $F13C     ; Print Message



 $F12F/61743:   Print Message - c64ref 

Jump from $F13A, $F5B5, $F5BE, $F695, $F71F, $F752, $F81E, $F82B:

F12F: B9 BD F0  LDA $F0BD,Y   ; Table of Kernal I/O Messages
F132: 08        PHP
F133: 29 7F     AND #$7F
F135: 20 D2 FF  JSR $FFD2     ; Output Vector, chrout
F138: C8        INY
F139: 28        PLP
F13A: 10 F3     BPL $F12F

Jump from $F12D:

F13C: 18        CLC
F13D: 60        RTS



 $F13E/61758:   Get a byte - c64ref 

F13E: A5 99     LDA $99       ; Default Input Device (0)
F140: D0 08     BNE $F14A
F142: A5 C6     LDA $C6       ; Number of Characters in Keyboard Buffer queue
F144: F0 0F     BEQ $F155
F146: 78        SEI
F147: 4C B4 E5  JMP $E5B4     ; Get Character From Keyboard Buffer

Jump from $F140:

F14A: C9 02     CMP #$02
F14C: D0 18     BNE $F166     ; Input a byte

Jump from $F1B8:

F14E: 84 97     STY $97       ; Storage of Y Register during RS232 fetch
F150: 20 86 F0  JSR $F086     ; Get From RS232
F153: A4 97     LDY $97       ; Storage of Y Register during RS232 fetch

Jump from $F144:

F155: 18        CLC
F156: 60        RTS



 $F157/61783:   Input a byte - c64ref 

F157: A5 99     LDA $99       ; Default Input Device (0)
F159: D0 0B     BNE $F166
F15B: A5 D3     LDA $D3       ; Cursor Column on current Line
F15D: 85 CA     STA $CA       ; Cursor X/Y position at start of Input
F15F: A5 D6     LDA $D6       ; Current Screen Line number of Cursor
F161: 85 C9     STA $C9       ; Cursor X/Y position at start of Input
F163: 4C 32 E6  JMP $E632     ; Input From Screen or Keyboard

Jump from $F159, $F14C:

F166: C9 03     CMP #$03
F168: D0 09     BNE $F173
F16A: 85 D0     STA $D0       ; Flag: Input from ...
F16C: A5 D5     LDA $D5       ; Current logical Line length: 39 or 79
F16E: 85 C8     STA $C8       ; Pointer: End of Line for Input
F170: 4C 32 E6  JMP $E632     ; Input From Screen or Keyboard

Jump from $F168:

F173: B0 38     BCS $F1AD     ; Get From Tape / Serial / RS232
F175: C9 02     CMP #$02
F177: F0 3F     BEQ $F1B8     ; Get From Tape / Serial / RS232
F179: 86 97     STX $97       ; Storage of Y Register during RS232 fetch
F17B: 20 99 F1  JSR $F199     ; Get From Tape / Serial / RS232
F17E: B0 16     BCS $F196
F180: 48        PHA
F181: 20 99 F1  JSR $F199     ; Get From Tape / Serial / RS232
F184: B0 0D     BCS $F193
F186: D0 05     BNE $F18D
F188: A9 40     LDA #$40
F18A: 20 1C FE  JSR $FE1C     ; Control OS Messages

Jump from $F186:

F18D: C6 A6     DEC $A6       ; Pointer: Tape I/O buffer
F18F: A6 97     LDX $97       ; Storage of Y Register during RS232 fetch
F191: 68        PLA
F192: 60        RTS

Jump from $F184:

F193: AA        TAX
F194: 68        PLA
F195: 8A        TXA

Jump from $F17E:

F196: A6 97     LDX $97       ; Storage of Y Register during RS232 fetch
F198: 60        RTS



 $F199/61849:   Get From Tape / Serial / RS232 - c64ref 

Jump from $F1A7, $F17B, $F181:

F199: 20 0D F8  JSR $F80D     ; Bump Tape Pointer
F19C: D0 0B     BNE $F1A9
F19E: 20 41 F8  JSR $F841     ; Initiate Tape Read
F1A1: B0 11     BCS $F1B4
F1A3: A9 00     LDA #$00
F1A5: 85 A6     STA $A6       ; Pointer: Tape I/O buffer
F1A7: F0 F0     BEQ $F199

Jump from $F19C:

F1A9: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F1AB: 18        CLC
F1AC: 60        RTS

Jump from $F173:

F1AD: A5 90     LDA $90       ; Kernal I/O Status Word ST
F1AF: F0 04     BEQ $F1B5

Jump from $F1C6:

F1B1: A9 0D     LDA #$0D

Jump from $F1BF:

F1B3: 18        CLC

Jump from $F1A1, $F1BB:

F1B4: 60        RTS

Jump from $F1AF:

F1B5: 4C 13 EE  JMP $EE13     ; Receive From Serial Bus

Jump from $F1C8, $F177:

F1B8: 20 4E F1  JSR $F14E     ; Get a byte
F1BB: B0 F7     BCS $F1B4
F1BD: C9 00     CMP #$00
F1BF: D0 F2     BNE $F1B3
F1C1: AD 97 02  LDA $0297     ; RS232 Pseudo 6551 Status Register Image
F1C4: 29 60     AND #$60
F1C6: D0 E9     BNE $F1B1
F1C8: F0 EE     BEQ $F1B8



 $F1CA/61898:   Output One Character - c64ref 

F1CA: 48        PHA
F1CB: A5 9A     LDA $9A       ; Default Output Device (3)
F1CD: C9 03     CMP #$03
F1CF: D0 04     BNE $F1D5
F1D1: 68        PLA
F1D2: 4C 16 E7  JMP $E716     ; Output to Screen

Jump from $F1CF:

F1D5: 90 04     BCC $F1DB
F1D7: 68        PLA
F1D8: 4C DD ED  JMP $EDDD     ; Send Serial Deferred

Jump from $F1D5:

F1DB: 4A        LSR
F1DC: 68        PLA

Jump from $F2D4:

F1DD: 85 9E     STA $9E       ; Tape Error log pass 1
F1DF: 8A        TXA
F1E0: 48        PHA
F1E1: 98        TYA
F1E2: 48        PHA
F1E3: 90 23     BCC $F208
F1E5: 20 0D F8  JSR $F80D     ; Bump Tape Pointer
F1E8: D0 0E     BNE $F1F8
F1EA: 20 64 F8  JSR $F864     ; Initiate Tape Write
F1ED: B0 0E     BCS $F1FD
F1EF: A9 02     LDA #$02
F1F1: A0 00     LDY #$00
F1F3: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F1F5: C8        INY
F1F6: 84 A6     STY $A6       ; Pointer: Tape I/O buffer

Jump from $F1E8:

F1F8: A5 9E     LDA $9E       ; Tape Error log pass 1
F1FA: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer

Jump from $F20B:

F1FC: 18        CLC

Jump from $F1ED:

F1FD: 68        PLA
F1FE: A8        TAY
F1FF: 68        PLA
F200: AA        TAX
F201: A5 9E     LDA $9E       ; Tape Error log pass 1
F203: 90 02     BCC $F207
F205: A9 00     LDA #$00

Jump from $F203:

F207: 60        RTS

Jump from $F1E3:

F208: 20 17 F0  JSR $F017     ; Send to RS232 Buffer
F20B: 4C FC F1  JMP $F1FC



 $F20E/61966:   Set Input Device - c64ref 

F20E: 20 0F F3  JSR $F30F     ; Find File
F211: F0 03     BEQ $F216
F213: 4C 01 F7  JMP $F701     ; Output I/O Error Messages: 'FILE NOT OPEN'

Jump from $F211:

F216: 20 1F F3  JSR $F31F     ; Set File values
F219: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F21B: F0 16     BEQ $F233
F21D: C9 03     CMP #$03
F21F: F0 12     BEQ $F233
F221: B0 14     BCS $F237
F223: C9 02     CMP #$02
F225: D0 03     BNE $F22A
F227: 4C 4D F0  JMP $F04D     ; Input From RS232

Jump from $F225:

F22A: A6 B9     LDX $B9       ; Current File - Secondary Address
F22C: E0 60     CPX #$60
F22E: F0 03     BEQ $F233
F230: 4C 0A F7  JMP $F70A     ; Output I/O Error Messages: 'NOT INPUT FILE'

Jump from $F21B, $F21F, $F22E, $F24B:

F233: 85 99     STA $99       ; Default Input Device (0)
F235: 18        CLC
F236: 60        RTS

Jump from $F221:

F237: AA        TAX
F238: 20 09 ED  JSR $ED09     ; Send TALK Command on Serial Bus
F23B: A5 B9     LDA $B9       ; Current File - Secondary Address
F23D: 10 06     BPL $F245
F23F: 20 CC ED  JSR $EDCC     ; Wait For Clock
F242: 4C 48 F2  JMP $F248

Jump from $F23D:

F245: 20 C7 ED  JSR $EDC7     ; Send TALK Secondary Address

Jump from $F242:

F248: 8A        TXA
F249: 24 90     BIT $90       ; Kernal I/O Status Word ST
F24B: 10 E6     BPL $F233
F24D: 4C 07 F7  JMP $F707     ; Output I/O Error Messages: 'DEVICE NOT PRESENT'



 $F250/62032:   Set Output Device - c64ref 

F250: 20 0F F3  JSR $F30F     ; Find File
F253: F0 03     BEQ $F258
F255: 4C 01 F7  JMP $F701     ; Output I/O Error Messages: 'FILE NOT OPEN'

Jump from $F253:

F258: 20 1F F3  JSR $F31F     ; Set File values
F25B: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F25D: D0 03     BNE $F262

Jump from $F273:

F25F: 4C 0D F7  JMP $F70D     ; Output I/O Error Messages: 'NOT OUTPUT FILE'

Jump from $F25D:

F262: C9 03     CMP #$03
F264: F0 0F     BEQ $F275
F266: B0 11     BCS $F279
F268: C9 02     CMP #$02
F26A: D0 03     BNE $F26F
F26C: 4C E1 EF  JMP $EFE1     ; Submit to RS232

Jump from $F26A:

F26F: A6 B9     LDX $B9       ; Current File - Secondary Address
F271: E0 60     CPX #$60
F273: F0 EA     BEQ $F25F

Jump from $F264, $F28C:

F275: 85 9A     STA $9A       ; Default Output Device (3)
F277: 18        CLC
F278: 60        RTS

Jump from $F266:

F279: AA        TAX
F27A: 20 0C ED  JSR $ED0C     ; Send LISTEN Command on Serial Bus
F27D: A5 B9     LDA $B9       ; Current File - Secondary Address
F27F: 10 05     BPL $F286
F281: 20 BE ED  JSR $EDBE     ; Clear ATN
F284: D0 03     BNE $F289

Jump from $F27F:

F286: 20 B9 ED  JSR $EDB9     ; Send LISTEN Secondary Address

Jump from $F284:

F289: 8A        TXA
F28A: 24 90     BIT $90       ; Kernal I/O Status Word ST
F28C: 10 E7     BPL $F275
F28E: 4C 07 F7  JMP $F707     ; Output I/O Error Messages: 'DEVICE NOT PRESENT'



 $F291/62097:   Close File - c64ref 

F291: 20 14 F3  JSR $F314     ; Find File
F294: F0 02     BEQ $F298
F296: 18        CLC
F297: 60        RTS

Jump from $F294:

F298: 20 1F F3  JSR $F31F     ; Set File values
F29B: 8A        TXA
F29C: 48        PHA
F29D: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F29F: F0 50     BEQ $F2F1
F2A1: C9 03     CMP #$03
F2A3: F0 4C     BEQ $F2F1
F2A5: B0 47     BCS $F2EE
F2A7: C9 02     CMP #$02
F2A9: D0 1D     BNE $F2C8
F2AB: 68        PLA
F2AC: 20 F2 F2  JSR $F2F2
F2AF: 20 83 F4  JSR $F483     ; Open RS232
F2B2: 20 27 FE  JSR $FE27     ; Read / Set Top of Memory
F2B5: A5 F8     LDA $F8       ; RS232 Input Buffer Pointer
F2B7: F0 01     BEQ $F2BA
F2B9: C8        INY

Jump from $F2B7:

F2BA: A5 FA     LDA $FA       ; RS232 Output Buffer Pointer
F2BC: F0 01     BEQ $F2BF
F2BE: C8        INY

Jump from $F2BC:

F2BF: A9 00     LDA #$00
F2C1: 85 F8     STA $F8       ; RS232 Input Buffer Pointer
F2C3: 85 FA     STA $FA       ; RS232 Output Buffer Pointer
F2C5: 4C 7D F4  JMP $F47D     ; Open RS232

Jump from $F2A9:

F2C8: A5 B9     LDA $B9       ; Current File - Secondary Address
F2CA: 29 0F     AND #$0F
F2CC: F0 23     BEQ $F2F1
F2CE: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F2D1: A9 00     LDA #$00
F2D3: 38        SEC
F2D4: 20 DD F1  JSR $F1DD     ; Output One Character
F2D7: 20 64 F8  JSR $F864     ; Initiate Tape Write
F2DA: 90 04     BCC $F2E0
F2DC: 68        PLA
F2DD: A9 00     LDA #$00
F2DF: 60        RTS

Jump from $F2DA:

F2E0: A5 B9     LDA $B9       ; Current File - Secondary Address
F2E2: C9 62     CMP #$62
F2E4: D0 0B     BNE $F2F1
F2E6: A9 05     LDA #$05
F2E8: 20 6A F7  JSR $F76A     ; Write Tape Header
F2EB: 4C F1 F2  JMP $F2F1

Jump from $F2A5:

F2EE: 20 42 F6  JSR $F642     ; Save to Serial Bus

Jump from $F29F, $F2A3, $F2CC, $F2E4, $F2EB:

F2F1: 68        PLA

Jump from $F2AC:

F2F2: AA        TAX
F2F3: C6 98     DEC $98       ; Number of Open Files/Index to File Table
F2F5: E4 98     CPX $98       ; Number of Open Files/Index to File Table
F2F7: F0 14     BEQ $F30D
F2F9: A4 98     LDY $98       ; Number of Open Files/Index to File Table
F2FB: B9 59 02  LDA $0259,Y   ; Active logical File numbers
F2FE: 9D 59 02  STA $0259,X   ; Active logical File numbers
F301: B9 63 02  LDA $0263,Y   ; Active File First Addresses (Device numbers)
F304: 9D 63 02  STA $0263,X   ; Active File First Addresses (Device numbers)
F307: B9 6D 02  LDA $026D,Y   ; Active File Secondary Addresses
F30A: 9D 6D 02  STA $026D,X   ; Active File Secondary Addresses

Jump from $F2F7:

F30D: 18        CLC
F30E: 60        RTS



 $F30F/62223:   Find File - c64ref 

Jump from $F20E, $F250, $F351:

F30F: A9 00     LDA #$00
F311: 85 90     STA $90       ; Kernal I/O Status Word ST
F313: 8A        TXA

Jump from $F291:

F314: A6 98     LDX $98       ; Number of Open Files/Index to File Table

Jump from $F31C:

F316: CA        DEX
F317: 30 15     BMI $F32E     ; Set File values
F319: DD 59 02  CMP $0259,X   ; Active logical File numbers
F31C: D0 F8     BNE $F316
F31E: 60        RTS



 $F31F/62239:   Set File values - c64ref 

Jump from $F216, $F258, $F298:

F31F: BD 59 02  LDA $0259,X   ; Active logical File numbers
F322: 85 B8     STA $B8       ; Current File - Logical File number
F324: BD 63 02  LDA $0263,X   ; Active File First Addresses (Device numbers)
F327: 85 BA     STA $BA       ; Current File - First Address (Device number)
F329: BD 6D 02  LDA $026D,X   ; Active File Secondary Addresses
F32C: 85 B9     STA $B9       ; Current File - Secondary Address

Jump from $F317:

F32E: 60        RTS



 $F32F/62255:   Abort All Files - c64ref 

F32F: A9 00     LDA #$00
F331: 85 98     STA $98       ; Number of Open Files/Index to File Table



 $F333/62259:   Restore Default I/O - c64ref 

F333: A2 03     LDX #$03
F335: E4 9A     CPX $9A       ; Default Output Device (3)
F337: B0 03     BCS $F33C
F339: 20 FE ED  JSR $EDFE     ; Send UNLISTEN

Jump from $F337:

F33C: E4 99     CPX $99       ; Default Input Device (0)
F33E: B0 03     BCS $F343
F340: 20 EF ED  JSR $EDEF     ; Send UNTALK

Jump from $F33E:

F343: 86 9A     STX $9A       ; Default Output Device (3)
F345: A9 00     LDA #$00
F347: 85 99     STA $99       ; Default Input Device (0)
F349: 60        RTS



 $F34A/62282:   Open File - c64ref 

F34A: A6 B8     LDX $B8       ; Current File - Logical File number
F34C: D0 03     BNE $F351
F34E: 4C 0A F7  JMP $F70A     ; Output I/O Error Messages: 'NOT INPUT FILE'

Jump from $F34C:

F351: 20 0F F3  JSR $F30F     ; Find File
F354: D0 03     BNE $F359
F356: 4C FE F6  JMP $F6FE     ; Output I/O Error Messages: 'FILE OPEN'

Jump from $F354:

F359: A6 98     LDX $98       ; Number of Open Files/Index to File Table
F35B: E0 0A     CPX #$0A
F35D: 90 03     BCC $F362
F35F: 4C FB F6  JMP $F6FB     ; Output I/O Error Messages: 'TOO MANY FILES'

Jump from $F35D:

F362: E6 98     INC $98       ; Number of Open Files/Index to File Table
F364: A5 B8     LDA $B8       ; Current File - Logical File number
F366: 9D 59 02  STA $0259,X   ; Active logical File numbers
F369: A5 B9     LDA $B9       ; Current File - Secondary Address
F36B: 09 60     ORA #$60
F36D: 85 B9     STA $B9       ; Current File - Secondary Address
F36F: 9D 6D 02  STA $026D,X   ; Active File Secondary Addresses
F372: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F374: 9D 63 02  STA $0263,X   ; Active File First Addresses (Device numbers)
F377: F0 5A     BEQ $F3D3
F379: C9 03     CMP #$03
F37B: F0 56     BEQ $F3D3
F37D: 90 05     BCC $F384
F37F: 20 D5 F3  JSR $F3D5     ; Send Secondary Address
F382: 90 4F     BCC $F3D3

Jump from $F37D:

F384: C9 02     CMP #$02
F386: D0 03     BNE $F38B
* SX64:
F386: D0 08     BNE $F390

F388: 4C 09 F4  JMP $F409     ; Open RS232

Jump from $F386:

F38B: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F38E: B0 03     BCS $F393

Jump from $F386 (SX64):

F390: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F38E:

F393: A5 B9     LDA $B9       ; Current File - Secondary Address
F395: 29 0F     AND #$0F
F397: D0 1F     BNE $F3B8
F399: 20 17 F8  JSR $F817     ; Print "PRESS PLAY ON TAPE"
F39C: B0 36     BCS $F3D4
F39E: 20 AF F5  JSR $F5AF     ; Print "SEARCHING"
F3A1: A5 B7     LDA $B7       ; Number of Characters in Filename
F3A3: F0 0A     BEQ $F3AF
F3A5: 20 EA F7  JSR $F7EA     ; Find Specific Tape Header
F3A8: 90 18     BCC $F3C2
F3AA: F0 28     BEQ $F3D4

Jump from $F3B6:

F3AC: 4C 04 F7  JMP $F704     ; Output I/O Error Messages: 'FILE NOT FOUND'

Jump from $F3A3:

F3AF: 20 2C F7  JSR $F72C     ; Find Any Tape Header
F3B2: F0 20     BEQ $F3D4
F3B4: 90 0C     BCC $F3C2
F3B6: B0 F4     BCS $F3AC

Jump from $F397:

F3B8: 20 38 F8  JSR $F838     ; Print "PRESS RECORD..."
F3BB: B0 17     BCS $F3D4
F3BD: A9 04     LDA #$04
F3BF: 20 6A F7  JSR $F76A     ; Write Tape Header

Jump from $F3A8, $F3B4:

F3C2: A9 BF     LDA #$BF
F3C4: A4 B9     LDY $B9       ; Current File - Secondary Address
F3C6: C0 60     CPY #$60
F3C8: F0 07     BEQ $F3D1
F3CA: A0 00     LDY #$00
F3CC: A9 02     LDA #$02
F3CE: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F3D0: 98        TYA

Jump from $F3C8:

F3D1: 85 A6     STA $A6       ; Pointer: Tape I/O buffer

Jump from $F377, $F37B, $F382, $F3D7, $F3DB:

F3D3: 18        CLC

Jump from $F39C, $F3AA, $F3B2, $F3BB:

F3D4: 60        RTS



 $F3D5/62421:   Send Secondary Address - c64ref 

Jump from $F37F, $F4C8, $F605:

F3D5: A5 B9     LDA $B9       ; Current File - Secondary Address
F3D7: 30 FA     BMI $F3D3     ; Open File
F3D9: A4 B7     LDY $B7       ; Number of Characters in Filename
F3DB: F0 F6     BEQ $F3D3     ; Open File
F3DD: A9 00     LDA #$00
F3DF: 85 90     STA $90       ; Kernal I/O Status Word ST
F3E1: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F3E3: 20 0C ED  JSR $ED0C     ; Send LISTEN Command on Serial Bus
F3E6: A5 B9     LDA $B9       ; Current File - Secondary Address
F3E8: 09 F0     ORA #$F0
F3EA: 20 B9 ED  JSR $EDB9     ; Send LISTEN Secondary Address
F3ED: A5 90     LDA $90       ; Kernal I/O Status Word ST
F3EF: 10 05     BPL $F3F6
F3F1: 68        PLA
F3F2: 68        PLA
F3F3: 4C 07 F7  JMP $F707     ; Output I/O Error Messages: 'DEVICE NOT PRESENT'

Jump from $F3EF:

F3F6: A5 B7     LDA $B7       ; Number of Characters in Filename
F3F8: F0 0C     BEQ $F406
F3FA: A0 00     LDY #$00

Jump from $F404:

F3FC: B1 BB     LDA ($BB),Y   ; Pointer: Current File name Address
F3FE: 20 DD ED  JSR $EDDD     ; Send Serial Deferred
F401: C8        INY
F402: C4 B7     CPY $B7       ; Number of Characters in Filename
F404: D0 F6     BNE $F3FC

Jump from $F3F8:

F406: 4C 54 F6  JMP $F654     ; Save to Serial Bus



 $F409/62473:   Open RS232 - c64ref 

Jump from $F388:

F409: 20 83 F4  JSR $F483
F40C: 8C 97 02  STY $0297     ; RS232 Pseudo 6551 Status Register Image

Jump from $F41B:

F40F: C4 B7     CPY $B7       ; Number of Characters in Filename
F411: F0 0A     BEQ $F41D
F413: B1 BB     LDA ($BB),Y   ; Pointer: Current File name Address
F415: 99 93 02  STA $0293,Y   ; RS232 Pseudo 6551 control Register Image
F418: C8        INY
F419: C0 04     CPY #$04
F41B: D0 F2     BNE $F40F

Jump from $F411:

F41D: 20 4A EF  JSR $EF4A     ; Compute Bit Count
F420: 8E 98 02  STX $0298     ; RS232 Number of Bits left to send
F423: AD 93 02  LDA $0293     ; RS232 Pseudo 6551 control Register Image
F426: 29 0F     AND #$0F
F428: F0 1C     BEQ $F446
F42A: 0A        ASL
F42B: AA        TAX
F42C: AD A6 02  LDA $02A6     ; Flag: TV Standard
F42F: D0 09     BNE $F43A
F431: BC C1 FE  LDY $FEC1,X   ; Exit Interrupt
F434: BD C0 FE  LDA $FEC0,X   ; Exit Interrupt
F437: 4C 40 F4  JMP $F440

Jump from $F42F:

F43A: BC EB E4  LDY $E4EB,X   ; Pause After Finding Tape File
F43D: BD EA E4  LDA $E4EA,X   ; Pause After Finding Tape File

Jump from $F437:

F440: 8C 96 02  STY $0296     ; RS232 Non-standard Bits/Second
F443: 8D 95 02  STA $0295     ; RS232 Non-standard Bits/Second

Jump from $F428:

F446: AD 95 02  LDA $0295     ; RS232 Non-standard Bits/Second
F449: 0A        ASL
F44A: 20 2E FF  JSR $FF2E     ; NMI RS232 Out
F44D: AD 94 02  LDA $0294     ; RS232 Pseudo 6551 command Register Image
F450: 4A        LSR
F451: 90 09     BCC $F45C
F453: AD 01 DD  LDA $DD01     ; CIA2: Data Port B (User Port, RS232)
F456: 0A        ASL
F457: B0 03     BCS $F45C
F459: 20 0D F0  JSR $F00D     ; No DSR (Data Set Ready) Error

Jump from $F451, $F457:

F45C: AD 9B 02  LDA $029B     ; RS232 Index to End of Input Buffer
F45F: 8D 9C 02  STA $029C     ; RS232 Pointer: High Byte of Input Buffer
F462: AD 9E 02  LDA $029E     ; RS232 Index to End of Output Buffer
F465: 8D 9D 02  STA $029D     ; RS232 Pointer: High Byte of Output Buffer
F468: 20 27 FE  JSR $FE27     ; Read / Set Top of Memory
F46B: A5 F8     LDA $F8       ; RS232 Input Buffer Pointer
F46D: D0 05     BNE $F474
F46F: 88        DEY
F470: 84 F8     STY $F8       ; RS232 Input Buffer Pointer
F472: 86 F7     STX $F7       ; RS232 Input Buffer Pointer

Jump from $F46D:

F474: A5 FA     LDA $FA       ; RS232 Output Buffer Pointer
F476: D0 05     BNE $F47D
F478: 88        DEY
F479: 84 FA     STY $FA       ; RS232 Output Buffer Pointer
F47B: 86 F9     STX $F9       ; RS232 Output Buffer Pointer

Jump from $F476, $F2C5:

F47D: 38        SEC
F47E: A9 F0     LDA #$F0
F480: 4C 2D FE  JMP $FE2D     ; Read / Set Top of Memory

Jump from $F409, $F2AF:

F483: A9 7F     LDA #$7F
F485: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
F488: A9 06     LDA #$06
F48A: 8D 03 DD  STA $DD03     ; CIA2: Data Direction Register B
F48D: 8D 01 DD  STA $DD01     ; CIA2: Data Port B (User Port, RS232)
F490: A9 04     LDA #$04
F492: 0D 00 DD  ORA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
F495: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
F498: A0 00     LDY #$00
F49A: 8C A1 02  STY $02A1     ; RS232 Enables
F49D: 60        RTS



 $F49E/62622:   Load RAM - c64ref 

Jump from $FFD5:

F49E: 86 C3     STX $C3       ; Pointer: Type 3 Tape LOAD and general use
F4A0: 84 C4     STY $C4       ; Pointer: Type 3 Tape LOAD and general use
F4A2: 6C 30 03  JMP ($0330)   ; Vector: Kernal LOAD Routine
F4A5: 85 93     STA $93       ; Flag: 0 = Load, 1 = Verify
F4A7: A9 00     LDA #$00
F4A9: 85 90     STA $90       ; Kernal I/O Status Word ST
F4AB: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F4AD: D0 03     BNE $F4B2

Jump from $F4B4, $F4B6 (SX64):

F4AF: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F4AD:

F4B2: C9 03     CMP #$03
F4B4: F0 F9     BEQ $F4AF
F4B6: 90 7B     BCC $F533     ; Load File From Tape
* SX64:
F4B6: 90 F7     BCC $F4AF



 $F4B8/62648:   Load File From Serial Bus - c64ref 

F4B8: A4 B7     LDY $B7       ; Number of Characters in Filename
F4BA: D0 03     BNE $F4BF
F4BC: 4C 10 F7  JMP $F710     ; Output I/O Error Messages: 'MISSING FILENAME'

Jump from $F4BA:

F4BF: A6 B9     LDX $B9       ; Current File - Secondary Address
F4C1: 20 AF F5  JSR $F5AF     ; Print "SEARCHING"
F4C4: A9 60     LDA #$60
F4C6: 85 B9     STA $B9       ; Current File - Secondary Address
F4C8: 20 D5 F3  JSR $F3D5     ; Send Secondary Address
F4CB: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F4CD: 20 09 ED  JSR $ED09     ; Send TALK Command on Serial Bus
F4D0: A5 B9     LDA $B9       ; Current File - Secondary Address
F4D2: 20 C7 ED  JSR $EDC7     ; Send TALK Secondary Address
F4D5: 20 13 EE  JSR $EE13     ; Receive From Serial Bus
F4D8: 85 AE     STA $AE       ; Tape End Address/End of Program
F4DA: A5 90     LDA $90       ; Kernal I/O Status Word ST
F4DC: 4A        LSR
F4DD: 4A        LSR
F4DE: B0 50     BCS $F530
F4E0: 20 13 EE  JSR $EE13     ; Receive From Serial Bus
F4E3: 85 AF     STA $AF       ; Tape End Address/End of Program
F4E5: 8A        TXA
F4E6: D0 08     BNE $F4F0
F4E8: A5 C3     LDA $C3       ; Pointer: Type 3 Tape LOAD and general use
F4EA: 85 AE     STA $AE       ; Tape End Address/End of Program
F4EC: A5 C4     LDA $C4       ; Pointer: Type 3 Tape LOAD and general use
F4EE: 85 AF     STA $AF       ; Tape End Address/End of Program

Jump from $F4E6:

F4F0: 20 D2 F5  JSR $F5D2     ; Print "LOADING / VERIFYING"

Jump from $F509, $F526:

F4F3: A9 FD     LDA #$FD
F4F5: 25 90     AND $90       ; Kernal I/O Status Word ST
F4F7: 85 90     STA $90       ; Kernal I/O Status Word ST
F4F9: 20 E1 FF  JSR $FFE1     ; Test-Stop Vector
F4FC: D0 03     BNE $F501
F4FE: 4C 33 F6  JMP $F633     ; Save to Serial Bus

Jump from $F4FC:

F501: 20 13 EE  JSR $EE13     ; Receive From Serial Bus
F504: AA        TAX
F505: A5 90     LDA $90       ; Kernal I/O Status Word ST
F507: 4A        LSR
F508: 4A        LSR
F509: B0 E8     BCS $F4F3
F50B: 8A        TXA
F50C: A4 93     LDY $93       ; Flag: 0 = Load, 1 = Verify
F50E: F0 0C     BEQ $F51C
F510: A0 00     LDY #$00
F512: D1 AE     CMP ($AE),Y   ; Tape End Address/End of Program
F514: F0 08     BEQ $F51E
F516: A9 10     LDA #$10
F518: 20 1C FE  JSR $FE1C     ; Control OS Messages
F51B: 2C        .BYTE $2C

Jump from $F50E:

F51C: 91 AE     STA ($AE),Y   ; Tape End Address/End of Program

Jump from $F514:

F51E: E6 AE     INC $AE       ; Tape End Address/End of Program
F520: D0 02     BNE $F524
F522: E6 AF     INC $AF       ; Tape End Address/End of Program

Jump from $F520:

F524: 24 90     BIT $90       ; Kernal I/O Status Word ST
F526: 50 CB     BVC $F4F3
F528: 20 EF ED  JSR $EDEF     ; Send UNTALK
F52B: 20 42 F6  JSR $F642     ; Save to Serial Bus
F52E: 90 79     BCC $F5A9     ; Load File From Tape

Jump from $F4DE, $F554, $F55B:

F530: 4C 04 F7  JMP $F704     ; Output I/O Error Messages: 'FILE NOT FOUND'



 $F533/62771:   Load File From Tape - c64ref 

Jump from $F4B6:

F533: 4A        LSR
F534: B0 03     BCS $F539
F536: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F534:

F539: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F53C: B0 03     BCS $F541
F53E: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F53C:

F541: 20 17 F8  JSR $F817     ; Print "PRESS PLAY ON TAPE"
F544: B0 68     BCS $F5AE
F546: 20 AF F5  JSR $F5AF     ; Print "SEARCHING"

Jump from $F56A:

F549: A5 B7     LDA $B7       ; Number of Characters in Filename
F54B: F0 09     BEQ $F556
F54D: 20 EA F7  JSR $F7EA     ; Find Specific Tape Header
F550: 90 0B     BCC $F55D
F552: F0 5A     BEQ $F5AE
F554: B0 DA     BCS $F530     ; Load File From Serial Bus

Jump from $F54B:

F556: 20 2C F7  JSR $F72C     ; Find Any Tape Header
F559: F0 53     BEQ $F5AE
F55B: B0 D3     BCS $F530     ; Load File From Serial Bus

Jump from $F550:

F55D: A5 90     LDA $90       ; Kernal I/O Status Word ST
F55F: 29 10     AND #$10
F561: 38        SEC
F562: D0 4A     BNE $F5AE
F564: E0 01     CPX #$01
F566: F0 11     BEQ $F579
F568: E0 03     CPX #$03
F56A: D0 DD     BNE $F549

Jump from $F57B:

F56C: A0 01     LDY #$01
F56E: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F570: 85 C3     STA $C3       ; Pointer: Type 3 Tape LOAD and general use
F572: C8        INY
F573: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F575: 85 C4     STA $C4       ; Pointer: Type 3 Tape LOAD and general use
F577: B0 04     BCS $F57D

Jump from $F566:

F579: A5 B9     LDA $B9       ; Current File - Secondary Address
F57B: D0 EF     BNE $F56C

Jump from $F577:

F57D: A0 03     LDY #$03
F57F: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F581: A0 01     LDY #$01
F583: F1 B2     SBC ($B2),Y   ; Pointer: Start Address of Tape Buffer
F585: AA        TAX
F586: A0 04     LDY #$04
F588: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F58A: A0 02     LDY #$02
F58C: F1 B2     SBC ($B2),Y   ; Pointer: Start Address of Tape Buffer
F58E: A8        TAY
F58F: 18        CLC
F590: 8A        TXA
F591: 65 C3     ADC $C3       ; Pointer: Type 3 Tape LOAD and general use
F593: 85 AE     STA $AE       ; Tape End Address/End of Program
F595: 98        TYA
F596: 65 C4     ADC $C4       ; Pointer: Type 3 Tape LOAD and general use
F598: 85 AF     STA $AF       ; Tape End Address/End of Program
F59A: A5 C3     LDA $C3       ; Pointer: Type 3 Tape LOAD and general use
F59C: 85 C1     STA $C1       ; Start Address for LOAD and Cassette Write
F59E: A5 C4     LDA $C4       ; Pointer: Type 3 Tape LOAD and general use
F5A0: 85 C2     STA $C2       ; Start Address for LOAD and Cassette Write
F5A2: 20 D2 F5  JSR $F5D2     ; Print "LOADING / VERIFYING"
F5A5: 20 4A F8  JSR $F84A     ; Initiate Tape Read
F5A8: 24        .BYTE $24

Jump from $F52E:

F5A9: 18        CLC
F5AA: A6 AE     LDX $AE       ; Tape End Address/End of Program
F5AC: A4 AF     LDY $AF       ; Tape End Address/End of Program

Jump from $F544, $F552, $F559, $F562:

F5AE: 60        RTS



 $F5AF/62895:   Print "SEARCHING" - c64ref 

Jump from $F39E, $F4C1, $F546:

F5AF: A5 9D     LDA $9D       ; Error-Mode-Flag
F5B1: 10 1E     BPL $F5D1     ; Print Filename
F5B3: A0 0C     LDY #$0C
F5B5: 20 2F F1  JSR $F12F     ; Print Message
F5B8: A5 B7     LDA $B7       ; Number of Characters in Filename
F5BA: F0 15     BEQ $F5D1     ; Print Filename
F5BC: A0 17     LDY #$17
F5BE: 20 2F F1  JSR $F12F     ; Print Message



 $F5C1/62913:   Print Filename - c64ref 

Jump from $F698:

F5C1: A4 B7     LDY $B7       ; Number of Characters in Filename
F5C3: F0 0C     BEQ $F5D1
F5C5: A0 00     LDY #$00

Jump from $F5CF:

F5C7: B1 BB     LDA ($BB),Y   ; Pointer: Current File name Address
F5C9: 20 D2 FF  JSR $FFD2     ; Output Vector, chrout
F5CC: C8        INY
F5CD: C4 B7     CPY $B7       ; Number of Characters in Filename
F5CF: D0 F6     BNE $F5C7

Jump from $F5C3, $F5B1, $F5BA:

F5D1: 60        RTS



 $F5D2/62930:   Print "LOADING / VERIFYING" - c64ref 

Jump from $F4F0, $F5A2:

F5D2: A0 49     LDY #$49
F5D4: A5 93     LDA $93       ; Flag: 0 = Load, 1 = Verify
F5D6: F0 02     BEQ $F5DA
F5D8: A0 59     LDY #$59

Jump from $F5D6:

F5DA: 4C 2B F1  JMP $F12B     ; Print Message if Direct



 $F5DD/62941:   Save RAM - c64ref 

Jump from $FFD8:

F5DD: 86 AE     STX $AE       ; Tape End Address/End of Program
F5DF: 84 AF     STY $AF       ; Tape End Address/End of Program
F5E1: AA        TAX
F5E2: B5 00     LDA $00,X     ; 6510 On-chip Data Direction Register
F5E4: 85 C1     STA $C1       ; Start Address for LOAD and Cassette Write
F5E6: B5 01     LDA $01,X     ; 6510 On-chip 8-bit Input/Output Register
F5E8: 85 C2     STA $C2       ; Start Address for LOAD and Cassette Write
F5EA: 6C 32 03  JMP ($0332)   ; Vector: Kernal SAVE Routine
F5ED: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F5EF: D0 03     BNE $F5F4

Jump from $F5F6, $F5F8 (SX64), $F662:

F5F1: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F5EF:

F5F4: C9 03     CMP #$03
F5F6: F0 F9     BEQ $F5F1
F5F8: 90 5F     BCC $F659     ; Save to Tape
* SX64:
F5F8: 90 F7     BCC $F5F1



 $F5FA/62970:   Save to Serial Bus - c64ref 

F5FA: A9 61     LDA #$61
F5FC: 85 B9     STA $B9       ; Current File - Secondary Address
F5FE: A4 B7     LDY $B7       ; Number of Characters in Filename
F600: D0 03     BNE $F605
F602: 4C 10 F7  JMP $F710     ; Output I/O Error Messages: 'MISSING FILENAME'

Jump from $F600:

F605: 20 D5 F3  JSR $F3D5     ; Send Secondary Address
F608: 20 8F F6  JSR $F68F     ; Print "SAVING"
F60B: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F60D: 20 0C ED  JSR $ED0C     ; Send LISTEN Command on Serial Bus
F610: A5 B9     LDA $B9       ; Current File - Secondary Address
F612: 20 B9 ED  JSR $EDB9     ; Send LISTEN Secondary Address
F615: A0 00     LDY #$00
F617: 20 8E FB  JSR $FB8E     ; Reset Tape Pointer
F61A: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
F61C: 20 DD ED  JSR $EDDD     ; Send Serial Deferred
F61F: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
F621: 20 DD ED  JSR $EDDD     ; Send Serial Deferred

Jump from $F63D:

F624: 20 D1 FC  JSR $FCD1     ; Check Read / Write Pointer
F627: B0 16     BCS $F63F
F629: B1 AC     LDA ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
F62B: 20 DD ED  JSR $EDDD     ; Send Serial Deferred
F62E: 20 E1 FF  JSR $FFE1     ; Test-Stop Vector
F631: D0 07     BNE $F63A

Jump from $F4FE:

F633: 20 42 F6  JSR $F642
F636: A9 00     LDA #$00
F638: 38        SEC
F639: 60        RTS

Jump from $F631:

F63A: 20 DB FC  JSR $FCDB     ; Bump Read / Write Pointer
F63D: D0 E5     BNE $F624

Jump from $F627:

F63F: 20 FE ED  JSR $EDFE     ; Send UNLISTEN

Jump from $F633, $F2EE, $F52B:

F642: 24 B9     BIT $B9       ; Current File - Secondary Address
F644: 30 11     BMI $F657
F646: A5 BA     LDA $BA       ; Current File - First Address (Device number)
F648: 20 0C ED  JSR $ED0C     ; Send LISTEN Command on Serial Bus
F64B: A5 B9     LDA $B9       ; Current File - Secondary Address
F64D: 29 EF     AND #$EF
F64F: 09 E0     ORA #$E0
F651: 20 B9 ED  JSR $EDB9     ; Send LISTEN Secondary Address

Jump from $F406:

F654: 20 FE ED  JSR $EDFE     ; Send UNLISTEN

Jump from $F644:

F657: 18        CLC
F658: 60        RTS



 $F659/63065:   Save to Tape - c64ref 

Jump from $F5F8:

F659: 4A        LSR
F65A: B0 03     BCS $F65F
F65C: 4C 13 F7  JMP $F713     ; Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER'

Jump from $F65A:

F65F: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F662: 90 8D     BCC $F5F1     ; Save RAM
F664: 20 38 F8  JSR $F838     ; Print "PRESS RECORD..."
F667: B0 25     BCS $F68E
F669: 20 8F F6  JSR $F68F     ; Print "SAVING"
F66C: A2 03     LDX #$03
F66E: A5 B9     LDA $B9       ; Current File - Secondary Address
F670: 29 01     AND #$01
F672: D0 02     BNE $F676
F674: A2 01     LDX #$01

Jump from $F672:

F676: 8A        TXA
F677: 20 6A F7  JSR $F76A     ; Write Tape Header
F67A: B0 12     BCS $F68E
F67C: 20 67 F8  JSR $F867     ; Initiate Tape Write
F67F: B0 0D     BCS $F68E
F681: A5 B9     LDA $B9       ; Current File - Secondary Address
F683: 29 02     AND #$02
F685: F0 06     BEQ $F68D
F687: A9 05     LDA #$05
F689: 20 6A F7  JSR $F76A     ; Write Tape Header
F68C: 24        .BYTE $24

Jump from $F685:

F68D: 18        CLC

Jump from $F667, $F67A, $F67F, $F691:

F68E: 60        RTS



 $F68F/63119:   Print "SAVING" - c64ref 

Jump from $F608, $F669:

F68F: A5 9D     LDA $9D       ; Error-Mode-Flag
F691: 10 FB     BPL $F68E     ; Save to Tape
F693: A0 51     LDY #$51
F695: 20 2F F1  JSR $F12F     ; Print Message
F698: 4C C1 F5  JMP $F5C1     ; Print Filename



 $F69B/63131:   Bump Clock - c64ref 

Jump from $FFEA:

F69B: A2 00     LDX #$00
F69D: E6 A2     INC $A2       ; Real-time jiffy Clock
F69F: D0 06     BNE $F6A7
F6A1: E6 A1     INC $A1       ; Real-time jiffy Clock
F6A3: D0 02     BNE $F6A7
F6A5: E6 A0     INC $A0       ; Real-time jiffy Clock

Jump from $F69F, $F6A3:

F6A7: 38        SEC
F6A8: A5 A2     LDA $A2       ; Real-time jiffy Clock
F6AA: E9 01     SBC #$01
F6AC: A5 A1     LDA $A1       ; Real-time jiffy Clock
F6AE: E9 1A     SBC #$1A
F6B0: A5 A0     LDA $A0       ; Real-time jiffy Clock
F6B2: E9 4F     SBC #$4F
F6B4: 90 06     BCC $F6BC
F6B6: 86 A0     STX $A0       ; Real-time jiffy Clock
F6B8: 86 A1     STX $A1       ; Real-time jiffy Clock
F6BA: 86 A2     STX $A2       ; Real-time jiffy Clock

Jump from $F6B4, $F6C2, $F8CA, $FE5E:

F6BC: AD 01 DC  LDA $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
F6BF: CD 01 DC  CMP $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
F6C2: D0 F8     BNE $F6BC
F6C4: AA        TAX
F6C5: 30 13     BMI $F6DA
F6C7: A2 BD     LDX #$BD
F6C9: 8E 00 DC  STX $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)

Jump from $F6D2:

F6CC: AE 01 DC  LDX $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
F6CF: EC 01 DC  CPX $DC01     ; CIA1: Data Port B (Keyboard, Joystick, Paddles)
F6D2: D0 F8     BNE $F6CC
F6D4: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
F6D7: E8        INX
F6D8: D0 02     BNE $F6DC

Jump from $F6C5:

F6DA: 85 91     STA $91       ; Flag: $7F = STOP key

Jump from $F6D8:

F6DC: 60        RTS



 $F6DD/63197:   Get Time - c64ref 

Jump from $FFDE:

F6DD: 78        SEI
F6DE: A5 A2     LDA $A2       ; Real-time jiffy Clock
F6E0: A6 A1     LDX $A1       ; Real-time jiffy Clock
F6E2: A4 A0     LDY $A0       ; Real-time jiffy Clock



 $F6E4/63204:   Set Time - c64ref 

Jump from $FFDB:

F6E4: 78        SEI
F6E5: 85 A2     STA $A2       ; Real-time jiffy Clock
F6E7: 86 A1     STX $A1       ; Real-time jiffy Clock
F6E9: 84 A0     STY $A0       ; Real-time jiffy Clock
F6EB: 58        CLI
F6EC: 60        RTS



 $F6ED/63213:   Check STOP Key - c64ref 

F6ED: A5 91     LDA $91       ; Flag: $7F = STOP key
F6EF: C9 7F     CMP #$7F
F6F1: D0 07     BNE $F6FA
F6F3: 08        PHP
F6F4: 20 CC FF  JSR $FFCC     ; Restore I/O Vector
F6F7: 85 C6     STA $C6       ; Number of Characters in Keyboard Buffer queue
F6F9: 28        PLP

Jump from $F6F1:

F6FA: 60        RTS



 $F6FB/63227:   Output I/O Error Messages: 'TOO MANY FILES' - c64ref 

Jump from $F35F:

F6FB: A9 01     LDA #$01
F6FD: 2C        .BYTE $2C



 $F6FE/63230:   Output I/O Error Messages: 'FILE OPEN' - c64ref 

Jump from $F356:

F6FE: A9 02     LDA #$02
F700: 2C        .BYTE $2C



 $F701/63233:   Output I/O Error Messages: 'FILE NOT OPEN' - c64ref 

Jump from $F213, $F255:

F701: A9 03     LDA #$03
F703: 2C        .BYTE $2C



 $F704/63236:   Output I/O Error Messages: 'FILE NOT FOUND' - c64ref 

Jump from $F3AC, $F530:

F704: A9 04     LDA #$04
F706: 2C        .BYTE $2C



 $F707/63239:   Output I/O Error Messages: 'DEVICE NOT PRESENT' - c64ref 

Jump from $F24D, $F28E, $F3F3:

F707: A9 05     LDA #$05
F709: 2C        .BYTE $2C



 $F70A/63242:   Output I/O Error Messages: 'NOT INPUT FILE' - c64ref 

Jump from $F230, $F34E:

F70A: A9 06     LDA #$06
F70C: 2C        .BYTE $2C



 $F70D/63245:   Output I/O Error Messages: 'NOT OUTPUT FILE' - c64ref 

Jump from $F25F:

F70D: A9 07     LDA #$07
F70F: 2C        .BYTE $2C



 $F710/63248:   Output I/O Error Messages: 'MISSING FILENAME' - c64ref 

Jump from $F4BC, $F602:

F710: A9 08     LDA #$08
F712: 2C        .BYTE $2C



 $F713/63251:   Output I/O Error Messages: 'ILLEGAL DEVICE NUMBER' - c64ref 

Jump from $F390, $F4AF, $F536, $F53E, $F5F1, $F65C:

F713: A9 09     LDA #$09
F715: 48        PHA
F716: 20 CC FF  JSR $FFCC     ; Restore I/O Vector
F719: A0 00     LDY #$00
F71B: 24 9D     BIT $9D       ; Error-Mode-Flag
F71D: 50 0A     BVC $F729
F71F: 20 2F F1  JSR $F12F     ; Print Message
F722: 68        PLA
F723: 48        PHA
F724: 09 30     ORA #$30
F726: 20 D2 FF  JSR $FFD2     ; Output Vector, chrout

Jump from $F71D:

F729: 68        PLA
F72A: 38        SEC
F72B: 60        RTS



 $F72C/63276:   Find Any Tape Header - c64ref 

Jump from $F749, $F3AF, $F556, $F7EA:

F72C: A5 93     LDA $93       ; Flag: 0 = Load, 1 = Verify
F72E: 48        PHA
F72F: 20 41 F8  JSR $F841     ; Initiate Tape Read
F732: 68        PLA
F733: 85 93     STA $93       ; Flag: 0 = Load, 1 = Verify
F735: B0 32     BCS $F769
F737: A0 00     LDY #$00
F739: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F73B: C9 05     CMP #$05
F73D: F0 2A     BEQ $F769
F73F: C9 01     CMP #$01
F741: F0 08     BEQ $F74B
F743: C9 03     CMP #$03
F745: F0 04     BEQ $F74B
F747: C9 04     CMP #$04
F749: D0 E1     BNE $F72C

Jump from $F741, $F745:

F74B: AA        TAX
F74C: 24 9D     BIT $9D       ; Error-Mode-Flag
F74E: 10 17     BPL $F767
F750: A0 63     LDY #$63
F752: 20 2F F1  JSR $F12F     ; Print Message
F755: A0 05     LDY #$05

Jump from $F75F:

F757: B1 B2     LDA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F759: 20 D2 FF  JSR $FFD2     ; Output Vector, chrout
F75C: C8        INY
F75D: C0 15     CPY #$15
F75F: D0 F6     BNE $F757
F761: A5 A1     LDA $A1       ; Real-time jiffy Clock
F763: 20 E0 E4  JSR $E4E0     ; Pause After Finding Tape File
F766: EA        NOP

Jump from $F74E:

F767: 18        CLC
F768: 88        DEY

Jump from $F735, $F73D:

F769: 60        RTS



 $F76A/63338:   Write Tape Header - c64ref 

Jump from $F2E8, $F3BF, $F677, $F689:

F76A: 85 9E     STA $9E       ; Tape Error log pass 1
F76C: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F76F: 90 5E     BCC $F7CF
F771: A5 C2     LDA $C2       ; Start Address for LOAD and Cassette Write
F773: 48        PHA
F774: A5 C1     LDA $C1       ; Start Address for LOAD and Cassette Write
F776: 48        PHA
F777: A5 AF     LDA $AF       ; Tape End Address/End of Program
F779: 48        PHA
F77A: A5 AE     LDA $AE       ; Tape End Address/End of Program
F77C: 48        PHA
F77D: A0 BF     LDY #$BF
F77F: A9 20     LDA #$20

Jump from $F784:

F781: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F783: 88        DEY
F784: D0 FB     BNE $F781
F786: A5 9E     LDA $9E       ; Tape Error log pass 1
F788: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F78A: C8        INY
F78B: A5 C1     LDA $C1       ; Start Address for LOAD and Cassette Write
F78D: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F78F: C8        INY
F790: A5 C2     LDA $C2       ; Start Address for LOAD and Cassette Write
F792: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F794: C8        INY
F795: A5 AE     LDA $AE       ; Tape End Address/End of Program
F797: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F799: C8        INY
F79A: A5 AF     LDA $AF       ; Tape End Address/End of Program
F79C: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F79E: C8        INY
F79F: 84 9F     STY $9F       ; Tape Error log pass 2
F7A1: A0 00     LDY #$00
F7A3: 84 9E     STY $9E       ; Tape Error log pass 1

Jump from $F7B5:

F7A5: A4 9E     LDY $9E       ; Tape Error log pass 1
F7A7: C4 B7     CPY $B7       ; Number of Characters in Filename
F7A9: F0 0C     BEQ $F7B7
F7AB: B1 BB     LDA ($BB),Y   ; Pointer: Current File name Address
F7AD: A4 9F     LDY $9F       ; Tape Error log pass 2
F7AF: 91 B2     STA ($B2),Y   ; Pointer: Start Address of Tape Buffer
F7B1: E6 9E     INC $9E       ; Tape Error log pass 1
F7B3: E6 9F     INC $9F       ; Tape Error log pass 2
F7B5: D0 EE     BNE $F7A5

Jump from $F7A9:

F7B7: 20 D7 F7  JSR $F7D7     ; Set Buffer Stat / End Pointers
F7BA: A9 69     LDA #$69
F7BC: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary
F7BE: 20 6B F8  JSR $F86B     ; Initiate Tape Write
F7C1: A8        TAY
F7C2: 68        PLA
F7C3: 85 AE     STA $AE       ; Tape End Address/End of Program
F7C5: 68        PLA
F7C6: 85 AF     STA $AF       ; Tape End Address/End of Program
F7C8: 68        PLA
F7C9: 85 C1     STA $C1       ; Start Address for LOAD and Cassette Write
F7CB: 68        PLA
F7CC: 85 C2     STA $C2       ; Start Address for LOAD and Cassette Write
F7CE: 98        TYA

Jump from $F76F:

F7CF: 60        RTS



 $F7D0/63440:   Get Buffer Address - c64ref 

Jump from $F2CE, $F38B, $F539, $F65F, $F76C, $F7D7, $F80D:

F7D0: A6 B2     LDX $B2       ; Pointer: Start Address of Tape Buffer
F7D2: A4 B3     LDY $B3       ; Pointer: Start Address of Tape Buffer
F7D4: C0 02     CPY #$02
F7D6: 60        RTS



 $F7D7/63447:   Set Buffer Stat / End Pointers - c64ref 

Jump from $F7B7, $F847, $F864:

F7D7: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F7DA: 8A        TXA
F7DB: 85 C1     STA $C1       ; Start Address for LOAD and Cassette Write
F7DD: 18        CLC
F7DE: 69 C0     ADC #$C0
F7E0: 85 AE     STA $AE       ; Tape End Address/End of Program
F7E2: 98        TYA
F7E3: 85 C2     STA $C2       ; Start Address for LOAD and Cassette Write
F7E5: 69 00     ADC #$00
F7E7: 85 AF     STA $AF       ; Tape End Address/End of Program
F7E9: 60        RTS



 $F7EA/63466:   Find Specific Tape Header - c64ref 

Jump from $F801, $F3A5, $F54D:

F7EA: 20 2C F7  JSR $F72C     ; Find Any Tape Header
F7ED: B0 1D     BCS $F80C
F7EF: A0 05     LDY #$05
F7F1: 84 9F     STY $9F       ; Tape Error log pass 2
F7F3: A0 00     LDY #$00
F7F5: 84 9E     STY $9E       ; Tape Error log pass 1

Jump from $F809:

F7F7: C4 B7     CPY $B7       ; Number of Characters in Filename
F7F9: F0 10     BEQ $F80B
F7FB: B1 BB     LDA ($BB),Y   ; Pointer: Current File name Address
F7FD: A4 9F     LDY $9F       ; Tape Error log pass 2
F7FF: D1 B2     CMP ($B2),Y   ; Pointer: Start Address of Tape Buffer
F801: D0 E7     BNE $F7EA
F803: E6 9E     INC $9E       ; Tape Error log pass 1
F805: E6 9F     INC $9F       ; Tape Error log pass 2
F807: A4 9E     LDY $9E       ; Tape Error log pass 1
F809: D0 EC     BNE $F7F7

Jump from $F7F9:

F80B: 18        CLC

Jump from $F7ED:

F80C: 60        RTS



 $F80D/63501:   Bump Tape Pointer - c64ref 

Jump from $F199, $F1E5:

F80D: 20 D0 F7  JSR $F7D0     ; Get Buffer Address
F810: E6 A6     INC $A6       ; Pointer: Tape I/O buffer
F812: A4 A6     LDY $A6       ; Pointer: Tape I/O buffer
F814: C0 C0     CPY #$C0
F816: 60        RTS



 $F817/63511:   Print "PRESS PLAY ON TAPE" - c64ref 

Jump from $F399, $F541, $F84A:

F817: 20 2E F8  JSR $F82E     ; Check Tape Status
F81A: F0 1A     BEQ $F836     ; Check Tape Status
F81C: A0 1B     LDY #$1B

Jump from $F83F:

F81E: 20 2F F1  JSR $F12F     ; Print Message

Jump from $F827:

F821: 20 D0 F8  JSR $F8D0     ; Check Tape Stop
F824: 20 2E F8  JSR $F82E     ; Check Tape Status
F827: D0 F8     BNE $F821
F829: A0 6A     LDY #$6A
F82B: 4C 2F F1  JMP $F12F     ; Print Message



 $F82E/63534:   Check Tape Status - c64ref 

Jump from $F817, $F824, $F838:

F82E: A9 10     LDA #$10
F830: 24 01     BIT $01       ; 6510 On-chip 8-bit Input/Output Register
F832: D0 02     BNE $F836
F834: 24 01     BIT $01       ; 6510 On-chip 8-bit Input/Output Register

Jump from $F832, $F81A, $F83B:

F836: 18        CLC
F837: 60        RTS



 $F838/63544:   Print "PRESS RECORD..." - c64ref 

Jump from $F3B8, $F664, $F86B:

F838: 20 2E F8  JSR $F82E     ; Check Tape Status
F83B: F0 F9     BEQ $F836     ; Check Tape Status
F83D: A0 2E     LDY #$2E
F83F: D0 DD     BNE $F81E     ; Print "PRESS PLAY ON TAPE"



 $F841/63553:   Initiate Tape Read - c64ref 

Jump from $F19E, $F72F:

F841: A9 00     LDA #$00
F843: 85 90     STA $90       ; Kernal I/O Status Word ST
F845: 85 93     STA $93       ; Flag: 0 = Load, 1 = Verify
F847: 20 D7 F7  JSR $F7D7     ; Set Buffer Stat / End Pointers

Jump from $F5A5:

F84A: 20 17 F8  JSR $F817     ; Print "PRESS PLAY ON TAPE"
F84D: B0 1F     BCS $F86E     ; Initiate Tape Write
F84F: 78        SEI
F850: A9 00     LDA #$00
F852: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary
F854: 85 B4     STA $B4       ; RS232 Write bit count/Tape Read timing Flag
F856: 85 B0     STA $B0       ; Tape timing Constants
F858: 85 9E     STA $9E       ; Tape Error log pass 1
F85A: 85 9F     STA $9F       ; Tape Error log pass 2
F85C: 85 9C     STA $9C       ; Flag: Byte received from Tape
F85E: A9 90     LDA #$90
F860: A2 0E     LDX #$0E
F862: D0 11     BNE $F875     ; Common Tape Code



 $F864/63588:   Initiate Tape Write - c64ref 

Jump from $F1EA, $F2D7:

F864: 20 D7 F7  JSR $F7D7     ; Set Buffer Stat / End Pointers

Jump from $F67C:

F867: A9 14     LDA #$14
F869: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary

Jump from $F7BE:

F86B: 20 38 F8  JSR $F838     ; Print "PRESS RECORD..."

Jump from $F84D:

F86E: B0 6C     BCS $F8DC     ; Check Tape Stop
F870: 78        SEI
F871: A9 82     LDA #$82
F873: A2 08     LDX #$08



 $F875/63605:   Common Tape Code - c64ref 

Jump from $F862:

F875: A0 7F     LDY #$7F
F877: 8C 0D DC  STY $DC0D     ; CIA1: Interrupt (IRQ) Control Register
F87A: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
F87D: AD 0E DC  LDA $DC0E     ; CIA1: Control Register A
F880: 09 19     ORA #$19
F882: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
F885: 29 91     AND #$91
F887: 8D A2 02  STA $02A2     ; TOD sense during Tape I/O
F88A: 20 A4 F0  JSR $F0A4     ; Serial Bus Idle
F88D: AD 11 D0  LDA $D011     ; VIC: Control Register 1
F890: 29 EF     AND #$EF
F892: 8D 11 D0  STA $D011     ; VIC: Control Register 1
F895: AD 14 03  LDA $0314     ; Vector: Hardware IRQ Interrupt Address
F898: 8D 9F 02  STA $029F     ; Temp. store for IRQ Vector during Tape I/O
F89B: AD 15 03  LDA $0315     ; Vector: Hardware IRQ Interrupt Address
F89E: 8D A0 02  STA $02A0     ; Temp. store for IRQ Vector during Tape I/O
F8A1: 20 BD FC  JSR $FCBD     ; Set IRQ Vector
F8A4: A9 02     LDA #$02
F8A6: 85 BE     STA $BE       ; Tape Input/Output Block count
F8A8: 20 97 FB  JSR $FB97     ; New Character Setup
F8AB: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
F8AD: 29 1F     AND #$1F
F8AF: 85 01     STA $01       ; 6510 On-chip 8-bit Input/Output Register
F8B1: 85 C0     STA $C0       ; Tape Motor Switch
F8B3: A2 FF     LDX #$FF

Jump from $F8BB:

F8B5: A0 FF     LDY #$FF

Jump from $F8B8:

F8B7: 88        DEY
F8B8: D0 FD     BNE $F8B7
F8BA: CA        DEX
F8BB: D0 F8     BNE $F8B5
F8BD: 58        CLI

Jump from $F8CD:

F8BE: AD A0 02  LDA $02A0     ; Temp. store for IRQ Vector during Tape I/O
F8C1: CD 15 03  CMP $0315     ; Vector: Hardware IRQ Interrupt Address
F8C4: 18        CLC
F8C5: F0 15     BEQ $F8DC     ; Check Tape Stop
F8C7: 20 D0 F8  JSR $F8D0     ; Check Tape Stop
F8CA: 20 BC F6  JSR $F6BC     ; Bump Clock
F8CD: 4C BE F8  JMP $F8BE



 $F8D0/63696:   Check Tape Stop - c64ref 

Jump from $F821, $F8C7:

F8D0: 20 E1 FF  JSR $FFE1     ; Test-Stop Vector
F8D3: 18        CLC
F8D4: D0 0B     BNE $F8E1
F8D6: 20 93 FC  JSR $FC93     ; Restore Normal IRQ
F8D9: 38        SEC
F8DA: 68        PLA
F8DB: 68        PLA

Jump from $F86E, $F8C5:

F8DC: A9 00     LDA #$00
F8DE: 8D A0 02  STA $02A0     ; Temp. store for IRQ Vector during Tape I/O

Jump from $F8D4:

F8E1: 60        RTS



 $F8E2/63714:   Set Read Timing - c64ref 

Jump from $F9CB, $FA0A, $FA2A, $FA67:

F8E2: 86 B1     STX $B1       ; Tape timing Constants
F8E4: A5 B0     LDA $B0       ; Tape timing Constants
F8E6: 0A        ASL
F8E7: 0A        ASL
F8E8: 18        CLC
F8E9: 65 B0     ADC $B0       ; Tape timing Constants
F8EB: 18        CLC
F8EC: 65 B1     ADC $B1       ; Tape timing Constants
F8EE: 85 B1     STA $B1       ; Tape timing Constants
F8F0: A9 00     LDA #$00
F8F2: 24 B0     BIT $B0       ; Tape timing Constants
F8F4: 30 01     BMI $F8F7
F8F6: 2A        ROL

Jump from $F8F4:

F8F7: 06 B1     ASL $B1       ; Tape timing Constants
F8F9: 2A        ROL
F8FA: 06 B1     ASL $B1       ; Tape timing Constants
F8FC: 2A        ROL
F8FD: AA        TAX

Jump from $F903:

F8FE: AD 06 DC  LDA $DC06     ; CIA1: Timer B Low-Byte  (Tape, Serial Port)
F901: C9 16     CMP #$16
F903: 90 F9     BCC $F8FE
F905: 65 B1     ADC $B1       ; Tape timing Constants
F907: 8D 04 DC  STA $DC04     ; CIA1: Timer A Low-Byte  (Kernal-IRQ, Tape)
F90A: 8A        TXA
F90B: 6D 07 DC  ADC $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
F90E: 8D 05 DC  STA $DC05     ; CIA1: Timer A High-Byte (Kernal-IRQ, Tape)
F911: AD A2 02  LDA $02A2     ; TOD sense during Tape I/O
F914: 8D 0E DC  STA $DC0E     ; CIA1: Control Register A
F917: 8D A4 02  STA $02A4     ; Temporary D1IRQ Indicator during Tape READ
F91A: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
F91D: 29 10     AND #$10
F91F: F0 09     BEQ $F92A
F921: A9 F9     LDA #$F9
F923: 48        PHA
F924: A9 2A     LDA #$2A
F926: 48        PHA
F927: 4C 43 FF  JMP $FF43     ; Fake IRQ Entry

Jump from $F91F:

F92A: 58        CLI
F92B: 60        RTS



 $F92C/63788:   Read Tape Bits - c64ref 

Jump from $F938:

F92C: AE 07 DC  LDX $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
F92F: A0 FF     LDY #$FF
F931: 98        TYA
F932: ED 06 DC  SBC $DC06     ; CIA1: Timer B Low-Byte  (Tape, Serial Port)
F935: EC 07 DC  CPX $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
F938: D0 F2     BNE $F92C
F93A: 86 B1     STX $B1       ; Tape timing Constants
F93C: AA        TAX
F93D: 8C 06 DC  STY $DC06     ; CIA1: Timer B Low-Byte  (Tape, Serial Port)
F940: 8C 07 DC  STY $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
F943: A9 19     LDA #$19
F945: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
F948: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
F94B: 8D A3 02  STA $02A3     ; Temporary storage during Tape READ
F94E: 98        TYA
F94F: E5 B1     SBC $B1       ; Tape timing Constants
F951: 86 B1     STX $B1       ; Tape timing Constants
F953: 4A        LSR
F954: 66 B1     ROR $B1       ; Tape timing Constants
F956: 4A        LSR
F957: 66 B1     ROR $B1       ; Tape timing Constants
F959: A5 B0     LDA $B0       ; Tape timing Constants
F95B: 18        CLC
F95C: 69 3C     ADC #$3C
F95E: C5 B1     CMP $B1       ; Tape timing Constants
F960: B0 4A     BCS $F9AC
F962: A6 9C     LDX $9C       ; Flag: Byte received from Tape
F964: F0 03     BEQ $F969
F966: 4C 60 FA  JMP $FA60     ; Store Tape Characters

Jump from $F964:

F969: A6 A3     LDX $A3       ; Serial Bus EOI (End Of Input) Flag
F96B: 30 1B     BMI $F988
F96D: A2 00     LDX #$00
F96F: 69 30     ADC #$30
F971: 65 B0     ADC $B0       ; Tape timing Constants
F973: C5 B1     CMP $B1       ; Tape timing Constants
F975: B0 1C     BCS $F993
F977: E8        INX
F978: 69 26     ADC #$26
F97A: 65 B0     ADC $B0       ; Tape timing Constants
F97C: C5 B1     CMP $B1       ; Tape timing Constants
F97E: B0 17     BCS $F997
F980: 69 2C     ADC #$2C
F982: 65 B0     ADC $B0       ; Tape timing Constants
F984: C5 B1     CMP $B1       ; Tape timing Constants
F986: 90 03     BCC $F98B

Jump from $F96B, $F9C7:

F988: 4C 10 FA  JMP $FA10

Jump from $F986, $F9D0, $F9E9:

F98B: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
F98D: F0 1D     BEQ $F9AC
F98F: 85 A8     STA $A8       ; RS232 Input Bit count/Tape temporary
F991: D0 19     BNE $F9AC

Jump from $F975:

F993: E6 A9     INC $A9       ; RS232 Flag: Start Bit check/Tape temporary
F995: B0 02     BCS $F999

Jump from $F97E, $FA1C:

F997: C6 A9     DEC $A9       ; RS232 Flag: Start Bit check/Tape temporary

Jump from $F995:

F999: 38        SEC
F99A: E9 13     SBC #$13
F99C: E5 B1     SBC $B1       ; Tape timing Constants
F99E: 65 92     ADC $92       ; Timing Constant for Tape
F9A0: 85 92     STA $92       ; Timing Constant for Tape
F9A2: A5 A4     LDA $A4       ; Serial Bus shift Counter
F9A4: 49 01     EOR #$01
F9A6: 85 A4     STA $A4       ; Serial Bus shift Counter
F9A8: F0 2B     BEQ $F9D5
F9AA: 86 D7     STX $D7       ; Current Input Character/Last Character Output

Jump from $F960, $F98D, $F991, $F9ED, $F9F1, $F9F5:

F9AC: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
F9AE: F0 22     BEQ $F9D2
F9B0: AD A3 02  LDA $02A3     ; Temporary storage during Tape READ
F9B3: 29 01     AND #$01
F9B5: D0 05     BNE $F9BC
F9B7: AD A4 02  LDA $02A4     ; Temporary D1IRQ Indicator during Tape READ
F9BA: D0 16     BNE $F9D2

Jump from $F9B5:

F9BC: A9 00     LDA #$00
F9BE: 85 A4     STA $A4       ; Serial Bus shift Counter
F9C0: 8D A4 02  STA $02A4     ; Temporary D1IRQ Indicator during Tape READ
F9C3: A5 A3     LDA $A3       ; Serial Bus EOI (End Of Input) Flag
F9C5: 10 30     BPL $F9F7
F9C7: 30 BF     BMI $F988

Jump from $FA02:

F9C9: A2 A6     LDX #$A6
F9CB: 20 E2 F8  JSR $F8E2     ; Set Read Timing
F9CE: A5 9B     LDA $9B       ; Parity of Byte Output to Tape
F9D0: D0 B9     BNE $F98B

Jump from $F9AE, $F9BA, $F9FE:

F9D2: 4C BC FE  JMP $FEBC     ; Exit Interrupt

Jump from $F9A8:

F9D5: A5 92     LDA $92       ; Timing Constant for Tape
F9D7: F0 07     BEQ $F9E0
F9D9: 30 03     BMI $F9DE
F9DB: C6 B0     DEC $B0       ; Tape timing Constants
F9DD: 2C        .BYTE $2C

Jump from $F9D9:

F9DE: E6 B0     INC $B0       ; Tape timing Constants

Jump from $F9D7:

F9E0: A9 00     LDA #$00
F9E2: 85 92     STA $92       ; Timing Constant for Tape
F9E4: E4 D7     CPX $D7       ; Current Input Character/Last Character Output
F9E6: D0 0F     BNE $F9F7
F9E8: 8A        TXA
F9E9: D0 A0     BNE $F98B
F9EB: A5 A9     LDA $A9       ; RS232 Flag: Start Bit check/Tape temporary
F9ED: 30 BD     BMI $F9AC
F9EF: C9 10     CMP #$10
F9F1: 90 B9     BCC $F9AC
F9F3: 85 96     STA $96       ; Cassette Sync number
F9F5: B0 B5     BCS $F9AC

Jump from $F9C5, $F9E6:

F9F7: 8A        TXA
F9F8: 45 9B     EOR $9B       ; Parity of Byte Output to Tape
F9FA: 85 9B     STA $9B       ; Parity of Byte Output to Tape
F9FC: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
F9FE: F0 D2     BEQ $F9D2
FA00: C6 A3     DEC $A3       ; Serial Bus EOI (End Of Input) Flag
FA02: 30 C5     BMI $F9C9
FA04: 46 D7     LSR $D7       ; Current Input Character/Last Character Output
FA06: 66 BF     ROR $BF       ; Serial Word Buffer
FA08: A2 DA     LDX #$DA
FA0A: 20 E2 F8  JSR $F8E2     ; Set Read Timing
FA0D: 4C BC FE  JMP $FEBC     ; Exit Interrupt

Jump from $F988:

FA10: A5 96     LDA $96       ; Cassette Sync number
FA12: F0 04     BEQ $FA18
FA14: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
FA16: F0 07     BEQ $FA1F

Jump from $FA12:

FA18: A5 A3     LDA $A3       ; Serial Bus EOI (End Of Input) Flag
FA1A: 30 03     BMI $FA1F
FA1C: 4C 97 F9  JMP $F997

Jump from $FA16, $FA1A:

FA1F: 46 B1     LSR $B1       ; Tape timing Constants
FA21: A9 93     LDA #$93
FA23: 38        SEC
FA24: E5 B1     SBC $B1       ; Tape timing Constants
FA26: 65 B0     ADC $B0       ; Tape timing Constants
FA28: 0A        ASL
FA29: AA        TAX
FA2A: 20 E2 F8  JSR $F8E2     ; Set Read Timing
FA2D: E6 9C     INC $9C       ; Flag: Byte received from Tape
FA2F: A5 B4     LDA $B4       ; RS232 Write bit count/Tape Read timing Flag
FA31: D0 11     BNE $FA44
FA33: A5 96     LDA $96       ; Cassette Sync number
FA35: F0 26     BEQ $FA5D
FA37: 85 A8     STA $A8       ; RS232 Input Bit count/Tape temporary
FA39: A9 00     LDA #$00
FA3B: 85 96     STA $96       ; Cassette Sync number
FA3D: A9 81     LDA #$81
FA3F: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FA42: 85 B4     STA $B4       ; RS232 Write bit count/Tape Read timing Flag

Jump from $FA31:

FA44: A5 96     LDA $96       ; Cassette Sync number
FA46: 85 B5     STA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
FA48: F0 09     BEQ $FA53
FA4A: A9 00     LDA #$00
FA4C: 85 B4     STA $B4       ; RS232 Write bit count/Tape Read timing Flag
FA4E: A9 01     LDA #$01
FA50: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register

Jump from $FA48:

FA53: A5 BF     LDA $BF       ; Serial Word Buffer
FA55: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
FA57: A5 A8     LDA $A8       ; RS232 Input Bit count/Tape temporary
FA59: 05 A9     ORA $A9       ; RS232 Flag: Start Bit check/Tape temporary
FA5B: 85 B6     STA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag

Jump from $FA35:

FA5D: 4C BC FE  JMP $FEBC     ; Exit Interrupt



 $FA60/64096:   Store Tape Characters - c64ref 

Jump from $F966:

FA60: 20 97 FB  JSR $FB97     ; New Character Setup
FA63: 85 9C     STA $9C       ; Flag: Byte received from Tape
FA65: A2 DA     LDX #$DA
FA67: 20 E2 F8  JSR $F8E2     ; Set Read Timing
FA6A: A5 BE     LDA $BE       ; Tape Input/Output Block count
FA6C: F0 02     BEQ $FA70
FA6E: 85 A7     STA $A7       ; Tape temporary

Jump from $FA6C:

FA70: A9 0F     LDA #$0F
FA72: 24 AA     BIT $AA       ; RS232 Input Byte Buffer/Tape temporary
FA74: 10 17     BPL $FA8D
FA76: A5 B5     LDA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
FA78: D0 0C     BNE $FA86
FA7A: A6 BE     LDX $BE       ; Tape Input/Output Block count
FA7C: CA        DEX
FA7D: D0 0B     BNE $FA8A
FA7F: A9 08     LDA #$08
FA81: 20 1C FE  JSR $FE1C     ; Control OS Messages
FA84: D0 04     BNE $FA8A

Jump from $FA78:

FA86: A9 00     LDA #$00
FA88: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary

Jump from $FA7D, $FA84, $FA93, $FA97, $FAAB, $FAB8, $FABE:

FA8A: 4C BC FE  JMP $FEBC     ; Exit Interrupt

Jump from $FA74:

FA8D: 70 31     BVS $FAC0
FA8F: D0 18     BNE $FAA9
FA91: A5 B5     LDA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
FA93: D0 F5     BNE $FA8A
FA95: A5 B6     LDA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FA97: D0 F1     BNE $FA8A
FA99: A5 A7     LDA $A7       ; Tape temporary
FA9B: 4A        LSR
FA9C: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FA9E: 30 03     BMI $FAA3
FAA0: 90 18     BCC $FABA
FAA2: 18        CLC

Jump from $FA9E:

FAA3: B0 15     BCS $FABA
FAA5: 29 0F     AND #$0F
FAA7: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary

Jump from $FA8F:

FAA9: C6 AA     DEC $AA       ; RS232 Input Byte Buffer/Tape temporary
FAAB: D0 DD     BNE $FA8A
FAAD: A9 40     LDA #$40
FAAF: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary
FAB1: 20 8E FB  JSR $FB8E     ; Reset Tape Pointer
FAB4: A9 00     LDA #$00
FAB6: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary
FAB8: F0 D0     BEQ $FA8A

Jump from $FAA0, $FAA3:

FABA: A9 80     LDA #$80
FABC: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary
FABE: D0 CA     BNE $FA8A

Jump from $FA8D:

FAC0: A5 B5     LDA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
FAC2: F0 0A     BEQ $FACE
FAC4: A9 04     LDA #$04
FAC6: 20 1C FE  JSR $FE1C     ; Control OS Messages
FAC9: A9 00     LDA #$00
FACB: 4C 4A FB  JMP $FB4A

Jump from $FAC2:

FACE: 20 D1 FC  JSR $FCD1     ; Check Read / Write Pointer
FAD1: 90 03     BCC $FAD6
FAD3: 4C 48 FB  JMP $FB48

Jump from $FAD1:

FAD6: A6 A7     LDX $A7       ; Tape temporary
FAD8: CA        DEX
FAD9: F0 2D     BEQ $FB08
FADB: A5 93     LDA $93       ; Flag: 0 = Load, 1 = Verify
FADD: F0 0C     BEQ $FAEB
FADF: A0 00     LDY #$00
FAE1: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FAE3: D1 AC     CMP ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
FAE5: F0 04     BEQ $FAEB
FAE7: A9 01     LDA #$01
FAE9: 85 B6     STA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag

Jump from $FADD, $FAE5:

FAEB: A5 B6     LDA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FAED: F0 4B     BEQ $FB3A
FAEF: A2 3D     LDX #$3D
FAF1: E4 9E     CPX $9E       ; Tape Error log pass 1
FAF3: 90 3E     BCC $FB33
FAF5: A6 9E     LDX $9E       ; Tape Error log pass 1
FAF7: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
FAF9: 9D 01 01  STA $0101,X   ; 6510 Hardware Stack Area
FAFC: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
FAFE: 9D 00 01  STA $0100,X   ; 6510 Hardware Stack Area
FB01: E8        INX
FB02: E8        INX
FB03: 86 9E     STX $9E       ; Tape Error log pass 1
FB05: 4C 3A FB  JMP $FB3A

Jump from $FAD9:

FB08: A6 9F     LDX $9F       ; Tape Error log pass 2
FB0A: E4 9E     CPX $9E       ; Tape Error log pass 1
FB0C: F0 35     BEQ $FB43
FB0E: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
FB10: DD 00 01  CMP $0100,X   ; 6510 Hardware Stack Area
FB13: D0 2E     BNE $FB43
FB15: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
FB17: DD 01 01  CMP $0101,X   ; 6510 Hardware Stack Area
FB1A: D0 27     BNE $FB43
FB1C: E6 9F     INC $9F       ; Tape Error log pass 2
FB1E: E6 9F     INC $9F       ; Tape Error log pass 2
FB20: A5 93     LDA $93       ; Flag: 0 = Load, 1 = Verify
FB22: F0 0B     BEQ $FB2F
FB24: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FB26: A0 00     LDY #$00
FB28: D1 AC     CMP ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
FB2A: F0 17     BEQ $FB43
FB2C: C8        INY
FB2D: 84 B6     STY $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag

Jump from $FB22:

FB2F: A5 B6     LDA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FB31: F0 07     BEQ $FB3A

Jump from $FAF3:

FB33: A9 10     LDA #$10
FB35: 20 1C FE  JSR $FE1C     ; Control OS Messages
FB38: D0 09     BNE $FB43

Jump from $FAED, $FB05, $FB31:

FB3A: A5 93     LDA $93       ; Flag: 0 = Load, 1 = Verify
FB3C: D0 05     BNE $FB43
FB3E: A8        TAY
FB3F: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FB41: 91 AC     STA ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling

Jump from $FB0C, $FB13, $FB1A, $FB2A, $FB38, $FB3C:

FB43: 20 DB FC  JSR $FCDB     ; Bump Read / Write Pointer
FB46: D0 43     BNE $FB8B

Jump from $FAD3:

FB48: A9 80     LDA #$80

Jump from $FACB:

FB4A: 85 AA     STA $AA       ; RS232 Input Byte Buffer/Tape temporary
FB4C: 78        SEI
FB4D: A2 01     LDX #$01
FB4F: 8E 0D DC  STX $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FB52: AE 0D DC  LDX $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FB55: A6 BE     LDX $BE       ; Tape Input/Output Block count
FB57: CA        DEX
FB58: 30 02     BMI $FB5C
FB5A: 86 BE     STX $BE       ; Tape Input/Output Block count

Jump from $FB58:

FB5C: C6 A7     DEC $A7       ; Tape temporary
FB5E: F0 08     BEQ $FB68
FB60: A5 9E     LDA $9E       ; Tape Error log pass 1
FB62: D0 27     BNE $FB8B
FB64: 85 BE     STA $BE       ; Tape Input/Output Block count
FB66: F0 23     BEQ $FB8B

Jump from $FB5E:

FB68: 20 93 FC  JSR $FC93     ; Restore Normal IRQ
FB6B: 20 8E FB  JSR $FB8E     ; Reset Tape Pointer
FB6E: A0 00     LDY #$00
FB70: 84 AB     STY $AB       ; RS232 Input parity/Tape temporary

Jump from $FB7E:

FB72: B1 AC     LDA ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
FB74: 45 AB     EOR $AB       ; RS232 Input parity/Tape temporary
FB76: 85 AB     STA $AB       ; RS232 Input parity/Tape temporary
FB78: 20 DB FC  JSR $FCDB     ; Bump Read / Write Pointer
FB7B: 20 D1 FC  JSR $FCD1     ; Check Read / Write Pointer
FB7E: 90 F2     BCC $FB72
FB80: A5 AB     LDA $AB       ; RS232 Input parity/Tape temporary
FB82: 45 BD     EOR $BD       ; RS232 Output Parity/Tape Byte temporary
FB84: F0 05     BEQ $FB8B
FB86: A9 20     LDA #$20
FB88: 20 1C FE  JSR $FE1C     ; Control OS Messages

Jump from $FB46, $FB62, $FB66, $FB84:

FB8B: 4C BC FE  JMP $FEBC     ; Exit Interrupt



 $FB8E/64398:   Reset Tape Pointer - c64ref 

Jump from $F617, $FAB1, $FB6B, $FC88:

FB8E: A5 C2     LDA $C2       ; Start Address for LOAD and Cassette Write
FB90: 85 AD     STA $AD       ; Pointer: Tape Buffer/Screen scrolling
FB92: A5 C1     LDA $C1       ; Start Address for LOAD and Cassette Write
FB94: 85 AC     STA $AC       ; Pointer: Tape Buffer/Screen scrolling
FB96: 60        RTS



 $FB97/64407:   New Character Setup - c64ref 

Jump from $F8A8, $FA60, $FC16, $FC75:

FB97: A9 08     LDA #$08
FB99: 85 A3     STA $A3       ; Serial Bus EOI (End Of Input) Flag
FB9B: A9 00     LDA #$00
FB9D: 85 A4     STA $A4       ; Serial Bus shift Counter
FB9F: 85 A8     STA $A8       ; RS232 Input Bit count/Tape temporary
FBA1: 85 9B     STA $9B       ; Parity of Byte Output to Tape
FBA3: 85 A9     STA $A9       ; RS232 Flag: Start Bit check/Tape temporary
FBA5: 60        RTS



 $FBA6/64422:   Send Tone to Tape - c64ref 

Jump from $FBF0:

FBA6: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FBA8: 4A        LSR
FBA9: A9 60     LDA #$60
FBAB: 90 02     BCC $FBAF

Jump from $FBE7:

FBAD: A9 B0     LDA #$B0

Jump from $FBAB, $FC6C:

FBAF: A2 00     LDX #$00

Jump from $FBD5:

FBB1: 8D 06 DC  STA $DC06     ; CIA1: Timer B Low-Byte  (Tape, Serial Port)
FBB4: 8E 07 DC  STX $DC07     ; CIA1: Timer B High-Byte (Tape, Serial Port)
FBB7: AD 0D DC  LDA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FBBA: A9 19     LDA #$19
FBBC: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
FBBF: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
FBC1: 49 08     EOR #$08
FBC3: 85 01     STA $01       ; 6510 On-chip 8-bit Input/Output Register
FBC5: 29 08     AND #$08
FBC7: 60        RTS



 $FBC8/64456:   Write Data to Tape - c64ref 

Jump from $FC35:

FBC8: 38        SEC
FBC9: 66 B6     ROR $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FBCB: 30 3C     BMI $FC09     ; IRQ Entry Point



 $FBCD/64461:   IRQ Entry Point - c64ref 

FBCD: A5 A8     LDA $A8       ; RS232 Input Bit count/Tape temporary
FBCF: D0 12     BNE $FBE3
FBD1: A9 10     LDA #$10
FBD3: A2 01     LDX #$01
FBD5: 20 B1 FB  JSR $FBB1     ; Send Tone to Tape
FBD8: D0 2F     BNE $FC09
FBDA: E6 A8     INC $A8       ; RS232 Input Bit count/Tape temporary
FBDC: A5 B6     LDA $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FBDE: 10 29     BPL $FC09
FBE0: 4C 57 FC  JMP $FC57     ; Write Tape Leader

Jump from $FBCF:

FBE3: A5 A9     LDA $A9       ; RS232 Flag: Start Bit check/Tape temporary
FBE5: D0 09     BNE $FBF0
FBE7: 20 AD FB  JSR $FBAD     ; Send Tone to Tape
FBEA: D0 1D     BNE $FC09
FBEC: E6 A9     INC $A9       ; RS232 Flag: Start Bit check/Tape temporary
FBEE: D0 19     BNE $FC09

Jump from $FBE5:

FBF0: 20 A6 FB  JSR $FBA6     ; Send Tone to Tape
FBF3: D0 14     BNE $FC09
FBF5: A5 A4     LDA $A4       ; Serial Bus shift Counter
FBF7: 49 01     EOR #$01
FBF9: 85 A4     STA $A4       ; Serial Bus shift Counter
FBFB: F0 0F     BEQ $FC0C
FBFD: A5 BD     LDA $BD       ; RS232 Output Parity/Tape Byte temporary
FBFF: 49 01     EOR #$01
FC01: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
FC03: 29 01     AND #$01
FC05: 45 9B     EOR $9B       ; Parity of Byte Output to Tape
FC07: 85 9B     STA $9B       ; Parity of Byte Output to Tape

Jump from $FBD8, $FBDE, $FBEA, $FBEE, $FBF3, $FC14, $FC2E, $FC3D, $FC4C, $FBCB:

FC09: 4C BC FE  JMP $FEBC     ; Exit Interrupt

Jump from $FBFB:

FC0C: 46 BD     LSR $BD       ; RS232 Output Parity/Tape Byte temporary
FC0E: C6 A3     DEC $A3       ; Serial Bus EOI (End Of Input) Flag
FC10: A5 A3     LDA $A3       ; Serial Bus EOI (End Of Input) Flag
FC12: F0 3A     BEQ $FC4E
FC14: 10 F3     BPL $FC09

Jump from $FC91:

FC16: 20 97 FB  JSR $FB97     ; New Character Setup
FC19: 58        CLI
FC1A: A5 A5     LDA $A5       ; Tape Synchronising count down
FC1C: F0 12     BEQ $FC30
FC1E: A2 00     LDX #$00
FC20: 86 D7     STX $D7       ; Current Input Character/Last Character Output
FC22: C6 A5     DEC $A5       ; Tape Synchronising count down
FC24: A6 BE     LDX $BE       ; Tape Input/Output Block count
FC26: E0 02     CPX #$02
FC28: D0 02     BNE $FC2C
FC2A: 09 80     ORA #$80

Jump from $FC28:

FC2C: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
FC2E: D0 D9     BNE $FC09

Jump from $FC1C:

FC30: 20 D1 FC  JSR $FCD1     ; Check Read / Write Pointer
FC33: 90 0A     BCC $FC3F
FC35: D0 91     BNE $FBC8     ; Write Data to Tape
FC37: E6 AD     INC $AD       ; Pointer: Tape Buffer/Screen scrolling
FC39: A5 D7     LDA $D7       ; Current Input Character/Last Character Output
FC3B: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
FC3D: B0 CA     BCS $FC09

Jump from $FC33:

FC3F: A0 00     LDY #$00
FC41: B1 AC     LDA ($AC),Y   ; Pointer: Tape Buffer/Screen scrolling
FC43: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary
FC45: 45 D7     EOR $D7       ; Current Input Character/Last Character Output
FC47: 85 D7     STA $D7       ; Current Input Character/Last Character Output
FC49: 20 DB FC  JSR $FCDB     ; Bump Read / Write Pointer
FC4C: D0 BB     BNE $FC09

Jump from $FC12:

FC4E: A5 9B     LDA $9B       ; Parity of Byte Output to Tape
FC50: 49 01     EOR #$01
FC52: 85 BD     STA $BD       ; RS232 Output Parity/Tape Byte temporary

Jump from $FC68, $FC6F, $FC73, $FC7A, $FCBB:

FC54: 4C BC FE  JMP $FEBC     ; Exit Interrupt



 $FC57/64599:   Write Tape Leader - c64ref 

Jump from $FBE0:

FC57: C6 BE     DEC $BE       ; Tape Input/Output Block count
FC59: D0 03     BNE $FC5E
FC5B: 20 CA FC  JSR $FCCA     ; Stop Tape Motor

Jump from $FC59:

FC5E: A9 50     LDA #$50
FC60: 85 A7     STA $A7       ; Tape temporary
FC62: A2 08     LDX #$08
FC64: 78        SEI
FC65: 20 BD FC  JSR $FCBD     ; Set IRQ Vector
FC68: D0 EA     BNE $FC54     ; IRQ Entry Point
FC6A: A9 78     LDA #$78
FC6C: 20 AF FB  JSR $FBAF     ; Send Tone to Tape
FC6F: D0 E3     BNE $FC54     ; IRQ Entry Point
FC71: C6 A7     DEC $A7       ; Tape temporary
FC73: D0 DF     BNE $FC54     ; IRQ Entry Point
FC75: 20 97 FB  JSR $FB97     ; New Character Setup
FC78: C6 AB     DEC $AB       ; RS232 Input parity/Tape temporary
FC7A: 10 D8     BPL $FC54     ; IRQ Entry Point
FC7C: A2 0A     LDX #$0A
FC7E: 20 BD FC  JSR $FCBD     ; Set IRQ Vector
FC81: 58        CLI
FC82: E6 AB     INC $AB       ; RS232 Input parity/Tape temporary
FC84: A5 BE     LDA $BE       ; Tape Input/Output Block count
FC86: F0 30     BEQ $FCB8     ; Set IRQ Vector
FC88: 20 8E FB  JSR $FB8E     ; Reset Tape Pointer
FC8B: A2 09     LDX #$09
FC8D: 86 A5     STX $A5       ; Tape Synchronising count down
FC8F: 86 B6     STX $B6       ; RS232 Output Byte Buffer/Tape Read Error Flag
FC91: D0 83     BNE $FC16     ; IRQ Entry Point



 $FC93/64659:   Restore Normal IRQ - c64ref 

Jump from $F8D6, $FB68, $FCB8:

FC93: 08        PHP
FC94: 78        SEI
FC95: AD 11 D0  LDA $D011     ; VIC: Control Register 1
FC98: 09 10     ORA #$10
FC9A: 8D 11 D0  STA $D011     ; VIC: Control Register 1
FC9D: 20 CA FC  JSR $FCCA     ; Stop Tape Motor
FCA0: A9 7F     LDA #$7F
FCA2: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FCA5: 20 DD FD  JSR $FDDD     ; Enable Timer
FCA8: AD A0 02  LDA $02A0     ; Temp. store for IRQ Vector during Tape I/O
FCAB: F0 09     BEQ $FCB6
FCAD: 8D 15 03  STA $0315     ; Vector: Hardware IRQ Interrupt Address
FCB0: AD 9F 02  LDA $029F     ; Temp. store for IRQ Vector during Tape I/O
FCB3: 8D 14 03  STA $0314     ; Vector: Hardware IRQ Interrupt Address

Jump from $FCAB:

FCB6: 28        PLP
FCB7: 60        RTS



 $FCB8/64696:   Set IRQ Vector - c64ref 

Jump from $FC86:

FCB8: 20 93 FC  JSR $FC93     ; Restore Normal IRQ
FCBB: F0 97     BEQ $FC54     ; IRQ Entry Point

Jump from $F8A1, $FC65, $FC7E:

FCBD: BD 93 FD  LDA $FD93,X   ; Initialise System Constants
FCC0: 8D 14 03  STA $0314     ; Vector: Hardware IRQ Interrupt Address
FCC3: BD 94 FD  LDA $FD94,X   ; Initialise System Constants
FCC6: 8D 15 03  STA $0315     ; Vector: Hardware IRQ Interrupt Address
FCC9: 60        RTS



 $FCCA/64714:   Stop Tape Motor - c64ref 

Jump from $FC5B, $FC9D:

FCCA: A5 01     LDA $01       ; 6510 On-chip 8-bit Input/Output Register
FCCC: 09 20     ORA #$20
FCCE: 85 01     STA $01       ; 6510 On-chip 8-bit Input/Output Register
FCD0: 60        RTS



 $FCD1/64721:   Check Read / Write Pointer - c64ref 

Jump from $F624, $FACE, $FB7B, $FC30:

FCD1: 38        SEC
FCD2: A5 AC     LDA $AC       ; Pointer: Tape Buffer/Screen scrolling
FCD4: E5 AE     SBC $AE       ; Tape End Address/End of Program
FCD6: A5 AD     LDA $AD       ; Pointer: Tape Buffer/Screen scrolling
FCD8: E5 AF     SBC $AF       ; Tape End Address/End of Program
FCDA: 60        RTS



 $FCDB/64731:   Bump Read / Write Pointer - c64ref 

Jump from $F63A, $FB43, $FB78, $FC49:

FCDB: E6 AC     INC $AC       ; Pointer: Tape Buffer/Screen scrolling
FCDD: D0 02     BNE $FCE1
FCDF: E6 AD     INC $AD       ; Pointer: Tape Buffer/Screen scrolling

Jump from $FCDD:

FCE1: 60        RTS



 $FCE2/64738:   Power-Up RESET Entry - c64ref 

FCE2: A2 FF     LDX #$FF
FCE4: 78        SEI
FCE5: 9A        TXS
FCE6: D8        CLD
FCE7: 20 02 FD  JSR $FD02     ; Check For 8-ROM
FCEA: D0 03     BNE $FCEF
FCEC: 6C 00 80  JMP ($8000)

Jump from $FCEA:

FCEF: 8E 16 D0  STX $D016     ; VIC: Control Register 2
FCF2: 20 A3 FD  JSR $FDA3     ; Initialise I/O
FCF5: 20 50 FD  JSR $FD50     ; Initialise System Constants
FCF8: 20 15 FD  JSR $FD15     ; Restore Kernal Vectors
FCFB: 20 5B FF  JSR $FF5B     ; Initialize screen editor
FCFE: 58        CLI
FCFF: 6C 00 A0  JMP ($A000)   ; Restart Vectors



 $FD02/64770:   Check For 8-ROM - c64ref 

Jump from $FCE7, $FE56:

FD02: A2 05     LDX #$05

Jump from $FD0D:

FD04: BD 0F FD  LDA $FD0F,X
FD07: DD 03 80  CMP $8003,X
FD0A: D0 03     BNE $FD0F
FD0C: CA        DEX
FD0D: D0 F5     BNE $FD04

Jump from $FD0A:

FD0F: 60        RTS


Kernal-Reference:

 LDA $FD0F,X : $FD04


 $FD10/64784:   8-ROM Mask 'CBM80' - c64ref 

FD10: C3 C2 CD 38 30             'CBM80'



 $FD15/64789:   Restore Kernal Vectors - c64ref 

Jump from $FCF8, $FE66, $FF8A:

FD15: A2 30     LDX #$30
FD17: A0 FD     LDY #$FD
FD19: 18        CLC



 $FD1A/64794:   Change Vectors For User - c64ref 

Jump from $FF8D:

FD1A: 86 C3     STX $C3       ; Pointer: Type 3 Tape LOAD and general use
FD1C: 84 C4     STY $C4       ; Pointer: Type 3 Tape LOAD and general use
FD1E: A0 1F     LDY #$1F

Jump from $FD2D:

FD20: B9 14 03  LDA $0314,Y   ; Vector: Hardware IRQ Interrupt Address
FD23: B0 02     BCS $FD27
FD25: B1 C3     LDA ($C3),Y   ; Pointer: Type 3 Tape LOAD and general use

Jump from $FD23:

FD27: 91 C3     STA ($C3),Y   ; Pointer: Type 3 Tape LOAD and general use
FD29: 99 14 03  STA $0314,Y   ; Vector: Hardware IRQ Interrupt Address
FD2C: 88        DEY
FD2D: 10 F1     BPL $FD20
FD2F: 60        RTS



 $FD30/64816:   Kernal Reset Vectors - c64ref 

FD30: 31 EA 66 FE 47 FE 4A F3    $EA31,$FE66,$FE47,$F34A
FD38: 91 F2 0E F2 50 F2 33 F3    $F291,$F20E,$F250,$F333
FD40: 57 F1 CA F1 ED F6 3E F1    $F157,$F1CA,$F6ED,$F13E
FD48: 2F F3 66 FE A5 F4 ED F5    $F32F,$FE66,$F4A5,$F5ED



 $FD50/64848:   Initialise System Constants - c64ref 

Jump from $FCF5, $FF87:

FD50: A9 00     LDA #$00
FD52: A8        TAY

Jump from $FD5D:

FD53: 99 02 00  STA $0002,Y   ; Unused
FD56: 99 00 02  STA $0200,Y   ; BASIC Input Buffer (Input Line from Screen)
FD59: 99 00 03  STA $0300,Y   ; Vector: BASIC Error Message
FD5C: C8        INY
FD5D: D0 F4     BNE $FD53
FD5F: A2 3C     LDX #$3C
FD61: A0 03     LDY #$03
FD63: 86 B2     STX $B2       ; Pointer: Start Address of Tape Buffer
FD65: 84 B3     STY $B3       ; Pointer: Start Address of Tape Buffer
FD67: A8        TAY
FD68: A9 03     LDA #$03
FD6A: 85 C2     STA $C2       ; Start Address for LOAD and Cassette Write

Jump from $FD86:

FD6C: E6 C2     INC $C2       ; Start Address for LOAD and Cassette Write

Jump from $FD84:

FD6E: B1 C1     LDA ($C1),Y   ; Start Address for LOAD and Cassette Write
FD70: AA        TAX
FD71: A9 55     LDA #$55
FD73: 91 C1     STA ($C1),Y   ; Start Address for LOAD and Cassette Write
FD75: D1 C1     CMP ($C1),Y   ; Start Address for LOAD and Cassette Write
FD77: D0 0F     BNE $FD88
FD79: 2A        ROL
FD7A: 91 C1     STA ($C1),Y   ; Start Address for LOAD and Cassette Write
FD7C: D1 C1     CMP ($C1),Y   ; Start Address for LOAD and Cassette Write
FD7E: D0 08     BNE $FD88
FD80: 8A        TXA
FD81: 91 C1     STA ($C1),Y   ; Start Address for LOAD and Cassette Write
FD83: C8        INY
FD84: D0 E8     BNE $FD6E
FD86: F0 E4     BEQ $FD6C

Jump from $FD77, $FD7E:

FD88: 98        TYA
FD89: AA        TAX
FD8A: A4 C2     LDY $C2       ; Start Address for LOAD and Cassette Write
FD8C: 18        CLC
FD8D: 20 2D FE  JSR $FE2D     ; Read / Set Top of Memory
FD90: A9 08     LDA #$08
FD92: 8D 82 02  STA $0282     ; Pointer: Bottom of Memory for Operating System
FD95: A9 04     LDA #$04
FD97: 8D 88 02  STA $0288     ; High Byte of Screen Memory Address
FD9A: 60        RTS


Kernal-Reference:

 LDA $FD93,X : $FCBD

 LDA $FD94,X : $FCC3


 $FD9B/64923:   IRQ Vectors For Tape I/O - c64ref 

FD9B: 6A FC CD FB 31 EA 2C F9    $FC6A,$FBCD,$EA31,$F92C



 $FDA3/64931:   Initialise I/O - c64ref 

Jump from $FCF2, $FE69, $FF84:

FDA3: A9 7F     LDA #$7F
FDA5: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FDA8: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
FDAB: 8D 00 DC  STA $DC00     ; CIA1: Data Port A (Keyboard, Joystick, Paddles)
FDAE: A9 08     LDA #$08
FDB0: 8D 0E DC  STA $DC0E     ; CIA1: Control Register A
FDB3: 8D 0E DD  STA $DD0E     ; CIA2: Control Register A
FDB6: 8D 0F DC  STA $DC0F     ; CIA1: Control Register B
FDB9: 8D 0F DD  STA $DD0F     ; CIA2: Control Register B
FDBC: A2 00     LDX #$00
FDBE: 8E 03 DC  STX $DC03     ; CIA1: Data Direction Register B
FDC1: 8E 03 DD  STX $DD03     ; CIA2: Data Direction Register B
FDC4: 8E 18 D4  STX $D418     ; SID: Select Filter Mode and Volume
FDC7: CA        DEX
FDC8: 8E 02 DC  STX $DC02     ; CIA1: Data Direction Register A
FDCB: A9 07     LDA #$07
FDCD: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
FDD0: A9 3F     LDA #$3F
FDD2: 8D 02 DD  STA $DD02     ; CIA2: Data Direction Register A
FDD5: A9 E7     LDA #$E7
FDD7: 85 01     STA $01       ; 6510 On-chip 8-bit Input/Output Register
FDD9: A9 2F     LDA #$2F
FDDB: 85 00     STA $00       ; 6510 On-chip Data Direction Register



 $FDDD/64989:   Enable Timer - c64ref 

Jump from $FCA5, $FF6B:

FDDD: AD A6 02  LDA $02A6     ; Flag: TV Standard
FDE0: F0 0A     BEQ $FDEC
FDE2: A9 25     LDA #$25
FDE4: 8D 04 DC  STA $DC04     ; CIA1: Timer A Low-Byte  (Kernal-IRQ, Tape)
FDE7: A9 40     LDA #$40
FDE9: 4C F3 FD  JMP $FDF3

Jump from $FDE0:

FDEC: A9 95     LDA #$95
FDEE: 8D 04 DC  STA $DC04     ; CIA1: Timer A Low-Byte  (Kernal-IRQ, Tape)
FDF1: A9 42     LDA #$42

Jump from $FDE9:

FDF3: 8D 05 DC  STA $DC05     ; CIA1: Timer A High-Byte (Kernal-IRQ, Tape)
FDF6: 4C 6E FF  JMP $FF6E     ; Initialize screen editor



 $FDF9/65017:   Set Filename - c64ref 

Jump from $FFBD:

FDF9: 85 B7     STA $B7       ; Number of Characters in Filename
FDFB: 86 BB     STX $BB       ; Pointer: Current File name Address
FDFD: 84 BC     STY $BC       ; Pointer: Current File name Address
FDFF: 60        RTS



 $FE00/65024:   Set Logical File Parameters - c64ref 

Jump from $FFBA:

FE00: 85 B8     STA $B8       ; Current File - Logical File number
FE02: 86 BA     STX $BA       ; Current File - First Address (Device number)
FE04: 84 B9     STY $B9       ; Current File - Secondary Address
FE06: 60        RTS



 $FE07/65031:   Get I/O Status Word - c64ref 

Jump from $FFB7:

FE07: A5 BA     LDA $BA       ; Current File - First Address (Device number)
FE09: C9 02     CMP #$02
FE0B: D0 0D     BNE $FE1A     ; Control OS Messages
FE0D: AD 97 02  LDA $0297     ; RS232 Pseudo 6551 Status Register Image
FE10: 48        PHA
FE11: A9 00     LDA #$00
FE13: 8D 97 02  STA $0297     ; RS232 Pseudo 6551 Status Register Image
FE16: 68        PLA
FE17: 60        RTS



 $FE18/65048:   Control OS Messages - c64ref 

Jump from $FF90:

FE18: 85 9D     STA $9D       ; Error-Mode-Flag

Jump from $FE0B:

FE1A: A5 90     LDA $90       ; Kernal I/O Status Word ST

Jump from $EDB2, $EE4F, $F18A, $F518, $FA81, $FAC6, $FB35, $FB88:

FE1C: 05 90     ORA $90       ; Kernal I/O Status Word ST
FE1E: 85 90     STA $90       ; Kernal I/O Status Word ST
FE20: 60        RTS



 $FE21/65057:   Set IEEE Timeout - c64ref 

Jump from $FFA2:

FE21: 8D 85 02  STA $0285     ; Serial IEEE Bus timeout defeat Flag
FE24: 60        RTS



 $FE25/65061:   Read / Set Top of Memory - c64ref 

Jump from $FF99:

FE25: 90 06     BCC $FE2D

Jump from $F2B2, $F468:

FE27: AE 83 02  LDX $0283     ; Pointer: Top of Memory for Operating System
FE2A: AC 84 02  LDY $0284     ; Pointer: Top of Memory for Operating System

Jump from $FE25, $F480, $FD8D:

FE2D: 8E 83 02  STX $0283     ; Pointer: Top of Memory for Operating System
FE30: 8C 84 02  STY $0284     ; Pointer: Top of Memory for Operating System
FE33: 60        RTS



 $FE34/65076:   Read / Set Bottom of Memory - c64ref 

Jump from $FF9C:

FE34: 90 06     BCC $FE3C
FE36: AE 81 02  LDX $0281     ; Pointer: Bottom of Memory for Operating System
FE39: AC 82 02  LDY $0282     ; Pointer: Bottom of Memory for Operating System

Jump from $FE34:

FE3C: 8E 81 02  STX $0281     ; Pointer: Bottom of Memory for Operating System
FE3F: 8C 82 02  STY $0282     ; Pointer: Bottom of Memory for Operating System
FE42: 60        RTS



 $FE43/65091:   NMI Transfer Entry - c64ref 

FE43: 78        SEI
FE44: 6C 18 03  JMP ($0318)   ; Vector: Hardware NMI Interrupt Address
FE47: 48        PHA
FE48: 8A        TXA
FE49: 48        PHA
FE4A: 98        TYA
FE4B: 48        PHA
FE4C: A9 7F     LDA #$7F
FE4E: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
FE51: AC 0D DD  LDY $DD0D     ; CIA2: Interrupt (NMI) Control Register
FE54: 30 1C     BMI $FE72     ; Warm Start Basic
FE56: 20 02 FD  JSR $FD02     ; Check For 8-ROM
FE59: D0 03     BNE $FE5E
FE5B: 6C 02 80  JMP ($8002)

Jump from $FE59:

FE5E: 20 BC F6  JSR $F6BC     ; Bump Clock
FE61: 20 E1 FF  JSR $FFE1     ; Test-Stop Vector
FE64: D0 0C     BNE $FE72     ; Warm Start Basic



 $FE66/65126:   Warm Start Basic - c64ref 

FE66: 20 15 FD  JSR $FD15     ; Restore Kernal Vectors
FE69: 20 A3 FD  JSR $FDA3     ; Initialise I/O
FE6C: 20 18 E5  JSR $E518     ; Initialize I/O
FE6F: 6C 02 A0  JMP ($A002)   ; Restart Vectors

Jump from $FE54, $FE64:

FE72: 98        TYA
FE73: 2D A1 02  AND $02A1     ; RS232 Enables
FE76: AA        TAX
FE77: 29 01     AND #$01
FE79: F0 28     BEQ $FEA3
FE7B: AD 00 DD  LDA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
FE7E: 29 FB     AND #$FB
FE80: 05 B5     ORA $B5       ; RS232 Next Bit to send/Tape Read - End of Tape
FE82: 8D 00 DD  STA $DD00     ; CIA2: Data Port A (Serial Bus, RS232, VIC Base Mem.)
FE85: AD A1 02  LDA $02A1     ; RS232 Enables
FE88: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
FE8B: 8A        TXA
FE8C: 29 12     AND #$12
FE8E: F0 0D     BEQ $FE9D
FE90: 29 02     AND #$02
FE92: F0 06     BEQ $FE9A
FE94: 20 D6 FE  JSR $FED6     ; NMI RS232 In
FE97: 4C 9D FE  JMP $FE9D

Jump from $FE92:

FE9A: 20 07 FF  JSR $FF07     ; NMI RS232 Out

Jump from $FE8E, $FE97:

FE9D: 20 BB EE  JSR $EEBB     ; RS232 Send
FEA0: 4C B6 FE  JMP $FEB6

Jump from $FE79:

FEA3: 8A        TXA
FEA4: 29 02     AND #$02
FEA6: F0 06     BEQ $FEAE
FEA8: 20 D6 FE  JSR $FED6     ; NMI RS232 In
FEAB: 4C B6 FE  JMP $FEB6

Jump from $FEA6:

FEAE: 8A        TXA
FEAF: 29 10     AND #$10
FEB1: F0 03     BEQ $FEB6
FEB3: 20 07 FF  JSR $FF07     ; NMI RS232 Out

Jump from $FEA0, $FEAB, $FEB1:

FEB6: AD A1 02  LDA $02A1     ; RS232 Enables
FEB9: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register



 $FEBC/65212:   Exit Interrupt - c64ref 

Jump from $F9D2, $FA0D, $FA5D, $FA8A, $FB8B, $FC09, $FC54:

FEBC: 68        PLA
FEBD: A8        TAY
FEBE: 68        PLA
FEBF: AA        TAX
FEC0: 68        PLA
FEC1: 40        RTI


Kernal-Reference:

 LDA $FEC0,X : $F434

 LDY $FEC1,X : $F431


 $FEC2/65218:   RS232 Timing Table - NTSC - c64ref 

FEC2: C1 27 3E 1A C5 11 74 0E
FECA: ED 0C 45 06 F0 02 46 01
FED2: B8 00 71 00



 $FED6/65238:   NMI RS232 In - c64ref 

Jump from $FE94, $FEA8:

FED6: AD 01 DD  LDA $DD01     ; CIA2: Data Port B (User Port, RS232)
FED9: 29 01     AND #$01
FEDB: 85 A7     STA $A7       ; Tape temporary
FEDD: AD 06 DD  LDA $DD06     ; CIA2: Timer B Low-Byte  (RS232)
FEE0: E9 1C     SBC #$1C
FEE2: 6D 99 02  ADC $0299     ; RS232 Baud Rate; Full Bit time microseconds
FEE5: 8D 06 DD  STA $DD06     ; CIA2: Timer B Low-Byte  (RS232)
FEE8: AD 07 DD  LDA $DD07     ; CIA2: Timer B High-Byte (RS232)
FEEB: 6D 9A 02  ADC $029A     ; RS232 Baud Rate; Full Bit time microseconds
FEEE: 8D 07 DD  STA $DD07     ; CIA2: Timer B High-Byte (RS232)
FEF1: A9 11     LDA #$11
FEF3: 8D 0F DD  STA $DD0F     ; CIA2: Control Register B
FEF6: AD A1 02  LDA $02A1     ; RS232 Enables
FEF9: 8D 0D DD  STA $DD0D     ; CIA2: Interrupt (NMI) Control Register
FEFC: A9 FF     LDA #$FF
FEFE: 8D 06 DD  STA $DD06     ; CIA2: Timer B Low-Byte  (RS232)
FF01: 8D 07 DD  STA $DD07     ; CIA2: Timer B High-Byte (RS232)
FF04: 4C 59 EF  JMP $EF59     ; RS232 Receive



 $FF07/65287:   NMI RS232 Out - c64ref 

Jump from $FE9A, $FEB3:

FF07: AD 95 02  LDA $0295     ; RS232 Non-standard Bits/Second
FF0A: 8D 06 DD  STA $DD06     ; CIA2: Timer B Low-Byte  (RS232)
FF0D: AD 96 02  LDA $0296     ; RS232 Non-standard Bits/Second
FF10: 8D 07 DD  STA $DD07     ; CIA2: Timer B High-Byte (RS232)
FF13: A9 11     LDA #$11
FF15: 8D 0F DD  STA $DD0F     ; CIA2: Control Register B
FF18: A9 12     LDA #$12
FF1A: 4D A1 02  EOR $02A1     ; RS232 Enables
FF1D: 8D A1 02  STA $02A1     ; RS232 Enables
FF20: A9 FF     LDA #$FF
FF22: 8D 06 DD  STA $DD06     ; CIA2: Timer B Low-Byte  (RS232)
FF25: 8D 07 DD  STA $DD07     ; CIA2: Timer B High-Byte (RS232)
FF28: AE 98 02  LDX $0298     ; RS232 Number of Bits left to send
FF2B: 86 A8     STX $A8       ; RS232 Input Bit count/Tape temporary
FF2D: 60        RTS

Jump from $F44A:

FF2E: AA        TAX
FF2F: AD 96 02  LDA $0296     ; RS232 Non-standard Bits/Second
FF32: 2A        ROL
FF33: A8        TAY
FF34: 8A        TXA
FF35: 69 C8     ADC #$C8
FF37: 8D 99 02  STA $0299     ; RS232 Baud Rate; Full Bit time microseconds
FF3A: 98        TYA
FF3B: 69 00     ADC #$00
FF3D: 8D 9A 02  STA $029A     ; RS232 Baud Rate; Full Bit time microseconds
FF40: 60        RTS
FF41: EA        NOP
FF42: EA        NOP



 $FF43/65347:   Fake IRQ Entry - c64ref 

Jump from $F927:

FF43: 08        PHP
FF44: 68        PLA
FF45: 29 EF     AND #$EF
FF47: 48        PHA



 $FF48/65352:   IRQ Entry - c64ref 

FF48: 48        PHA
FF49: 8A        TXA
FF4A: 48        PHA
FF4B: 98        TYA
FF4C: 48        PHA
FF4D: BA        TSX
FF4E: BD 04 01  LDA $0104,X   ; 6510 Hardware Stack Area
FF51: 29 10     AND #$10
FF53: F0 03     BEQ $FF58
FF55: 6C 16 03  JMP ($0316)   ; Vector: BRK Instruction Interrupt Address

Jump from $FF53:

FF58: 6C 14 03  JMP ($0314)   ; Vector: Hardware IRQ Interrupt Address



 $FF5B/65371:   Initialize screen editor - c64ref 

Jump from $FCFB, $FF81:

FF5B: 20 18 E5  JSR $E518     ; Initialize I/O

Jump from $FF61:

FF5E: AD 12 D0  LDA $D012     ; VIC: Raster Position
FF61: D0 FB     BNE $FF5E
FF63: AD 19 D0  LDA $D019     ; VIC: Interrupt Request Register (IRR)
FF66: 29 01     AND #$01
FF68: 8D A6 02  STA $02A6     ; Flag: TV Standard
FF6B: 4C DD FD  JMP $FDDD     ; Enable Timer

Jump from $FDF6:

FF6E: A9 81     LDA #$81
FF70: 8D 0D DC  STA $DC0D     ; CIA1: Interrupt (IRQ) Control Register
FF73: AD 0E DC  LDA $DC0E     ; CIA1: Control Register A
FF76: 29 80     AND #$80
FF78: 09 11     ORA #$11
FF7A: 8D 0E DC  STA $DC0E     ; CIA1: Control Register A
FF7D: 4C 8E EE  JMP $EE8E     ; Serial Clock Off



 $FF80/65408:   Kernal Version Number - c64ref 

FF80:   00 = Revision 2 (old)
        03 = Revision 3 (new)
        43 = SX64

  Note: Revision 1 was just a prototype.



 $FF81/65409:   Init Editor & Video Chips - c64ref 

FF81: 4C 5B FF  JMP $FF5B     ; Initialize screen editor



 $FF84/65412:   Init I/O Devices, Ports & Timers - c64ref 

FF84: 4C A3 FD  JMP $FDA3     ; Initialise I/O



 $FF87/65415:   Init Ram & Buffers - c64ref 

FF87: 4C 50 FD  JMP $FD50     ; Initialise System Constants



 $FF8A/65418:   Restore Vectors - c64ref 

FF8A: 4C 15 FD  JMP $FD15     ; Restore Kernal Vectors



 $FF8D/65421:   Change Vectors For User - c64ref 

FF8D: 4C 1A FD  JMP $FD1A     ; Change Vectors For User



 $FF90/65424:   Control OS Messages - c64ref 

Jump from $A47D, $A874:

FF90: 4C 18 FE  JMP $FE18     ; Control OS Messages



 $FF93/65427:   Send SA After Listen - c64ref 

FF93: 4C B9 ED  JMP $EDB9     ; Send LISTEN Secondary Address



 $FF96/65430:   Send SA After Talk - c64ref 

FF96: 4C C7 ED  JMP $EDC7     ; Send TALK Secondary Address



 $FF99/65433:   Set/Read System RAM Top - c64ref 

Jump from $E40B:

FF99: 4C 25 FE  JMP $FE25     ; Read / Set Top of Memory



 $FF9C/65436:   Set/Read System RAM Bottom - c64ref 

Jump from $E403:

FF9C: 4C 34 FE  JMP $FE34     ; Read / Set Bottom of Memory



 $FF9F/65439:   Scan Keyboard - c64ref 

FF9F: 4C 87 EA  JMP $EA87     ; Scan Keyboard



 $FFA2/65442:   Set Timeout In IEEE - c64ref 

FFA2: 4C 21 FE  JMP $FE21     ; Set IEEE Timeout



 $FFA5/65445:   Handshake Serial Byte In - c64ref 

FFA5: 4C 13 EE  JMP $EE13     ; Receive From Serial Bus



 $FFA8/65448:   Handshake Serial Byte Out - c64ref 

FFA8: 4C DD ED  JMP $EDDD     ; Send Serial Deferred



 $FFAB/65451:   Command Serial Bus UNTALK - c64ref 

FFAB: 4C EF ED  JMP $EDEF     ; Send UNTALK



 $FFAE/65454:   Command Serial Bus UNLISTEN - c64ref 

FFAE: 4C FE ED  JMP $EDFE     ; Send UNLISTEN



 $FFB1/65457:   Command Serial Bus LISTEN - c64ref 

FFB1: 4C 0C ED  JMP $ED0C     ; Send LISTEN Command on Serial Bus



 $FFB4/65460:   Command Serial Bus TALK - c64ref 

FFB4: 4C 09 ED  JMP $ED09     ; Send TALK Command on Serial Bus



 $FFB7/65463:   Read I/O Status Word - c64ref 

Jump from $ABDD, $AF9A, $E180, $E195:

FFB7: 4C 07 FE  JMP $FE07     ; Get I/O Status Word



 $FFBA/65466:   Set Logical File Parameters - c64ref 

Jump from $E1DD, $E1F0, $E1FD, $E22B, $E23F, $E24E:

FFBA: 4C 00 FE  JMP $FE00     ; Set Logical File Parameters



 $FFBD/65469:   Set Filename - c64ref 

Jump from $E1D6, $E21B, $E261:

FFBD: 4C F9 FD  JMP $FDF9     ; Set Filename



 $FFC0/65472:   Open Vector - c64ref 

Jump from $E1C1:

FFC0: 6C 1A 03  JMP ($031A)   ; Vector: Kernal OPEN Routine



 $FFC3/65475:   Close Vector - c64ref 

Jump from $E1CC:

FFC3: 6C 1C 03  JMP ($031C)   ; Vector: Kernal CLOSE Routine



 $FFC6/65478:   Set Input - c64ref 

Jump from $E11E:

FFC6: 6C 1E 03  JMP ($031E)   ; Vector: Kernal CHKIN Routine



 $FFC9/65481:   Set Output - c64ref 

Jump from $E4AE:

FFC9: 6C 20 03  JMP ($0320)   ; Vector: Kernal CHKOUT Routine



 $FFCC/65484:   Restore I/O Vector - c64ref 

Jump from $A447, $ABB7, $E37B, $F6F4, $F716:

FFCC: 6C 22 03  JMP ($0322)   ; Vector: Kernal CLRCHN Routine



 $FFCF/65487:   Input Vector, chrin - c64ref 

Jump from $E112:

FFCF: 6C 24 03  JMP ($0324)   ; Vector: Kernal CHRIN Routine



 $FFD2/65490:   Output Vector, chrout - c64ref 

Jump from $E10C, $F135, $F5C9, $F726, $F759:

FFD2: 6C 26 03  JMP ($0326)   ; Vector: Kernal CHROUT Routine



 $FFD5/65493:   Load RAM From Device - c64ref 

Jump from $E175:

FFD5: 4C 9E F4  JMP $F49E     ; Load RAM



 $FFD8/65496:   Save RAM To Device - c64ref 

Jump from $E15F:

FFD8: 4C DD F5  JMP $F5DD     ; Save RAM



 $FFDB/65499:   Set Real-Time Clock - c64ref 

Jump from $AA1A:

FFDB: 4C E4 F6  JMP $F6E4     ; Set Time



 $FFDE/65502:   Read Real-Time Clock - c64ref 

Jump from $AF84:

FFDE: 4C DD F6  JMP $F6DD     ; Get Time



 $FFE1/65505:   Test-Stop Vector - c64ref 

Jump from $A82C, $F4F9, $F62E, $F8D0, $FE61:

FFE1: 6C 28 03  JMP ($0328)   ; Vector: Kernal STOP Routine



 $FFE4/65508:   Get From Keyboad - c64ref 

Jump from $E124:

FFE4: 6C 2A 03  JMP ($032A)   ; Vector: Kernal GETIN Routine



 $FFE7/65511:   Close All Channels And Files - c64ref 

Jump from $A660:

FFE7: 6C 2C 03  JMP ($032C)   ; Vector: Kernal CLALL Routine



 $FFEA/65514:   Increment Real-Time Clock - c64ref 

Jump from $EA31:

FFEA: 4C 9B F6  JMP $F69B     ; Bump Clock



 $FFED/65517:   Return Screen Organization - c64ref 

FFED: 4C 05 E5  JMP $E505     ; Get Screen Size



 $FFF0/65520:   Read / Set Cursor X/Y Position - c64ref 

Jump from $AAE9, $AAFA, $B39F:

FFF0: 4C 0A E5  JMP $E50A     ; Put / Get Row And Column



 $FFF3/65523:   Return I/O Base Address - c64ref 

Jump from $E09E:

FFF3: 4C 00 E5  JMP $E500     ; Get I/O Address



 $FFF6/65526:   - - c64ref 

FFF6: 52 52                      $5252



 $FFF8/65528:   SYSTEM

FFF8: 42 59                      $5942



 $FFFA/65530:   Vector: NMI - c64ref 

FFFA: 43 FE                      $FE43



 $FFFC/65532:   Vector: RESET - c64ref 

FFFC: E2 FC                      $FCE2



 $FFFE/65534:   Vector: IRQ - c64ref 

FFFE: 48 FF                      $FF48



 KERNAL Versions:

   Revision 1 (prototype, not mentioned in AAY64)
   Revision 2 ("old", used until 1983(?))
   Revision 3 ("new", used from 1983(?) on)
   SX64       (like Rev. 3, but adapted for the SX64)

   AAY64 contains a disassembly of the new version, but differences
   are also stated. They are at:

  +-------------------------------------------------------------------------
  |   Rev. 2 <> Rev. 3
  +-------------+-----------------------------------------------------------
  | $E4AC       | Version Indicator(?)
  | $E4D3-$E4D9 | Patch for RS232-Routines:
  |             |   Old Kernal didn't set Input Parity at $AB
  | $E4DA-$E4DC | Reset Character Color:
  |             |   Old Kernal gets Color from $D021 instead of $0286.
  | $E57C-$E599 | Set Screen Pointers:
  |             |   Old Kernal lacks some error-checks
  | $E622+$E623 | Input From Keyboard:
  |             |   Old Kernal doesn't check if cursor line = 0
  | $EA07-$EA12 | Clear Screen Line:
  |             |   Just a differnce in order of code
  | $EF94-$EF96 | Process RS232 Byte:
  |             |   Apply patch at $E4D3 in newer version
  | $FF80       | Version number
  +-------------+-----------------------------------------------------------

  +-------------------------------------------------------------------------
  |   SX64 <> Rev. 3
  +-------------+-----------------------------------------------------------
  | $E479-$E4AC | Power-Up Message:
  |             |   Adapted for SX64
  | $E4AC       | Version Indicator(?)
  | $E535       | Initialize I/O:
  |             |   Text-Color is Blue instead of Light Blue
  | $E5EF       | Input From Keyboard:
  |/$E5F4+$E5F5 |   Other parameters for RUN/STOP-String
  | $ECD9+$ECDA | Video Chip Setup Table:
  |             |   Cyan Border and White Background
  | $F0D8-$F0E6 | Table of Kernal I/O Messages:
  |             |   New RUN/STOP-String (loads from disk as SX64 has no tape)
  | $F387       | Open File:
  |             |   Tape access will cause error
  | $F4B7       | Load RAM:
  |             |   Tape access will cause error
  | $F5F9       | Save RAM:
  |             |   Tape access will cause error
  | $FF80       | Version number
  +-------------+-----------------------------------------------------------

...removed expansion docs...