All About Your C64 - Slarti64/C64-Code-Hacking GitHub Wiki

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

6510 instruction set & Infos
6510 illegal instruction set
65816 extended instruction set

VIC-Registers & Infos
SID-Registers & Infos
CIA-Registers & Infos

Zeropage
BASIC-ROM-Listing
Kernal-ROM-Listing

Hardware Expansions

Memory-Maps of different Programs
Format-Descriptions

+------------------------------------------------------------------------- | | CENTRAL PROCESSING UNIT (CPU) 6510 | +------------------------------------------------------------------------- | | Related topics: | | 6510 illegal instruction set | 6510 instruction chart | | 65816 extended instruction set | 65816 instruction chart | | 6510/65816 Addressing modes | Bugs and flaws of the 6510 | | Instructions set: | | ADC Add Memory to Accumulator with Carry | AND "AND" Memory with Accumulator | ASL Shift Left One Bit (Memory or Accumulator) | | BCC Branch on Carry Clear | BCS Branch on Carry Set | BEQ Branch on Result Zero | BIT Test Bits in Memory with Accumulator | BMI Branch on Result Minus | BNE Branch on Result not Zero | BPL Branch on Result Plus | BRK Force Break | BVC Branch on Overflow Clear | BVS Branch on Overflow Set | | CLC Clear Carry Flag | CLD Clear Decimal Mode | CLI Clear interrupt Disable Bit | CLV Clear Overflow Flag | CMP Compare Memory and Accumulator | CPX Compare Memory and Index X | CPY Compare Memory and Index Y | | DEC Decrement Memory by One | DEX Decrement Index X by One | DEY Decrement Index Y by One | | EOR "Exclusive-Or" Memory with Accumulator | | INC Increment Memory by One | INX Increment Index X by One | INY Increment Index Y by One | | JMP Jump to New Location | JSR Jump to New Location Saving Return Address | | LDA Load Accumulator with Memory | LDX Load Index X with Memory | LDY Load Index Y with Memory | LSR Shift Right One Bit (Memory or Accumulator) | | NOP No Operation | | ORA "OR" Memory with Accumulator | | PHA Push Accumulator on Stack | PHP Push Processor Status on Stack | PLA Pull Accumulator from Stack | PLP Pull Processor Status from Stack | | ROL Rotate One Bit Left (Memory or Accumulator) | ROR Rotate One Bit Right (Memory or Accumulator) | RTI Return from Interrupt | RTS Return from Subroutine | | SBC Subtract Memory from Accumulator with Borrow | SEC Set Carry Flag | SED Set Decimal Mode | SEI Set Interrupt Disable Status | STA Store Accumulator in Memory | STX Store Index X in Memory | STY Store Index Y in Memory | | TAX Transfer Accumulator to Index X | TAY Transfer Accumulator to Index Y | TSX Transfer Stack Pointer to Index X | TXA Transfer Index X to Accumulator | TXS Transfer Index X to Stack Pointer | TYA Transfer Index Y to Accumulator | +-------------------------------------------------------------------------

ADC Add memory to accumulator with carry ADC

Operation: A + M + C -> A, C N V - B D I Z C / / . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ADC #$FF | $69 | 2 | 2 | | ZeroPage | ADC $FF | $65 | 2 | 3 | | ZeroPage,X | ADC $FF,X | $75 | 2 | 4 | | Absolute | ADC $FFFF | $6D | 3 | 4 | | Absolute,X | ADC $FFFF,X | $7D | 3 | 4* | | Absolute,Y | ADC $FFFF,Y | $79 | 3 | 4* | | (Indirect,X) | ADC ($FF,X) | $61 | 2 | 6 | | (Indirect),Y | ADC ($FF),Y | $71 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

Note: See CPU-Bugs for a description how flags are affected.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | ADC $FFFFFF | $6F | 4 | 5 | | AbsoluteLong,X | ADC $FFFFFF,X | $7F | 4 | 5 | | (Indirect) | ADC ($FF) | $72 | 2 | 5 | | [Indirect Long]| ADC [$FF] | $67 | 2 | 6 | | [Ind.Long],Y | ADC [$FF],Y | $77 | 2 | 6 | | Relative,S | ADC $FF,S | $63 | 2 | 4 | | (Indirect,S),Y | ADC ($FF,S),Y | $73 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

AND "AND" memory with accumulator AND

Operation: A /\ M -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | AND #$FF | $29 | 2 | 2 | | ZeroPage | AND $FF | $25 | 2 | 3 | | ZeroPage,X | AND $FF,X | $35 | 2 | 4 | | Absolute | AND $FFFF | $2D | 3 | 4 | | Absolute,X | AND $FFFF,X | $3D | 3 | 4* | | Absolute,Y | AND $FFFF,Y | $39 | 3 | 4* | | (Indirect,X) | AND ($FF,X) | $21 | 2 | 6 | | (Indirect),Y | AND ($FF),Y | $31 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | AND $FFFFFF | $2F | 4 | 5 | | AbsoluteLong,X | AND $FFFFFF,X | $3F | 4 | 5 | | (Indirect) | AND ($FF) | $32 | 2 | 5 | | [Indirect Long]| AND [$FF] | $27 | 2 | 6 | | [Ind.Long],Y | AND [$FF],Y | $37 | 2 | 6 | | Relative,S | AND $FF,S | $23 | 2 | 4 | | (Indirect,S),Y | AND ($FF,S),Y | $33 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

ASL ASL Shift Left One Bit (Memory or Accumulator) ASL

               +-+-+-+-+-+-+-+-+

Operation: C <- |7|6|5|4|3|2|1|0| <- 0 N V - B D I Z C +-+-+-+-+-+-+-+-+ / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Accumulator | ASL A | $0A | 1 | 2 | | ZeroPage | ASL $FF | $06 | 2 | 5 | | ZeroPage,X | ASL $FF,X | $16 | 2 | 6 | | Absolute | ASL $FFFF | $0E | 3 | 6 | | Absolute,X | ASL $FFFF,X | $1E | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

BCC BCC Branch on Carry Clear BCC

Operation: Branch on C = 0 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BCC $FFFF | $90 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BCS BCS Branch on carry set BCS

Operation: Branch on C = 1 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BCS $FFFF | $B0 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BEQ BEQ Branch on result zero BEQ

Operation: Branch on Z = 1 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BEQ $FFFF | $F0 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BIT BIT Test bits in memory with accumulator BIT

Operation: A /\ M -> Z, M7 -> N, M6 -> V N V - B D I Z C M7M6. . . . / . Bit 6 and 7 are transferred to the status register. If the result of A /\ M is zero then Z = 1, otherwise Z=0.

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | BIT $FF | $24 | 2 | 3 | | Absolute | BIT $FFFF | $2C | 3 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | BIT #$FF | $89 | 2 | 2 | | Direct Page,X | BIT $FF,X | $34 | 2 | 3 | | Absolute,X | BIT $FFFF,X | $3C | 3 | 4 | +----------------+-----------------------+---------+---------+----------+

BMI BMI Branch on result minus BMI

Operation: Branch on N = 1 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BMI $FFFF | $30 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BNE BNE Branch on result not zero BNE

Operation: Branch on Z = 0 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BNE $FFFF | $D0 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BPL BPL Branch on result plus BPL

Operation: Branch on N = 0 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BPL $FFFF | $10 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BRK BRK Force Break BRK

Operation: Forced Interrupt; N V - B D I Z C PC + 2 to Stack, P to Stack . . . 1 0 1 . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | BRK | $00 | 1 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

  1. A BRK command cannot be masked by setting I.
  2. Although even official documents say BRK uses implied addressing-mode, it is rather an immediate one, but the operand is thrown away. This is why PC+2 is pushed onto stack rather than PC+1. So, better use a NOP directly after BRK to avoid trouble.
  3. To be very precise: The B-flag is not set by BRK. It is rather set all the time, only when an external IRQ is recognized it will be cleared for some cycles, so you can distinguish between BRK and IRQ.

BVC BVC Branch on overflow clear BVC

Operation: Branch on V = 0 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BVC $FFFF | $50 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

BVS BVS Branch on overflow set BVS

Operation: Branch on V = 1 N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BVS $FFFF | $70 | 2 | 2* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if branch occurs to same page.
  • Add 2 if branch occurs to different page (see explanation).

CLC CLC Clear carry flag CLC

Operation: 0 -> C N V - B D I Z C . . . . . . . 0

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | CLC | $18 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

CLD CLD Clear decimal mode CLD

Operation: 0 -> D N V - B D I Z C . . . . 0 . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | CLD | $D8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

CLI CLI Clear interrupt disable bit CLI

Operation: 0 -> I N V - B D I Z C . . . . . 0 . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | CLI | $58 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

CLV CLV Clear overflow flag CLV

Operation: 0 -> V N V - B D I Z C . 0 . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | CLV | $B8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

CMP CMP Compare memory and accumulator CMP

Operation: A - M N V - B D I Z C / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | CMP #$FF | $C9 | 2 | 2 | | ZeroPage | CMP $FF | $C5 | 2 | 3 | | ZeroPage,X | CMP $FF,X | $D5 | 2 | 4 | | Absolute | CMP $FFFF | $CD | 3 | 4 | | Absolute,X | CMP $FFFF,X | $DD | 3 | 4* | | Absolute,Y | CMP $FFFF,Y | $D9 | 3 | 4* | | (Indirect,X) | CMP ($FF,X) | $C1 | 2 | 6 | | (Indirect),Y | CMP ($FF),Y | $D1 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | CMP $FFFFFF | $CF | 4 | 5 | | AbsoluteLong,X | CMP $FFFFFF,X | $DF | 4 | 5 | | (Indirect) | CMP ($FF) | $D2 | 2 | 5 | | [Indirect Long]| CMP [$FF] | $C7 | 2 | 6 | | [Ind.Long],Y | CMP [$FF],Y | $D7 | 2 | 6 | | Relative,S | CMP $FF,S | $C3 | 2 | 4 | | (Indirect,S),Y | CMP ($FF,S),Y | $D3 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

CPX CPX Compare Memory and Index X CPX

Operation: X - M N V - B D I Z C / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | CPX #$FF | $E0 | 2 | 2 | | ZeroPage | CPX $FF | $E4 | 2 | 3 | | Absolute | CPX $FFFF | $EC | 3 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

CPY CPY Compare memory and index Y CPY

Operation: Y - M N V - B D I Z C / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | CPY #$FF | $C0 | 2 | 2 | | ZeroPage | CPY $FF | $C4 | 2 | 3 | | Absolute | CPY $FFFF | $CC | 3 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

DEC DEC Decrement memory by one DEC

Operation: M - 1 -> M N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | DEC $FF | $C6 | 2 | 5 | | ZeroPage,X | DEC $FF,X | $D6 | 2 | 6 | | Absolute | DEC $FFFF | $CE | 3 | 6 | | Absolute,X | DEC $FFFF,X | $DE | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | DEC | $3A | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

DEX DEX Decrement index X by one DEX

Operation: X - 1 -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | DEX | $CA | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

DEY DEY Decrement index Y by one DEY

Operation: Y - 1 -> Y N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | DEY | $88 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

EOR EOR "Exclusive-Or" memory with accumulator EOR

Operation: A EOR M -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | EOR #$FF | $49 | 2 | 2 | | ZeroPage | EOR $FF | $45 | 2 | 3 | | ZeroPage,X | EOR $FF,X | $55 | 2 | 4 | | Absolute | EOR $FFFF | $4D | 3 | 4 | | Absolute,X | EOR $FFFF,X | $5D | 3 | 4* | | Absolute,Y | EOR $FFFF,Y | $59 | 3 | 4* | | (Indirect,X) | EOR ($FF,X) | $41 | 2 | 6 | | (Indirect),Y | EOR ($FF),Y | $51 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | EOR $FFFFFF | $4F | 4 | 5 | | AbsoluteLong,X | EOR $FFFFFF,X | $5F | 4 | 5 | | (Indirect) | EOR ($FF) | $52 | 2 | 5 | | [Indirect Long]| EOR [$FF] | $47 | 2 | 6 | | [Ind.Long],Y | EOR [$FF],Y | $57 | 2 | 6 | | Relative,S | EOR $FF,S | $43 | 2 | 4 | | (Indirect,S),Y | EOR ($FF,S),Y | $53 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

INC INC Increment memory by one INC

Operation: M + 1 -> M N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | INC $FF | $E6 | 2 | 5 | | ZeroPage,X | INC $FF,X | $F6 | 2 | 6 | | Absolute | INC $FFFF | $EE | 3 | 6 | | Absolute,X | INC $FFFF,X | $FE | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | INC | $1A | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

INX INX Increment Index X by one INX

Operation: X + 1 -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | INX | $E8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

INY INY Increment Index Y by one INY

Operation: X + 1 -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | INY | $C8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

JMP JMP Jump to new location JMP

Operation: (PC + 1) -> PCL N V - B D I Z C (PC + 2) -> PCH . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute | JMP $FFFF | $4C | 3 | 3 | | (Abs.Indirect) | JMP ($FFFF) | $6C | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | (Abs.Ind.,X) | JMP ($FFFF,X) | $7C | 3 | 6 | | AbsoluteLong | JMP $FFFFFF | $5C | 4 | 4 | +----------------+-----------------------+---------+---------+----------+ See also: JML

JSR JSR Jump to new location saving return address JSR

Operation: PC + 2 to Stack, (PC + 1) -> PCL N V - B D I Z C (PC + 2) -> PCH . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute | JSR $FFFF | $20 | 3 | 6 | +----------------+-----------------------+---------+---------+----------+

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | (Abs.Ind.,X) | JSR ($FFFF,X) | $FC | 3 | 6 | +----------------+-----------------------+---------+---------+----------+ See also: JSL

LDA LDA Load accumulator with memory LDA

Operation: M -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | LDA #$FF | $A9 | 2 | 2 | | ZeroPage | LDA $FF | $A5 | 2 | 3 | | ZeroPage,X | LDA $FF,X | $B5 | 2 | 4 | | Absolute | LDA $FFFF | $AD | 3 | 4 | | Absolute,X | LDA $FFFF,X | $BD | 3 | 4* | | Absolute,Y | LDA $FFFF,Y | $B9 | 3 | 4* | | (Indirect,X) | LDA ($FF,X) | $A1 | 2 | 6 | | (Indirect),Y | LDA ($FF),Y | $B1 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | LDA $FFFFFF | $AF | 4 | 5 | | AbsoluteLong,X | LDA $FFFFFF,X | $BF | 4 | 5 | | (Indirect) | LDA ($FF) | $B2 | 2 | 5 | | [Indirect Long]| LDA [$FF] | $A7 | 2 | 6 | | [Ind.Long],Y | LDA [$FF],Y | $B7 | 2 | 6 | | Relative,S | LDA $FF,S | $A3 | 2 | 4 | | (Indirect,S),Y | LDA ($FF,S),Y | $B3 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

LDX LDX Load index X with memory LDX

Operation: M -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | LDX #$FF | $A2 | 2 | 2 | | ZeroPage | LDX $FF | $A6 | 2 | 3 | | ZeroPage,Y | LDX $FF,Y | $B6 | 2 | 4 | | Absolute | LDX $FFFF | $AE | 3 | 4 | | Absolute,Y | LDX $FFFF,Y | $BE | 3 | 4* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 when page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

LDY LDY Load index Y with memory LDY

Operation: M -> Y N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | LDY #$FF | $A0 | 2 | 2 | | ZeroPage | LDY $FF | $A4 | 2 | 3 | | ZeroPage,X | LDY $FF,X | $B4 | 2 | 4 | | Absolute | LDY $FFFF | $AC | 3 | 4 | | Absolute,X | LDY $FFFF,X | $BC | 3 | 4* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 when page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

LSR LSR Shift right one bit (memory or accumulator) LSR

               +-+-+-+-+-+-+-+-+

Operation: 0 -> |7|6|5|4|3|2|1|0| -> C N V - B D I Z C +-+-+-+-+-+-+-+-+ 0 . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Accumulator | LSR A | $4A | 1 | 2 | | ZeroPage | LSR $FF | $46 | 2 | 5 | | ZeroPage,X | LSR $FF,X | $56 | 2 | 6 | | Absolute | LSR $FFFF | $4E | 3 | 6 | | Absolute,X | LSR $FFFF,X | $5E | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

NOP NOP No operation NOP

Operation: No Operation N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | NOP | $EA | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

Illegal Versions:

Can be used like BIT to skip the next one or two bytes, but this one doesn't change flags.

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | NOP | $1A | 1 | 2 | | Implied | NOP | $3A | 1 | 2 | | Implied | NOP | $5A | 1 | 2 | | Implied | NOP | $7A | 1 | 2 | | Implied | NOP | $DA | 1 | 2 | | Implied | NOP | $FA | 1 | 2 | | Immediate | NOP #$FF | $80 | 2 | 2 | | Immediate | NOP #$FF | $82 | 2 | 2 | | Immediate | NOP #$FF | $89 | 2 | 2 | | Immediate | NOP #$FF | $C2 | 2 | 2 | | Immediate | NOP #$FF | $E2 | 2 | 2 | | ZeroPage | NOP $FF | $04 | 2 | 3 | | ZeroPage | NOP $FF | $44 | 2 | 3 | | ZeroPage | NOP $FF | $64 | 2 | 3 | | ZeroPage,X | NOP $FF,X | $14 | 2 | 4 | | ZeroPage,X | NOP $FF,X | $34 | 2 | 4 | | ZeroPage,X | NOP $FF,X | $54 | 2 | 4 | | ZeroPage,X | NOP $FF,X | $74 | 2 | 4 | | ZeroPage,X | NOP $FF,X | $D4 | 2 | 4 | | ZeroPage,X | NOP $FF,X | $F4 | 2 | 4 | | Absolute | NOP $FFFF | $0C | 3 | 4 | | Absolute,X | NOP $FFFF,X | $1C | 3 | 4* | | Absolute,X | NOP $FFFF,X | $3C | 3 | 4* | | Absolute,X | NOP $FFFF,X | $5C | 3 | 4* | | Absolute,X | NOP $FFFF,X | $7C | 3 | 4* | | Absolute,X | NOP $FFFF,X | $DC | 3 | 4* | | Absolute,X | NOP $FFFF,X | $FC | 3 | 4* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed.

ORA ORA "OR" memory with accumulator ORA

Operation: A V M -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ORA #$FF | $09 | 2 | 2 | | ZeroPage | ORA $FF | $05 | 2 | 3 | | ZeroPage,X | ORA $FF,X | $15 | 2 | 4 | | Absolute | ORA $FFFF | $0D | 3 | 4 | | Absolute,X | ORA $FFFF,X | $1D | 3 | 4* | | Absolute,Y | ORA $FFFF,Y | $19 | 3 | 4* | | (Indirect,X) | ORA ($FF,X) | $01 | 2 | 6 | | (Indirect),Y | ORA ($FF),Y | $11 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 on page crossing For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | ORA $FFFFFF | $0F | 4 | 5 | | AbsoluteLong,X | ORA $FFFFFF,X | $1F | 4 | 5 | | (Indirect) | ORA ($FF) | $12 | 2 | 5 | | [Indirect Long]| ORA [$FF] | $07 | 2 | 6 | | [Ind.Long],Y | ORA [$FF],Y | $17 | 2 | 6 | | Relative,S | ORA $FF,S | $03 | 2 | 4 | | (Indirect,S),Y | ORA ($FF,S),Y | $13 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

PHA PHA Push accumulator on stack PHA

Operation: A to Stack N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHA | $48 | 1 | 3 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

PHP PHP Push processor status on stack PHP

Operation: P to Stack N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHP | $08 | 1 | 3 | +----------------+-----------------------+---------+---------+----------+

PLA PLA Pull accumulator from stack PLA

Operation: A from Stack N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLA | $68 | 1 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

PLP PLP Pull processor status from stack PLP

Operation: P from Stack N V - B D I Z C From Stack

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLP | $28 | 1 | 4 | +----------------+-----------------------+---------+---------+----------+

ROL ROL Rotate one bit left (memory or accumulator) ROL

           +------------------------------+
           |                              |
           |   +-+-+-+-+-+-+-+-+    +-+   |

Operation: +-< |7|6|5|4|3|2|1|0| <- |C| <-+ N V - B D I Z C +-+-+-+-+-+-+-+-+ +-+ / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Accumulator | ROL A | $2A | 1 | 2 | | ZeroPage | ROL $FF | $26 | 2 | 5 | | ZeroPage,X | ROL $FF,X | $36 | 2 | 6 | | Absolute | ROL $FFFF | $2E | 3 | 6 | | Absolute,X | ROL $FFFF,X | $3E | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

