Table 9. Detailed Instruction Operation ADDRESS MODE CYCLE /VP /ML VDA VPA ADDRESS BUS DATA BUS R/W 1 Immediate -- # (LDY,CPY,CPX,LDX,ORA,AND,EOR,ADC,BIT,LDA,CMP,SBC,REP,SEP) (14 Op Codes) (2 and 3 bytes) (2 and 3 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 IDL 1 2a 1 1 0 1 PBR,PC+2 IDH 1 2a Absolute -- a (BIT,STY,STZ,LDY,CPY,CPX,STX,LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (16 Op Codes) (3 bytes) (4 and 5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 1 0 DBR,AA Data Low 1/0 (1) 4a 1 1 1 0 DBR,AA+1 Data High 1/0 2b Absolute (R-M-W) -- a (ASL,ROL,LSR,ROR,DEC,INC,TSB,TRB) (8 Op Codes) (3 bytes) (6 and 8 cycles) 1 1 1 1 1 PBA,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 0 1 0 DBR,AA Data Low 1 (1) 4a 1 0 1 0 DBR,AA+1 Data High 1 (3) 5 1 0 0 0 DBR,AA+2 IO 1 (1) 6a 1 0 1 0 DBR,AA+3 Data Hiqh 0 6 1 0 1 0 DBR,AA Data Low 0 2c Absolute(JUMP) -- a (JMP)(4C) (1 Op Code) (3 bytes) (3 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 NEW PCL 1 3 1 1 0 1 PBR,PC+2 NEW PCH 1 1 1 1 1 1 PBR,NEWPC New Op Code 1 2d Absolute (Jump to subroutine) -- a (JSR) (1 Op Code) (3 bytes) (6 cycles) (different order from N6502) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBA,PC+1 NEW FCC 1 3 1 1 0 1 PBR,PC+2 NEW PCH 1 4 1 1 0 0 PBR,PC+2 IO 1 5 1 1 1 0 0,S PCH 0 6 1 1 1 0 0,S-1 PCL 0 1 1 1 1 1 PBA,NEWPC New Op Code 1 3a Absolute Long -- al (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (4 bytes) (5 and 6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 0 1 PBR,PC+3 AAB 1 5 1 1 1 0 AAB,AA Data Low 1/0 (1) 5a 1 1 1 0 AAB,AA+1 Data High 1/0 3b Absolute Long (JUMP) -- al (JMP) (1 Op Code) (4 bytes) (4 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 NEW PCL 1 3 1 1 0 1 PBR,PC+2 NEW PCH 1 4 1 1 0 1 PBR,PC+3 NEW BR 1 1 1 1 1 1 NEW PBR,PC New Op Code 1 3c Absolute Long (Jump to Subroutine Long) -- al (JSL) (1 Op Code) (4 bytes) (7 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 NEW PCL 1 3 1 1 0 1 PBR,PC+2 NEW PCH 1 4 1 1 1 0 0,S PBR 0 5 1 1 0 0 0,S IO 1 6 1 1 0 1 PBR,PC+3 NEW PBR 1 7 1 1 1 0 0,S-1 PCH 0 8 1 1 1 0 0,S-2 FCL 0 1 1 1 1 1 NEW PBR,PC New Op Code 1 4a Direct -- d (BIT,STZ,STY,LDY,CPY,CPX,STX,LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (16 Op Codes) (2 bytes) (3,4 and 5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+2 IO 1 3 1 1 1 0 0,D+DO Data Low 1/0 (1) 3a 1 1 1 0 0,D+DO+1 Data High 1/0 4b Direct (R-M-W) -- d (ASL,ROL,LSR,ROR,DEC,INC,TSB,TRB) (8 Op Codes) (2 bytes) (5,6,7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 3a 1 1 0 0 PBR,PC+1 IO 1 3 1 0 1 0 0,D+DO Data Low 1 (1) 3a 1 0 1 0 0,D+DO+1 Data High 1 (3) 4 1 0 0 0 0,D+DO+1 IO 1 (1) 5a 1 0 1 0 0,D+D0+1 Data High 0 5 1 0 1 0 0,D+DO Data Low 0 5 Accumurator -- A (ASL,INC,ROL,DEC,LSR,ROR) (6 Op Codes) (1 byte) (2 cycles) 1 1 1 1 1 PBR,PC Op COde 1 2 1 1 0 0 PBR,PC+1 IO 1 6a Implied -- i (DEY,INY,INX,DEX,NOP,XCE,TYA,TAY,TXA,TXS,TAX,TSX,TCS,TSC,TCD,TDC, TXY,TYX,CLC,SEC,CLI,SEI,CLV,CLD,SED) (25 Op Codes) (1 byte) (2 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 *6b Implied -- i (XBA) (1 Op Code) (1 byte) (3 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 ADDRESS MODE CYCLE /VP /ML VDA VPA RDY ADDRESS BUS DATA BUS R/W 6c Wait for Interrupt (WAI) (1 Op Code) (1 byte) (3 cycles) 1 1 1 1 1 1 PBR,PC Op Code 1 (9) 2 1 1 0 0 1 PBR,PC+1 IO 1 3 1 1 0 0 0 PBR,PC+1 IO 1 IRQ,NMI 1 1 1 1 1 1 PBR,PC+1 IRO(BRK) 1 6d Stop-The-Clock (STP) (1 Op Code) (1 byte) (3 cycles) 1 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 1 PBR,PC+1 IO 1 RES=1 3 1 1 0 0 1 PBR,PC+1 IO 1 RES=0 1c 1 1 0 0 1 PBR,PC+1 RES(BRK) 1 RES=0 1b 1 1 0 0 1 PBR,PC+1 RES(BRK) 1 RES=1 1a 1 1 0 0 1 PBR,PC+1 RES(BRK) 1 1 1 1 1 1 1 PBR,PC+1 BEGIN 1 See 21a Stack (Hardware interrupt) ADDRESS MODE CYCLE /VP /ML VDA VPA ADDRESS BUS DATA BUS R/W 7 Direct Indirect Indexed -- (d),y (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (5,6,7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 1 0 0,D+DO AAL 1 4 1 1 1 0 0,D+DO+1 AAH 1 (4) 4a 1 1 0 0 DBR,AAH,AAL+YL IO 1 5 1 1 1 0 DBR,AA+Y Data Low 1/0 (1) 5a 1 1 1 1 DBR,AA+Y+1 Data High 1/0 8 Direct Indirect Indexed Long -- [d],y (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (6,7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 1 0 0,D+DO AAL 1 4 1 1 1 0 0,D+DO+1 AAH 1 5 1 1 1 0 0,D+DO+2 AAB 1 6 1 1 1 0 AAB,AA+Y Data Low 1/0 (1) 6a 1 1 1 0 AAB,AA+Y+1 Data High 1/0 9 Direct Indexed Indirect -- (d,x) (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (6,7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 a 1 1 1 0 0,D+DO+X AAL 1 5 1 1 1 0 0,D+DO+X+1 AAH 1 6 1 1 1 0 DBR,AA Data Low 1/0 (1) 6a 1 1 1 0 DBR,AA+1 Data High 1/0 10a Direct,X -- d,x (BIT,STZ,STY,LDY,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (12 Op Codes) (2 bytes) (4,5 and 6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,D+DO+X Data Low 1/0 (1) 4a 1 1 1 0 0,D+DO+X+1 Data High 1/0 10b Direct,X (R-M-W) -- d,x (ASL,ROL,LSR,ROR,DEC,INC) (6 Op Codes) (2 bytes) (6,7,8 and 9 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 0 1 0 0,D+DO+X Data Low 1 (1) 4a 1 0 1 0 0,D+DO+X+1 Data High 1 (3) 5 1 0 0 0 0,D+DO+X+1 IO 1 (1) 6a 1 0 1 0 0,D+DO+X+1 Data High 0 6 1 0 1 0 0,D+DO+X Data Low 0 11 Direct,Y -- d,y (STX,LDX) (2 Op Codes) (2 bytes) (4,5 and 6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,D+DO+Y Data Low 1/0 (1) 4a 1 1 1 0 0,D+DO+Y+1 Data High 1/0 12a Absolute,X -- a,x (BlT,LDY,STZ,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (11 Op Codes) (3 bytes) (4,5 and 6 cycles) 1 1 1 1 1 PBR,PC Op code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 (4) 3a 1 1 0 0 DBR,AAH,AAL+XL IO 1 4 1 1 1 0 DBR,AA+X Data Low 1/0 (1) 4a 1 1 1 0 DBR,AA+X+1 Data High 1/0 12b Absolute,X (R-M-W) -- a,x (ASC,ROL,LSR,ROR,DEC,INC) (6 Op Codes) (3 bytes) (7 and 9 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 0 0 DBR,AAH,AAL+XL IO 1 5 1 0 1 0 DBR,AA+X Data Low 1 (1) 5a 1 0 1 0 DBR,AA+X+1 Data High 1 (3) 6 1 0 0 0 DBR,AA+X+1 lO 1 (1) 7a 1 0 1 0 DBR,AA+X+1 Data High 0 7 1 0 1 0 DBR,AA+X Data Low 0 *13 Absolute Long,X -- al,x (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (4 bytes) (5 and 6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+7 AAH 1 4 1 1 0 1 PBA,PC+3 AAB 1 5 1 1 1 0 AAB,AA+X Data Low 1/0 (1) 5a 1 1 1 0 AAB,AA+X+1 Data High 1/0 14 Absolute,Y -- a,y (LDX,ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (9 Op Codes) (3 bytes) (4,5 and 6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 (4) 3a 1 1 0 0 DBR,AAH,AAL+YL IO 1 4 1 1 1 0 DBR,AA+Y Data Low 1/0 (1) 4a 1 1 1 0 DBR,AA+Y+1 Data High 1/0 15 Relative -- r (BPL,BMI,BVC,BVS,BCC,BCS,BNE,BEQ,BRA) (9 Op Codes) (2 bytes) (2,3 and 1 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 Offset 1 (5) 2a 1 1 0 0 PBR,PC+2 IO 1 (61 2b 1 1 0 0 PBR,PC+2+OFF IO 1 1 1 1 1 1 PBR,NewPC New Op Code 1 *16 Relative Long -- rl (BRL) (1 Op Code) (3 bytes) (4 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 Offset Low 1 3 1 1 0 1 PBR,PC+2 Offset High 1 4 1 1 0 0 PBR,PC+2 IO 1 1 1 1 1 1 PBR,NewPC New Op Code 1 17a Absolute Indirect -- (a) (JMP) (1 Op Code) (3 bytes) (5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 1 0 0,AA NEW PCL 1 5 1 1 1 0 0,AA+1 NEW PCH 1 1 1 1 1 1 PBR,NewPC New Op Code 1 *17b Absolute Indirect -- (a) (JML) (1 Op Code) (3 bytes) (6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+1 AAH 1 4 1 1 1 0 0,AA NEW PCL 1 5 1 1 1 0 0,AA+1 NEW PCH 1 6 1 1 1 0 0,AA+2 NEW PBR 1 1 1 1 1 1 NEW PBR,PC New Op Code 1 **18 Direct Indirect -- (d) (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (5,6 and 7 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 1 0 0,D+DO AAL 1 1 1 1 1 0 0,D+DO+1 AAH 1 5 1 1 1 0 DBR,AA Data Low 1/0 (1) 5a 1 1 1 0 DBR,AA+1 Data Low 1/0 *19 Direct Indirect Long -- [d] (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (6,7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 1 0 0,D+DO AAL 1 4 1 1 1 0 0,D+DO+1 AAH 1 5 1 1 1 0 0,D+DO+2 AAB 1 6 1 1 1 0 AAB,AA Data Low 1/0 (1) 6a 1 1 1 0 AAB,AA+1 Data High 1/0 20a Absolute Indexed Indirect -- (a,x) (JMP) (1 Op Code) (3 bytes) (6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 0 0 PBR,PC+2 IO 1 5 1 1 0 1 PBR,AA+X NEW PCL 1 6 1 1 0 1 PBR,AA+X+1 NEW PCH 1 1 1 1 1 1 PBR,NEWPC New Op Code 1 *20b Absolute Indered Indirect (Jump to Subroutine Indexed Indirect) -- (a,x) (JSR) (1 Op Code) (3 bytes) (8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 1 0 0,S PCH 0 4 1 1 1 0 0,S-1 PCL 0 5 1 1 0 1 PBR,PC+2 AAH 1 6 1 1 0 0 PBR,PC+2 IO 1 7 1 1 0 1 PBR,AA+X NEW PCL 1 8 1 1 0 1 PBR,AA+X+1 NEW PCH 1 1 1 1 1 1 PBR,NEWPC New Op Code 1 21a Stack (Hardware Interrupts) -- s (IRQ,NMI,ABORT,RES) (4 hardware Interrupts) (0 bytes) (7 and 8 cycles) 1 1 1 1 1 PBR,PC IO 1 (3) 2 1 1 0 0 PBR,PC IO 1 (7) 3 1 1 1 0 0,S PBR 0 (10) 4 1 1 1 0 0,S-1 PCH 0 (10) 5 1 1 1 0 0,S-2 PCL 0 (10,11) 6 1 1 1 0 0,S-3 P 0 7 0 1 1 0 0,VA AAVL 1 8 0 1 1 0 0,VA+1 AAVH 1 1 1 1 1 1 0,AAV New Op Code 1 21b Stack (Software Interrupts) -- s (BRK,COP) (2 Op Codes) (2 bytes) (7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 (3) 2 1 1 0 1 PBR,PC+1 Signature 1 (7) 3 1 1 1 0 0,S PBR 0 4 1 1 1 0 0,S-1 PCH 0 5 1 1 1 0 0,S-2 PCL 0 6 1 1 1 0 0,S-3 (COP Latches) P 0 7 0 1 1 0 0,VA AAVL 1 8 0 1 1 0 0,VA+1 AAVH 1 1 1 1 1 1 0,AAV New Op Code 1 21c Stack (Return from Interrupt) -- s (RTI) (1 Op Code) (1 byte) (6 and 7 cycles) (different order from N6502) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 (3) 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+1 P 1 5 1 1 1 0 0,S+2 New PCL 1 6 1 1 1 0 0,S+3 New PCH 1 (7) 7 1 1 1 0 0,S+4 PBR 1 1 1 1 1 1 PBR,NewPC New Op Code 1 21d Stack (Return from Subroutine) -- s (RTS) (1 Op Code) (1 byte) (6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+1 New PCL-1 1 5 1 1 1 0 0,S+2 New PCH 1 6 1 1 0 0 0,S+2 IO 1 1 1 1 1 1 PBR,NewPC New Op Code 1 *21e Stack (Return from Subroutine Long) -- s (RTL) (1 Op Code) (1 byte) (6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+1 NEW PCL 1 5 1 1 1 0 0,S+2 NEW PCH 1 6 1 1 1 0 0,S+3 NEW PBR 1 1 1 1 1 1 NEWPBR,PC New Op Code 1 21f Stack (Push) -- s (PHP,PHA,PHY,PHX,PHD,PHK,PHB) (7 Op Codes) (1 byte) (3 and 4 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 3a 1 1 1 0 0,S Register High 0 3 1 1 1 0 0,S-1 Register Low 0 21g Stack (Pull) -- s (PLP,PLA,PLY,PLX,PLD,PLB) (Different than N6502) (6 Op Codes) (1 byte) (4 and 5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 0 PBR,PC+1 IO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+1 Register Low 1 (1) 4a 1 1 1 0 0,S+2 Register High 1 *21h Stack (Push Effective Indirect Address) -- s (PEI) (1 Op Code) (2 bytes) (6 and 7 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 DO 1 (2) 2a 1 1 0 0 PBR,PC+1 IO 1 3 1 1 1 0 0,D+DO AAL 1 d 1 1 1 0 0,D+DO+1 AAH 1 5 1 1 1 0 0,S AAH 0 6 1 1 1 0 0,S-1 AAL 0 *21i Stack (Push Effective Absolute Address) -- s (PEA) (1 Op Code) (3 bytes) (5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 AAL 1 3 1 1 0 1 PBR,PC+2 AAH 1 4 1 1 1 0 0,S AAH 0 5 1 1 1 0 0,S-1 AAL 0 *21j Stack (Push Effective Program Counter Relative Address) -- s (PER) (1 Op Code) (3 bytes) (6 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 Offset Low 1 3 1 1 0 1 PBR,PC+2 Offset High 1 4 1 1 0 0 PBR,PC+2 IO 1 5 1 1 1 0 0,S PCH+Offset+CARRY 0 6 1 1 1 0 0,S-1 PCL + Offset 0 *22 Stace Relative -- d,s (ORA,AND,EOR,ADC,STA,LDA,CMP,SBC) (8 Op Codes) (2 bytes) (4 and 5 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 SO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+SO Data Low 1/0 (1) 4a 1 1 1 0 0,S+SO+1 Data High 1/0 *23 Stack Relative Indirect Indexed -- (d,s),y (8 Op Codes) (2 bytes) (7 and 8 cycles) 1 1 1 1 1 PBR,PC Op Code 1 2 1 1 0 1 PBR,PC+1 SO 1 3 1 1 0 0 PBR,PC+1 IO 1 4 1 1 1 0 0,S+SO AAL 1 5 1 1 1 0 0,S+SO+1 AAH 1 6 1 1 0 0 0,S+SO+1 IO 1 7 1 1 1 0 DBR,AA+Y Data Low 1/0 (1) 7a 1 1 1 0 DBR,AA+Y+1 Data High 1/0 *24a Block Move Positive (forward) -- xyc (MVP) (1 Op Code) (3 bytes) (7 cycles) +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 | 3 1 1 0 1 PBR,PC+2 SBA 1 N-2 | 4 1 1 1 0 SBA,X Source Data 1 Byte | 5 1 1 1 0 DBA,Y Dest Data 0 C=2 | 6 1 1 0 0 DBA,Y IO 1 +- 7 1 1 0 0 DBA,Y IO 1 +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 N-1 | 3 1 1 0 1 PBR,PC+2 SBA 1 Byte | 4 1 1 1 0 SBA,X-1 Source Data 1 C=1 | 5 1 1 1 0 DBA,Y-1 Dest Data 0 | 6 1 1 0 0 DBA,Y-1 IO 1 +- 7 1 1 0 0 DBA,Y-1 IO 1 +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 N Byte | 3 1 1 0 1 PBR,PC+2 SBA 1 Last | 4 1 1 1 0 SBA,X-2 Source Data 1 C=0 | 5 1 1 1 0 DBA,Y-2 Dest Data 0 | 6 1 1 0 0 DBA,Y-2 IO 1 | 7 1 1 0 0 DBA,Y-2 IO 1 +- 1 1 1 1 1 PBR,PC+3 New Op Code 1 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 *24b, Block Move Negative (backward) -- xyc (MVN) (1 Op Code) (3 bytes) (7 cycles) +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 | 3 1 1 0 1 PBR,PC+2 SBA 1 N-2 | 4 1 1 1 0 SBA,X Source Data 1 Byte | 5 1 1 1 0 DBA,Y Dest Data 0 C=2 | 6 1 1 0 0 DBA,Y IO 1 +- 7 1 1 0 0 DBA,Y IO 1 +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 N-1 | 3 1 1 0 1 PBR,PC+2 SBA 1 Byte | 4 1 1 1 0 SBA,X+1 Source Data 1 C=1 | 5 1 1 1 0 DBA,Y+1 Dest Data 0 | 6 1 1 0 0 DBA,Y+1 IO 1 +- 7 1 1 0 0 DBA,Y+1 IO 1 +- 1 1 1 1 1 PBR,PC Op Code 1 | 2 1 1 0 1 PBR,PC+1 DBA 1 N Byte | 3 1 1 0 1 PBR,PC+2 SBA 1 Last | 4 1 1 1 0 SBA,X+2 Source Data 1 C=0 | 5 1 1 1 0 DBA,Y+2 Dest Data 0 | 6 1 1 0 0 DBA,Y+2 IO 1 | 7 1 1 0 0 DBA,Y+2 IO 1 +- 1 1 1 1 1 PBR,PC+3 New Op Code 1 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 Notes (1) Add 1 byte (for immediate only) for M=O or X=O (i.e. 16 bit data), add 1 cycle for M=O or X=0. (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. (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. (5) Add 1 cycle if branch is taken. (6) Add 1 cycle if branch is taken across page boundaries in 6502 emutation mode (E=1). (7) Subtract 1 cycle for 6502 emulation mode (E=1). (8) Add 1 cycle lor REP, SEP. (9) Wait at cycle 2 for 2 cycles after /NMI or /IRQ active input. (10) R/W remains high during Reset. (11) BRK bit 4 equals "0" in Emulation mode. Abbreviations AAB Absolute Address Bank AAH Absolute Address High AAL Absolute Address Low AAVH Absolute Address Vector High AAVL Absolute Address Vector Low C Accumulator D Direct Register DBA Destination Bank Address DBR Data Bank Register DO Direct Offset IDH Immediate Data High IDL Immediate Data Low IO Internal Operation P Status Register PBR Program Bank Register PC Program Counter R-M-W Read-Modify-Write S Stack Address SBA Source Bank Address SO Stack Offset VA Vector Address x, y Index Registers * New G65SC816/802 Addressing Modes ** New G65SC02 Addressing Modes Blank NMOS 6502 Addressing Modes