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

OpcodeimmZPZPxiZxiZyabsab,xab,yFunktionNVZC
SLO071703130F1F1B{adr}:={adr}*2 A:=A or {adr}×××
RLA273723332F3F3B{adr}:={adr}rol A:=A and {adr}×××
SRE475743534F5F5B{adr}:={adr}/2 A:=A exor {adr}×××
RRA677763736F7F7B{adr}:={adr}ror A:=A adc {adr}××××
SAX8797838F{adr}:=A&X
LAXA7B7A3B3AFBFA,X:={adr}××
DCPC7D7C3D3CFDFDB{adr}:={adr}-1 A-{adr}×××
ISCE7F7E3F3EFFFFB{adr}:={adr}+1 A:=A-{adr}××××
ANC0BA:=A&#{imm}×××
ANC2BA:=A&#{imm}×××
ALR4BA:=(A&#{imm})*2×××
ARR6BA:=(A&#{imm})/2××××
XAA8BA:=X&#{imm}××
LAXABA,X:=#{imm}××
AXSCBX:=A&X-#{imm}×××
SBCEBA:=A-#{imm}××××
AHX939F{adr}:=A&X&H
SHY9C{adr}:=Y&H
SHX9E{adr}:=X&H
TAS9BS:=A&X {adr}:=S&H
LASBBA,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.