277 lines
4.0 KiB
C
277 lines
4.0 KiB
C
#include "instruction.h"
|
|
#include "opcodes.h"
|
|
|
|
const struct instruction decode_ins[256] = {
|
|
{BRK, S},
|
|
{ORA, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{TSB, ZP},
|
|
{ORA, ZP},
|
|
{ASL, ZP},
|
|
{RMB0, ZP},
|
|
{PHP, S},
|
|
{ORA, IMM},
|
|
{ASL, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{TSB, A},
|
|
{ORA, A},
|
|
{ASL, A},
|
|
{BBR0, R},
|
|
|
|
{BPL, R},
|
|
{ORA, ZPIY},
|
|
{ORA, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{TRB, ZP},
|
|
{ORA, ZPX},
|
|
{ASL, ZPX},
|
|
{RMB1, ZP},
|
|
{CLC, I},
|
|
{ORA, AIY},
|
|
{INC, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{TRB, A},
|
|
{ORA, AIX},
|
|
{ASL, AIX},
|
|
{BBR1, R},
|
|
|
|
{JSR, A},
|
|
{AND, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{BIT, ZP},
|
|
{AND, ZP},
|
|
{ROL, ZP},
|
|
{RMB2, ZP},
|
|
{PLP, S},
|
|
{AND, IMM},
|
|
{ROL, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{BIT, A},
|
|
{AND, A},
|
|
{ROL, A},
|
|
{BBR2, R},
|
|
|
|
{BMI, R},
|
|
{AND, ZPIY},
|
|
{AND, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{BIT, ZPX},
|
|
{AND, ZPX},
|
|
{ROL, ZPX},
|
|
{RMB3, ZP},
|
|
{SEC, I},
|
|
{AND, AIY},
|
|
{DEC, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{BIT, AIX},
|
|
{AND, AIX},
|
|
{ROL, AIX},
|
|
{BBR3, R},
|
|
|
|
{RTI, S},
|
|
{EOR, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{EOR, ZP},
|
|
{LSR, ZP},
|
|
{RMB4, ZP},
|
|
{PHA, S},
|
|
{EOR, IMM},
|
|
{LSR, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{JMP, A},
|
|
{EOR, A},
|
|
{LSR, A},
|
|
{BBR4, R},
|
|
|
|
{BVC, R},
|
|
{EOR, ZPIY},
|
|
{EOR, ZPI},
|
|
{EOR, ZPX},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{LSR, ZPX},
|
|
{RMB5, ZP},
|
|
{CLI, I},
|
|
{EOR, AIY},
|
|
{PHY, S},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{EOR, AIX},
|
|
{LSR, AIX},
|
|
{BBR5, R},
|
|
|
|
{RTS, S},
|
|
{ADC, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{STZ, ZP},
|
|
{ADC, ZP},
|
|
{ROR, ZP},
|
|
{RMB6, ZP},
|
|
{PLA, S},
|
|
{ADC, IMM},
|
|
{ROR, ACC},
|
|
{O_INVALID, M_INVALID},
|
|
{JMP, AI},
|
|
{ADC, A},
|
|
{ROR, A},
|
|
{BBR6, R},
|
|
|
|
{BVS, R},
|
|
{ADC, ZPIY},
|
|
{ADC, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{STZ, ZPX},
|
|
{ADC, ZPX},
|
|
{ROR, ZPX},
|
|
{RMB7, ZP},
|
|
{SEI, I},
|
|
{ADC, AIY},
|
|
{PLY, S},
|
|
{O_INVALID, M_INVALID},
|
|
{JMP, AII},
|
|
{ADC, AIX},
|
|
{ROR, AIX},
|
|
{BBR7, R},
|
|
|
|
{BRA, R},
|
|
{STA, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{STY, ZP},
|
|
{STA, ZP},
|
|
{STX, ZP},
|
|
{SMB0, ZP},
|
|
{DEY, I},
|
|
{BIT, IMM},
|
|
{TXA, I},
|
|
{O_INVALID, M_INVALID},
|
|
{STY, A},
|
|
{STA, A},
|
|
{STX, A},
|
|
{BBS0, R},
|
|
|
|
{BCC, R},
|
|
{STA, ZPIY},
|
|
{STA, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{STY, ZPX},
|
|
{STA, ZPX},
|
|
{STX, ZPY},
|
|
{SMB1, ZP},
|
|
{TYA, I},
|
|
{STA, AIY},
|
|
{TXS, I},
|
|
{O_INVALID, M_INVALID},
|
|
{STZ, A},
|
|
{STA, AIX},
|
|
{STZ, AIX},
|
|
{BBS1, R},
|
|
|
|
{LDY, IMM},
|
|
{LDA, ZPII},
|
|
{LDX, IMM},
|
|
{O_INVALID, M_INVALID},
|
|
{LDY, ZP},
|
|
{LDA, ZP},
|
|
{LDX, ZP},
|
|
{SMB2, ZP},
|
|
{TAY, I},
|
|
{LDA, IMM},
|
|
{TAX, I},
|
|
{O_INVALID, M_INVALID},
|
|
{LDY, A},
|
|
{LDA, A},
|
|
{LDX, A},
|
|
{BBS2, R},
|
|
|
|
{BCS, R},
|
|
{LDA, ZPIY},
|
|
{LDA, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{LDY, ZPX},
|
|
{LDA, ZPX},
|
|
{LDX, ZPY},
|
|
{SMB3, ZP},
|
|
{CLV, I},
|
|
{LDA, AIY},
|
|
{TSX, I},
|
|
{O_INVALID, M_INVALID},
|
|
{LDY, AIX},
|
|
{LDA, AIX},
|
|
{LDX, AIY},
|
|
{BBS3, R},
|
|
|
|
{CPY, IMM},
|
|
{CMP, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{CPY, ZP},
|
|
{CMP, ZP},
|
|
{DEC, ZP},
|
|
{SMB4, ZP},
|
|
{INY, I},
|
|
{CMP, IMM},
|
|
{DEX, I},
|
|
{WAI, I},
|
|
{CPY, A},
|
|
{CMP, A},
|
|
{DEC, A},
|
|
{BBS4, R},
|
|
|
|
{BNE, R},
|
|
{CMP, ZPIY},
|
|
{CMP, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{CMP, ZPX},
|
|
{DEC, ZPX},
|
|
{SMB5, ZP},
|
|
{CLD, I},
|
|
{CMP, AIY},
|
|
{PHX, S},
|
|
{STP, I},
|
|
{O_INVALID, M_INVALID},
|
|
{CMP, AIX},
|
|
{DEC, AIX},
|
|
{BBS5, R},
|
|
|
|
{CPX, IMM},
|
|
{SBC, ZPII},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{CPX, ZP},
|
|
{SBC, ZP},
|
|
{INC, ZP},
|
|
{SMB6, ZP},
|
|
{INX, I},
|
|
{SBC, IMM},
|
|
{NOP, I},
|
|
{O_INVALID, M_INVALID},
|
|
{CPX, A},
|
|
{SBC, A},
|
|
{INC, A},
|
|
{BBS6, R},
|
|
|
|
{BEQ, R},
|
|
{SBC, ZPIY},
|
|
{SBC, ZPI},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{SBC, ZPX},
|
|
{INC, ZPX},
|
|
{SMB7, ZP},
|
|
{SED, I},
|
|
{SBC, AIY},
|
|
{PLX, S},
|
|
{O_INVALID, M_INVALID},
|
|
{O_INVALID, M_INVALID},
|
|
{SBC, AIX},
|
|
{INC, AIX},
|
|
{BBS7, R},
|
|
};
|