enum am {
IMM,
ZM,
ZMX,
ZMY,
IND,
INDX,
INDY,
ABS,
REL,
IMPL,
ABSX,
ABSY,
SPI,
SPX,
SPY,
INA,
INAX,
INAY,
EIND,
};
enum mne {
AAB = 0,
ABA = 1,
ADC = 2,
AND = 3,
ARB = 4,
ASR = 5,
BCC = 6,
BCS = 7,
BEQ = 8,
BNE = 9,
BNG = 10,
BPO = 11,
BRA = 12,
BRK = 13,
BVC = 14,
BVS = 15,
CAB = 16,
CLC = 17,
CLI = 18,
CLV = 19,
CMP = 20,
CPB = 21,
CPS = 22,
CPX = 23,
CPY = 24,
DAB = 25,
DEB = 26,
DEC = 27,
DEX = 28,
DEY = 29,
DIV = 30,
INB = 31,
INC = 32,
INX = 33,
INY = 34,
JMP = 35,
JSR = 36,
LDA = 37,
LDB = 38,
LDX = 39,
LDY = 40,
LLB = 41,
LRB = 42,
LSL = 43,
LSR = 44,
MAB = 45,
MUL = 46,
NOP = 47,
OAB = 48,
ORA = 49,
PHA = 50,
PHB = 51,
PHP = 52,
PHX = 53,
PHY = 54,
PLA = 55,
PLB = 56,
PLP = 57,
PLX = 58,
PLY = 59,
RLB = 60,
ROL = 61,
ROR = 62,
RRB = 63,
RTI = 64,
RTS = 65,
SAB = 66,
SBC = 67,
SEC = 68,
SEI = 69,
STA = 70,
STB = 71,
STX = 72,
STY = 73,
TAB = 74,
TAX = 75,
TAY = 76,
TBA = 77,
TSX = 78,
TXA = 79,
TXS = 80,
TXY = 81,
TYA = 82,
TYX = 83,
WAI = 84,
XAB = 85,
XOR = 86
};
enum base_isa {
CPS_IMP = 0x00,
ADC_IMM = 0x01,
AAB_IMP = 0x02,
ADC_AB = 0x04,
LDA_IN = 0x05,
ADC_Z = 0x06,
CLC_IMP = 0x08,
DEX_IMP = 0x09,
DEC_IMP = 0x0A,
DEC_AB = 0x0C,
DEC_Z = 0x0D,
JMP_AB = 0x10,
SBC_IMM = 0x11,
SAB_IMP = 0x12,
SBC_AB = 0x14,
STA_IN = 0x15,
SBC_Z = 0x16,
SEC_IMP = 0x18,
INX_IMP = 0x19,
INC_IMP = 0x1A,
INC_AB = 0x1C,
INC_Z = 0x1D,
JSR_AB = 0x20,
AND_IMM = 0x21,
ABA_IMP = 0x22,
AND_AB = 0x24,
CMP_IN = 0x25,
AND_Z = 0x26,
CLI_IMP = 0x28,
DEY_IMP = 0x29,
CPB_IMM = 0x2A,
CPB_AB = 0x2C,
CPB_Z = 0x2D,
JMP_Z = 0x30,
ORA_IMM = 0x31,
OAB_IMP = 0x32,
ORA_AB = 0x34,
LDB_IN = 0x35,
ORA_Z = 0x36,
SEI_IMP = 0x38,
INY_IMP = 0x39,
CPX_IMM = 0x3A,
CPX_AB = 0x3C,
CPY_Z = 0x3D,
JSR_Z = 0x40,
XOR_IMM = 0x41,
XAB_IMP = 0x42,
XOR_AB = 0x44,
STB_IN = 0x45,
XOR_Z = 0x46,
CLV_IMP = 0x48,
CPY_IMM = 0x4A,
CPY_AB = 0x4C,
CPX_Z = 0x4D,
BPO_REL = 0x50,
LSL_IMM = 0x51,
LLB_IMP = 0x52,
LSL_AB = 0x54,
CPB_IN = 0x55,
LSL_Z = 0x56,
WAI_IMP = 0x58,
PHP_IMP = 0x59,
TAB_IMP = 0x5A,
LDA_IY = 0x5C,
LDA_IX = 0x5D,
BNG_REL = 0x60,
LSR_IMM = 0x61,
LRB_IMP = 0x62,
LSR_AB = 0x64,
LDY_IN = 0x65,
LSR_Z = 0x66,
BRK_IMP = 0x68,
PLP_IMP = 0x69,
TBA_IMP = 0x6A,
STA_IY = 0x6C,
STA_IX = 0x6D,
BCS_REL = 0x70,
ROL_IMM = 0x71,
RLB_IMP = 0x72,
ROL_AB = 0x74,
STY_IN = 0x75,
ROL_Z = 0x76,
LDA_ZY = 0x78,
PHA_IMP = 0x79,
TAY_IMP = 0x7A,
CMP_IY = 0x7C,
CMP_IX = 0x7D,
BCC_REL = 0x80,
ROR_IMM = 0x81,
RRB_IMP = 0x82,
ROR_AB = 0x84,
LDX_IN = 0x85,
ROR_Z = 0x86,
STA_ZY = 0x88,
PLA_IMP = 0x89,
TYA_IMP = 0x8A,
LDB_IY = 0x8C,
LDB_IX = 0x8D,
BEQ_REL = 0x90,
MUL_IMM = 0x91,
MAB_IMP = 0x92,
MUL_AB = 0x94,
STX_IN = 0x95,
MUL_Z = 0x96,
LDB_ZY = 0x98,
PHB_IMP = 0x99,
TAX_IMP = 0x9A,
STB_IY = 0x9C,
STB_IX = 0x9D,
BNE_REL = 0xA0,
DIV_IMM = 0xA1,
DAB_IMP = 0xA2,
DIV_AB = 0xA4,
JSR_IN = 0xA5,
DIV_Z = 0xA6,
STB_ZY = 0xA8,
PLB_IMP = 0xA9,
TXA_IMP = 0xAA,
CPB_IY = 0xAC,
CPB_IX = 0xAD,
BVS_REL = 0xB0,
CMP_IMM = 0xB1,
CAB_IMP = 0xB2,
CMP_AB = 0xB4,
JMP_IN = 0xB5,
CMP_Z = 0xB6,
LDA_ZX = 0xB8,
LDX_IMM = 0xB9,
TYX_IMP = 0xBA,
LDX_AB = 0xBC,
LDX_Z = 0xBD,
BVC_REL = 0xC0,
LDA_IMM = 0xC1,
DEB_IMP = 0xC2,
LDA_AB = 0xC4,
LDA_Z = 0xC6,
STA_ZX = 0xC8,
PHY_IMP = 0xC9,
TXY_IMP = 0xCA,
STA_AB = 0xCC,
STA_Z = 0xCD,
BRA_REL = 0xD0,
LDB_IMM = 0xD1,
INB_IMP = 0xD2,
LDB_AB = 0xD4,
LDB_Z = 0xD6,
LDB_ZX = 0xD8,
PLY_IMP = 0xD9,
TSX_IMP = 0xDA,
STB_AB = 0xDC,
STB_Z = 0xDD,
RTS_IMP = 0xE0,
LDY_IMM = 0xE1,
LDY_AB = 0xE4,
LDY_Z = 0xE6,
STB_ZX = 0xE8,
PHX_IMP = 0xE9,
NOP_IMP = 0xEA,
STY_AB = 0xEC,
STY_Z = 0xED,
RTI_IMP = 0xF0,
ASR_IMM = 0xF1,
ARB_IMP = 0xF2,
ASR_AB = 0xF4,
ASR_Z = 0xF6,
PLX_IMP = 0xF9,
TXS_IMM = 0xFA,
STX_AB = 0xFC,
STX_Z = 0xFD
};
enum base_ext {
ADC_E = 0x01,
LEA_ZX = 0x02,
LEA_SX = 0x03,
ADD = 0x04,
LLM = 0x05,
PHE = 0x08,
CPB_E = 0x09,
DEC_E = 0x0C,
JMP_E = 0x10,
SBC_E = 0x11,
LEA_ZY = 0x12,
LEA_SY = 0x13,
ADD_E = 0x14,
LLM_Z = 0x15,
CPY_E = 0x19,
INC_E = 0x1C,
JSR_E = 0x20,
AND_E = 0x21,
PEA_ZX = 0x22,
PEA_SX = 0x23,
SUB = 0x24,
LLM_E = 0x25,
PLE = 0x28,
CPX_E = 0x29,
DEE = 0x2C,
BPO_E = 0x30,
ORA_E = 0x31,
PEA_ZY = 0x32,
PEA_SY = 0x33,
SUB_E = 0x34,
LRM = 0x35,
CPE = 0x39,
INE = 0x3C,
BNG_E = 0x40,
XOR_E = 0x41,
LEA_AX = 0x42,
LEA_SI = 0x43,
ADE = 0x44,
LRM_Z = 0x45,
CPE_AB = 0x49,
DES = 0x4C,
BCS_E = 0x50,
LSL_E = 0x51,
LEA_AY = 0x52,
LEA_RE = 0x53,
ADE_A = 0x54,
LRM_E = 0x55,
CPE_Z = 0x59,
INS = 0x5C,
BCC_E = 0x60,
LSR_E = 0x61,
PEA_AX = 0x62,
PEA_SI = 0x63,
SBE = 0x64,
RLM = 0x65,
ICE = 0x69,
BEQ_E = 0x70,
ROL_E = 0x71,
PEA_AY = 0x72,
PEA_RE = 0x73,
RLM_Z = 0x75,
ICE_Z = 0x79,
STE = 0x7C,
BNE_E = 0x80,
ROR_E = 0x81,
LEA_IX = 0x82,
LEA_IN = 0x83,
ADS = 0x84,
RLM_E = 0x85,
ICE_E = 0x89,
STE_Z = 0x8C,
BVS_E = 0x90,
MUL_E = 0x91,
LEA_IY = 0x92,
LEA_AI = 0x93,
ADS_A = 0x94,
RRM = 0x95,
STZ = 0x9C,
BVC_E = 0xA0,
DIV_E = 0xA1,
PEA_IX = 0xA2,
PEA_IN = 0xA3,
SBS = 0xA4,
RRM_ZM = 0xA5,
STZ_ZM = 0xAC,
CMP_E = 0xB1,
PEA_IY = 0xB2,
PEA_AI = 0xB3,
SBS_A = 0xB4,
RRM_E = 0xB5,
LDX_E = 0xB9,
STZ_E = 0xBC,
LDA_E = 0xC1,
LEA_AIX = 0xC2,
LEA_Z = 0xC3,
NOT = 0xC4,
ARM = 0xC5,
LDE = 0xC9,
STA_E = 0xCC,
LDB_E = 0xD1,
LEA_AIY = 0xD2,
LEA = 0xD3,
NOT_AB = 0xD4,
ARM_Z = 0xD5,
LDE_AB = 0xD9,
STB_E = 0xDC,
LDY_E = 0xE1,
PEA_AIX = 0xE2,
PEA_Z = 0xE3,
NOT_Z = 0xE4,
ARM_E = 0xE5,
LDE_Z = 0xE9,
STY_E = 0xEC,
ASR_E = 0xF1,
PEA_AIY = 0xF2,
PEA = 0xF3,
NOT_E = 0xF4,
STX_E = 0xFC,
};