ROR ROR Rotate one bit right (memory or accumulator) ROR

           +------------------------------+
           |                              |
           |   +-+    +-+-+-+-+-+-+-+-+   |

Operation: +-> |C| -> |7|6|5|4|3|2|1|0| >-+ N V - B D I Z C +-+ +-+-+-+-+-+-+-+-+ / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Accumulator | ROR A | $6A | 1 | 2 | | ZeroPage | ROR $FF | $66 | 2 | 5 | | ZeroPage,X | ROR $FF,X | $76 | 2 | 6 | | Absolute | ROR $FFFF | $6E | 3 | 6 | | Absolute,X | ROR $FFFF,X | $7E | 3 | 7 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

Note: ROR instruction is available on MCS650X microprocessors after
      June, 1976.

RTI RTI Return from interrupt RTI

Operation: P from Stack, PC from Stack N V - B D I Z C From Stack

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | RTI | $40 | 1 | 6 | +----------------+-----------------------+---------+---------+----------+

RTS RTS Return from subroutine RTS

Operation: PC from Stack, PC + 1 -> PC N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | RTS | $60 | 1 | 6 | +----------------+-----------------------+---------+---------+----------+ See also: RTL

SBC SBC Subtract memory from accumulator with borrow SBC

Operation: A - M - ~C -> A N V - B D I Z C - / / . . . . / / Note:C = Borrow +----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | SBC #$FF | $E9 | 2 | 2 | | ZeroPage | SBC $FF | $E5 | 2 | 3 | | ZeroPage,X | SBC $FF,X | $F5 | 2 | 4 | | Absolute | SBC $FFFF | $ED | 3 | 4 | | Absolute,X | SBC $FFFF,X | $FD | 3 | 4* | | Absolute,Y | SBC $FFFF,Y | $F9 | 3 | 4* | | (Indirect,X) | SBC ($FF,X) | $E1 | 2 | 6 | | (Indirect),Y | SBC ($FF),Y | $F1 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 when page boundary is crossed. For penalty cycles on the 65816, check the desired addressing mode.

Note: See CPU-Bugs for a description how flags are affected.

Illegal Version:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | SBC #$FF | $EB | 2 | 2 | +----------------+-----------------------+---------+---------+----------+ There doesn't seem to be a difference to the legal SBC.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | SBC $FFFFFF | $EF | 4 | 5 | | AbsoluteLong,X | SBC $FFFFFF,X | $FF | 4 | 5 | | (Indirect) | SBC ($FF) | $F2 | 2 | 5 | | [Indirect Long]| SBC [$FF] | $E7 | 2 | 6 | | [Ind.Long],Y | SBC [$FF],Y | $F7 | 2 | 6 | | Relative,S | SBC $FF,S | $E3 | 2 | 4 | | (Indirect,S),Y | SBC ($FF,S),Y | $F3 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

SEC SEC Set carry flag SEC

Operation: 1 -> C N V - B D I Z C . . . . . . . 1

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | SEC | $38 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

SED SED Set decimal mode SED

Operation: 1 -> D N V - B D I Z C . . . . 1 . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | SED | $F8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

SEI SEI Set interrupt disable status SEI

Operation: 1 -> I N V - B D I Z C . . . . . 1 . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | SEI | $78 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

STA STA Store accumulator in memory STA

Operation: A -> M N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | STA $FF | $85 | 2 | 3 | | ZeroPage,X | STA $FF,X | $95 | 2 | 4 | | Absolute | STA $FFFF | $8D | 3 | 4 | | Absolute,X | STA $FFFF,X | $9D | 3 | 5 | | Absolute,Y | STA $FFFF,Y | $99 | 3 | 5 | | (Indirect,X) | STA ($FF,X) | $81 | 2 | 6 | | (Indirect),Y | STA ($FF),Y | $91 | 2 | 6 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

65816 Extensions:

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | STA $FFFFFF | $8F | 4 | 5 | | AbsoluteLong,X | STA $FFFFFF,X | $9F | 4 | 5 | | (Indirect) | STA ($FF) | $92 | 2 | 5 | | [Indirect Long]| STA [$FF] | $87 | 2 | 6 | | [Ind.Long],Y | STA [$FF],Y | $97 | 2 | 6 | | Relative,S | STA $FF,S | $83 | 2 | 4 | | (Indirect,S),Y | STA ($FF,S),Y | $93 | 2 | 7 | +----------------+-----------------------+---------+---------+----------+

STX STX Store index X in memory STX

Operation: X -> M N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | STX $FF | $86 | 2 | 3 | | ZeroPage,Y | STX $FF,Y | $96 | 2 | 4 | | Absolute | STX $FFFF | $8E | 3 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

STY STY Store index Y in memory STY

Operation: Y -> M N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | STY $FF | $84 | 2 | 3 | | ZeroPage,X | STY $FF,X | $94 | 2 | 4 | | Absolute | STY $FFFF | $8C | 3 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

TAX TAX Transfer accumulator to index X TAX

Operation: A -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TAX | $AA | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TAY TAY Transfer accumulator to index Y TAY

Operation: A -> Y N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TAY | $A8 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TSX TSX Transfer stack pointer to index X TSX

Operation: S -> X N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TSX | $BA | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TXA TXA Transfer index X to accumulator TXA

Operation: X -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TXA | $8A | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TXS TXS Transfer index X to stack pointer TXS

Operation: X -> S N V - B D I Z C . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TXS | $9A | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TYA TYA Transfer index Y to accumulator TYA

Operation: Y -> A N V - B D I Z C / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TYA | $98 | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

+------------------------------------------------------------------------- | | CENTRAL PROCESSING UNIT (CPU) 65816 | +------------------------------------------------------------------------- | | Related topics: | | 6510 instruction set | 6510 illegal instruction set | 6510 instruction chart | | 65816 instruction chart | | 6510/65816 Addressing modes | | Instructions set: | | BRA Branch Always | BRL Branch Always Long | | COP Coprocessor | | JML Jump Long | JSL Jump Subroutine Long | | MVN Block Move Negative | MVP Block Move Positive | | PEA Push Effective Absolute Address on Stack (or Push Immediate Data on Stack) | PEI Push Effective Indirect Address on Stack | PER Push Effective Program Counter Relative Address on Stack | PHB Push Data Bank Register on Stack | PHD Push Direct Register on Stack | PHK Push Program Bank Register on Stack | PHX Push Index X on Stack | PHY Push index Y on Stack | PLB Pull Data Bank Register from Stack | PLD Pull Direct Register from Stack | PLX Pull Index X from Stack | PLY Pull Index Y form Stack | | REP Reset Status Bits | RTL Return from Subroutine Long | | SEP Set Processor Status Bits | STP Stop the Clock | STZ Store Zero in Memory | | TCD Transfer Accumulator to Direct Register | TCS Transfer Accumulator to Stack Pointer Register | TDC Transfer Direct Register to Accumulator | TRB Test and Reset Bit | TSB Test and Set Bit | TSC Transfer Stack Pointer Register to Accumulator | TXY Transfer Index X to Index Y | TYX Transfer Index Y to Index X | | WAI Wait for Interrupt | WDM Reserved for Future Expansion | | XBA Exchange AH and AL | XCE Exchange Carry and Emulation Bits | +-------------------------------------------------------------------------

BRL BRL Branch Always Long BRL

65816 only! N V M X D I Z C Operation: PC+r -> PC where -32768 < r < 32767 . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | RelativeLong | BRL $FFFFFF | $82 | 3 | 3 | +----------------+-----------------------+---------+---------+----------+

COP COP Coprocessor COP

65816 only! N V M X D I Z C Operation: Coprocessor Instruction . . . . 0 1 . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate/Stack| COP #$FF | $02 | 2 | 7/8 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

JML JML Jump Long JML

65816 only! N V M X D I Z C Operation: W -> PC, B -> PB . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | (Abs.Ind.Long) | JML ($FFFF) | $DC | 3 | 6 | +----------------+-----------------------+---------+---------+----------+

JSL JSL Jump Subroutine Long JSL

65816 only! N V M X D I Z C Operation: PB -> Bs, S-1 -S, PC -> Ws, S-2 -> S, . . . . . . . . W -> PC, B -> PB

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | AbsoluteLong | JSL $FFFFFF | $22 | 4 | 8 | +----------------+-----------------------+---------+---------+----------+ Note: JSL is equivalent to JSR with long addressing forced.

MVN MVN Block Move Negative MVN

65816 only! N V M X D I Z C Operation: . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Block Negative | MVN $FF,$FF | $54 | 3 | 7/byte | +----------------+-----------------------+---------+---------+----------+ X-Register = Source Address Y-Register = Destination Address Accumulator = Number of Bytes to move -1 $FF,$FF = Source Bank, Destination Bank

Attention: In memory the order of the Bank-bytes is the other way around (i.e. Dest, Src)! Some assemblers use this order as syntax, although it is not correct.

Keep also in mind that the Data-Bank-Register will be set to Dest-Bank.

MVN is used when the destination start address is lower (more negative) than the source start address.

MVP MVP Block Move Positive MVP

65816 only! N V M X D I Z C Operation: . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Block Positive | MVP $FF,$FF | $44 | 3 | 7/byte | +----------------+-----------------------+---------+---------+----------+ X-Register = Source Address Y-Register = Destination Address Accumulator = Number of Bytes to move -1 $FF,$FF = Source Bank, Destination Bank

Attention: In memory the order of the Bank-bytes is the other way around (i.e. Dest, Src)! Some assemblers use this order as syntax, although it is not correct.

Keep also in mind that the Data-Bank-Register will be set to Dest-Bank.

MVP is used when the destination start address is higher (more positive) than the source start address.

REP REP Reset Status Bits REP

65816 only! N V M X D I Z C Operation: P /\ /B -> P / / / / / / / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | REP #$FF | $C2 | 2 | 3 | +----------------+-----------------------+---------+---------+----------+

RTL RTL Return from Subroutine Long RTL

65816 only! N V M X D I Z C Operation: S+2 -> S, Ws+1 -> PC, S+1 -> S, Bs -> PB . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | RTL | $6B | 1 | 6 | +----------------+-----------------------+---------+---------+----------+

SEP SEP Set Processor Status Bits SEP

65816 only! N V M X D I Z C Operation: P V B -> P / / / / / / / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | SEP #$FF | $E2 | 2 | 3 | +----------------+-----------------------+---------+---------+----------+

STP STP Stop the Clock STP

65816 only! N V M X D I Z C Operation: Stop the clock. Needs reset to continue. . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | STP | $DB | 1 | 3+ | +----------------+-----------------------+---------+---------+----------+

WAI WAI Wait for Interrupt WAI

65816 only! N V M X D I Z C Operation: Wait for interrupt. RDY held low until . . . . . . . . Interrupt.

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | WAI | $CB | 1 | 3+ | +----------------+-----------------------+---------+---------+----------+

WDM WDM Reserved for Future Expansion WDM

65816 only! N V M X D I Z C Operation: At the moment treated like NOP. . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | WDM #$FF | $42 | 2 | 2 | +----------------+-----------------------+---------+---------+----------+ WDM is the first byte of a multi-byte instruction set to be built in future versions of the processor. This instruction should NOT be used by now. (WDM -> William D. Mensch jr., 65816 designer)

XBA XBA Exchange AH and AL XBA

65816 only! N V M X D I Z C Operation: Swap AH and AL. Status bits reflect / . . . . . / . final condition of AL.

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | XBA | $EB | 1 | 3 | +----------------+-----------------------+---------+---------+----------+

BRA BRA Branch Always BRA

65816 only! N V M X D I Z C Operation: PC+r -> PC . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Relative | BRA $FFFF | $80 | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

PEA PEA Push Effective Absolute Address on Stack PEA (or Push Immediate Data on Stack)

65816 only! N V M X D I Z C Operation: W -> Ws, S-2 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate/Stack| PEA #$FFFF | $F4 | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

Note: Sometimes PEA is said to have Absolute-addressing-mode. But it definately behaves like Immediate.

PEI PEI Push Effective Indirect Address on Stack PEI

65816 only! N V M X D I Z C Operation: W -> Ws, S-2 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ |(Indirect)/Stack| PEI ($FF) | $D4 | 2 | 6 | +----------------+-----------------------+---------+---------+----------+ Add one cycle if low byte of direct page is <>0.

PER PER Push Effective Program Counter Relative Address on Stack PER

65816 only! N V M X D I Z C Operation: W -> Ws, S-2 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | RelativeLong/S | PER $FFFFFF | $62 | 3 | 6 | +----------------+-----------------------+---------+---------+----------+

PHB PHB Push Data Bank Register on Stack PHB

65816 only! N V M X D I Z C Operation: DB->Bs, S-1 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHB | $8B | 1 | 3 | +----------------+-----------------------+---------+---------+----------+

PHD PHD Push Direct Register on Stack PHD

65816 only! N V M X D I Z C Operation: D ->Ws, S-2 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHD | $0B | 1 | 4 | +----------------+-----------------------+---------+---------+----------+

PHK PHK Push Program Bank Register on Stack PHK

65816 only! N V M X D I Z C Operation: PB->Bs, S-1 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHK | $4B | 1 | 3 | +----------------+-----------------------+---------+---------+----------+

PHX PHX Push Index X on Stack PHX

65816 only! N V M X D I Z C Operation: X-Ws, S-2 -> S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHX | $DA | 1 | 3/4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

PHY PHY Push index Y on Stack PHY

65816 only! N V M X D I Z C Operation: Y ->Ws, S-2 ->S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PHY | $5A | 1 | 3/4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

PLB PLB Pull Data Bank Register from Stack PLB

65816 only! N V M X D I Z C Operation: S+1 ->S, Bs -> DB / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLB | $AB | 1 | 4 | +----------------+-----------------------+---------+---------+----------+

PLD PLD Pull Direct Register from Stack PLD

65816 only! N V M X D I Z C Operation: S+2 ->S, Ws -> D / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLD | $2B | 1 | 5 | +----------------+-----------------------+---------+---------+----------+

PLX PLX Pull Index X from Stack PLX

65816 only! N V M X D I Z C Operation: S+2 ->S, Ws->X / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLX | $FA | 1 | 4/5 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

PLY PLY Pull Index Y form Stack PLY

65816 only! N V M X D I Z C Operation: S+2 ->S, Ws->Y / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied/Stack | PLY | $7A | 1 | 4/5 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

TCD TCD Transfer Accumulator to Direct Register TCD

65816 only! N V M X D I Z C Operation: A -> D / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TCD | $5B | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TCS TCS Transfer Accumulator to Stack Pointer Register TCS

65816 only! N V M X D I Z C Operation: A -> S . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TCS | $1B | 1 | 2/ | +----------------+-----------------------+---------+---------+----------+

TDC TDC Transfer Direct Register to Accumulator TDC

65816 only! N V M X D I Z C Operation: D -> A / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TDC | $7B | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TSC TSC Transfer Stack Pointer Register to Accumulator TSC

65816 only! N V M X D I Z C Operation: S -> A / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TSC | $3B | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TXY TXY Transfer Index X to Index Y TXY

65816 only! N V M X D I Z C Operation: X -> Y / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TXY | $9B | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

TYX TYX Transfer Index Y to Index X TYX

65816 only! N V M X D I Z C Operation: Y -> X / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | TYX | $BB | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

XCE XCE Exchange Carry and Emulation Bits XCE

65816 only! N V M X D I Z C Operation: . . . . . . . /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | XCE | $FB | 1 | 2 | +----------------+-----------------------+---------+---------+----------+

STZ STZ Store zero in memory STZ

65816 only! N V M X D I Z C Operation: 0 -> M . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute | STZ $FFFF | $9C | 3 | 4 | | Absolute,X | STZ $FFFF,X | $9E | 3 | 5 | | Direct Page | STZ $FF | $64 | 2 | 3 | | Direct Page,X | STZ $FF,X | $74 | 2 | 4 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

TSB TSB Test and Set Bit TSB

65816 only! N V M X D I Z C Operation: A V W -> W . . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute | TSB $FFFF | $0C | 3 | 4 | | Direct Page | TSB $FF | $04 | 2 | 3 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

TRB TRB Test and Reset Bit TRB

65816 only! N V M X D I Z C Operation: /A /\ W -> W . . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute | TRB $FFFF | $1C | 3 | 4 | | Direct Page | TRB $FF | $14 | 2 | 3 | +----------------+-----------------------+---------+---------+----------+ For penalty cycles on the 65816, check the desired addressing mode.

+------------------------------------------------------------------------- | | 6510 CPU ILLEGAL INSTRUCTION SET | +------------------------------------------------------------------------- | | Related topics: | | 6510 instruction set | 6510 instruction chart | | 65816 extended instruction set | 65816 instruction chart | | 6510/65816 Addressing modes | | Instructions set: | | ANC AND #immediate, copy accu-bit 7 to carry | ANE Instable! | ARR AND #immediate, ROR accu | ASR AND #immediate, LSR accu | | DCP DEC memory, CMP memory | | ISB INC memory, SBC memory | | JAM Locks up machine | | LAE Instable! | LAX LDA memory, TAX | LXA Instable! | | NOP No operation | | RLA ROL memory, AND memory | RRA ROR memory, ADC memory | | SAX Accu AND X-Register into memory | SBC Subtract memory from accumulator with borrow | SBX Accu AND X-Register, subtract operand, result into X-Register | SHA Instable! | SHS Instable! | SHX Instable! | SHY Instable! | SLO ASL memory, ORA memory | SRE LSR memory, EOR memory | +-------------------------------------------------------------------------

JAM JAM

                                                    N V - B D I Z C

Operation: [locks up machine] who cares? :)

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Implied | JAM | $02 | 1 | - | | Implied | JAM | $12 | 1 | - | | Implied | JAM | $22 | 1 | - | | Implied | JAM | $32 | 1 | - | | Implied | JAM | $42 | 1 | - | | Implied | JAM | $52 | 1 | - | | Implied | JAM | $62 | 1 | - | | Implied | JAM | $72 | 1 | - | | Implied | JAM | $92 | 1 | - | | Implied | JAM | $B2 | 1 | - | | Implied | JAM | $D2 | 1 | - | | Implied | JAM | $F2 | 1 | - | +----------------+-----------------------+---------+---------+----------+

Also known as CRS, KIL, HLT.

Note: Data Bus will be set to $FF

SLO SLO ASL memory, ORA memory SLO

                                                    N V - B D I Z C

Operation: A <- (M << 1) / A / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | SLO $FF | $07 | 2 | 5 | | ZeroPage,X | SLO $FF,X | $17 | 2 | 6 | | Absolute | SLO $FFFF | $0F | 3 | 6 | | Absolute,X | SLO $FFFF,X | $1F | 3 | 7 | | Absolute,Y | SLO $FFFF,Y | $1B | 3 | 7 | | (Indirect,X) | SLO ($FF,X) | $03 | 2 | 8 | | (Indirect),Y | SLO ($FF),Y | $13 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

Also known as ASO.

ANC ANC AND #immediate, copy accu-bit 7 to carry ANC

                                                    N V - B D I Z C

Operation: A <- A /\ M, C <- A7 / . . . . . / A7

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ANC #$FF | $0B | 2 | 2 | | Immediate | ANC #$FF | $2B | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

RLA RLA ROL memory, AND memory RLA

                                                    N V - B D I Z C

Operation: A <- (M << 1) /\ (A) / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | RLA $FF | $27 | 2 | 5 | | ZeroPage,X | RLA $FF,X | $37 | 2 | 6 | | Absolute | RLA $FFFF | $2F | 3 | 6 | | Absolute,X | RLA $FFFF,X | $3F | 3 | 7 | | Absolute,Y | RLA $FFFF,Y | $3B | 3 | 7 | | (Indirect,X) | RLA ($FF,X) | $23 | 2 | 8 | | (Indirect),Y | RLA ($FF),Y | $33 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

SRE SRE LSR memory, EOR memory SRE

                                                    N V - B D I Z C

Operation: A <- (M >> 1) -/ A / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | SRE $FF | $47 | 2 | 5 | | ZeroPage,X | SRE $FF,X | $57 | 2 | 6 | | Absolute | SRE $FFFF | $4F | 3 | 6 | | Absolute,X | SRE $FFFF,X | $5F | 3 | 7 | | Absolute,Y | SRE $FFFF,Y | $5B | 3 | 7 | | (Indirect,X) | SRE ($FF,X) | $43 | 2 | 8 | | (Indirect),Y | SRE ($FF),Y | $53 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

Also known as LSE.

ASR ASR AND #immediate, LSR accu ASR

                                                    N V - B D I Z C

