ILLEGAL OPCODES V2 ------------------ Original by WosFilm Updated by Frankenstein n = number of clock cycles AAC = AND byte with accumulator. If result is negative then carrier is set. Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |AAC #arg |$0B| 2 | 2 Immediate |AAC #arg |$2B| 2 | 2 AAX = AND X register with accumulator and store result in memory. Status flags: N,Z Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |AAX #arg |$8B| 2 | 2 Zero Page |AAX arg |$87| 2 | 3 Zero Page,Y |AAX arg,Y |$97| 2 | 4 (Indirect,X)|AAX (arg,X)|$83| 2 | 6 Absolute |AAX arg |$8F| 3 | 4 ARR = AND byte with accumulator, then rotate one bit right in accumulator and check bit 5 and 6: If both bits are 1: set C, clear V. If both bits are 0: clear C and V. If only bit 5 is 1: set V, clear C. If only bit 6 is 1: set C and V. Status flags: N,V,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |ARR #arg |$6B| 2 | 2 ASR = AND byte with accumulator, then shift right one bit in accumulator. Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |ASR #arg |$4B| 2 | 2 ATX = AND byte with accumulator, then transfer accumulator to X register. Status flags: N,Z Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |ATX #arg |$AB| 2 | 2 AXA = AND X register with accumulator then AND result with 7 and store in memory. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute,Y |AXA arg,Y |$9F| 3 | 5 AXS = AND X register with accumulator and store result in X register, then subtract byte from X register (without borrow). Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |AXS #arg |$CB| 2 | 2 DCP = Subtract 1 from memory (without borrow). Status flags: C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |DCP arg |$C7| 2 | 5 Zero Page,X |DCP arg,X |$D7| 2 | 6 Absolute |DCP arg |$CF| 3 | 6 Absolute,X |DCP arg,X |$DF| 3 | 7 Absolute,Y |DCP arg,Y |$DB| 3 | 7 (Indirect,X)|DCP (arg,X)|$C3| 2 | 8 (Indirect),Y|DCP (arg),y|$D3| 2 | 8 DOP = No operation (double NOP). The argument has no significance. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |DOP arg |$04| 2 | 3 Zero Page |DOP arg |$14| 2 | 4 Zero Page |DOP arg |$34| 2 | 4 Zero Page |DOP arg |$44| 2 | 3 Zero Page |DOP arg |$54| 2 | 4 Zero Page |DOP arg |$64| 2 | 3 Zero Page |DOP arg |$74| 2 | 4 Zero Page |DOP arg |$80| 2 | 2 Zero Page |DOP arg |$82| 2 | 2 Zero Page |DOP arg |$89| 2 | 2 Zero Page |DOP arg |$93| 2 | 6* Zero Page |DOP arg |$C2| 2 | 2 Zero Page |DOP arg |$D4| 2 | 4 Zero Page |DOP arg |$E2| 2 | 2 Zero Page |DOP arg |$F4| 2 | 4 ISC = Increase memory by one, then subtract memory from accumulator (with borrow). Status flags: N,V,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |ISC arg |$E7| 2 | 5 Zero Page,X |ISC arg,X |$F7| 2 | 6 Absolute |ISC arg |$EF| 3 | 6 Absolute,X |ISC arg,X |$FF| 3 | 7 Absolute,Y |ISC arg,Y |$FB| 3 | 7 (Indirect,X)|ISC (arg,X)|$E3| 2 | 8 (Indirect),Y|ISC (arg),Y|$F3| 2 | 8 KIL = Stop program counter (processor lock up). Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Implied |KIL |$02| 1 | - Implied |KIL |$12| 1 | - Implied |KIL |$22| 1 | - Implied |KIL |$32| 1 | - Implied |KIL |$42| 1 | - Implied |KIL |$52| 1 | - Implied |KIL |$62| 1 | - Implied |KIL |$72| 1 | - Implied |KIL |$92| 1 | - Implied |KIL |$B2| 1 | - Implied |KIL |$D2| 1 | - Implied |KIL |$F2| 1 | - LAR = AND memory with stack pointer, transfer result to accumulator, X register and stack pointer. Status flags: N,Z Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute,Y |LAR arg,Y |$BB| 3 | 4 LAX = Load accumulator and X register with memory. Status flags: N,Z Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |LAX arg |$A7| 2 | 3 Zero Page,X |LAX arg,X |$B7| 2 | 4 Absolute |LAX arg |$AF| 3 | 4 Absolute,Y |LAX arg,Y |$BF| 3 | 4 (Indirect),Y|LAX (arg),Y|$A3| 2 | 6 (Indirect),Y|LAX (arg),Y|$B3| 2 | 5 NOP = No operation Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- 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 RLA = Rotate one bit left in memory, then AND accumulator with memory. Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |RLA arg |$27| 2 | 5 Zero Page,X |RLA arg,X |$37| 2 | 6 Absolute |RLA arg |$2F| 3 | 6 Absolute,X |RLA arg,X |$3F| 3 | 7 Absolute,Y |RLA arg,Y |$3B| 3 | 7 (Indirect,X)|RLA (arg,X)|$23| 2 | 8 (Indirect),Y|RLA (arg),Y|$33| 2 | 8 RRA = Rotate one bit right in memory, then add memory to accumulator (with carry). Status flags: N,V,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |RRA arg |$67| 2 | 5 Zero Page,X |RRA arg,X |$77| 2 | 6 Absolute |RRA arg |$6F| 3 | 6 Absolute,X |RRA arg,X |$7F| 3 | 7 Absolute,Y |RRA arg,Y |$7B| 3 | 7 (Indirect,X)|RRA (arg,X)|$63| 2 | 8 (Indirect),Y|RRA (arg),Y|$73| 2 | 8 SBC = The same as the legal opcode $E9 (SBC #byte) Status flags: N,V,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Immediate |SBC #byte |$EB| 2 | 2 SLO = Shift left one bit in memory, then OR accumulator with memory. Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |SLO arg |$07| 2 | 5 Zero Page,X |SLO arg,X |$17| 2 | 6 Absolute |SLO arg |$0F| 3 | 6 Absolute,X |SLO arg,X |$1F| 3 | 7 Absolute,Y |SLO arg,Y |$1B| 3 | 7 (Indirect,X)|SLO (arg,X)|$13| 2 | 8 (Indirect),Y|SLO (arg),Y|$03| 2 | 8 SRE = Shift right one bit in memory, then EOR accumulator with memory. Status flags: N,Z,C Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Zero Page |SRE arg |$47| 2 | 5 Zero Page,X |SRE arg,X |$57| 2 | 6 Absolute |SRE arg |$4F| 3 | 6 Absolute,X |SRE arg,X |$5F| 3 | 7 Absolute,Y |SRE arg,Y |$5B| 3 | 7 (Indirect,X)|SRE (arg,X)|$43| 2 | 8 (Indirect),Y|SRE (arg),Y|$53| 2 | 8 SXA = AND X register with 7, store result in memory. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute,Y |SXA arg,Y |$9E| 3 | 5 SYA = AND Y register with 7, store result in memory. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute,X |SYA arg,X |$9C| 3 | 5 TOP = No operation (tripple NOP). The argument has no significance. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute |TOP arg |$0C| 3 | 4 Absolute |TOP arg |$1C| 3 | 4 Absolute |TOP arg |$3C| 3 | 4 Absolute |TOP arg |$5C| 3 | 4 Absolute |TOP arg |$DC| 3 | 4 Absolute |TOP arg |$FC| 3 | 4 XAS = AND X register with accumulator and store result in stack pointer, then AND stack pointer with 7 and store result in memo ry. Status flags: - Addressing |Mnemonics |Opc|Sz | n ------------|-----------|---|---|--- Absolute,Y |XAS arg,Y |$9B| 3 | 5