s$$$$$$s All_About_Your_64-Online Help V0.64 s$$$$$$p $$$S S$$ (c) by Ninja/The Dreams in 1995-2005 $$$S S$$ $$$S S$P HQ - [http://www.the-dreams.de] $$$S S$$ $$$$$$l $$$S S$$ $$$$ $$l 6510 instruction set & Infos $$$S S$$ $$$P $$l 6510 illegal instruction set Y$$$$$$$P 65816 extended instruction set d$$$b VIC-Registers & Infos s$$$$$$b d$$$ $$b SID-Registers & Infos $$$$ $$$$ $$$ CIA-Registers & Infos $$$$sss $$$&%%&$$ $$$$""' $$$$ $$ Zeropage $$$$ Y$$$ SP BASIC-ROM-Listing Y$$$$$$$P Kernal-ROM-Listing o$$$$$Ss s$$ $s S$$S Hardware Expansions $$$$ $$$ S$$$ $$$ $$ $$ S$$s Memory-Maps of different Programs $$$ "" $$ $$ Format-Descriptions $$$ $$ sS$$$$$$P Y$$ $P +------------------------------------------------------------------------- | | 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 | $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 | $B700/46848 Evaluate | $B72C/46892 Evaluate | $B737/46903 Evaluate | $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 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 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 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 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