142 lines
4.4 KiB
C
142 lines
4.4 KiB
C
#include "cpu.h"
|
|
|
|
#define NEW_OPCODE(op, addr, cyc) {op, addr, cyc, #op}
|
|
|
|
const struct Opcode OPCODE_TABLE[256] =
|
|
{
|
|
/* 00 */ NEW_OPCODE(BRK, IMP, 7),
|
|
/* 01 */ NEW_OPCODE(ORA, XIN, 6),
|
|
/* 02 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 03 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 04 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 05 */ NEW_OPCODE(ORA, ZPG, 3),
|
|
/* 06 */ NEW_OPCODE(ASL, ZPG, 5),
|
|
/* 07 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 08 */ NEW_OPCODE(PHP, IMP, 3),
|
|
/* 09 */ NEW_OPCODE(ORA, IMM, 2),
|
|
/* 0A */ NEW_OPCODE(ASL, ACC, 2),
|
|
/* 0B */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 0C */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 0D */ NEW_OPCODE(ORA, ABS, 4),
|
|
/* 0E */ NEW_OPCODE(ASL, ABS, 6),
|
|
/* 0F */ NEW_OPCODE(XXX, IMP, 0),
|
|
|
|
/* 10 */ NEW_OPCODE(BPL, REL, 2),
|
|
/* 11 */ NEW_OPCODE(ORA, INY, 5),
|
|
/* 12 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 13 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 14 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 15 */ NEW_OPCODE(ORA, ZPX, 4),
|
|
/* 16 */ NEW_OPCODE(ASL, ZPX, 6),
|
|
/* 17 */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 18 */ NEW_OPCODE(CLC, IMP, 2),
|
|
/* 19 */ NEW_OPCODE(ORA, ABY, 4),
|
|
/* 1A */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 1B */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 1C */ NEW_OPCODE(XXX, IMP, 0),
|
|
/* 1D */ NEW_OPCODE(ORA, ABX, 4),
|
|
/* 1E */ NEW_OPCODE(ASL, ABX, 7),
|
|
/* 1F */ NEW_OPCODE(XXX, IMP, 0),
|
|
|
|
///* 20 */ NEW_OPCODE(JSR, ABS),
|
|
///* 21 */ NEW_OPCODE(AND, XIN),
|
|
///* 22 */ NEW_OPCODE(XXX, IMP),
|
|
///* 23 */ NEW_OPCODE(XXX, IMP),
|
|
///* 24 */ NEW_OPCODE(BIT, ZPG),
|
|
///* 25 */ NEW_OPCODE(AND, ZPG),
|
|
///* 26 */ NEW_OPCODE(ROL, ZPG),
|
|
///* 27 */ NEW_OPCODE(XXX, IMP),
|
|
///* 28 */ NEW_OPCODE(PLP, IMP),
|
|
///* 29 */ NEW_OPCODE(AND, IMM),
|
|
///* 2A */ NEW_OPCODE(ROL, ACC),
|
|
///* 2B */ NEW_OPCODE(XXX, IMP),
|
|
///* 2C */ NEW_OPCODE(BIT, ABS),
|
|
///* 2D */ NEW_OPCODE(AND, ABS),
|
|
///* 2E */ NEW_OPCODE(ROL, ABS),
|
|
///* 2F */ NEW_OPCODE(XXX, IMP),
|
|
|
|
///* 30 */ NEW_OPCODE(BMI, REL),
|
|
///* 31 */ NEW_OPCODE(AND, INY),
|
|
///* 32 */ NEW_OPCODE(XXX, IMP),
|
|
///* 33 */ NEW_OPCODE(XXX, IMP),
|
|
///* 34 */ NEW_OPCODE(XXX, IMP),
|
|
///* 35 */ NEW_OPCODE(AND, ZPX),
|
|
///* 36 */ NEW_OPCODE(ROL, ZPX),
|
|
///* 37 */ NEW_OPCODE(XXX, IMP),
|
|
///* 38 */ NEW_OPCODE(SEC, IMP),
|
|
///* 39 */ NEW_OPCODE(AND, ABY),
|
|
///* 3A */ NEW_OPCODE(XXX, IMP),
|
|
///* 3B */ NEW_OPCODE(XXX, IMP),
|
|
///* 3C */ NEW_OPCODE(XXX, IMP),
|
|
///* 3D */ NEW_OPCODE(AND, ABX),
|
|
///* 3E */ NEW_OPCODE(ROL, ABX),
|
|
///* 3F */ NEW_OPCODE(XXX, IMP),
|
|
|
|
///* 40 */ NEW_OPCODE(RTI, IMP),
|
|
///* 41 */ NEW_OPCODE(EOR, XIN),
|
|
///* 42 */ NEW_OPCODE(XXX, IMP),
|
|
///* 43 */ NEW_OPCODE(XXX, IMP),
|
|
///* 44 */ NEW_OPCODE(XXX, IMP),
|
|
///* 45 */ NEW_OPCODE(EOR, ZPG),
|
|
///* 46 */ NEW_OPCODE(LSR, ZPG),
|
|
///* 47 */ NEW_OPCODE(XXX, IMP),
|
|
///* 48 */ NEW_OPCODE(PHA, IMP),
|
|
///* 49 */ NEW_OPCODE(EOR, IMM),
|
|
///* 4A */ NEW_OPCODE(LSR, ACC),
|
|
///* 4B */ NEW_OPCODE(XXX, IMP),
|
|
///* 4C */ NEW_OPCODE(JMP, ABS),
|
|
///* 4D */ NEW_OPCODE(EOR, ABS),
|
|
///* 4E */ NEW_OPCODE(LSR, ABS),
|
|
///* 4F */ NEW_OPCODE(XXX, IMP),
|
|
|
|
///* 50 */ NEW_OPCODE(BVC, REL),
|
|
///* 51 */ NEW_OPCODE(EOR, INY),
|
|
///* 52 */ NEW_OPCODE(XXX, IMP),
|
|
///* 53 */ NEW_OPCODE(XXX, IMP),
|
|
///* 54 */ NEW_OPCODE(XXX, IMP),
|
|
///* 55 */ NEW_OPCODE(EOR, ZPX),
|
|
///* 56 */ NEW_OPCODE(LSR, ZPX),
|
|
///* 57 */ NEW_OPCODE(XXX, IMP),
|
|
///* 58 */ NEW_OPCODE(CLI, IMP),
|
|
///* 59 */ NEW_OPCODE(EOR, ABY),
|
|
///* 5A */ NEW_OPCODE(XXX, IMP),
|
|
///* 5B */ NEW_OPCODE(XXX, IMP),
|
|
///* 5C */ NEW_OPCODE(XXX, IMP),
|
|
///* 5D */ NEW_OPCODE(EOR, ABX),
|
|
///* 5E */ NEW_OPCODE(LSR, ABX),
|
|
///* 5F */ NEW_OPCODE(XXX, IMP),
|
|
|
|
///* 60 */ NEW_OPCODE(RTS, IMP),
|
|
///* 61 */ NEW_OPCODE(ADC, XIN),
|
|
///* 62 */ NEW_OPCODE(XXX, IMP),
|
|
///* 63 */ NEW_OPCODE(XXX, IMP),
|
|
///* 64 */ NEW_OPCODE(XXX, IMP),
|
|
///* 65 */ NEW_OPCODE(ADC, ZPG),
|
|
///* 66 */ NEW_OPCODE(ROR, ZPG),
|
|
///* 67 */ NEW_OPCODE(XXX, IMP),
|
|
///* 68 */ NEW_OPCODE(PLA, IMP),
|
|
///* 69 */ NEW_OPCODE(ADC, IMM),
|
|
///* 6A */ NEW_OPCODE(ROR, ACC),
|
|
///* 6B */ NEW_OPCODE(XXX, IMP),
|
|
///* 6C */ NEW_OPCODE(JMP, IND),
|
|
///* 6D */ NEW_OPCODE(ADC, ABS),
|
|
///* 6E */ NEW_OPCODE(ROR, ABS),
|
|
///* 6F */ NEW_OPCODE(XXX, IMP),
|
|
|
|
///* 70 */ NEW_OPCODE(BVS, REL),
|
|
///* 71 */ NEW_OPCODE(ADC, INY),
|
|
///* 72 */ NEW_OPCODE(XXX, IMP),
|
|
///* 73 */ NEW_OPCODE(XXX, IMP),
|
|
///* 74 */ NEW_OPCODE(XXX, IMP),
|
|
///* 75 */ NEW_OPCODE(ADC, ZPX),
|
|
///* 76 */ NEW_OPCODE(ROR, ZPX),
|
|
///* 77 */ NEW_OPCODE(XXX, IMP),
|
|
///* 78 */ NEW_OPCODE(SEI, IMP),
|
|
///* 79 */ NEW_OPCODE(ADC, ABY),
|
|
///* 7A */ NEW_OPCODE(XXX, IMP),
|
|
///* 7B */ NEW_OPCODE(XXX, IMP),
|
|
///* 7C */ NEW_OPCODE(XXX, IMP),
|
|
///* 7D */ NEW_OPCODE(ADC, ABX),
|
|
///* 7E */ NEW_OPCODE(ROR, ABX),
|
|
///* 7F */ NEW_OPCODE(XXX, IMP),
|
|
} |