summaryrefslogtreecommitdiff
path: root/tables.h
diff options
context:
space:
mode:
Diffstat (limited to 'tables.h')
-rw-r--r--tables.h189
1 files changed, 189 insertions, 0 deletions
diff --git a/tables.h b/tables.h
new file mode 100644
index 0000000..6a95887
--- /dev/null
+++ b/tables.h
@@ -0,0 +1,189 @@
+#include "enums.h"
+
+static const uint8_t optype[0x100] = {
+ [CPS ] = IMPL,
+ [ADC ] = IMM,
+ [AAB ] = IMPL,
+ [ADC_AB ] = ABS,
+ [LDA_IN ] = IND,
+ [ADC_Z ] = ZM,
+ [PHP ] = IMM,
+ [CPB ] = IMM,
+ [PHB ] = IMM,
+ [DEC_AB ] = ABS,
+ [DEC_Z ] = ZM,
+ [JMP_Z ] = ZM,
+ [JMP ] = ABS,
+ [SBC ] = IMM,
+ [SAB ] = IMPL,
+ [SBC_AB ] = ABS,
+ [STA_IN ] = IND,
+ [SBC_Z ] = ZM,
+ [ENT ] = IMM,
+ [CPY ] = IMM,
+ [PLB ] = IMM,
+ [INC_AB ] = ABS,
+ [INC_Z ] = ZM,
+ [JSR ] = ZM,
+ [JSL ] = ABS,
+ [AND ] = IMM,
+ [ABA ] = IMPL,
+ [AND_AB ] = ABS,
+ [CMP_IN ] = IND,
+ [AND_Z ] = ZM,
+ [PLP ] = IMM,
+ [CPX ] = IMM,
+ [PHY ] = IMM,
+ [CPB_AB ] = ABS,
+ [CPB_Z ] = ZM,
+ [BPO_Z ] = ZM,
+ [BPO ] = ABS,
+ [ORA ] = IMM,
+ [OAB ] = IMPL,
+ [ORA_AB ] = ABS,
+ [LDB_IN ] = IND,
+ [ORA_Z ] = ZM,
+ [STT ] = IMM,
+ [LDA_ZY ] = ZMY,
+ [PLY ] = IMM,
+ [CPX_AB ] = ABS,
+ [CPY_Z ] = ZM,
+ [BNG_Z ] = ZM,
+ [BNG ] = ABS,
+ [XOR ] = IMM,
+ [XAB ] = IMPL,
+ [XOR_AB ] = ABS,
+ [STB_IN ] = IND,
+ [XOR_Z ] = ZM,
+ [PHA ] = IMM,
+ [STA_ZY ] = ZMY,
+ [PHX ] = IMM,
+ [CPY_AB ] = ABS,
+ [CPX_Z ] = ZM,
+ [BCS_Z ] = ZM,
+ [BCS ] = ABS,
+ [LSL ] = IMM,
+ [LLB ] = IMPL,
+ [LSL_AB ] = ABS,
+ [CPB_IN ] = IND,
+ [LSL_Z ] = ZM,
+ [CLC ] = IMPL,
+ [LDB_ZY ] = ZMY,
+ [PLX ] = IMM,
+ [LDA_IY ] = INDY,
+ [LDA_IX ] = INDX,
+ [BCC_Z ] = ZM,
+ [BCC ] = ABS,
+ [LSR ] = IMM,
+ [LRB ] = IMPL,
+ [LSR_AB ] = ABS,
+ [LDY_IN ] = IND,
+ [LSR_Z ] = ZM,
+ [PLA ] = IMM,
+ [STB_ZY ] = ZMY,
+ [TAB ] = IMPL,
+ [STA_IY ] = INDY,
+ [STA_IX ] = INDX,
+ [BEQ_Z ] = ZM,
+ [BEQ ] = ABS,
+ [ROL ] = IMM,
+ [RLB ] = IMPL,
+ [ROL_AB ] = ABS,
+ [STY_IN ] = IND,
+ [ROL_Z ] = ZM,
+ [SEC ] = IMPL,
+ [LDA_ZX ] = ZMX,
+ [TBA ] = IMPL,
+ [CMP_IY ] = INDY,
+ [CMP_IX ] = INDX,
+ [BNE_Z ] = ZM,
+ [BNE ] = ABS,
+ [ROR ] = IMM,
+ [RRB ] = IMPL,
+ [ROR_AB ] = ABS,
+ [CPY_IN ] = IND,
+ [ROR_Z ] = ZM,
+ [DEY ] = IMPL,
+ [STA_ZX ] = ZMX,
+ [TAY ] = IMPL,
+ [LDB_IY ] = INDY,
+ [LDB_IX ] = INDX,
+ [BVS_Z ] = ZM,
+ [BVS ] = ABS,
+ [MUL ] = IMM,
+ [MAB ] = IMPL,
+ [MUL_AB ] = ABS,
+ [LDX_IN ] = IND,
+ [MUL_Z ] = ZM,
+ [CLI ] = IMPL,
+ [LDB_ZX ] = ZMX,
+ [TYA ] = IMPL,
+ [STB_IY ] = INDY,
+ [STB_IX ] = INDX,
+ [BVC_Z ] = ZM,
+ [BVC ] = ABS,
+ [DIV ] = IMM,
+ [DAB ] = IMPL,
+ [DIV_AB ] = ABS,
+ [STX_IN ] = IND,
+ [DIV_Z ] = ZM,
+ [INY ] = IMPL,
+ [STB_ZX ] = ZMX,
+ [TAX ] = IMPL,
+ [CPB_IY ] = INDY,
+ [CPB_IX ] = INDX,
+ [RTS ] = IMPL,
+ [RTL ] = IMPL,
+ [CMP ] = IMM,
+ [CAB ] = IMPL,
+ [CMP_AB ] = ABS,
+ [CPX_IN ] = IND,
+ [CMP_Z ] = ZM,
+ [SEI ] = IMPL,
+ [LDX ] = IMM,
+ [TXA ] = IMPL,
+ [LDX_AB ] = ABS,
+ [LDX_Z ] = ZM,
+ [JSR_IN ] = IND,
+ [RTI ] = IMPL,
+ [LDA ] = IMM,
+ [LDA_AB ] = ABS,
+ [DEX ] = IMPL,
+ [LDA_Z ] = ZM,
+ [CLV ] = IMPL,
+ [LDX_ZY ] = ZMY,
+ [TYX ] = IMPL,
+ [STA ] = ABS,
+ [STA_Z ] = ZM,
+ [JMP_IN ] = IND,
+ [TSX ] = IMPL,
+ [LDB ] = IMM,
+ [LDB_AB ] = ABS,
+ [INX ] = IMPL,
+ [LDB_Z ] = ZM,
+ [WAI ] = IMPL,
+ [STX_ZY ] = ZMY,
+ [TXY ] = IMPL,
+ [STB ] = ABS,
+ [STB_Z ] = ZM,
+ [TXS ] = IMM,
+ [LDY ] = IMM,
+ [LDY_AB ] = ABS,
+ [DEC ] = IMPL,
+ [LDY_Z ] = ZM,
+ [BRK ] = IMPL,
+ [LDY_ZX ] = ZMX,
+ [NOP ] = IMPL,
+ [STY ] = ABS,
+ [STY_Z ] = ZM,
+ [DEB ] = IMPL,
+ [ASR ] = IMM,
+ [ARB ] = IMPL,
+ [ASR_AB ] = ABS,
+ [INC ] = IMPL,
+ [ASR_Z ] = ZM,
+ [STY_ZX ] = ZMX,
+ [STX ] = ABS,
+ [STX_Z ] = ZM,
+ [INB ] = IMPL
+};