6502 illegale Opcodes
Illegale Opcodes gehören nicht zu den offiziellen Befehlen, sondern ergeben sich durch Vereinfachung der Logik auf nicht belegten Maschinensprachbefehlen sind also quasi ein 'Abfallprodukt' einer Prozessoroptimierung. Im Hinblick auf zukünftige Erweiterungen sollten die inoffiziellen Befehle deshalb nicht in öffentlich zugängigen Programmen verwendet werden, sondern nur zum privaten Erproben der CPU genutzt werden.
KIL ... bringt den Prozessor zum Absturz
02, 12, 22, 32 ,42, 52, 62, 72, 92, B2, D2, F2
NOP mit 1 Byte
1A, 3A, 5A, 7A, DA, FA
NOP mit 2 Byte
04, 14, 34, 44, 54, 64, 74, 80, 82, 89, C2, D4, E2, F4
NOP mit 3 Byte
0C, 1C, 3C, 5C, 7C, DC, FC
Opcode | imm | ZP | ZPx | iZx | iZy | abs | ab,x | ab,y | Funktion | N | V | Z | C |
SLO | | 07 | 17 | 03 | 13 | 0F | 1F | 1B | {adr}:={adr}*2 A:=A or {adr} | × | | × | × |
RLA | | 27 | 37 | 23 | 33 | 2F | 3F | 3B | {adr}:={adr}rol A:=A and {adr} | × | | × | × |
SRE | | 47 | 57 | 43 | 53 | 4F | 5F | 5B | {adr}:={adr}/2 A:=A exor {adr} | × | | × | × |
RRA | | 67 | 77 | 63 | 73 | 6F | 7F | 7B | {adr}:={adr}ror A:=A adc {adr} | × | × | × | × |
SAX | | 87 | 97 | 83 | | 8F | | | {adr}:=A&X | | | | |
LAX | | A7 | B7 | A3 | B3 | AF | BF | | A,X:={adr} | × | | × | |
DCP | | C7 | D7 | C3 | D3 | CF | DF | DB | {adr}:={adr}-1 A-{adr} | × | | × | × |
ISC | | E7 | F7 | E3 | F3 | EF | FF | FB | {adr}:={adr}+1 A:=A-{adr} | × | × | × | × |
ANC | 0B | | | | | | | | A:=A{imm} | × | | × | × |
ANC | 2B | | | | | | | | A:=A{imm} | × | | × | × |
ALR | 4B | | | | | | | | A:=(A{imm})*2 | × | | × | × |
ARR | 6B | | | | | | | | A:=(A{imm})/2 | × | × | × | × |
XAA | 8B | | | | | | | | A:=X{imm} | × | | × | |
LAX | AB | | | | | | | | A,X:=#{imm} | × | | × | |
AXS | CB | | | | | | | | X:=A&X-#{imm} | × | | × | × |
SBC | EB | | | | | | | | A:=A-#{imm} | × | × | × | × |
AHX | | | | | 93 | | | 9F | {adr}:=A&X&H | | | | |
SHY | | | | | | | 9C | | {adr}:=Y&H | | | | |
SHX | | | | | | | | 9E | {adr}:=X&H | | | | |
TAS | | | | | | | | 9B | S:=A&X {adr}:=S&H | | | | |
LAS | | | | | | | | BB | A,X,S:={adr}&S | × | | × | |
A = Akkumulator
X = X-Register
Y = Y-Register
S = Stack-Pointer
P = Status-Register
+(S) = Stack-Pointer relativ mit pre-Increment
(S)- = Stack-Pointer relativ mit post-Decrement
XAA und LAX sind derart instabil, dass sie auf keinen Fall benutzt werden sollten.