Opcode
From C64-Wiki
Jump to navigationJump to searchOpcodes (short for Operation Codes) are processor instructions used in machine language. The 6510 CPU offers 151 [1] official opcodes, plus 105 illegal (unofficial) opcodes, totaling 256 opcodes.
Legal Opcodes[edit | edit source]
Examples:
- $C8 (11001000) is the opcode for the mnemonic INY.
- $EA (11101010) is the opcode for the mnemonic NOP.
Illegal Opcodes[edit | edit source]
Illegal opcodes are undocumented commands that exist as a side-effect of the hardwired circuit design and were called "illegal" because they are not guaranteed to work reliably.
Opcode matrix for MOS 6510[edit | edit source]
Illegal Opcodes are coloured red.
x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | |
0x | BRK imp |
ORA inx |
JAM | SLO inx |
NOP zp |
ORA zp |
ASL zp |
SLO zp |
PHP imp |
ORA imm |
ASL akk |
ANC imm |
NOP abs |
ORA abs |
ASL abs |
SLO abs |
1x | BPL rel |
ORA iny |
JAM | SLO iny |
NOP zpx |
ORA zpx |
ASL zpx |
SLO zpy |
CLC imp |
ORA aby |
NOP imp |
SLO aby |
NOP abx |
ORA abx |
ASL abx |
SLO abx |
2x | JSR abs |
AND inx |
JAM | RLA inx |
BIT zp |
AND zp |
ROL zp |
RLA zp |
PLP imp |
AND imm |
ROL akk |
ANC imm |
BIT abs |
AND abs |
ROL abs |
RLA abs |
3x | BMI rel |
AND iny |
JAM | RLA iny |
NOP zpx |
AND zpx |
ROL zpx |
RLA zpy |
SEC imp |
AND aby |
NOP imp |
RLA aby |
NOP abx |
AND abx |
ROL abx |
RLA abx |
4x | RTI imp |
EOR inx |
JAM | SRE inx |
NOP zp |
EOR zp |
LSR zp |
SRE zp |
PHA imp |
EOR imm |
LSR akk |
ALR imm |
JMP abs |
EOR abs |
LSR abs |
SRE abs |
5x | BVC rel |
EOR iny |
JAM | SRE iny |
NOP zpx |
EOR zpx |
LSR zpx |
SRE zpx |
CLI imp |
EOR aby |
NOP imp |
SRE aby |
NOP abx |
EOR abx |
LSR abx |
SRE abx |
6x | RTS imp |
ADC inx |
JAM | RRA inx |
NOP zp |
ADC zp |
ROR zp |
RRA zp |
PLA imp |
ADC imm |
ROR akk |
ARR imm |
JMP ind |
ADC abs |
ROR abs |
RRA abs |
7x | BVS rel |
ADC iny |
JAM | RRA iny |
NOP zpx |
ADC zpx |
ROR zpx |
RRA zpx |
SEI imp |
ADC aby |
NOP imp |
RRA aby |
NOP abx |
ADC abx |
ROR abx |
RRA abx |
8x | NOP imm |
STA inx |
NOP imm |
SAX inx |
STY zp |
STA zp |
STX zp |
SAX zp |
DEY imp |
NOP imm |
TXA imp |
ANE imm |
STY abs |
STA abs |
STX abs |
SAX abs |
9x | BCC rel |
STA iny |
JAM | SHA iny |
STY zpx |
STA zpx |
STX zpy |
SAX zpy |
TYA imp |
STA aby |
TXS imp |
TAS aby |
SHY abx |
STA abx |
SHX aby |
SHA aby |
Ax | LDY imm |
LDA inx |
LDX imm |
LAX inx |
LDY zp |
LDA zp |
LDX zp |
LAX zp |
TAY imp |
LDA imm |
TAX imp |
LAX imm |
LDY abs |
LDA abs |
LDX abs |
LAX abs |
Bx | BCS rel |
LDA iny |
JAM | LAX iny |
LDY zpx |
LDA zpx |
LDX zpy |
LAX zpy |
CLV imp |
LDA aby |
TSX imp |
LAS aby |
LDY abx |
LDA abx |
LDX aby |
LAX aby |
Cx | CPY imm |
CMP inx |
NOP imm |
DCP inx |
CPY zp |
CMP zp |
DEC zp |
DCP zp |
INY imp |
CMP imm |
DEX imp |
SBX imm |
CPY abs |
CMP abs |
DEC abs |
DCP abs |
Dx | BNE rel |
CMP iny |
JAM | DCP iny |
NOP zpx |
CMP zpx |
DEC zpx |
DCP zpx |
CLD imp |
CMP aby |
NOP imp |
DCP aby |
NOP abx |
CMP abx |
DEC abx |
DCP abx |
Ex | CPX imm |
SBC inx |
NOP imm |
ISC inx |
CPX zp |
SBC zp |
INC zp |
ISC zp |
INX imp |
SBC imm |
NOP | SBC imm |
CPX abs |
SBC abs |
INC abs |
ISC abs |
Fx | BEQ rel |
SBC iny |
JAM | ISC iny |
NOP zpx |
SBC zpx |
INC zpx |
ISC zpx |
SED imp |
SBC aby |
NOP imp |
ISC aby |
NOP abx |
SBC abx |
INC abx |
ISC abx |
Links[edit | edit source]
- 6502/6510/8500/8502 opcodes (including illegal) at oxyron.de
- NMOS 6510 Unintended Opcodes (No More Secrets)
References[edit | edit source]
- ↑ Codebase64.org - [Extra Instructions Of The 65XX Series CPU]