Operation: A <- [(A /\ M) >> 1] / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ASR #$FF | $4B | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

Also known as ALR.

RRA RRA ROR memory, ADC memory RRA

                                                    N V - B D I Z C

Operation: A <- (M >> 1) + (A) + C / / . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | RRA $FF | $67 | 2 | 5 | | ZeroPage,X | RRA $FF,X | $77 | 2 | 6 | | Absolute | RRA $FFFF | $6F | 3 | 6 | | Absolute,X | RRA $FFFF,X | $7F | 3 | 7 | | Absolute,Y | RRA $FFFF,Y | $7B | 3 | 7 | | (Indirect,X) | RRA ($FF,X) | $63 | 2 | 8 | | (Indirect),Y | RRA ($FF),Y | $73 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

ARR ARR AND #immediate, ROR accu ARR

                                                    N V - B D I Z C

Operation: A <- [(A /\ M) >> 1] / / . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ARR #$FF | $6B | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

Note: Part of this command are some ADC mechanisms. Following effects appear after AND but before ROR: the V-Flag is set according to [(A and #mem)+#mem], Bit 0 does NOT go into carry, but Bit 7 is exchanged with the carry.

SAX SAX Accu AND X-Register into memory SAX

                                                    N V - B D I Z C

Operation: M <- (A) /\ (X) . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | SAX $FF | $87 | 2 | 3 | | ZeroPage,Y | SAX $FF,Y | $97 | 2 | 4 | | Absolute | SAX $FFFF | $8F | 3 | 4 | | (Indirect,X) | SAX ($FF,X) | $83 | 2 | 6 | +----------------+-----------------------+---------+---------+----------+

Note: The A /\ X operation is a result of A and X put onto the bus at the same time.

ANE ANE

                                                    N V - B D I Z C

Operation: M <- [(A)/$EE] / (X)/(M) / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | ANE #$FF | $8B | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

Also known as XAA: A <- [(X) /\ (M)]

Warning: This opcode is said to be unstable!

SHA SHA

                                                    N V - B D I Z C

Operation: M <- (A) /\ (X) /\ (PCH+1) . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute,X | SHA $FFFF,X | $93 | 3 | 5 | | Absolute,Y | SHA $FFFF,Y | $9F | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

Also known as AHX

Note: Sometimes the "/\ (PCH+1)" drops off. Also page boundary crossing won't work as expected (the bank where the value is stored may be equal to the value stored).

Warning: This opcode is said to be unstable!

SHS SHS

Operation: X <- (A) /\ (X), S <- (X) N V - B D I Z C M <- (X) /\ (PCH+1) . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute,Y | SHS $FFFF,Y | $9B | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

Also known as TAS.

Warning: This opcode is said to be unstable!

SHY SHY

                                                    N V - B D I Z C

Operation: M <- (Y) /\ (PCH+1) . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute,X | SHY $FFFF,X | $9C | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

Note: Sometimes the "/\ (PCH+1)" drops off. Also page boundary crossing won't work as expected (the bank where the value is stored may be equal to the value stored).

Warning: This opcode is said to be unstable!

SHX SHX

                                                    N V - B D I Z C

Operation: M <- (X) /\ (PCH+1) . . . . . . . .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute,Y | SHX $FFFF,Y | $9E | 3 | 5 | +----------------+-----------------------+---------+---------+----------+

Note: Sometimes the "/\ (PCH+1)" drops off. Also page boundary crossing won't work as expected (the bank where the value is stored may be equal to the value stored).

Warning: This opcode is said to be unstable!

LAX LAX LDA memory, TAX LAX

                                                    N V - B D I Z C

Operation: A <- M, X <- A / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | LAX $FF | $A7 | 2 | 3 | | ZeroPage,Y | LAX $FF,Y | $B7 | 2 | 4 | | Absolute | LAX $FFFF | $AF | 3 | 4 | | Absolute,Y | LAX $FFFF,Y | $BF | 3 | 4* | | (Indirect,X) | LAX ($FF,X) | $A3 | 2 | 6 | | (Indirect),Y | LAX ($FF),Y | $B3 | 2 | 5* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed.

LXA LXA

Operation: X04 <- (X04) /\ M04 N V - B D I Z C A04 <- (A04) /\ M04 / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | LXA #$FF | $AB | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

Also known as LAX #$FF (immediate).

Warning: This opcode is said to be unstable!

LAE LAE Stack-Pointer AND with memory, TSX, TXA LAE

                                                    N V - B D I Z C

Operation: S,X,A <- (S /\ M) / . . . . . / .

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Absolute,Y | LAE $FFFF,Y | $BB | 3 | 4* | +----------------+-----------------------+---------+---------+----------+

  • Add 1 if page boundary is crossed.

Also known as LAS, LAR.

Warning: This opcode is said to be unstable!

DCP DCP DEC memory, CMP memory DCP

                                                    N V - B D I Z C

Operation: M <- (M)-1, (A-M) -> NZC / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | DCP $FF | $C7 | 2 | 5 | | ZeroPage,X | DCP $FF,X | $D7 | 2 | 6 | | Absolute | DCP $FFFF | $CF | 3 | 6 | | Absolute,X | DCP $FFFF,X | $DF | 3 | 7 | | Absolute,Y | DCP $FFFF,Y | $DB | 3 | 7 | | (Indirect,X) | DCP ($FF,X) | $C3 | 2 | 8 | | (Indirect),Y | DCP ($FF),Y | $D3 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

SBX SBX Accu AND X-Register, subtract operand, result into X-Register SBX

                                                    N V - B D I Z C

Operation: X <- (X)/(A) - M / . . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | Immediate | SBX #$FF | $CB | 2 | 2 | +----------------+-----------------------+---------+---------+----------+

Note: Performs CMP and DEX at the same time, so the subtraction ignores flags 'C' and 'D' (like CMP, unlike SBC).

Also known as AXS.

ISB ISB INC memory, SBC memory ISB

                                                    N V - B D I Z C

Operation: M <- (M) + 1, A <- (A) - M - ~C / / . . . . / /

+----------------+-----------------------+---------+---------+----------+ | Addressing Mode| Assembly Language Form| OP CODE |No. Bytes|No. Cycles| +----------------+-----------------------+---------+---------+----------+ | ZeroPage | ISB $FF | $E7 | 2 | 5 | | ZeroPage,X | ISB $FF,X | $F7 | 2 | 6 | | Absolute | ISB $FFFF | $EF | 3 | 6 | | Absolute,X | ISB $FFFF,X | $FF | 3 | 7 | | Absolute,Y | ISB $FFFF,Y | $FB | 3 | 7 | | (Indirect,X) | ISB ($FF,X) | $E3 | 2 | 8 | | (Indirect),Y | ISB ($FF),Y | $F3 | 2 | 8 | +----------------+-----------------------+---------+---------+----------+

Also known as ISC.

6510 instruction chart:

Hi Low +-------+--------+-------+---------+--------+--------+--------+--------+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | --+-------+--------+-------+---------+--------+--------+--------+--------+ 0 | BRK s |ORA(z,x)| JAM i | SLO(z,x)| NOP z | ORA z | ASL z | SLO z | | 2 7 | 2 6 | 1 - | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ 1 | BPL r |ORA(z),y| JAM i | SLO(z),y| NOP z,x| ORA z,x| ASL z,x| SLO z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ 2 | JSR a |AND(z,x)| JAM i | RLA(z,x)| BIT z | AND z | ROL z | RLA z | | 3 6 | 2 6 | 1 - | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ 3 | BMI r |AND(z),y| JAM i | RLA(z),y| NOP z,x| AND z,x| ROL z,x| RLA z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ 4 | RTI s |EOR(z,x)| JAM i | SRE(z,x)| NOP z | EOR z | LSR z | SRE z | | 1 6 | 2 6 | 1 - | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ 5 | BVC r |EOR(z),y| JAM i | SRE(z),y| NOP z,x| EOR z,x| LSR z,x| SRE z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ 6 | RTS s |ADC(z,x)| JAM i | RRA(z,x)| NOP z | ADC z | ROR z | RRA z | | 1 6 | 2 6 | 1 - | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ 7 | BVS r |ADC(z),y| JAM i | RRA(z),y| NOP z,x| ADC z,x| ROR z,x| RRA z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ 8 | NOP # |STA(z,x)| NOP # | SAX(z,x)| STY z | STA z | STX z | SAX z | | 2 2 | 2 6 | 2 2 | 2 6 | 2 3 | 2 3 | 2 3 | 2 3 | +-------+--------+-------+---------+--------+--------+--------+--------+ 9 | BCC r |STA(z),y| JAM i | SHA a,x | STYz,x | STA z,x| STX z,y| SAX z,y| | 2 2* | 2 6 | 1 - |! 3 5 !| 2 4 | 2 4 | 2 4 | 2 4 | +-------+--------+-------+---------+--------+--------+--------+--------+ A | LDY # |LDA(z,x)| LDX # | LAX(z,x)| LDY z | LDA z | LDX z | LAX z | | 2 2 | 2 6 | 2 2 | 2 6 | 2 3 | 2 3 | 2 3 | 2 3 | +-------+--------+-------+---------+--------+--------+--------+--------+ B | BCS r |LDA(z),y| JAM i | LAX(z),y| LDY z,x| LDA z,x| LDX z,y| LAX z,y| | 2 2* | 2 5* | 1 - | 2 5* | 2 4 | 2 4 | 2 4 | 2 4 | +-------+--------+-------+---------+--------+--------+--------+--------+ C | CPY # |CMP(z,x)| NOP # | DCP(z,x)| CPY z | CMP z | DEC z | DCP z | | 2 2 | 2 6 | 2 2 | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ D | BNE r |CMP(z),y| JAM i | DCP(z),y| NOP z,x| CMP z,x| DEC z,x| DCP z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ E | CPX # |SBC(z,x)| NOP # | ISB(z,x)| CPX z | SBC z | INC z | ISB z | | 2 2 | 2 6 | 2 2 | 2 8 | 2 3 | 2 3 | 2 5 | 2 5 | +-------+--------+-------+---------+--------+--------+--------+--------+ F | BEQ r |SBC(z),y| JAM i | ISB(z),y| NOP z,x| SBC z,x| INC z,x| ISB z,x| | 2 2* | 2 5* | 1 - | 2 8 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+-------+---------+--------+--------+--------+--------+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +-------+--------+-------+---------+--------+--------+--------+--------+

Hi Low +-------+--------+-------+-------+--------+--------+--------+--------+ | 8 | 9 | A | B | C | D | E | F | --+-------+--------+-------+-------+--------+--------+--------+--------+ 0 | PHP s | ORA # | ASL A | ANC # | NOP a | ORA a | ASL a | SLO a | | 1 3 | 2 2 | 1 2 | 2 2 | 3 4 | 3 4 | 3 6 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ 1 | CLC i | ORA a,y| NOP i |SLO a,y| NOP a,x| ORA a,x| ASL a,x| SLO a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ 2 | PLP s | AND # | ROL A | ANC # | BIT a | AND a | ROL a | RLA a | | 1 4 | 2 2 | 1 2 | 2 2 | 3 4 | 3 4 | 3 6 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ 3 | SEC i | AND a,y| NOP i |RLA a,y| NOP a,x| AND a,x| ROL a,x| RLA a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ 4 | PHA s | EOR # | LSR A | ASR # | JMP a | EOR a | LSR a | SRE a | | 1 3 | 2 2 | 1 2 | 2 2 | 3 3 | 3 4 | 3 6 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ 5 | CLI i | EOR a,y| NOP i |SRE a,y| NOP a,x| EOR a,x| LSR a,x| SRE a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ 6 | PLA s | ADC # | ROR A | ARR # | JMP (a)| ADC a | ROR a | RRA a | | 1 4 | 2 2 | 1 2 | 2 2 | 3 5 | 3 4 | 3 6 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ 7 | SEI i | ADC a,y| NOP i |RRA a,y| NOP a,x| ADC a,x| ROR a,x| RRA a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ 8 | DEY i | NOP # | TXA i | ANE # | STY a | STA a | STX a | SAX a | | 1 2 | 2 2 | 1 2 | 2 2 | 3 4 | 3 4 | 3 4 | 3 4 | +-------+--------+-------+-------+--------+--------+--------+--------+ 9 | TYA i | STA a,y| TXS i |SHS a,x| SHY a,y| STA a,x| SHX a,y| SHA a,y| | 1 2 | 3 5 | 1 2 |! 3 5 !|! 3 5 !| 3 5 |! 3 5 !|! 3 5 !| +-------+--------+-------+-------+--------+--------+--------+--------+ A | TAY i | LDA # | TAX i | LXA # | LDY a | LDA a | LDX a | LAX a | | 1 2 | 2 2 | 1 2 |! 2 2 !| 3 4 | 3 4 | 3 4 | 3 4 | +-------+--------+-------+-------+--------+--------+--------+--------+ B | CLV i | LDA a,y| TSX i |LAE a,y| LDY a,x| LDA a,x| LDX a,y| LAX a,y| | 1 2 | 3 4* | 1 2 |! 3 4*!| 3 4 | 3 4* | 3 4* | 3 4* | +-------+--------+-------+-------+--------+--------+--------+--------+ C | INY i | CMP # | DEX i | SBX # | CPY a | CMP a | DEC a | DCP a | | 1 2 | 2 2 | 1 2 | 2 2 | 3 4 | 3 4 | 3 4 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ D | CLD i | CMP a,y| NOP i |DCP a,y| NOP a,x| CMP a,x| DEC a,x| DCP a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ E | INX i | SBC # | NOP i | SBC # | CPX a | SBC a | INC a | ISB a | | 1 2 | 2 2 | 1 2 | 2 2 | 3 4 | 3 4 | 3 6 | 3 6 | +-------+--------+-------+-------+--------+--------+--------+--------+ F | SED i | SBC a,y| NOP i |ISB a,y| NOP a,x| SBC a,x| INC a,x| ISB a,x| | 1 2 | 3 4* | 1 2 | 3 7 | 3 4* | 3 4* | 3 7 | 3 7 | +-------+--------+-------+-------+--------+--------+--------+--------+ | 8 | 9 | A | B | C | D | E | F | +-------+--------+-------+-------+--------+--------+--------+--------+

  • = Opcode may need more cycles ! = Unstable opcode!

65816 instruction chart:

Hi Low +-------+--------+--------+----------+--------+--------+--------+---------+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | --+-------+--------+--------+----------+--------+--------+--------+---------+ 0 | BRK s |ORA(d,x)| COP s | ORA d,s | TSB d | ORA d | ASL d | ORA [d] | | 2 8 | 2 6 | 2 8 | 2 4 | 2 5 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 1 | BPL r |ORA(d),y| ORA(d) |ORA(d,s),y| TRB d | ORA d,x| ASL d,x|ORA [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 2 5 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 2 | JSR a |AND(d,x)| JSL al | AND d,s | BIT d | AND d | ROL d | AND [d] | | 3 6 | 2 6 | 4 8 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 3 | BMI r |AND(d),y| AND (d)|AND(d,s),y| BIT d,x| AND d,x| ROL d,x|AND [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 4 | RTI s |EOR(d,x)| reserve| EOR d,s | MVP xya| EOR d | LSR d | EOR [d] | | 1 7 | 2 6 | 2 2 | 2 4 | 3 7 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 5 | BVC r |EOR(d),y| EOR (d)|EOR(d,s),y| MVN xya| EOR d,x| LSR d,x|EOR [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 3 7 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 6 | RTS s |ADC(d,x)| PER s | ADC d,s | STZ d | ADC d | ROR d | ADC [d] | | 1 6 | 2 6 | 3 6 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 7 | BVS r |ADC(d),y| ADC (d)|ADC(d,s),y| STZ d,x| ADC d,x| ROR d,x|ADC [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 8 | BRA r |STA(d,x)| BRL rl | STA d,s | STY d | STA d | STX d | STA [d] | | 2 2 | 2 6 | 3 3 | 2 4 | 2 3 | 2 3 | 2 3 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ 9 | BCC r |STA(d),y| STA (d)|STA(d,s),y| STYd,x | STA d,x| STX d,y|STA [d],y| | 2 2 | 2 6 | 2 5 | 2 7 | 2 4 | 2 4 | 2 4 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ A | LDY # |LDA(d,x)| LDX # | LDA d,s | LDY d | LDA d | LDX d | LDA [d] | | 2 2 | 2 6 | 2 2 | 2 4 | 2 3 | 2 3 | 2 3 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ B | BCS r |LDA(d),y| LDA (d)|LDA(d,s),y| LDY d,x| LDA d,x| LDX d,y|LDA [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 2 4 | 2 4 | 2 4 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ C | CPY # |CMP(d,x)| REP # | CMP d,s | CPY d | CMP d | DEC d | CMP [d] | | 2 2 | 2 6 | 2 3 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ D | BNE r |CMP(d),y| CMP (d)|CMP(d,s),y| PEI s | CMP d,x| DEC d,x|CMP [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 2 6 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ E | CPX # |SBC(d,x)| SEP # | SBC d,s | CPX d | SBC d | INC d | SBC [d] | | 2 2 | 2 6 | 2 3 | 2 4 | 2 3 | 2 3 | 2 5 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ F | BEQ r |SBC(d),y| SBC (d)|SBC(d,s),y| PEA s | SBC d,x| INC d,x|SBC [d],y| | 2 2 | 2 5 | 2 5 | 2 7 | 3 5 | 2 4 | 2 6 | 2 6 | +-------+--------+--------+----------+--------+--------+--------+---------+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +-------+--------+--------+----------+--------+--------+--------+---------+

Hi Low +-------+--------+-------+-------+--------+--------+--------+---------+ | 8 | 9 | A | B | C | D | E | F | --+-------+--------+-------+-------+--------+--------+--------+---------+ 0 | PHP s | ORA # | ASL A | PHD s | TSB a | ORA a | ASL a | ORA al | | 1 3 | 2 2 | 1 2 | 1 4 | 3 6 | 3 4 | 3 6 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 1 | CLC i | ORA a,y| INC A | TCS i | TRB a | ORA a,x| ASL a,x| ORA al,x| | 1 2 | 3 4 | 1 2 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 2 | PLP s | AND # | ROL A | PLD s | BIT a | AND a | ROL a | AND al | | 1 4 | 2 2 | 1 2 | 1 5 | 3 4 | 3 4 | 3 6 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 3 | SEC i | AND a,y| DEC A | TSC i | BIT a,x| AND a,x| ROL a,x| AND al,x| | 1 2 | 3 4 | 1 2 | 1 2 | 3 4 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 4 | PHA s | EOR # | LSR A | PHK s | JMP a | EOR a | LSR a | EOR al | | 1 3 | 2 2 | 1 2 | 1 3 | 3 3 | 3 4 | 3 6 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 5 | CLI i | EOR a,y| PHY s | TCD i | JMP al | EOR a,x| LSR a,x| EOR al,x| | 1 2 | 3 4 | 1 3 | 1 2 | 4 4 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 6 | PLA s | ADC # | ROR A | RTL s | JMP (a)| ADC a | ROR a | ADC al | | 1 4 | 2 2 | 1 2 | 1 6 | 3 5 | 3 4 | 3 6 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 7 | SEI i | ADC a,y| PLY s | TDC i |JMP(a,x)| ADC a,x| ROR a,x| ADC al,x| | 1 2 | 3 4 | 1 4 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 8 | DEY i | BIT # | TXA i | PHB s | STY a | STA a | STX a | STA al | | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 4 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ 9 | TYA i | STA a,y| TXS i | TXY i | STZ a | STA a,x| STZ a,x| STA al,x| | 1 2 | 3 5 | 1 2 | 1 2 | 3 4 | 3 5 | 3 5 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ A | TAY i | LDA # | TAX i | PLB s | LDY a | LDA a | LDX a | LDA al | | 1 2 | 2 2 | 1 2 | 1 4 | 3 4 | 3 4 | 3 4 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ B | CLV i | LDA a,y| TSX i | TYX i | LDY a,x| LDA a,x| LDX a,y| LDA al,x| | 1 2 | 3 4 | 1 2 | 1 2 | 3 4 | 3 4 | 3 4 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ C | INY i | CMP # | DEX i | WAI i | CPY a | CMP a | DEC a | CMP al | | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 4 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ D | CLD i | CMP a,y| PHX s | STP i | JML (a)| CMP a,x| DEC a,x| CMP al,x| | 1 2 | 3 4 | 1 3 | 1 3 | 3 6 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ E | INX i | SBC # | NOP i | XBA i | CPX a | SBC a | INC a | SBC al | | 1 2 | 2 2 | 1 2 | 1 3 | 3 4 | 3 4 | 3 6 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ F | SED i | SBC a,y| PLX s | XCE i |JSR(a,x)| SBC a,x| INC a,x| SBC al,x| | 1 2 | 3 4 | 1 4 | 1 2 | 3 6 | 3 4 | 3 7 | 4 5 | +-------+--------+-------+-------+--------+--------+--------+---------+ | 8 | 9 | A | B | C | D | E | F | +-------+--------+-------+-------+--------+--------+--------+---------+

(Note: Data is gained from 65816-documentation, but it is downward compatible. For the 6510 just ignore specs which do not apply.)

6510/65816 Addressing modes:

Absolute -- a Absolute (JMP) -- a Absolute (JSR) -- a Absolute (R-M-W) -- a Absolute Indexed -- a,x a,y Absolute Indexed (R-M-W) -- a,x Absolute Indexed Indirect -- (a,x) Absolute Indirect -- (a) Accumulator -- A Immediate -- # Implied -- i Relative -- r Stack (Hardware Interrupts) -- s Stack (Software Interrupts) -- s Stack (Pull) -- s Stack (Push) -- s Stack (RTI) -- s Stack (RTS) -- s Zeropage/Direct -- d Zeropage/Direct (R-M-W) -- d Zeropage/Direct Indexed -- d,x d,y Zeropage/Direct Indexed (R-M-W) -- d,x Zeropage/Direct Indexed Indirect -- (d,x) Zeropage/Direct Indirect Indexed -- (d),y

6510 Illegal Addressing modes:

Absolute Indexed (R-M-W) -- a,y Zeropage Indexed Indirect (R-M-W) -- (d,x) Zeropage Indirect Indexed (R-M-W) -- (d),y

65816 Addressing modes:

Absolute Indexed Indirect (JSR) -- (a,x) Absolute Indirect Long (JML) -- (a) Absolute Long -- al Absolute Long Indexed -- al,x Absolute Long (JMP) -- al Absolute Long (JSL) -- al Block Move Negative (backward) -- xyc Block Move Positive (forward) -- xyc Direct Indirect -- (d) Direct Indirect Long -- [d] Direct Indirect Indexed Long -- [d],y Implied (XBA) -- i Relative Long -- rl Stack (PEA) -- s Stack (PEI) -- s Stack (PER) -- s Stack (RTL) -- s Stack Relative -- d,s Stack Relative Indirect Indexed -- (d,s),y Stop the Clock (STP) -- h Wait for Interrupt (WAI) -- h

6510/65816 Addressing mode: Immediate -- #

(ADC,ANC,AND,ANE,ARR,ASR,BIT,CMP,CPX,CPY,EOR,LDA,LDX,LDY,LXA,NOP,ORA, REP,SBC,SBX,SEP) (2 and 3 bytes) (2 and 3 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Immediate Data Low    |    R     |
|       (1) 2a  |  PBR,PC+2        | Immediate Data High   |    R     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle and 1 byte for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

6510/65816 Addressing mode: Absolute -- a

(ADC,AND,BIT,CMP,CPX,CPY,EOR,LAX,LDA,LDX,LDY,NOP,ORA,SAX,SBC,STA,STX, STY,STZ) (3 bytes) (4 and 5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  DBR,AA          | Data Low              |   R/W    |
|       (1) 4a  |  DBR,AA+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

6510/65816 Addressing mode: Absolute (R-M-W) -- a

(ASL,DCP,DEC,INC,ISB,LSR,RLA,ROL,ROR,RRA,SLO,SRE,TRB,TSB) (3 bytes) (6 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  DBR,AA          | Data Low              |    R     |
|       (1) 4a  |  DBR,AA+1        | Data High             |    R     |
|   (12)(3) 5   |  DBR,AA+2        | Internal Operation    |    R     |
|       (1) 6a  |  DBR,AA+1        | Data High             |    W     |
|           6   |  DBR,AA          | Data Low              |    W     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.

(12) Unmodified Data Low is written back to memory in 6502 emulation mode (E=1).

See also: Abbreviations

6510/65816 Addressing mode: Absolute (JMP) -- a

(JMP) (3 bytes) (3 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | NEW PCL               |    R     |
|           3   |  PBR,PC+2        | NEW PCH               |    R     |
|           1   |  PBR,NEWPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Absolute (JSR) -- a

(JSR) (3 bytes) (6 cycles)

On 6510: +---------------+------------------+-----------------------+----------+ | Cycle | Address Bus | Data Bus |Read/Write| +---------------+------------------+-----------------------+----------+ | 1 | PBR,PC | Op Code | R | | 2 | PBR,PC+1 | NEW PCL | R | | 3 | 0,S | Internal Operation | R | | 4 | 0,S | Program Counter High | W | | 5 | 0,S-1 | Program Counter Low | W | | 6 | PBR,PC+2 | NEW PCH | R | | 1 | PBR,NEWPC | New Op Code | R | +---------------+------------------+-----------------------+----------+

On 65816: +---------------+------------------+-----------------------+----------+ | Cycle | Address Bus | Data Bus |Read/Write| +---------------+------------------+-----------------------+----------+ | 1 | PBR,PC | Op Code | R | | 2 | PBR,PC+1 | NEW PCL | R | | 3 | PBR,PC+2 | NEW PCH | R | | 4 | PBR,PC+2 | Internal Operation | R | | 5 | 0,S | Program Counter High | W | | 6 | 0,S-1 | Program Counter Low | W | | 1 | PBR,NEWPC | New Op Code | R | +---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Absolute Long -- al

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (4 bytes) (5 and 6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  PBR,PC+3        | Absolute Address Bank |    R     |
|           5   |  AAB,AA          | Data Low              |   R/W    |
|       (1) 5a  |  AAB,AA+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

6510/65816 Addressing mode: Absolute Long (JMP) -- al

(JMP) (4 bytes) (4 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | NEW PCL               |    R     |
|           3   |  PBR,PC+2        | NEW PCH               |    R     |
|           4   |  PBR,PC+3        | NEW PBR               |    R     |
|           1   |  NEW PBR,PC      | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Absolute Long (JSL) -- al

(JSL) (4 bytes) (7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | NEW PCL               |    R     |
|           3   |  PBR,PC+2        | NEW PCH               |    R     |
|           4   |  0,S             | Program Bank Register |    W     |
|           5   |  0,S             | Internal Operation    |    R     |
|           6   |  PBR,PC+3        | NEW PBR               |    R     |
|           7   |  0,S-1           | Program Counter High  |    W     |
|           8   |  0,S-2           | Program Counter Low   |    W     |
|           1   |  NEW PBR,PC      | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct -- d

(ADC,AND,BIT,CMP,CPX,CPY,EOR,LAX,LDA,LDX,LDY,NOP,ORA,SAX,SBC,STA,STX, STY,STZ) (2 bytes) (3,4 and 5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+2        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Data Low              |   R/W    |
|       (1) 3a  |  0,D+DO+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct (R-M-W) -- d

(ASL,DCP,DEC,INC,ISB,LSR,RLA,ROL,ROR,RRA,SLO,SRE,TRB,TSB) (2 bytes) (5,6,7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 3a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Data Low              |    R     |
|       (1) 3a  |  0,D+DO+1        | Data High             |    R     |
|   (12)(3) 4   |  0,D+DO+1        | Internal Operation    |    R     |
|       (1) 5a  |  0,D+D0+1        | Data High             |    W     |
|           5   |  0,D+DO          | Data Low              |    W     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.

(12) Unmodified Data Low is written back to memory in 6502 emulation mode (E=1).

See also: Abbreviations

6510/65816 Addressing mode: Accumulator -- A

(ASL,DEC,INC,LSR,ROL,ROR) (1 byte) (2 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Implied -- i

(CLC,CLD,CLI,CLV,DEX,DEY,INX,INY,JAM,NOP,SEC,SED,SEI,TAX,TAY,TCD,TCS, TDC,TSC,TSX,TXA,TXS,TXY,TYA,TYX,XCE) (1 byte) (2 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Implied (XBA) -- i

(XBA) (1 byte) (3 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Wait for Interrupt -- h

(WAI) (1 byte) (3 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|       (9) 2   |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|   IRQ,NMI 1   |  PBR,PC+1        | IRQ(BRK)              |    R     |
+---------------+------------------+-----------------------+----------+
(9) Wait at cycle 2 for 2 cycles after /NMI or /IRQ active input.

See also: Abbreviations

65816 Addressing mode: Stop the Clock -- h

(STP) (1 byte) (3 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|   RES=1   3   |  PBR,PC+1        | Internal Operation    |    R     |
|   RES=0   1c  |  PBR,PC+1        | RES(BRK)              |    R     |
|   RES=0   1b  |  PBR,PC+1        | RES(BRK)              |    R     |
|   RES=1   1a  |  PBR,PC+1        | RES(BRK)              |    R     |
|           1   |  PBR,PC+1        | BEGIN                 |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations
          Hardware interrupt

6510/65816 Addressing mode: Zeropage/Direct Indirect Indexed -- (d),y

(ADC,AND,CMP,EOR,LAX,LDA,ORA,SBC,STA) (2 bytes) (5,6,7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           4   |  0,D+DO+1        | Absolute Address High |    R     |
|       (4) 4a  |  DBR,AAH,AAL+YL  | Internal Operation    |    R     |
|           5   |  DBR,AA+Y        | Data Low              |   R/W    |
|       (1) 5a  |  DBR,AA+Y+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.
(4) Add 1 cycle for indexing across page boundaries, or write, or X=0.
    When X=1 or in the emulation mode, this cycle contains invalid
    addresses.

See also: Abbreviations

6510 Illegal Addressing mode: Direct Indexed Indirect (R-M-W) -- (d),y

(DCP,ISB,RLA,RRA,SLO,SRE) (2 bytes) (7,8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           4   |  0,D+DO+1        | Absolute Address High |    R     |
|       (4) 4a  |  DBR,AAH,AAL+YL  | Internal Operation    |    R     |
|           5   |  DBR,AA+Y        | Data Low              |    R     |
|           6   |  DBR,AA          | Old Data Low          |    W     |
|           7   |  DBR,AA          | New Data Low          |    W     |
+---------------+------------------+-----------------------+----------+
(4) Add 1 cycle for indexing across page boundaries or write.

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct Indirect Indexed Long -- [d],y

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (2 bytes) (6,7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           4   |  0,D+DO+1        | Absolute Address High |    R     |
|           5   |  0,D+DO+2        | Absolute Address Bank |    R     |
|           6   |  AAB,AA+Y        | Data Low              |   R/W    |
|       (1) 6a  |  AAB,AA+Y+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct Indexed Indirect -- (d,x)

(ADC,AND,CMP,EOR,LAX,LDA,ORA,SAX,SBC,STA) (2 bytes) (6,7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,D+DO+X        | Absolute Address Low  |    R     |
|           5   |  0,D+DO+X+1      | Absolute Address High |    R     |
|           6   |  DBR,AA          | Data Low              |   R/W    |
|       (1) 6a  |  DBR,AA+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

6510 Illegal Addressing mode: Direct Indexed Indirect (R-M-W) -- (d,x)

(DCP,ISB,RLA,RRA,SLO,SRE) (2 bytes) (8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,D+DO+X        | Absolute Address Low  |    R     |
|           5   |  0,D+DO+X+1      | Absolute Address High |    R     |
|           6   |  DBR,AA          | Data Low              |    R     |
|           7   |  DBR,AA          | Old Data Low          |    W     |
|           8   |  DBR,AA          | New Data Low          |    W     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct Indexed -- d,x d,y

(ADC,AND,BIT,CMP,EOR,LAX,LDA,LDX,LDY,NOP,ORA,SAX,SBC,STA,STX,STY,STZ)

(2 bytes) (4,5 and 6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,D+DO+I        | Data Low              |   R/W    |
|       (1) 4a  |  0,D+DO+I+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

6510/65816 Addressing mode: Zeropage/Direct Indexed (R-M-W) -- d,x

(ASL,DCP,DEC,INC,ISB,LSR,RLA,ROL,ROR,RRA,SLO,SRE) (2 bytes) (6,7,8 and 9 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,D+DO+X        | Data Low              |    R     |
|       (1) 4a  |  0,D+DO+X+1      | Data High             |    R     |
|   (12)(3) 5   |  0,D+DO+X+1      | Internal Operation    |    R     |
|       (1) 6a  |  0,D+DO+X+1      | Data High             |    W     |
|           6   |  0,D+DO+X        | Data Low              |    W     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.

(12) Unmodified Data Low is written back to memory in 6502 emulation mode (E=1).

See also: Abbreviations

6510/65816 Addressing mode: Absolute Indexed -- a,x a,y

(ADC,AND,BIT,CMP,EOR,LAE,LAX,LDA,LDX,LDY,NOP,ORA,SBC,SHA,SHS,SHX,SHY, STA,STZ) (3 bytes) (4,5 and 6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|       (4) 3a  |  DBR,AAH,AAL+IL  | Internal Operation    |    R     |
|           4   |  DBR,AA+I        | Data Low              |   R/W    |
|       (1) 4a  |  DBR,AA+I+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(4) Add 1 cycle for indexing across page boundaries, or write, or X=0.
    When X=1 or in the emulation mode, this cycle contains invalid
    addresses.

See also: Abbreviations

6510/65816 Addressing mode: Absolute Indexed (R-M-W) -- a,x 6510 Illegal Addressing mode: Absolute Indexed (R-M-W) -- a,y

(ASL,DCP,DEC,INC,ISB,LSR,RLA,ROL,ROR,RRA,SLO,SRE) (3 bytes) (7 and 9 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  DBR,AAH,AAL+XL  | Internal Operation    |    R     |
|           5   |  DBR,AA+X        | Data Low              |    R     |
|       (1) 5a  |  DBR,AA+X+1      | Data High             |    R     |
|   (12)(3) 6   |  DBR,AA+X+1      | Internal Operation    |    R     |
|       (1) 7a  |  DBR,AA+X+1      | Data High             |    W     |
|           7   |  DBR,AA+X        | Data Low              |    W     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.

(12) Unmodified Data Low is written back to memory in 6502 emulation mode (E=1).

See also: Abbreviations

65816 Addressing mode: Absolute Long Indexed -- al,x

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (4 bytes) (5 and 6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  PBR,PC+3        | Absolute Address Bank |    R     |
|           5   |  AAB,AA+X        | Data Low              |   R/W    |
|       (1) 5a  |  AAB,AA+X+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

6510/65816 Addressing mode: Relative -- r

(BCC,BCS,BEQ,BMI,BNE,BPL,BRA,BVC,BVS) (2 bytes) (2,3 and 4 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Offset                |    R     |
|       (5) 2a  |  PBR,PC+2        | Internal Operation    |    R     |
|       (6) 2b  |  PBR,PC+2+OFF    | Internal Operation    |    R     |
|           1   |  PBR,NewPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+
(5) Add 1 cycle if branch is taken.
(6) Add 1 cycle if branch is taken across page boundaries in 6502
    emulation mode (E=1).

See also: Abbreviations

65816 Addressing mode: Relative Long -- rl

(BRL) (3 bytes) (4 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Offset Low            |    R     |
|           3   |  PBR,PC+2        | Offset High           |    R     |
|           4   |  PBR,PC+2        | Internal Operation    |    R     |
|           1   |  PBR,NewPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Absolute Indirect -- (a)

(JMP) (3 bytes) (5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  0,AA            | NEW PCL               |    R     |
|           5   |  0,AA+1          | NEW PCH               |    R     |
|           1   |  PBR,NewPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Absolute Indirect Long (JML) -- (a)

(JML) (3 bytes) (6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+1        | Absolute Address High |    R     |
|           4   |  0,AA            | NEW PCL               |    R     |
|           5   |  0,AA+1          | NEW PCH               |    R     |
|           6   |  0,AA+2          | NEW PBR               |    R     |
|           1   |  NEW PBR,PC      | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Direct Indirect -- (d)

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (2 bytes) (5,6 and 7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           1   |  0,D+DO+1        | Absolute Address High |    R     |
|           5   |  DBR,AA          | Data Low              |   R/W    |
|       (1) 5a  |  DBR,AA+1        | Data Low              |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

65816 Addressing mode: Direct Indirect Long -- [d]

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (2 bytes) (6,7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           4   |  0,D+DO+1        | Absolute Address High |    R     |
|           5   |  0,D+DO+2        | Absolute Address Bank |    R     |
|           6   |  AAB,AA          | Data Low              |   R/W    |
|       (1) 6a  |  AAB,AA+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

6510/65816 Addressing mode: Absolute Indexed Indirect -- (a,x)

(JMP) (3 bytes) (6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  PBR,PC+2        | Internal Operation    |    R     |
|           5   |  PBR,AA+X        | NEW PCL               |    R     |
|           6   |  PBR,AA+X+1      | NEW PCH               |    R     |
|           1   |  PBR,NEWPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Absolute Indexed Indirect (JSR) -- (a,x)

(JSR) (3 bytes) (8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  0,S             | Program Counter High  |    W     |
|           4   |  0,S-1           | Program Counter Low   |    W     |
|           5   |  PBR,PC+2        | Absolute Address High |    R     |
|           6   |  PBR,PC+2        | Internal Operation    |    R     |
|           7   |  PBR,AA+X        | NEW PCL               |    R     |
|           8   |  PBR,AA+X+1      | NEW PCH               |    R     |
|           1   |  PBR,NEWPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Stack (Hardware Interrupts) -- s

(IRQ,NMI,ABORT,RES) (0 bytes) (7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Internal Operation    |    R     |
|       (3) 2   |  PBR,PC          | Internal Operation    |    R     |
|       (7) 3   |  0,S             | Program Bank Register |    W     |
|      (10) 4   |  0,S-1           | Program Counter High  |    W     |
|      (10) 5   |  0,S-2           | Program Counter Low   |    W     |
|  (10)(11) 6   |  0,S-3           | Status Register       |    W     |
|           7   |  0,VA            | Abs.Addr. Vector Low  |    R     |
|           8   |  0,VA+1          | Abs.Addr. Vector High |    R     |
|           1   |  0,AAV           | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.
(7) Subtract 1 cycle for 6502 emulation mode (E=1).

(10) R/W remains high during Reset. (11) BRK bit 4 equals "0" in Emulation mode.

See also: Abbreviations

6510/65816 Addressing mode: Stack (Software Interrupts) -- s

(BRK,COP) (2 bytes) (7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|       (3) 2   |  PBR,PC+1        | Signature             |    R     |
|       (7) 3   |  0,S             | Program Bank Register |    W     |
|           4   |  0,S-1           | Program Counter High  |    W     |
|           5   |  0,S-2           | Program Counter Low   |    W     |
|           6   |  0,S-3           | (COP Latches)P        |    W     |
|           7   |  0,VA            | Abs.Addr. Vector Low  |    R     |
|           8   |  0,VA+1          | Abs.Addr. Vector High |    R     |
|           1   |  0,AAV           | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.
(7) Subtract 1 cycle for 6502 emulation mode (E=1).

See also: Abbreviations

6510/65816 Addressing mode: Stack (RTI) -- s

(RTI) (1 byte) (6 and 7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|       (3) 3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+1           | Status Register       |    R     |
|           5   |  0,S+2           | New PCL               |    R     |
|           6   |  0,S+3           | New PCH               |    R     |
|       (7) 7   |  0,S+4           | Program Bank Register |    R     |
|           1   |  PBR,NewPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+
(3) Special case for aborting instruction. This is the last cycle which
    may be aborted or the Status, PBR or DBR registers will be updated.
(7) Subtract 1 cycle for 6502 emulation mode (E=1).

See also: Abbreviations

6510/65816 Addressing mode: Stack (RTS) -- s

(RTS) (1 byte) (6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+1           | New PCL-1             |    R     |
|           5   |  0,S+2           | New PCH               |    R     |
|           6   |  0,S+2           | Internal Operation    |    R     |
|           1   |  PBR,NewPC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Stack (RTL) -- s

(RTL) (1 byte) (6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+1           | NEW PCL               |    R     |
|           5   |  0,S+2           | NEW PCH               |    R     |
|           6   |  0,S+3           | NEW PBR               |    R     |
|           1   |  NEWPBR,PC       | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

6510/65816 Addressing mode: Stack (Push) -- s

(PHA,PHB,PHD,PHK,PHP,PHX,PHY) (1 byte) (3 and 4 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|       (1) 3a  |  0,S             | Register High         |    W     |
|           3   |  0,S-1           | Register Low          |    W     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

6510/65816 Addressing mode: Stack (Pull) -- s

(PLA,PLB,PLD,PLP,PLX,PLY) (1 byte) (4 and 5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+1           | Register Low          |    R     |
|       (1) 4a  |  0,S+2           | Register High         |    R     |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

65816 Addressing mode: Stack (PEI) -- s

(PEI) (2 bytes) (6 and 7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Direct Offset         |    R     |
|       (2) 2a  |  PBR,PC+1        | Internal Operation    |    R     |
|           3   |  0,D+DO          | Absolute Address Low  |    R     |
|           4   |  0,D+DO+1        | Absolute Address High |    R     |
|           5   |  0,S             | Absolute Address High |    W     |
|           6   |  0,S-1           | Absolute Address Low  |    W     |
+---------------+------------------+-----------------------+----------+
(2) Add 1 cycle for direct register low (DL) not equal 0.

See also: Abbreviations

65816 Addressing mode: Stack (PEA) -- s

(PEA) (3 bytes) (5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Absolute Address Low  |    R     |
|           3   |  PBR,PC+2        | Absolute Address High |    R     |
|           4   |  0,S             | Absolute Address High |    W     |
|           5   |  0,S-1           | Absolute Address Low  |    W     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Stack (PER) -- s

(PER) (3 bytes) (6 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Offset Low            |    R     |
|           3   |  PBR,PC+2        | Offset High           |    R     |
|           4   |  PBR,PC+2        | Internal Operation    |    R     |
|           5   |  0,S             | PCH+Offset+CAR        |    W     |
|           6   |  0,S-1           | PCL + Offset          |    W     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

65816 Addressing mode: Stack Relative -- d,s

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (2 bytes) (4 and 5 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Stack Offset          |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+SO          | Data Low              |   R/W    |
|       (1) 4a  |  0,S+SO+1        | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

65816 Addressing mode: Stack Relative Indirect Indexed -- (d,s),y

(ADC,AND,CMP,EOR,LDA,ORA,SBC,STA) (2 bytes) (7 and 8 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|           1   |  PBR,PC          | Op Code               |    R     |
|           2   |  PBR,PC+1        | Stack Offset          |    R     |
|           3   |  PBR,PC+1        | Internal Operation    |    R     |
|           4   |  0,S+SO          | Absolute Address Low  |    R     |
|           5   |  0,S+SO+1        | Absolute Address High |    R     |
|           6   |  0,S+SO+1        | Internal Operation    |    R     |
|           7   |  DBR,AA+Y        | Data Low              |   R/W    |
|       (1) 7a  |  DBR,AA+Y+1      | Data High             |   R/W    |
+---------------+------------------+-----------------------+----------+
(1) Add 1 cycle for M=0 or X=0 (i.e. 16 bit data).

See also: Abbreviations

65816 Addressing mode: Block Move Positive (forward) -- xyc

(MVP) (3 bytes) (7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
|        |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   N-2  |  4   |  SBA,X           | Source Data           |    R     |
|   Byte |  5   |  DBA,Y           | Dest Data             |    W     |
|   C=2  |  6   |  DBA,Y           | Internal Operation    |    R     |
|        +- 7   |  DBA,Y           | Internal Operation    |    R     |
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
|   N-1  |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   Byte |  4   |  SBA,X-1         | Source Data           |    R     |
|   C=1  |  5   |  DBA,Y-1         | Dest Data             |    W     |
|        |  6   |  DBA,Y-1         | Internal Operation    |    R     |
|        +- 7   |  DBA,Y-1         | Internal Operation    |    R     |
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
| N Byte |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   Last |  4   |  SBA,X-2         | Source Data           |    R     |
|   C=0  |  5   |  DBA,Y-2         | Dest Data             |    W     |
|        |  6   |  DBA,Y-2         | Internal Operation    |    R     |
|        |  7   |  DBA,Y-2         | Internal Operation    |    R     |
|        +- 1   |  PBR,PC+3        | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

x = Source Address y = Destination c = Number of Bytes to move -1 x,y Decrement MVP is used when the destination start address is higher (more positive) than the source start address.

FFFFFF ^ Dest Start | Source Start | Dest End | Source End 000000

65816 Addressing mode: Block Move Negative (backward) -- xyc

(MVN) (3 bytes) (7 cycles)

+---------------+------------------+-----------------------+----------+
|     Cycle     |   Address Bus    |       Data Bus        |Read/Write|
+---------------+------------------+-----------------------+----------+
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
|        |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   N-2  |  4   |  SBA,X           | Source Data           |    R     |
|   Byte |  5   |  DBA,Y           | Dest Data             |    W     |
|   C=2  |  6   |  DBA,Y           | Internal Operation    |    R     |
|        +- 7   |  DBA,Y           | Internal Operation    |    R     |
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
|   N-1  |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   Byte |  4   |  SBA,X+1         | Source Data           |    R     |
|   C=1  |  5   |  DBA,Y+1         | Dest Data             |    W     |
|        |  6   |  DBA,Y+1         | Internal Operation    |    R     |
|        +- 7   |  DBA,Y+1         | Internal Operation    |    R     |
|        +- 1   |  PBR,PC          | Op Code               |    R     |
|        |  2   |  PBR,PC+1        | Dest. Bank Address    |    R     |
| N Byte |  3   |  PBR,PC+2        | Source Bank Address   |    R     |
|   Last |  4   |  SBA,X+2         | Source Data           |    R     |
|   C=0  |  5   |  DBA,Y+2         | Dest Data             |    W     |
|        |  6   |  DBA,Y+2         | Internal Operation    |    R     |
|        |  7   |  DBA,Y+2         | Internal Operation    |    R     |
|        +- 1   |  PBR,PC+3        | New Op Code           |    R     |
+---------------+------------------+-----------------------+----------+

See also: Abbreviations

x = Source Address y = Destination c = Number of Bytes to move -1 x,y Increment MVN is used when the destination start address is lower (more negative) than the source start address.

FFFFFF | Source End | Dest End | Source Start v Dest Start 000000

Address-Mode Abbreviations:

AAB     Absolute Address Bank           IDL     Immediate Data Low
AAH     Absolute Address High           IO      Internal Operation
AAL     Absolute Address Low            P       Status Register
AAVH    Abs.Addr. Vector High           PBR     Program Bank Register
AAVL    Abs.Addr. Vector Low            PC      Program Counter
C       Accumulator                     PCH     Program Counter High
CAR     Carry                           PCL     Program Counter Low
D       Direct Register                 R-M-W   Read-Modify-Write
DBA     Dest. Bank Address              S       Stack Address
DBR     Data Bank Register              SBA     Source Bank Address
DO      Direct Offset                   SO      Stack Offset
I       Index Registers                 VA      Vector Address
IDH     Immediate Data High             X,Y     X,Y Registers

Branch penalty cycles +---------------------+

As you can see from the relative addressing mode, the relative offset is added to the PC after it has been fetched, of course. That means, that the penalty cycle for branching to a different page is given, if the branch is taken and the high byte of the PC after the branch instruction is different from the high byte of the destination address.

The syntax of assemblers may lead to confusion here. For example, "BCS *+2" looks like an offset has to be added, but it will be coded as "B0 00", so this instruction will never branch to a different page.

The 65816 applies this penalty cycle only in Emulation mode.

Bugs and flaws of the 6510 +--------------------------+

Zeropage addressing modes & page wraps (fixed on 65816 in native mode):

If you use an indexed-zeropage addressing mode, either direct or indirect, it is not able to leave the zeropage on page-wraps. Examples:

LDX #$01
LDA $FF,X

will fetch from adress $0000 and not $0100.

LDA ($FF),Y

LDX #$00
LDA ($FF,X)

LDX #$FF
LDA ($00,X)

will all fetch the low-byte from $00FF and the high-byte from $0000.

Indirect addressing mode & page wraps (fixed on 65816):

If you use the indirect addressing mode, PCH will not be incremented on page wraps. Example:

JMP ($C0FF)

will fetch the low-byte from $C0FF and the high-byte from $C000.

Decimal mode (flags fixed on 65816):

In decimal mode, N and V are set after the high-order nibble is added or subtracted but before it is decimal-corrected, according to binary rules. Z is always set according to binary mode, not decimal.

When decimal-correcting a nibble for addition, following rules apply:

IF ((nibble >= $A) \/ C') THEN nibble += 6
C'' = C' \/ (nibble + 6 >= $A)

When decimal-correcting a nibble for subtraction, following rules apply:

IF (~C') THEN nibble -= 6
C'' = C' \/ (nibble - 6 < 0)

Thus, $F + $F in decimal mode is $14, not $24. Also, decimal correction can result in nibbles ranging from $A-$F. For example, $C + $D results in $19 before correction, $1F after.

+------------------------------------------------------------------------ | | VIDEO INTERFACE CHIP (VIC) 6566/6567 | +------------------------------------------------------------------------ | | VIC related topics: | | Bit Interpretations | CBMSCII Charset | Colors | PAL/NTSC Differences | PAL-Timing-Schemes | Screen Dimensions | | Register description: | | $D000/53248/VIC+0 Sprite 0 X Pos | $D001/53249/VIC+1 Sprite 0 Y Pos | $D002/53250/VIC+2 Sprite 1 X Pos | $D003/53251/VIC+3 Sprite 1 Y Pos | $D004/53252/VIC+4 Sprite 2 X Pos | $D005/53253/VIC+5 Sprite 2 Y Pos | $D006/53254/VIC+6 Sprite 3 X Pos | $D007/53255/VIC+7 Sprite 3 Y Pos | $D008/53256/VIC+8 Sprite 4 X Pos | $D009/53257/VIC+9 Sprite 4 Y Pos | $D00A/53258/VIC+10 Sprite 5 X Pos | $D00B/53259/VIC+11 Sprite 5 Y Pos | $D00C/53260/VIC+12 Sprite 6 X Pos | $D00D/53261/VIC+13 Sprite 6 Y Pos | $D00E/53262/VIC+14 Sprite 7 X Pos | $D00F/53263/VIC+15 Sprite 7 Y Pos | $D010/53264/VIC+16 Sprites 0-7 MSB of X coordinate | $D011/53265/VIC+17 Control Register 1 | $D012/53266/VIC+18 Raster Position | $D013/53267/VIC+19 Latch X Pos | $D014/53268/VIC+20 Latch Y Pos | $D015/53269/VIC+21 Sprite display Enable | $D016/53270/VIC+22 Control Register 2 | $D017/53271/VIC+23 Sprites Expand 2x Vertical (Y) | $D018/53272/VIC+24 Memory Control Register | $D019/53273/VIC+25 Interrupt Request Register (IRR) | $D01A/53274/VIC+26 Interrupt Mask Register (IMR) | $D01B/53275/VIC+27 Sprite to Background Display Priority | $D01C/53276/VIC+28 Sprites Multi-Color Mode Select | $D01D/53277/VIC+29 Sprites Expand 2x Horizontal (X) | $D01E/53278/VIC+30 Sprite to Sprite Collision Detect | $D01F/53279/VIC+31 Sprite to Background Collision Detect | $D020/53280/VIC+32 Border Color | $D021/53281/VIC+33 Background Color 0 | $D022/53282/VIC+34 Background Color 1, Multi-Color Register 0 | $D023/53283/VIC+35 Background Color 2, Multi-Color Register 1 | $D024/53284/VIC+36 Background Color 3 | $D025/53285/VIC+37 Sprite Multi-Color Register 0 | $D026/53286/VIC+38 Sprite Multi-Color Register 1 | $D027/53287/VIC+39 Sprite 0 Color | $D028/53288/VIC+40 Sprite 1 Color | $D029/53289/VIC+41 Sprite 2 Color | $D02A/53290/VIC+42 Sprite 3 Color | $D02B/53291/VIC+43 Sprite 4 Color | $D02C/53292/VIC+44 Sprite 5 Color | $D02D/53293/VIC+45 Sprite 6 Color | $D02E/53294/VIC+46 Sprite 7 Color | | C128 only: | | $D02F/53295/VIC+47 Port A* for Extended Keyboard | $D030/53296/VIC+48 Switch to FAST-Mode | +------------------------------------------------------------------------

$D000/53248/VIC+0: Sprite 0 X Pos

MSB is at $D010

$D001/53249/VIC+1: Sprite 0 Y Pos

$D002/53250/VIC+2: Sprite 1 X Pos

MSB is at $D010

$D003/53251/VIC+3: Sprite 1 Y Pos

$D004/53252/VIC+4: Sprite 2 X Pos

MSB is at $D010

$D005/53253/VIC+5: Sprite 2 Y Pos

$D006/53254/VIC+6: Sprite 3 X Pos

MSB is at $D010

$D007/53255/VIC+7: Sprite 3 Y Pos

$D008/53256/VIC+8: Sprite 4 X Pos

MSB is at $D010

$D009/53257/VIC+9: Sprite 4 Y Pos

$D00A/53258/VIC+10: Sprite 5 X Pos

MSB is at $D010

$D00B/53259/VIC+11: Sprite 5 Y Pos

$D00C/53260/VIC+12: Sprite 6 X Pos

MSB is at $D010

$D00D/53261/VIC+13: Sprite 6 Y Pos

$D00E/53262/VIC+14: Sprite 7 X Pos

MSB is at $D010

$D00F/53263/VIC+15: Sprite 7 Y Pos

$D010/53264/VIC+16: Sprites 0-7 MSB of X coordinate

+----------+---------------------------------------------------+ | Bit x | Sprite x: Bit 8 of X-Position | +----------+---------------------------------------------------+

$D011/53265/VIC+17: Control Register 1

+----------+---------------------------------------------------+ | Bit 7 | Raster Position Bit 8 from $D012 | | Bit 6 | Extended Color Text Mode: 1 = Enable | | Bit 5 | Bitmap Mode: 1 = Enable | | Bit 4 | Blank Screen to Border Color: 0 = Blank | | Bit 3 | Select 24/25 Row Text Display: 1 = 25 Rows | | Bits 2-0 | Smooth Scroll to Y Dot-Position (0-7) | +----------+---------------------------------------------------+

Default Value: $9B/155 (%10011011).

Kernal-Reference:

LDA $D011 : $F88D $FC95 STA $D011 : $F892 $FC9A

$D012/53266/VIC+18: Raster Position

Read : Get current Raster Position Write: Set Raster Position for IRQ

Bit 8 is at $D011

Kernal-Reference:

LDA $D012 : $FF5E

$D013/53267/VIC+19: Latch X Pos

$D014/53268/VIC+20: Latch Y Pos

$D015/53269/VIC+21: Sprite display Enable

+----------+---------------------------------------------------+ | Bit x | Sprite x: 1 = Sprite enabled | +----------+---------------------------------------------------+

$D016/53270/VIC+22: Control Register 2

+----------+---------------------------------------------------+ | Bits 7-6 | Unused | | Bit 5 | Reset-Bit: 1 = Stop VIC (no Video Out, no RAM | | | refresh, no bus access) | | Bit 4 | Multi-Color Mode: 1 = Enable (Text or Bitmap) | | Bit 3 | Select 38/40 Column Text Display: 1 = 40 Cols | | Bits 2-0 | Smooth Scroll to X Dot-Position (0-7) | +----------+---------------------------------------------------+

Default Value: $08/8 (%00001000).

See also: Bit Interpretations in Hires and MC-Mode

Kernal-Reference:

STX $D016 : $FCEF

$D017/53271/VIC+23: Sprites Expand 2x Vertical (Y)

+----------+---------------------------------------------------+ | Bit x | Sprite x: 1 = Sprite expanded | +----------+---------------------------------------------------+

$D018/53272/VIC+24: Memory Control Register

+----------+---------------------------------------------------+ | Bits 7-4 | Video Matrix Base Address (inside VIC) | | Bit 3 | Bitmap-Mode: Select Base Address (inside VIC) | | Bits 3-1 | Character Dot-Data Base Address (inside VIC) | | Bit 0 | Unused | +----------+---------------------------------------------------+

Default Value: $14/20 (%00010100).

Kernal-Reference:

LDA $D018 : $EB59 $EC48 $EC53 STA $D018 : $EB5E $EC58

$D019/53273/VIC+25: Interrupt Request Register (IRR)

1 = IRQ occured

+----------+-------------------------------------------------------+ | Bit 7 | 1 = IRQ has been generated | | Bit 3 | Light-Pen Triggered IRQ Flag | | Bit 2 | Sprite to Sprite Collision IRQ Flag (see $D01E) | | Bit 1 | Sprite to Background Collision IRQ Flag (see $D01F) | | Bit 0 | Raster Compare IRQ Flag (see $D012) | +----------+-------------------------------------------------------+

An IRQ will be initiated, if equal bits are set in IRR and IMR.

Your VIC does NOT clear this register! You have to do this by setting the bits you want to clear. Note also that read-modify-write-instructions, like INC, ASL..., will not work on 65816-CPUs in native mode!

Kernal-Reference:

LDA $D019 : $FF63

$D01A/53274/VIC+26: Interrupt Mask Register (IMR)

1 = IRQ enabled

+----------+-------------------------------------------------------+ | Bit 7-4 | Always 1 | | Bit 3 | Light-Pen Triggered IRQ Flag | | Bit 2 | Sprite to Sprite Collision IRQ Flag (see $D01E) | | Bit 1 | Sprite to Background Collision IRQ Flag (see $D01F) | | Bit 0 | Raster Compare IRQ Flag (see $D012) | +----------+-------------------------------------------------------+

An IRQ will be initiated, if equal bits are set in IRR and IMR. Default Value: $00/0 (%00000000).

$D01B/53275/VIC+27: Sprite to Background Display Priority

+----------+---------------------------------------------------+ | Bit x | Sprite x: 0 = Sprite has higher Priority | +----------+---------------------------------------------------+

Higher Priority means sprite is in front of everything.

Lower Priority means sprite is behind bit-combinations starting with 1 (e.g. %1 in hires mode and %1x in multi-color mode) and in front of bit combinations starting with 0 (e.g. %0 in hires mode and %0x in multi-color mode). So we get the following priority-tables:

Hires: Bit=0 < Sprite < Bit=1 ; Multi-Color: Bit=00 < Sprite < Bit = 10 Bit=01 < < Bit = 11

$D01C/53276/VIC+28: Sprites Multi-Color Mode Select

+----------+---------------------------------------------------+ | Bit x | Sprite x: 1 = Sprite is in Multi-Color Mode | +----------+---------------------------------------------------+

See also: Bit Interpretations in Hires and MC-Mode

$D01D/53277/VIC+29: Sprites Expand 2x Horizontal (X)

+----------+---------------------------------------------------+ | Bit x | Sprite x: 1 = Sprite expanded | +----------+---------------------------------------------------+

$D01E/53278/VIC+30: Sprite to Sprite Collision Detect

If a Sprite to Sprite Collision is detected, Bits in $D01E will be set according to Sprite Numbers of the overlayed Sprites and additionally Bit 2 in $D019.

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

$D01F/53279/VIC+31: Sprite to Background Collision Detect

If a Sprite to Background Collision is detected, Bits in $D01F will be set according to Sprite Number of the overlayed Sprite and additionally Bit 1 in $D019.

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

$D020/53280/VIC+32: Border Color

Default Value: $0E/14 (%00001110) On SX64: $03/3 (%00000011)

$D021/53281/VIC+33: Background Color 0

Default Value: $06/6 (%00000110) On SX64: $01/1 (%00000001)

$D022/53282/VIC+34: Background Color 1, Multi-Color Register 0

$D022 stores an additional Color for Multi-Color Mode (Text and Bitmap) and for Extended Color Mode

$D023/53283/VIC+35: Background Color 2, Multi-Color Register 1

$D023 stores an additional Color for Multi-Color Mode (Text and Bitmap) and for Extended Color Mode

$D024/53284/VIC+36: Background Color 3

$D024 stores an additional Color for Extended Color Mode

$D025/53285/VIC+37: Sprite Multi-Color Register 0

Additional Color for Sprites 0-7 in Multi-Color Mode

$D026/53286/VIC+38: Sprite Multi-Color Register 1

Additional Color for Sprites 0-7 in Multi-Color Mode

$D027/53287/VIC+39: Sprite 0 Color

$D028/53288/VIC+40: Sprite 1 Color

$D029/53289/VIC+41: Sprite 2 Color

$D02A/53290/VIC+42: Sprite 3 Color

$D02B/53291/VIC+43: Sprite 4 Color

$D02C/53292/VIC+44: Sprite 5 Color

$D02D/53293/VIC+45: Sprite 6 Color

$D02E/53294/VIC+46: Sprite 7 Color

$D02F/53295/VIC+47: C128 only: Port A* for Extended Keyboard

+----------+---------------------------------------------------+ | Bits 7-3 | no Function, always 1 | | Bits 2-0 | Write Keyboard Column Values for Keyboard Scan | +----------+---------------------------------------------------+

$D030/53296/VIC+48: C128 only: Switch to FAST-Mode

+----------+---------------------------------------------------+ | Bits 7-2 | no Function, always 1 | | Bit 1 | 1 = Test-Mode(?) | | | ($D012 increases by one per cycle) | | Bit 0 | 1 = Enable 2 MHz-Mode, VIC displays whatever is | | | on data-bus when in visible area | +----------+---------------------------------------------------+

+-------------------------+ | VIC Bit Interpretations | +-------------------------+

This map shows you which bit-combination forces VIC to get the color-data from which location for all the different modes.

+---------------+----------------------------------------------------------+ | Charset-Hires | 0 = Background ($D021) 1 = Color-RAM | +---------------+----------------------------------------------------------+ | Charset-MC | 00 = Background ($D021) 01 = MC-Color1 ($D022) | | | 10 = MC-Color2 ($D023) 11 = Color-RAM | +---------------+----------------------------------------------------------+ | Bitmap-Hires | 0 = LN Screen-RAM 1 = HN Screen-RAM | +---------------+----------------------------------------------------------+ | Bitmap-MC | 00 = Background ($D021) 01 = HN Screen-RAM | | | 10 = LN Screen-RAM 11 = Color-RAM | +---------------+----------------------------------------------------------+ | Sprite-Hires | 0 = Background ($D021) 1 = Sprite-Color ($D027..) | +---------------+----------------------------------------------------------+ | Sprite-MC | 00 = Background ($D021) 01 = Sprite-MC-Color1 ($D025)| | | 10 = Sprite-Color ($D027..) 11 = Sprite-MC-Color2 ($D026)| +---------------+----------------------------------------------------------+

LN = Low-Nybble ; HN = High-Nybble

VIC's 16 Colors:

0/$0 = Black 8/$8 = Orange 1/$1 = White 9/$9 = Brown 2/$2 = Red 10/$A = Light Red 3/$3 = Cyan 11/$B = Dark Grey 4/$4 = Purple 12/$C = Grey 5/$5 = Green 13/$D = Light Green 6/$6 = Blue 14/$E = Light Blue 7/$7 = Yellow 15/$F = Light Grey

sorted by Brightness:

White Yellow Light Green Cyan Light Grey Green Light Red Grey Light Blue Purple Orange Red Dark Grey Blue Brown Black

PAL-Timing Schemes for:

Normal Scan Line Normal Scan Line with Sprites Bad Scan Line Bad Scan Line with Sprites Over Scan Line Over Scan Line with Sprites

Information was taken from 'PALTIME.TXT' by Marko Makela.
Refer to that article if you want to know more about this topic.

PAL-Timing scheme for a bad scan line, no sprites:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3-4-5-6-7-rrrrrgggggggggggggggggggggggggggggggggggggggg-N0-1-2-|Phi-1 VIC | cccccccccccccccccccccccccccccccccccccccc |Phi-2 VIC |xxxxxxxxxxxXXX========================================xxxxxxxxx|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank)

= pointer fetch for sprite ; g = graphics fetch r = memory refresh cycle ; c = character pointer and/or color data fetch N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high) X = bus request pending, bus still available (BA low, AEC high); processor may execute write cycles, stops on the next read cycle. '=' = bus unavailable (BA low, AEC low); processor is blocked because it would like to read something.

PAL-Timing scheme for a normal scan line, no sprites:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3-4-5-6-7-rrrrrgggggggggggggggggggggggggggggggggggggggg-N0-1-2-|Phi-1 VIC | |Phi-2 VIC |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank)

= pointer fetch for sprite ; g = graphics fetch r = memory refresh cycle ; N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high)

PAL-Timing scheme for a overscan raster line or blanked screen, no sprites:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3-4-5-6-7-rrrrr++++++++++++++++++++++++++++++++++++++++-N0-1-2-|Phi-1 VIC | |Phi-2 VIC |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank) '+' = idle bus cycle (just like '-', but reads from video_bank_base_address + $39FF if ECM ($D011 Bit 6) is selected)

= pointer fetch for sprite ; r = memory refresh cycle N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high)

PAL-Timing scheme for a bad scan line, at least the sprites 3-7 active on the current scan line and the sprites 0-2 on the following scan line:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3s4s5s6s7srrrrrgggggggggggggggggggggggggggggggggggggggg-N0s1s2s|Phi-1 VIC |ssssssssss cccccccccccccccccccccccccccccccccccccccc ssssss|Phi-2 VIC |==========xXXX========================================***======|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank)

= pointer fetch for sprite ; g = graphics fetch r = memory refresh cycle ; c = character pointer and/or color data fetch s = sprite data fetch ; N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high) X = bus request pending, bus still available (BA low, AEC high); processor may execute write cycles, stops on the next read cycle. '*' = bus request pending, bus still available (BA low, AEC high); processor is blocked because it would like to read something. '=' = bus unavailable (BA low, AEC low); processor is blocked because it would like to read something.

PAL-Timing scheme for a normal scan line, no sprites on the current scan line but at least the sprites 1+2 active on the following scan line:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3-4-5-6-7-rrrrrgggggggggggggggggggggggggggggggggggggggg-N0-1s2s|Phi-1 VIC | ssss|Phi-2 VIC |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXX====|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank)

= pointer fetch for sprite ; g = graphics fetch s = sprite data fetch ; r = memory refresh cycles N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high) X = bus request pending, bus still available (BA low, AEC high); processor may execute write cycles, stops on the next read cycle. '=' = bus unavailable (BA low, AEC low); processor is blocked because it would like to read something.

PAL-Timing scheme for two successive overscan raster lines, sprites 1+3+7 active on the latter:

+---------------------------------------------------------------+ | 1 2 3 4 5 6 | |123456789012345678901234567890123456789012345678901234567890123|Cycles +---------[------(--------------------------------------)---]---+Borders |3-4-5-6-7-rrrrr++++++++++++++++++++++++++++++++++++++++-N0-1s2-|Phi-1 VIC | ss |Phi-2 VIC |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXXX==**|Phi-2 CPU +---------------------------------------------------------------+ |3s4-5-6-7srrrrr++++++++++++++++++++++++++++++++++++++++-N0-1-2-|Phi-1 VIC |ss ss |Phi-2 VIC |==xxxXXX==xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|Phi-2 CPU +---------------------------------------------------------------+

'-' = idle bus cycle (reads from the last byte of the video bank) '+' = idle bus cycle (just like '-', but reads from video_bank_base_address + $39FF if ECM ($D011 Bit 6) is selected)

= pointer fetch for sprite ; r = memory refresh cycle s = sprite data fetch ; N = extra '-' cycles for NTSC added here

x = processor executes instructions (BA high, AEC high) X = bus request pending, bus still available (BA low, AEC high); processor may execute write cycles, stops on the next read cycle. '*' = bus request pending, bus still available (BA low, AEC high); processor is blocked because it would like to read something. '=' = bus unavailable (BA low, AEC low); processor is blocked because it would like to read something.

VIC Screen Dimensions: +------------------------------------------------------------------------+ | Upper Border: $08 | | O V E R S C A N - A R E A | | +--------------------------------------------------------------+ | | | Upper Border: | | | | $33 | | | | | | | |Left Border: Right Border:| | | | $18 $157 | | | | | | |Left| |Rght| |Brdr| |Brdr| | : | D E F A U L T T E X T - S C R E E N | : | |$1E0| |$1DF| | | Lower Border: | | | | $FA | | | +--------------------------------------------------------------+ | | | | Lower Border: $12B | +------------------------------------------------------------------------+

The horizontal values are sprite coordinates, the vertical are
rasterline counts (= Y sprite coordinates + 1).
All values are inclusive, e.g. rasterlines $33 and $FA do belong to
the default text screen.

In the timing schemes the horizontal overscan borders are marked with
'[' and ']', the text screen borders with '(' and ')'.

VIC PAL/NTSC Differences:

Here are some specifications about the different VIC types. Please note that the 6567R56A was only used in very early C64s and is mentioned here only for completeness.

+----------+--------+-------+---------+---------+---------+------------+ | VIC | Video | # of | Cycles/ | Cycles/ | Frames/ | System | | Type | system | lines | line | frame | second | Clock (Hz) | +----------+--------+-------+---------+---------+---------+------------+ | 6569 | PAL-B | 312 | 63 | 19656 | 50.125 | 985248 | | 6567R8 | NTSC-M | 263 | 65 | 17095 | 59.826 | 1022727 | | 6567R56A | NTSC-M | 262 | 64 | 16768 | ? | ? | +----------+--------+-------+---------+---------+---------+------------+

+----------+---------+-------------+ | VIC | Visible | Visible | | Type | lines | pixels/line | +----------+---------+-------------+ | 6569 | 284 | 403 | | 6567R8 | 235 | 418 | | 6567R56A | 234 | 411 | +----------+---------+-------------+

+----------+--------+--------+--------------+------------+------------+ | VIC | First | Last | First | First | Last | | Type | vblank | vblank | X coord. | visible | visible | | | line | line | of a line | X coord. | X coord. | +----------+--------+--------+--------------+------------+------------+ | 6569 | 300 | 15 | 404 ($194) | 480 ($1e0) | 380 ($17c) | | 6567R8 | 13 | 40 | 412 ($19c) | 489 ($1e9) | 396 ($18c) | | 6567R56A | 13 | 40 | 412 ($19c) | 488 ($1e8) | 388 ($184) | +----------+--------+--------+--------------+------------+------------+

+------------------------------------------------------------------------ | | CBMSCII - Charset Map | +------------------------------------------------------------------------ | | Upper Case/Graphics: Lower Case/Upper Case: | | Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) | Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) | Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) | Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255) | +------------------------------------------------------------------------

Upper Case/Graphics $00-$3F (0 - 63):

$00/000 $01/001 $02/002 $03/003 $04/004 $05/005 $06/006 $07/007 --####-- ---##--- -#####-- --####-- -####--- -######- -######- --####-- -##--##- --####-- -##--##- -##--##- -##-##-- -##----- -##----- -##--##- -##-###- -##--##- -##--##- -##----- -##--##- -##----- -##----- -##----- -##-###- -######- -#####-- -##----- -##--##- -####--- -####--- -##-###- -##----- -##--##- -##--##- -##----- -##--##- -##----- -##----- -##--##- -##---#- -##--##- -##--##- -##--##- -##-##-- -##----- -##----- -##--##- --####-- -##--##- -#####-- --####-- -####--- -######- -##----- --####--


$08/008 $09/009 $0A/010 $0B/011 $0C/012 $0D/013 $0E/014 $0F/015 -##--##- --####-- ---####- -##--##- -##----- -##---## -##--##- --####-- -##--##- ---##--- ----##-- -##-##-- -##----- -###-### -###-##- -##--##- -##--##- ---##--- ----##-- -####--- -##----- -####### -######- -##--##- -######- ---##--- ----##-- -###---- -##----- -##-#-## -######- -##--##- -##--##- ---##--- ----##-- -####--- -##----- -##---## -##-###- -##--##- -##--##- ---##--- -##-##-- -##-##-- -##----- -##---## -##--##- -##--##- -##--##- --####-- --###--- -##--##- -######- -##---## -##--##- --####--


$10/016 $11/017 $12/018 $13/019 $14/020 $15/021 $16/022 $17/023 -#####-- --####-- -#####-- --####-- -######- -##--##- -##--##- -##---## -##--##- -##--##- -##--##- -##--##- ---##--- -##--##- -##--##- -##---## -##--##- -##--##- -##--##- -##----- ---##--- -##--##- -##--##- -##---## -#####-- -##--##- -#####-- --####-- ---##--- -##--##- -##--##- -##-#-## -##----- -##--##- -####--- -----##- ---##--- -##--##- -##--##- -####### -##----- --####-- -##-##-- -##--##- ---##--- -##--##- --####-- -###-### -##----- ----###- -##--##- --####-- ---##--- --####-- ---##--- -##---##


$18/024 $19/025 $1A/026 $1B/027 $1C/028 $1D/029 $1E/030 $1F/031 -##--##- -##--##- -######- --####-- ----##-- --####-- -------- -------- -##--##- -##--##- -----##- --##---- ---#--#- ----##-- ---##--- ---#---- --####-- -##--##- ----##-- --##---- --##---- ----##-- --####-- --##---- ---##--- --####-- ---##--- --##---- -#####-- ----##-- -######- -####### --####-- ---##--- --##---- --##---- --##---- ----##-- ---##--- -####### -##--##- ---##--- -##----- --##---- -##---#- ----##-- ---##--- --##---- -##--##- ---##--- -######- --####-- ######-- --####-- ---##--- ---#---- -------- -------- -------- -------- -------- -------- ---##--- --------

$20/032 $21/033 $22/034 $23/035 $24/036 $25/037 $26/038 $27/039 -------- ---##--- -##--##- -##--##- ---##--- -##---#- --####-- -----##- -------- ---##--- -##--##- -##--##- --#####- -##--##- -##--##- ----##-- -------- ---##--- -##--##- ######## -##----- ----##-- --####-- ---##--- -------- ---##--- -------- -##--##- --####-- ---##--- --###--- -------- -------- -------- -------- ######## -----##- --##---- -##--### -------- -------- -------- -------- -##--##- -#####-- -##--##- -##--##- -------- -------- ---##--- -------- -##--##- ---##--- -#---##- --###### --------


$28/040 $29/041 $2A/042 $2B/043 $2C/044 $2D/045 $2E/046 $2F/047 ----##-- --##---- -------- -------- -------- -------- -------- -------- ---##--- ---##--- -##--##- ---##--- -------- -------- -------- ------## --##---- ----##-- --####-- ---##--- -------- -------- -------- -----##- --##---- ----##-- ######## -######- -------- -######- -------- ----##-- --##---- ----##-- --####-- ---##--- -------- -------- -------- ---##--- ---##--- ---##--- -##--##- ---##--- ---##--- -------- ---##--- --##---- ----##-- --##---- -------- -------- ---##--- -------- ---##--- -##----- -------- -------- -------- -------- --##---- -------- -------- --------

$30/048 $31/049 $32/050 $33/051 $34/052 $35/053 $36/054 $37/055 --####-- ---##--- --####-- --####-- -----##- -######- --####-- -######- -##--##- ---##--- -##--##- -##--##- ----###- -##----- -##--##- -##--##- -##-###- --###--- -----##- -----##- ---####- -#####-- -##----- ----##-- -###-##- ---##--- ----##-- ---###-- -##--##- -----##- -#####-- ---##--- -##--##- ---##--- --##---- -----##- -####### -----##- -##--##- ---##--- -##--##- ---##--- -##----- -##--##- -----##- -##--##- -##--##- ---##--- --####-- -######- -######- --####-- -----##- --####-- --####-- ---##---


$38/056 $39/057 $3A/058 $3B/059 $3C/060 $3D/061 $3E/062 $3F/063 --####-- --####-- -------- -------- ----###- -------- -###---- --####-- -##--##- -##--##- -------- -------- ---##--- -------- ---##--- -##--##- -##--##- -##--##- ---##--- ---##--- --##---- -######- ----##-- -----##- --####-- --#####- -------- -------- -##----- -------- -----##- ----##-- -##--##- -----##- -------- -------- --##---- -######- ----##-- ---##--- -##--##- -##--##- ---##--- ---##--- ---##--- -------- ---##--- -------- --####-- --####-- -------- ---##--- ----###- -------- -###---- ---##--- -------- -------- -------- --##---- -------- -------- -------- --------

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Upper Case/Graphics $40-$7F (64 - 127):

$40/064 $41/065 $42/066 $43/067 $44/068 $45/069 $46/070 $47/071 -------- ----#--- ---##--- -------- -------- -------- -------- --##---- -------- ---###-- ---##--- -------- -------- ######## -------- --##---- -------- --#####- ---##--- -------- ######## ######## -------- --##---- ######## -####### ---##--- ######## ######## -------- -------- --##---- ######## -####### ---##--- ######## -------- -------- ######## --##---- -------- ---###-- ---##--- -------- -------- -------- ######## --##---- -------- --#####- ---##--- -------- -------- -------- -------- --##---- -------- -------- ---##--- -------- -------- -------- -------- --##----

$48/072 $49/073 $4A/074 $4B/075 $4C/076 $4D/077 $4E/078 $4F/079 ----##-- -------- ---##--- ---##--- ##------ ##------ ------## ######## ----##-- -------- ---##--- ---##--- ##------ ###----- -----### ######## ----##-- -------- ---###-- --###--- ##------ -###---- ----###- ##------ ----##-- ###----- ----#### ####---- ##------ --###--- ---###-- ##------ ----##-- ####---- -----### ###----- ##------ ---###-- --###--- ##------ ----##-- --###--- -------- -------- ##------ ----###- -###---- ##------ ----##-- ---##--- -------- -------- ######## -----### ###----- ##------ ----##-- ---##--- -------- -------- ######## ------## ##------ ##------

$50/080 $51/081 $52/082 $53/083 $54/084 $55/085 $56/086 $57/087 ######## -------- -------- --##-##- -##----- -------- ##----## -------- ######## --####-- -------- -####### -##----- -------- ###--### --####-- ------## -######- -------- -####### -##----- -------- -######- -######- ------## -######- -------- -####### -##----- -----### --####-- -##--##- ------## -######- -------- --#####- -##----- ----#### --####-- -##--##- ------## -######- ######## ---###-- -##----- ---###-- -######- -######- ------## --####-- ######## ----#--- -##----- ---##--- ###--### --####-- ------## -------- -------- -------- -##----- ---##--- ##----## --------

$58/088 $59/089 $5A/090 $5B/091 $5C/092 $5D/093 $5E/094 $5F/095 ---##--- -----##- ----#--- ---##--- ##------ ---##--- -------- ######## ---##--- -----##- ---###-- ---##--- ##------ ---##--- -------- -####### -##--##- -----##- --#####- ---##--- --##---- ---##--- ------## --###### -##--##- -----##- -####### ######## --##---- ---##--- --#####- ---##### ---##--- -----##- --#####- ######## ##------ ---##--- -###-##- ----#### ---##--- -----##- ---###-- ---##--- ##------ ---##--- --##-##- -----### --####-- -----##- ----#--- ---##--- --##---- ---##--- --##-##- ------## -------- -----##- -------- ---##--- --##---- ---##--- -------- -------#

$60/096 $61/097 $62/098 $63/099 $64/100 $65/101 $66/102 $67/103 -------- ####---- -------- ######## -------- ##------ ##--##-- ------## -------- ####---- -------- -------- -------- ##------ ##--##-- ------## -------- ####---- -------- -------- -------- ##------ --##--## ------## -------- ####---- -------- -------- -------- ##------ --##--## ------## -------- ####---- ######## -------- -------- ##------ ##--##-- ------## -------- ####---- ######## -------- -------- ##------ ##--##-- ------## -------- ####---- ######## -------- -------- ##------ --##--## ------## -------- ####---- ######## -------- ######## ##------ --##--## ------##

$68/104 $69/105 $6A/106 $6B/107 $6C/108 $6D/109 $6E/110 $6F/111 -------- ######## ------## ---##--- -------- ---##--- -------- -------- -------- #######- ------## ---##--- -------- ---##--- -------- -------- -------- ######-- ------## ---##--- -------- ---##--- -------- -------- -------- #####--- ------## ---##### -------- ---##### #####--- -------- ##--##-- ####---- ------## ---##### ----#### ---##### #####--- -------- ##--##-- ###----- ------## ---##--- ----#### -------- ---##--- -------- --##--## ##------ ------## ---##--- ----#### -------- ---##--- ######## --##--## #------- ------## ---##--- ----#### -------- ---##--- ########

$70/112 $71/113 $72/114 $73/115 $74/116 $75/117 $76/118 $77/119 -------- ---##--- -------- ---##--- ##------ ###----- -----### ######## -------- ---##--- -------- ---##--- ##------ ###----- -----### ######## -------- ---##--- -------- ---##--- ##------ ###----- -----### -------- ---##### ######## ######## #####--- ##------ ###----- -----### -------- ---##### ######## ######## #####--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### --------

$78/120 $79/121 $7A/122 $7B/123 $7C/124 $7D/125 $7E/126 $7F/127 ######## -------- ------## -------- ----#### ---##--- ####---- ####---- ######## -------- ------## -------- ----#### ---##--- ####---- ####---- ######## -------- ------## -------- ----#### ---##--- ####---- ####---- -------- -------- ------## -------- ----#### #####--- ####---- ####---- -------- -------- ------## ####---- -------- #####--- -------- ----#### -------- ######## ------## ####---- -------- -------- -------- ----#### -------- ######## ######## ####---- -------- -------- -------- ----#### -------- ######## ######## ####---- -------- -------- -------- ----####

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Upper Case/Graphics $80-$BF (128 - 191):

$80/128 $81/129 $82/130 $83/131 $84/132 $85/133 $86/134 $87/135 ##----## ###--### #-----## ##----## #----### #------# #------# ##----## #--##--# ##----## #--##--# #--##--# #--#--## #--##### #--##### #--##--# #--#---# #--##--# #--##--# #--##### #--##--# #--##### #--##### #--##### #--#---# #------# #-----## #--##### #--##--# #----### #----### #--#---# #--##### #--##--# #--##--# #--##### #--##--# #--##### #--##### #--##--# #--##--# #--##--# #--##--# #--##--# #--#--## #--##### #--##### #--##--# ##----## #--##--# #-----## ##----## #----### #------# #--##### ##----## ######## ######## ######## ######## ######## ######## ######## ########

$88/136 $89/137 $8A/138 $8B/139 $8C/140 $8D/141 $8E/142 $8F/143 #--##--# ##----## ###----# #--##--# #--##### #--###-- #--##--# ##----## #--##--# ###--### ####--## #--#--## #--##### #---#--- #---#--# #--##--# #--##--# ###--### ####--## #----### #--##### #------- #------# #--##--# #------# ###--### ####--## #---#### #--##### #--#-#-- #------# #--##--# #--##--# ###--### ####--## #----### #--##### #--###-- #--#---# #--##--# #--##--# ###--### #--#--## #--#--## #--##### #--###-- #--##--# #--##--# #--##--# ##----## ##---### #--##--# #------# #--###-- #--##--# ##----## ######## ######## ######## ######## ######## ######## ######## ########

$90/144 $91/145 $92/146 $93/147 $94/148 $95/149 $96/150 $97/151 #-----## ##----## #-----## ##----## #------# #--##--# #--##--# #--###-- #--##--# #--##--# #--##--# #--##--# ###--### #--##--# #--##--# #--###-- #--##--# #--##--# #--##--# #--##### ###--### #--##--# #--##--# #--###-- #-----## #--##--# #-----## ##----## ###--### #--##--# #--##--# #--#-#-- #--##### #--##--# #----### #####--# ###--### #--##--# #--##--# #------- #--##### ##----## #--#--## #--##--# ###--### #--##--# ##----## #---#--- #--##### ####---# #--##--# ##----## ###--### ##----## ###--### #--###-- ######## ######## ######## ######## ######## ######## ######## ########

$98/152 $99/153 $9A/154 $9B/155 $9C/156 $9D/157 $9E/158 $9F/159 #--##--# #--##--# #------# ##----## ####--## ##----## ######## ######## #--##--# #--##--# #####--# ##--#### ###-##-# ####--## ###--### ###-#### ##----## #--##--# ####--## ##--#### ##--#### ####--## ##----## ##--#### ###--### ##----## ###--### ##--#### #-----## ####--## #------# #------- ##----## ###--### ##--#### ##--#### ##--#### ####--## ###--### #------- #--##--# ###--### #--##### ##--#### #--###-# ####--## ###--### ##--#### #--##--# ###--### #------# ##----## ------## ##----## ###--### ###-#### ######## ######## ######## ######## ######## ######## ###--### ########

$A0/160 $A1/161 $A2/162 $A3/163 $A4/164 $A5/165 $A6/166 $A7/167 ######## ###--### #--##--# #--##--# ###--### #--###-# ##----## #####--# ######## ###--### #--##--# #--##--# ##-----# #--##--# #--##--# ####--## ######## ###--### #--##--# -------- #--##### ####--## ##----## ###--### ######## ###--### ######## #--##--# ##----## ###--### ##---### ######## ######## ######## ######## -------- #####--# ##--#### #--##--- ######## ######## ######## ######## #--##--# #-----## #--##--# #--##--# ######## ######## ###--### ######## #--##--# ###--### #-###--# ##------ ######## ######## ######## ######## ######## ######## ######## ######## ########

$A8/168 $A9/169 $AA/170 $AB/171 $AC/172 $AD/173 $AE/174 $AF/175 ####--## ##--#### ######## ######## ######## ######## ######## ######## ###--### ###--### #--##--# ###--### ######## ######## ######## ######-- ##--#### ####--## ##----## ###--### ######## ######## ######## #####--# ##--#### ####--## -------- #------# ######## #------# ######## ####--## ##--#### ####--## ##----## ###--### ######## ######## ######## ###--### ###--### ###--### #--##--# ###--### ###--### ######## ###--### ##--#### ####--## ##--#### ######## ######## ###--### ######## ###--### #--##### ######## ######## ######## ######## ##--#### ######## ######## ########

$B0/176 $B1/177 $B2/178 $B3/179 $B4/180 $B5/181 $B6/182 $B7/183 ##----## ###--### ##----## ##----## #####--# #------# ##----## #------# #--##--# ###--### #--##--# #--##--# ####---# #--##### #--##--# #--##--# #--#---# ##---### #####--# #####--# ###----# #-----## #--##### ####--## #---#--# ###--### ####--## ###---## #--##--# #####--# #-----## ###--### #--##--# ###--### ##--#### #####--# #------- #####--# #--##--# ###--### #--##--# ###--### #--##### #--##--# #####--# #--##--# #--##--# ###--### ##----## #------# #------# ##----## #####--# ##----## ##----## ###--### ######## ######## ######## ######## ######## ######## ######## ########

$B8/184 $B9/185 $BA/186 $BB/187 $BC/188 $BD/189 $BE/190 $BF/191 ##----## ##----## ######## ######## ####---# ######## #---#### ##----## #--##--# #--##--# ######## ######## ###--### ######## ###--### #--##--# #--##--# #--##--# ###--### ###--### ##--#### #------# ####--## #####--# ##----## ##-----# ######## ######## #--##### ######## #####--# ####--## #--##--# #####--# ######## ######## ##--#### #------# ####--## ###--### #--##--# #--##--# ###--### ###--### ###--### ######## ###--### ######## ##----## ##----## ######## ###--### ####---# ######## #---#### ###--### ######## ######## ######## ##--#### ######## ######## ######## ########

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Upper Case/Graphics $C0-$FF (192 - 255):

$C0/192 $C1/193 $C2/194 $C3/195 $C4/196 $C5/197 $C6/198 $C7/199 ######## ####-### ###--### ######## ######## ######## ######## ##--#### ######## ###---## ###--### ######## ######## -------- ######## ##--#### ######## ##-----# ###--### ######## -------- -------- ######## ##--#### -------- #------- ###--### -------- -------- ######## ######## ##--#### -------- #------- ###--### -------- ######## ######## -------- ##--#### ######## ###---## ###--### ######## ######## ######## -------- ##--#### ######## ##-----# ###--### ######## ######## ######## ######## ##--#### ######## ######## ###--### ######## ######## ######## ######## ##--####

$C8/200 $C9/201 $CA/202 $CB/203 $CC/204 $CD/205 $CE/206 $CF/207 ####--## ######## ###--### ###--### --###### --###### ######-- -------- ####--## ######## ###--### ###--### --###### ---##### #####--- -------- ####--## ######## ###---## ##---### --###### #---#### ####---# --###### ####--## ---##### ####---- ----#### --###### ##---### ###---## --###### ####--## ----#### #####--- ---##### --###### ###---## ##---### --###### ####--## ##---### ######## ######## --###### ####---# #---#### --###### ####--## ###--### ######## ######## -------- #####--- ---##### --###### ####--## ###--### ######## ######## -------- ######-- --###### --######

$D0/208 $D1/209 $D2/210 $D3/211 $D4/212 $D5/213 $D6/214 $D7/215 -------- ######## ######## ##--#--# #--##### ######## --####-- ######## -------- ##----## ######## #------- #--##### ######## ---##--- ##----## ######-- #------# ######## #------- #--##### ######## #------# #------# ######-- #------# ######## #------- #--##### #####--- ##----## #--##--# ######-- #------# ######## ##-----# #--##### ####---- ##----## #--##--# ######-- #------# -------- ###---## #--##### ###---## #------# #------# ######-- ##----## -------- ####-### #--##### ###--### ---##--- ##----## ######-- ######## ######## ######## #--##### ###--### --####-- ########

$D8/216 $D9/217 $DA/218 $DB/219 $DC/220 $DD/221 $DE/222 $DF/223 ###--### #####--# ####-### ###--### --###### ###--### ######## -------- ###--### #####--# ###---## ###--### --###### ###--### ######## #------- #--##--# #####--# ##-----# ###--### ##--#### ###--### ######-- ##------ #--##--# #####--# #------- -------- ##--#### ###--### ##-----# ###----- ###--### #####--# ##-----# -------- --###### ###--### #---#--# ####---- ###--### #####--# ###---## ###--### --###### ###--### ##--#--# #####--- ##----## #####--# ####-### ###--### ##--#### ###--### ##--#--# ######-- ######## #####--# ######## ###--### ##--#### ###--### ######## #######-

$E0/224 $E1/225 $E2/226 $E3/227 $E4/228 $E5/229 $E6/230 $E7/231 ######## ----#### ######## -------- ######## --###### --##--## ######-- ######## ----#### ######## ######## ######## --###### --##--## ######-- ######## ----#### ######## ######## ######## --###### ##--##-- ######-- ######## ----#### ######## ######## ######## --###### ##--##-- ######-- ######## ----#### -------- ######## ######## --###### --##--## ######-- ######## ----#### -------- ######## ######## --###### --##--## ######-- ######## ----#### -------- ######## ######## --###### ##--##-- ######-- ######## ----#### -------- ######## -------- --###### ##--##-- ######--

$E8/232 $E9/233 $EA/234 $EB/235 $EC/236 $ED/237 $EE/238 $EF/239 ######## -------- ######-- ###--### ######## ###--### ######## ######## ######## -------# ######-- ###--### ######## ###--### ######## ######## ######## ------## ######-- ###--### ######## ###--### ######## ######## ######## -----### ######-- ###----- ######## ###----- -----### ######## --##--## ----#### ######-- ###----- ####---- ###----- -----### ######## --##--## ---##### ######-- ###--### ####---- ######## ###--### ######## ##--##-- --###### ######-- ###--### ####---- ######## ###--### -------- ##--##-- -####### ######-- ###--### ####---- ######## ###--### --------

$F0/240 $F1/241 $F2/242 $F3/243 $F4/244 $F5/245 $F6/246 $F7/247 ######## ###--### ######## ###--### --###### ---##### #####--- -------- ######## ###--### ######## ###--### --###### ---##### #####--- -------- ######## ###--### ######## ###--### --###### ---##### #####--- ######## ###----- -------- -------- -----### --###### ---##### #####--- ######## ###----- -------- -------- -----### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ########

$F8/248 $F9/249 $FA/250 $FB/251 $FC/252 $FD/253 $FE/254 $FF/255

-------- ######## ######-- ######## ####---- ###--### ----#### ----#### -------- ######## ######-- ######## ####---- ###--### ----#### ----#### -------- ######## ######-- ######## ####---- ###--### ----#### ----#### ######## ######## ######-- ######## ####---- -----### ----#### ----#### ######## ######## ######-- ----#### ######## -----### ######## ####---- ######## -------- ######-- ----#### ######## ######## ######## ####---- ######## -------- -------- ----#### ######## ######## ######## ####---- ######## -------- -------- ----#### ######## ######## ######## ####----

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Lower Case/Upper Case $00-$3F (0 - 63):

$00/000 $01/001 $02/002 $03/003 $04/004 $05/005 $06/006 $07/007 --####-- -------- -------- -------- -------- -------- -------- -------- -##--##- -------- -##----- -------- -----##- -------- ----###- -------- -##-###- --####-- -##----- --####-- -----##- --####-- ---##--- --#####- -##-###- -----##- -#####-- -##----- --#####- -##--##- --#####- -##--##- -##----- --#####- -##--##- -##----- -##--##- -######- ---##--- -##--##- -##---#- -##--##- -##--##- -##----- -##--##- -##----- ---##--- --#####- --####-- --#####- -#####-- --####-- --#####- --####-- ---##--- -----##- -------- -------- -------- -------- -------- -------- -------- -#####--

$08/008 $09/009 $0A/010 $0B/011 $0C/012 $0D/013 $0E/014 $0F/015


-##----- ---##--- -----##- -##----- --###--- -------- -------- -------- -##----- -------- -------- -##----- ---##--- -##--##- -#####-- --####-- -#####-- --###--- -----##- -##-##-- ---##--- -####### -##--##- -##--##- -##--##- ---##--- -----##- -####--- ---##--- -####### -##--##- -##--##- -##--##- ---##--- -----##- -##-##-- ---##--- -##-#-## -##--##- -##--##- -##--##- --####-- -----##- -##--##- --####-- -##---## -##--##- --####-- -------- -------- --####-- -------- -------- -------- -------- --------

$10/016 $11/017 $12/018 $13/019 $14/020 $15/021 $16/022 $17/023


-------- -------- -------- -------- ---##--- -------- -------- -------- -#####-- --#####- -#####-- --#####- -######- -##--##- -##--##- -##---## -##--##- -##--##- -##--##- -##----- ---##--- -##--##- -##--##- -##-#-## -##--##- -##--##- -##----- --####-- ---##--- -##--##- -##--##- -####### -#####-- --#####- -##----- -----##- ---##--- -##--##- --####-- --#####- -##----- -----##- -##----- -#####-- ----###- --#####- ---##--- --##-##- -##----- -----##- -------- -------- -------- -------- -------- --------

$18/024 $19/025 $1A/026 $1B/027 $1C/028 $1D/029 $1E/030 $1F/031 -------- -------- -------- --####-- ----##-- --####-- -------- -------- -------- -------- -------- --##---- ---#--#- ----##-- ---##--- ---#---- -##--##- -##--##- -######- --##---- --##---- ----##-- --####-- --##---- --####-- -##--##- ----##-- --##---- -#####-- ----##-- -######- -####### ---##--- -##--##- ---##--- --##---- --##---- ----##-- ---##--- -####### --####-- --#####- --##---- --##---- -##---#- ----##-- ---##--- --##---- -##--##- ----##-- -######- --####-- ######-- --####-- ---##--- ---#---- -------- -####--- -------- -------- -------- -------- ---##--- --------

$20/032 $21/033 $22/034 $23/035 $24/036 $25/037 $26/038 $27/039 -------- ---##--- -##--##- -##--##- ---##--- -##---#- --####-- -----##- -------- ---##--- -##--##- -##--##- --#####- -##--##- -##--##- ----##-- -------- ---##--- -##--##- ######## -##----- ----##-- --####-- ---##--- -------- ---##--- -------- -##--##- --####-- ---##--- --###--- -------- -------- -------- -------- ######## -----##- --##---- -##--### -------- -------- -------- -------- -##--##- -#####-- -##--##- -##--##- -------- -------- ---##--- -------- -##--##- ---##--- -#---##- --###### --------


$28/040 $29/041 $2A/042 $2B/043 $2C/044 $2D/045 $2E/046 $2F/047 ----##-- --##---- -------- -------- -------- -------- -------- -------- ---##--- ---##--- -##--##- ---##--- -------- -------- -------- ------## --##---- ----##-- --####-- ---##--- -------- -------- -------- -----##- --##---- ----##-- ######## -######- -------- -######- -------- ----##-- --##---- ----##-- --####-- ---##--- -------- -------- -------- ---##--- ---##--- ---##--- -##--##- ---##--- ---##--- -------- ---##--- --##---- ----##-- --##---- -------- -------- ---##--- -------- ---##--- -##----- -------- -------- -------- -------- --##---- -------- -------- --------

$30/048 $31/049 $32/050 $33/051 $34/052 $35/053 $36/054 $37/055 --####-- ---##--- --####-- --####-- -----##- -######- --####-- -######- -##--##- ---##--- -##--##- -##--##- ----###- -##----- -##--##- -##--##- -##-###- --###--- -----##- -----##- ---####- -#####-- -##----- ----##-- -###-##- ---##--- ----##-- ---###-- -##--##- -----##- -#####-- ---##--- -##--##- ---##--- --##---- -----##- -####### -----##- -##--##- ---##--- -##--##- ---##--- -##----- -##--##- -----##- -##--##- -##--##- ---##--- --####-- -######- -######- --####-- -----##- --####-- --####-- ---##---


$38/056 $39/057 $3A/058 $3B/059 $3C/060 $3D/061 $3E/062 $3F/063 --####-- --####-- -------- -------- ----###- -------- -###---- --####-- -##--##- -##--##- -------- -------- ---##--- -------- ---##--- -##--##- -##--##- -##--##- ---##--- ---##--- --##---- -######- ----##-- -----##- --####-- --#####- -------- -------- -##----- -------- -----##- ----##-- -##--##- -----##- -------- -------- --##---- -######- ----##-- ---##--- -##--##- -##--##- ---##--- ---##--- ---##--- -------- ---##--- -------- --####-- --####-- -------- ---##--- ----###- -------- -###---- ---##--- -------- -------- -------- --##---- -------- -------- -------- --------

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Lower Case/Upper Case $40-$7F (64 - 127):

$40/064 $41/065 $42/066 $43/067 $44/068 $45/069 $46/070 $47/071 -------- ---##--- -#####-- --####-- -####--- -######- -######- --####-- -------- --####-- -##--##- -##--##- -##-##-- -##----- -##----- -##--##- -------- -##--##- -##--##- -##----- -##--##- -##----- -##----- -##----- ######## -######- -#####-- -##----- -##--##- -####--- -####--- -##-###- ######## -##--##- -##--##- -##----- -##--##- -##----- -##----- -##--##- -------- -##--##- -##--##- -##--##- -##-##-- -##----- -##----- -##--##- -------- -##--##- -#####-- --####-- -####--- -######- -##----- --####--


$48/072 $49/073 $4A/074 $4B/075 $4C/076 $4D/077 $4E/078 $4F/079 -##--##- --####-- ---####- -##--##- -##----- -##---## -##--##- --####-- -##--##- ---##--- ----##-- -##-##-- -##----- -###-### -###-##- -##--##- -##--##- ---##--- ----##-- -####--- -##----- -####### -######- -##--##- -######- ---##--- ----##-- -###---- -##----- -##-#-## -######- -##--##- -##--##- ---##--- ----##-- -####--- -##----- -##---## -##-###- -##--##- -##--##- ---##--- -##-##-- -##-##-- -##----- -##---## -##--##- -##--##- -##--##- --####-- --###--- -##--##- -######- -##---## -##--##- --####--


$50/080 $51/081 $52/082 $53/083 $54/084 $55/085 $56/086 $57/087 -#####-- --####-- -#####-- --####-- -######- -##--##- -##--##- -##---## -##--##- -##--##- -##--##- -##--##- ---##--- -##--##- -##--##- -##---## -##--##- -##--##- -##--##- -##----- ---##--- -##--##- -##--##- -##---## -#####-- -##--##- -#####-- --####-- ---##--- -##--##- -##--##- -##-#-## -##----- -##--##- -####--- -----##- ---##--- -##--##- -##--##- -####### -##----- --####-- -##-##-- -##--##- ---##--- -##--##- --####-- -###-### -##----- ----###- -##--##- --####-- ---##--- --####-- ---##--- -##---##


$58/088 $59/089 $5A/090 $5B/091 $5C/092 $5D/093 $5E/094 $5F/095 -##--##- -##--##- -######- ---##--- ##------ ---##--- --##--## --##--## -##--##- -##--##- -----##- ---##--- ##------ ---##--- --##--## #--##--# --####-- -##--##- ----##-- ---##--- --##---- ---##--- ##--##-- ##--##-- ---##--- --####-- ---##--- ######## --##---- ---##--- ##--##-- -##--##- --####-- ---##--- --##---- ######## ##------ ---##--- --##--## --##--## -##--##- ---##--- -##----- ---##--- ##------ ---##--- --##--## #--##--# -##--##- ---##--- -######- ---##--- --##---- ---##--- ##--##-- ##--##-- -------- -------- -------- ---##--- --##---- ---##--- ##--##-- -##--##-

$60/096 $61/097 $62/098 $63/099 $64/100 $65/101 $66/102 $67/103 -------- ####---- -------- ######## -------- ##------ ##--##-- ------## -------- ####---- -------- -------- -------- ##------ ##--##-- ------## -------- ####---- -------- -------- -------- ##------ --##--## ------## -------- ####---- -------- -------- -------- ##------ --##--## ------## -------- ####---- ######## -------- -------- ##------ ##--##-- ------## -------- ####---- ######## -------- -------- ##------ ##--##-- ------## -------- ####---- ######## -------- -------- ##------ --##--## ------## -------- ####---- ######## -------- ######## ##------ --##--## ------##

$68/104 $69/105 $6A/106 $6B/107 $6C/108 $6D/109 $6E/110 $6F/111 -------- ##--##-- ------## ---##--- -------- ---##--- -------- -------- -------- #--##--# ------## ---##--- -------- ---##--- -------- -------- -------- --##--## ------## ---##--- -------- ---##--- -------- -------- -------- -##--##- ------## ---##### -------- ---##### #####--- -------- ##--##-- ##--##-- ------## ---##### ----#### ---##### #####--- -------- ##--##-- #--##--# ------## ---##--- ----#### -------- ---##--- -------- --##--## --##--## ------## ---##--- ----#### -------- ---##--- ######## --##--## -##--##- ------## ---##--- ----#### -------- ---##--- ########

$70/112 $71/113 $72/114 $73/115 $74/116 $75/117 $76/118 $77/119 -------- ---##--- -------- ---##--- ##------ ###----- -----### ######## -------- ---##--- -------- ---##--- ##------ ###----- -----### ######## -------- ---##--- -------- ---##--- ##------ ###----- -----### -------- ---##### ######## ######## #####--- ##------ ###----- -----### -------- ---##### ######## ######## #####--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### -------- ---##--- -------- ---##--- ---##--- ##------ ###----- -----### --------

$78/120 $79/121 $7A/122 $7B/123 $7C/124 $7D/125 $7E/126 $7F/127 ######## -------- -------# -------- ----#### ---##--- ####---- ####---- ######## -------- ------## -------- ----#### ---##--- ####---- ####---- ######## -------- -----##- -------- ----#### ---##--- ####---- ####---- -------- -------- -##-##-- -------- ----#### #####--- ####---- ####---- -------- -------- -####--- ####---- -------- #####--- -------- ----#### -------- ######## -###---- ####---- -------- -------- -------- ----#### -------- ######## -##----- ####---- -------- -------- -------- ----#### -------- ######## -------- ####---- -------- -------- -------- ----####

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Lower Case/Upper Case $80-$BF (128 - 191):

$80/128 $81/129 $82/130 $83/131 $84/132 $85/133 $86/134 $87/135 ##----## ######## ######## ######## ######## ######## ######## ######## #--##--# ######## #--##### ######## #####--# ######## ####---# ######## #--#---# ##----## #--##### ##----## #####--# ##----## ###--### ##-----# #--#---# #####--# #-----## #--##### ##-----# #--##--# ##-----# #--##--# #--##### ##-----# #--##--# #--##### #--##--# #------# ###--### #--##--# #--##--# #--##--# #--##--# #--##### #--##--# #--##### ###--### ##-----# ##----## ##-----# #-----## ##----## ##-----# ##----## ###--### #####--# ######## ######## ######## ######## ######## ######## ######## #-----##

$88/136 $89/137 $8A/138 $8B/139 $8C/140 $8D/141 $8E/142 $8F/143 ######## ######## ######## ######## ######## ######## ######## ######## #--##### ###--### #####--# #--##### ##---### ######## ######## ######## #--##### ######## ######## #--##### ###--### #--##--# #-----## ##----## #-----## ##---### #####--# #--#--## ###--### #------- #--##--# #--##--# #--##--# ###--### #####--# #----### ###--### #------- #--##--# #--##--# #--##--# ###--### #####--# #--#--## ###--### #--#-#-- #--##--# #--##--# #--##--# ##----## #####--# #--##--# ##----## #--###-- #--##--# ##----## ######## ######## ##----## ######## ######## ######## ######## ########

$90/144 $91/145 $92/146 $93/147 $94/148 $95/149 $96/150 $97/151 ######## ######## ######## ######## ######## ######## ######## ######## ######## ######## ######## ######## ###--### ######## ######## ######## #-----## ##-----# #-----## ##-----# #------# #--##--# #--##--# #--###-- #--##--# #--##--# #--##--# #--##### ###--### #--##--# #--##--# #--#-#-- #--##--# #--##--# #--##### ##----## ###--### #--##--# #--##--# #------- #-----## ##-----# #--##### #####--# ###--### #--##--# ##----## ##-----# #--##### #####--# #--##### #-----## ####---# ##-----# ###--### ##--#--# #--##### #####--# ######## ######## ######## ######## ######## ########

$98/152 $99/153 $9A/154 $9B/155 $9C/156 $9D/157 $9E/158 $9F/159 ######## ######## ######## ##----## ####--## ##----## ######## ######## ######## ######## ######## ##--#### ###-##-# ####--## ###--### ###-#### #--##--# #--##--# #------# ##--#### ##--#### ####--## ##----## ##--#### ##----## #--##--# ####--## ##--#### #-----## ####--## #------# #------- ###--### #--##--# ###--### ##--#### ##--#### ####--## ###--### #------- ##----## ##-----# ##--#### ##--#### #--###-# ####--## ###--### ##--#### #--##--# ####--## #------# ##----## ------## ##----## ###--### ###-#### ######## #----### ######## ######## ######## ######## ###--### ########

$A0/160 $A1/161 $A2/162 $A3/163 $A4/164 $A5/165 $A6/166 $A7/167 ######## ###--### #--##--# #--##--# ###--### #--###-# ##----## #####--# ######## ###--### #--##--# #--##--# ##-----# #--##--# #--##--# ####--## ######## ###--### #--##--# -------- #--##### ####--## ##----## ###--### ######## ###--### ######## #--##--# ##----## ###--### ##---### ######## ######## ######## ######## -------- #####--# ##--#### #--##--- ######## ######## ######## ######## #--##--# #-----## #--##--# #--##--# ######## ######## ###--### ######## #--##--# ###--### #-###--# ##------ ######## ######## ######## ######## ######## ######## ######## ######## ########

$A8/168 $A9/169 $AA/170 $AB/171 $AC/172 $AD/173 $AE/174 $AF/175 ####--## ##--#### ######## ######## ######## ######## ######## ######## ###--### ###--### #--##--# ###--### ######## ######## ######## ######-- ##--#### ####--## ##----## ###--### ######## ######## ######## #####--# ##--#### ####--## -------- #------# ######## #------# ######## ####--## ##--#### ####--## ##----## ###--### ######## ######## ######## ###--### ###--### ###--### #--##--# ###--### ###--### ######## ###--### ##--#### ####--## ##--#### ######## ######## ###--### ######## ###--### #--##### ######## ######## ######## ######## ##--#### ######## ######## ########

$B0/176 $B1/177 $B2/178 $B3/179 $B4/180 $B5/181 $B6/182 $B7/183 ##----## ###--### ##----## ##----## #####--# #------# ##----## #------# #--##--# ###--### #--##--# #--##--# ####---# #--##### #--##--# #--##--# #--#---# ##---### #####--# #####--# ###----# #-----## #--##### ####--## #---#--# ###--### ####--## ###---## #--##--# #####--# #-----## ###--### #--##--# ###--### ##--#### #####--# #------- #####--# #--##--# ###--### #--##--# ###--### #--##### #--##--# #####--# #--##--# #--##--# ###--### ##----## #------# #------# ##----## #####--# ##----## ##----## ###--### ######## ######## ######## ######## ######## ######## ######## ########

$B8/184 $B9/185 $BA/186 $BB/187 $BC/188 $BD/189 $BE/190 $BF/191 ##----## ##----## ######## ######## ####---# ######## #---#### ##----## #--##--# #--##--# ######## ######## ###--### ######## ###--### #--##--# #--##--# #--##--# ###--### ###--### ##--#### #------# ####--## #####--# ##----## ##-----# ######## ######## #--##### ######## #####--# ####--## #--##--# #####--# ######## ######## ##--#### #------# ####--## ###--### #--##--# #--##--# ###--### ###--### ###--### ######## ###--### ######## ##----## ##----## ######## ###--### ####---# ######## #---#### ###--### ######## ######## ######## ##--#### ######## ######## ######## ########

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

Lower Case/Upper Case $C0-$FF (192 - 255):

$C0/192 $C1/193 $C2/194 $C3/195 $C4/196 $C5/197 $C6/198 $C7/199 ######## ###--### #-----## ##----## #----### #------# #------# ##----## ######## ##----## #--##--# #--##--# #--#--## #--##### #--##### #--##--# ######## #--##--# #--##--# #--##### #--##--# #--##### #--##### #--##### -------- #------# #-----## #--##### #--##--# #----### #----### #--#---# -------- #--##--# #--##--# #--##### #--##--# #--##### #--##### #--##--# ######## #--##--# #--##--# #--##--# #--#--## #--##### #--##### #--##--# ######## #--##--# #-----## ##----## #----### #------# #--##### ##----## ######## ######## ######## ######## ######## ######## ######## ########

$C8/200 $C9/201 $CA/202 $CB/203 $CC/204 $CD/205 $CE/206 $CF/207 #--##--# ##----## ###----# #--##--# #--##### #--###-- #--##--# ##----## #--##--# ###--### ####--## #--#--## #--##### #---#--- #---#--# #--##--# #--##--# ###--### ####--## #----### #--##### #------- #------# #--##--# #------# ###--### ####--## #---#### #--##### #--#-#-- #------# #--##--# #--##--# ###--### ####--## #----### #--##### #--###-- #--#---# #--##--# #--##--# ###--### #--#--## #--#--## #--##### #--###-- #--##--# #--##--# #--##--# ##----## ##---### #--##--# #------# #--###-- #--##--# ##----## ######## ######## ######## ######## ######## ######## ######## ########

$D0/208 $D1/209 $D2/210 $D3/211 $D4/212 $D5/213 $D6/214 $D7/215 #-----## ##----## #-----## ##----## #------# #--##--# #--##--# #--###-- #--##--# #--##--# #--##--# #--##--# ###--### #--##--# #--##--# #--###-- #--##--# #--##--# #--##--# #--##### ###--### #--##--# #--##--# #--###-- #-----## #--##--# #-----## ##----## ###--### #--##--# #--##--# #--#-#-- #--##### #--##--# #----### #####--# ###--### #--##--# #--##--# #------- #--##### ##----## #--#--## #--##--# ###--### #--##--# ##----## #---#--- #--##### ####---# #--##--# ##----## ###--### ##----## ###--### #--###-- ######## ######## ######## ######## ######## ######## ######## ########

$D8/216 $D9/217 $DA/218 $DB/219 $DC/220 $DD/221 $DE/222 $DF/223 #--##--# #--##--# #------# ###--### --###### ###--### ##--##-- ##--##-- #--##--# #--##--# #####--# ###--### --###### ###--### ##--##-- -##--##- ##----## #--##--# ####--## ###--### ##--#### ###--### --##--## --##--## ###--### ##----## ###--### -------- ##--#### ###--### --##--## #--##--# ##----## ###--### ##--#### -------- --###### ###--### ##--##-- ##--##-- #--##--# ###--### #--##### ###--### --###### ###--### ##--##-- -##--##- #--##--# ###--### #------# ###--### ##--#### ###--### --##--## --##--## ######## ######## ######## ###--### ##--#### ###--### --##--## #--##--#

$E0/224 $E1/225 $E2/226 $E3/227 $E4/228 $E5/229 $E6/230 $E7/231 ######## ----#### ######## -------- ######## --###### --##--## ######-- ######## ----#### ######## ######## ######## --###### --##--## ######-- ######## ----#### ######## ######## ######## --###### ##--##-- ######-- ######## ----#### ######## ######## ######## --###### ##--##-- ######-- ######## ----#### -------- ######## ######## --###### --##--## ######-- ######## ----#### -------- ######## ######## --###### --##--## ######-- ######## ----#### -------- ######## ######## --###### ##--##-- ######-- ######## ----#### -------- ######## -------- --###### ##--##-- ######--

$E8/232 $E9/233 $EA/234 $EB/235 $EC/236 $ED/237 $EE/238 $EF/239 ######## --##--## ######-- ###--### ######## ###--### ######## ######## ######## -##--##- ######-- ###--### ######## ###--### ######## ######## ######## ##--##-- ######-- ###--### ######## ###--### ######## ######## ######## #--##--# ######-- ###----- ######## ###----- -----### ######## --##--## --##--## ######-- ###----- ####---- ###----- -----### ######## --##--## -##--##- ######-- ###--### ####---- ######## ###--### ######## ##--##-- ##--##-- ######-- ###--### ####---- ######## ###--### -------- ##--##-- #--##--# ######-- ###--### ####---- ######## ###--### --------

$F0/240 $F1/241 $F2/242 $F3/243 $F4/244 $F5/245 $F6/246 $F7/247 ######## ###--### ######## ###--### --###### ---##### #####--- -------- ######## ###--### ######## ###--### --###### ---##### #####--- -------- ######## ###--### ######## ###--### --###### ---##### #####--- ######## ###----- -------- -------- -----### --###### ---##### #####--- ######## ###----- -------- -------- -----### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ######## ###--### ######## ###--### ###--### --###### ---##### #####--- ########

$F8/248 $F9/249 $FA/250 $FB/251 $FC/252 $FD/253 $FE/254 $FF/255 -------- ######## #######- ######## ####---- ###--### ----#### ----#### -------- ######## ######-- ######## ####---- ###--### ----#### ----#### -------- ######## #####--# ######## ####---- ###--### ----#### ----#### ######## ######## #--#--## ######## ####---- -----### ----#### ----#### ######## ######## #----### ----#### ######## -----### ######## ####---- ######## -------- #---#### ----#### ######## ######## ######## ####---- ######## -------- #--##### ----#### ######## ######## ######## ####---- ######## -------- ######## ----#### ######## ######## ######## ####----

Upper Case/Graphics: Lower Case/Upper Case:

Chars $00-$3F (0 - 63) Chars $00-$3F (0 - 63) Chars $40-$7F (64 - 127) Chars $40-$7F (64 - 127) Chars $80-$BF (128 - 191) Chars $80-$BF (128 - 191) Chars $C0-$FF (192 - 255) Chars $C0-$FF (192 - 255)

+------------------------------------------------------------------------ | | 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

+----------+---------------------------------------------------+ | 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

+----------+---------------------------------------------------+ | 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

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 $07-$08/7-8: Temporary Integer during OR/AND

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 $07-$08/7-8: Temporary Integer during OR/AND

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

Kernal-Reference:

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

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

Kernal-Reference:

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

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

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

Kernal-Reference:

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

$0D/13: Data type Flag

$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

$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

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

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

Kernal-Reference:

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

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

Kernal-Reference:

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

$13/19: File number of current Input Device

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

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

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 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

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

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

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

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

Kernal-Reference:

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

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

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 $61/97: FAC Exponent

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

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

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

Kernal-Reference:

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

$68/104: Bit Overflow Area during normalisation Routine

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 $69/105: AFAC Exponent

Kernal-Reference:

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

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

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

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

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

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

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

+-------+---------------------------------+ | 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

Kernal-Reference:

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

$92/146: Timing Constant for Tape

Kernal-Reference:

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

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

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

Kernal-Reference:

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

$95/149: Buffered Character for Serial Bus

Kernal-Reference:

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

$96/150: Cassette Sync number

Kernal-Reference:

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

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

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

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)

Kernal-Reference:

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

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

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

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

Kernal-Reference:

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

$9D/157: Flag: $00 = Program mode: Suppress Error Messages $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 $9E/158: Tape Error log pass 1

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kernal-Reference:

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

$B9/185: Current File - Secondary Address

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)

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

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

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

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

Kernal-Reference:

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

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

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 $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

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

Kernal-Reference:

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

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

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

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

Kernal-Reference:

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

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

Kernal-Reference:

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

$CE/206: Character under Cursor while Cursor Inverted

Kernal-Reference:

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

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

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

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

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

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

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

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

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

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

Kernal-Reference:

STA $0285 : $FE21

$0286/646: Current Character Color code

Kernal-Reference:

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

$0287/647: Background Color under Cursor

Kernal-Reference:

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

$0288/648: High Byte of Screen Memory Address

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

Default Value is $0A

Kernal-Reference:

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

$028A/650: Flag: Repeat keys:

$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

Default Value is $04

Kernal-Reference:

DEC $028B : $EB17

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

Default Value is $10

Kernal-Reference:

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

$028D/653: Flag: Shift Keys

+-------+--------------------------------------------------------+ | 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

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

$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

$00 = Disabled (Default)

Kernal-Reference:

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

$0293/659: RS232 Pseudo 6551 control Register Image

Kernal-Reference:

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

$0294/660: RS232 Pseudo 6551 command Register Image

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

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

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

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

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

Kernal-Reference:

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

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

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

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

Kernal-Reference:

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

$02A3/675: Temporary storage during Tape READ

Kernal-Reference:

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

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

Kernal-Reference:

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

$02A5/677: Temporary for Line Index

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

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

Kernal-Reference:

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

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

Kernal-Reference:

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

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

Kernal-Reference:

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

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

Kernal-Reference:

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

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

Kernal-Reference:

STA $0310 : $E3C3

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

Kernal-Reference:

STA $0311 : $E3CA

STY $0312 : $E3CD

$0313/787: Unused

$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 | $B391/45969 Convert Integer in (AC/YR) to Flpt | $B39E/45982 Evaluate | $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 &lt;str$&gt; | $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 &lt;chr$&gt; | $B700/46848 Evaluate &lt;left$&gt; | $B72C/46892 Evaluate &lt;right$&gt; | $B737/46903 Evaluate &lt;mid$&gt; | $B761/46945 Pull String Parameters | $B77C/46972 Evaluate | $B782/46978 Exit String Mode | $B78B/46987 Evaluate | $B79B/47003 Evaluate Text to 1 Byte in XR | $B7AD/47021 Evaluate | $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 | $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 | $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 | $BC58/48216 Evaluate | $BC5B/48219 Compare FAC#1 With Memory | $BC9B/48283 Convert FAC#1 to Integer | $BCCC/48332 Evaluate | $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 | $BF7B/49019 Evaluate | $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 | +------------------------------------------------------------------------

+------------------------------------------------------------------------ | | 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 | $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 | $E26B/57963 Evaluate | $E2B4/58036 Evaluate | $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 | $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 | $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

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

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

$A004/40964: 'CBMBASIC'-Identifier

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

$A00C/40972: BASIC Command Vectors - 1

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

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

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

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

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

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

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

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

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

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

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

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

A435: A2 10 LDX #$10

$A437/42039: Error Routine

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

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

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

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

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

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

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

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

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

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]

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]

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

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]

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

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]

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

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

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

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

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]

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]

Jump from $A6D1, $A7AE:

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

$A82F/43055: Perform [end]

A82F: B0 01 BCS $A832 ; Perform Break

$A831/43057: Perform Break

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]

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]

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]

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]

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]

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]

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

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]

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]

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]

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

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]

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

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

Jump from $A9C2:

A9D6: 4C D0 BB JMP $BBD0 ; Store FAC#1 in Memory

$A9D9/43481: Assign String

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$

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

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 &lt;str$&gt; 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#]

AA80: 20 86 AA JSR $AA86 ; Perform [cmd] AA83: 4C B5 AB JMP $ABB5 ; Perform [input#]

$AA86/43654: Perform [cmd]

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

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]

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

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

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

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(

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

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

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

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]

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#]

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]

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

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

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]

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

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

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]

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

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

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

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

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

AEA8: 82 49 0F DA A1

$AEAD/44717: Continue Expression

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

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 ')'

Jump from $B20B, $B3C6, $B761:

AEF7: A9 29 LDA #$29 AEF9: 2C .BYTE $2C

$AEFA/44794: Test '('

Jump from $AEF1, $AFB1, $B3B9:

AEFA: A9 28 LDA #$28 AEFC: 2C .BYTE $2C

$AEFD/44797: Test ','

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

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

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

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

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

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 &lt;str$&gt;

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

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

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

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

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

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]

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 <, =, >

B016: 20 90 AD JSR $AD90 ; Confirm Result B019: B0 13 BCS $B02E ; String Comparison

$B01B/45083: Numeric Comparison

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

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

$B07E/45182: Perform [dim]

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

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

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?

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

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

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

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

B1A5: 90 80 00 00 00

$B1AA/45482: FAC#1 to Integer in A/Y

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

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

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

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

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

Jump from $B25C, $B308:

B245: A2 12 LDX #$12 B247: 2C .BYTE $2C

$B248/45640: ?ILLEGAL QUANTITY

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

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

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

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

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

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

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

$B39E/45982: Evaluate

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

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

Jump from $B413:

B3AE: A2 1B LDX #$1B B3B0: 4C 37 A4 JMP $A437 ; Error Routine

$B3B3/46003: Perform [def fn]

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

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]

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 &lt;str$&gt;

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

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 &lt;str$&gt; 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

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

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

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

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

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

⚠️ **GitHub.com Fallback** ⚠️