mirror of
https://github.com/odin-lang/Odin.git
synced 2026-06-20 09:02:32 +00:00
558 lines
23 KiB
Odin
558 lines
23 KiB
Odin
package rexcode_mos65816
|
|
|
|
// =============================================================================
|
|
// GENERATED FILE - DO NOT EDIT
|
|
// =============================================================================
|
|
//
|
|
// Generated by tools/gen_decode_tables.odin from ENCODING_TABLE.
|
|
// Regenerate with: cd mos65816 && odin run tools/gen_decode_tables.odin -file
|
|
//
|
|
|
|
Decode_Entry :: struct #packed {
|
|
mnemonic: Mnemonic,
|
|
ops: [2]Operand_Type,
|
|
enc: [2]Operand_Encoding,
|
|
opcode: u8,
|
|
length: u8,
|
|
flags: Encoding_Flags,
|
|
}
|
|
#assert(size_of(Decode_Entry) == 9)
|
|
|
|
Decode_Index :: struct #packed {
|
|
start: u16,
|
|
count: u16,
|
|
}
|
|
#assert(size_of(Decode_Index) == 4)
|
|
|
|
|
|
@(rodata)
|
|
DECODE_ENTRIES := [268]Decode_Entry{
|
|
{ .BRK, {.IMM_8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x00, 2, {branch=true} },
|
|
{ .ORA, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x01, 2, {} },
|
|
{ .COP, {.IMM_8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x02, 2, {branch=true} },
|
|
{ .ORA, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x03, 2, {} },
|
|
{ .TSB, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x04, 2, {} },
|
|
{ .ORA, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x05, 2, {} },
|
|
{ .ASL, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x06, 2, {} },
|
|
{ .ORA, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x07, 2, {} },
|
|
{ .PHP, {.NONE, .NONE}, {.NONE, .NONE}, 0x08, 1, {} },
|
|
{ .ORA, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x09, 2, {} },
|
|
{ .ORA, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0x09, 3, {} },
|
|
{ .ASL, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x0A, 1, {} },
|
|
{ .PHD, {.NONE, .NONE}, {.NONE, .NONE}, 0x0B, 1, {} },
|
|
{ .TSB, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x0C, 3, {} },
|
|
{ .ORA, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x0D, 3, {} },
|
|
{ .ASL, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x0E, 3, {} },
|
|
{ .ORA, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x0F, 4, {} },
|
|
{ .BPL, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x10, 2, {cond_branch=true} },
|
|
{ .ORA, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x11, 2, {page_cross=true} },
|
|
{ .ORA, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x12, 2, {} },
|
|
{ .ORA, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x13, 2, {} },
|
|
{ .TRB, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x14, 2, {} },
|
|
{ .ORA, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x15, 2, {} },
|
|
{ .ASL, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x16, 2, {} },
|
|
{ .ORA, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x17, 2, {} },
|
|
{ .CLC, {.NONE, .NONE}, {.NONE, .NONE}, 0x18, 1, {} },
|
|
{ .ORA, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0x19, 3, {page_cross=true} },
|
|
{ .INC, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x1A, 1, {} },
|
|
{ .TCS, {.NONE, .NONE}, {.NONE, .NONE}, 0x1B, 1, {} },
|
|
{ .TRB, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x1C, 3, {} },
|
|
{ .ORA, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x1D, 3, {page_cross=true} },
|
|
{ .ASL, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x1E, 3, {} },
|
|
{ .ORA, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0x1F, 4, {} },
|
|
{ .JSR, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x20, 3, {branch=true} },
|
|
{ .AND, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x21, 2, {} },
|
|
{ .JSL, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x22, 4, {branch=true} },
|
|
{ .AND, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x23, 2, {} },
|
|
{ .BIT, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x24, 2, {} },
|
|
{ .AND, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x25, 2, {} },
|
|
{ .ROL, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x26, 2, {} },
|
|
{ .AND, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x27, 2, {} },
|
|
{ .PLP, {.NONE, .NONE}, {.NONE, .NONE}, 0x28, 1, {} },
|
|
{ .AND, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x29, 2, {} },
|
|
{ .AND, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0x29, 3, {} },
|
|
{ .ROL, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x2A, 1, {} },
|
|
{ .PLD, {.NONE, .NONE}, {.NONE, .NONE}, 0x2B, 1, {} },
|
|
{ .BIT, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x2C, 3, {} },
|
|
{ .AND, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x2D, 3, {} },
|
|
{ .ROL, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x2E, 3, {} },
|
|
{ .AND, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x2F, 4, {} },
|
|
{ .BMI, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x30, 2, {cond_branch=true} },
|
|
{ .AND, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x31, 2, {page_cross=true} },
|
|
{ .AND, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x32, 2, {} },
|
|
{ .AND, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x33, 2, {} },
|
|
{ .BIT, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x34, 2, {} },
|
|
{ .AND, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x35, 2, {} },
|
|
{ .ROL, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x36, 2, {} },
|
|
{ .AND, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x37, 2, {} },
|
|
{ .SEC, {.NONE, .NONE}, {.NONE, .NONE}, 0x38, 1, {} },
|
|
{ .AND, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0x39, 3, {page_cross=true} },
|
|
{ .DEC, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x3A, 1, {} },
|
|
{ .TSC, {.NONE, .NONE}, {.NONE, .NONE}, 0x3B, 1, {} },
|
|
{ .BIT, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x3C, 3, {page_cross=true} },
|
|
{ .AND, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x3D, 3, {page_cross=true} },
|
|
{ .ROL, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x3E, 3, {} },
|
|
{ .AND, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0x3F, 4, {} },
|
|
{ .RTI, {.NONE, .NONE}, {.NONE, .NONE}, 0x40, 1, {branch=true} },
|
|
{ .EOR, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x41, 2, {} },
|
|
{ .WDM, {.IMM_8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x42, 2, {} },
|
|
{ .EOR, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x43, 2, {} },
|
|
{ .MVP, {.BANK_SRC, .BANK_DST}, {.BYTE_2_BANK, .BYTE_1_BANK}, 0x44, 3, {} },
|
|
{ .EOR, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x45, 2, {} },
|
|
{ .LSR, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x46, 2, {} },
|
|
{ .EOR, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x47, 2, {} },
|
|
{ .PHA, {.NONE, .NONE}, {.NONE, .NONE}, 0x48, 1, {} },
|
|
{ .EOR, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x49, 2, {} },
|
|
{ .EOR, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0x49, 3, {} },
|
|
{ .LSR, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x4A, 1, {} },
|
|
{ .PHK, {.NONE, .NONE}, {.NONE, .NONE}, 0x4B, 1, {} },
|
|
{ .JMP, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x4C, 3, {branch=true} },
|
|
{ .EOR, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x4D, 3, {} },
|
|
{ .LSR, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x4E, 3, {} },
|
|
{ .EOR, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x4F, 4, {} },
|
|
{ .BVC, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x50, 2, {cond_branch=true} },
|
|
{ .EOR, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x51, 2, {page_cross=true} },
|
|
{ .EOR, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x52, 2, {} },
|
|
{ .EOR, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x53, 2, {} },
|
|
{ .MVN, {.BANK_SRC, .BANK_DST}, {.BYTE_2_BANK, .BYTE_1_BANK}, 0x54, 3, {} },
|
|
{ .EOR, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x55, 2, {} },
|
|
{ .LSR, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x56, 2, {} },
|
|
{ .EOR, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x57, 2, {} },
|
|
{ .CLI, {.NONE, .NONE}, {.NONE, .NONE}, 0x58, 1, {} },
|
|
{ .EOR, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0x59, 3, {page_cross=true} },
|
|
{ .PHY, {.NONE, .NONE}, {.NONE, .NONE}, 0x5A, 1, {} },
|
|
{ .TCD, {.NONE, .NONE}, {.NONE, .NONE}, 0x5B, 1, {} },
|
|
{ .JML, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x5C, 4, {branch=true} },
|
|
{ .EOR, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x5D, 3, {page_cross=true} },
|
|
{ .LSR, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x5E, 3, {} },
|
|
{ .EOR, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0x5F, 4, {} },
|
|
{ .RTS, {.NONE, .NONE}, {.NONE, .NONE}, 0x60, 1, {branch=true} },
|
|
{ .ADC, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x61, 2, {} },
|
|
{ .PER, {.REL_LONG, .NONE}, {.WORD_1_REL, .NONE}, 0x62, 3, {} },
|
|
{ .ADC, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x63, 2, {} },
|
|
{ .STZ, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x64, 2, {} },
|
|
{ .ADC, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x65, 2, {} },
|
|
{ .ROR, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x66, 2, {} },
|
|
{ .ADC, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x67, 2, {} },
|
|
{ .PLA, {.NONE, .NONE}, {.NONE, .NONE}, 0x68, 1, {} },
|
|
{ .ADC, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x69, 2, {} },
|
|
{ .ADC, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0x69, 3, {} },
|
|
{ .ROR, {.A_IMPL, .NONE}, {.IMPL, .NONE}, 0x6A, 1, {} },
|
|
{ .RTL, {.NONE, .NONE}, {.NONE, .NONE}, 0x6B, 1, {branch=true} },
|
|
{ .JMP, {.MEM_ABS_IND, .NONE}, {.WORD_1_ADDR, .NONE}, 0x6C, 3, {branch=true} },
|
|
{ .ADC, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x6D, 3, {} },
|
|
{ .ROR, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x6E, 3, {} },
|
|
{ .ADC, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x6F, 4, {} },
|
|
{ .BVS, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x70, 2, {cond_branch=true} },
|
|
{ .ADC, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x71, 2, {page_cross=true} },
|
|
{ .ADC, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x72, 2, {} },
|
|
{ .ADC, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x73, 2, {} },
|
|
{ .STZ, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x74, 2, {} },
|
|
{ .ADC, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x75, 2, {} },
|
|
{ .ROR, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x76, 2, {} },
|
|
{ .ADC, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x77, 2, {} },
|
|
{ .SEI, {.NONE, .NONE}, {.NONE, .NONE}, 0x78, 1, {} },
|
|
{ .ADC, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0x79, 3, {page_cross=true} },
|
|
{ .PLY, {.NONE, .NONE}, {.NONE, .NONE}, 0x7A, 1, {} },
|
|
{ .TDC, {.NONE, .NONE}, {.NONE, .NONE}, 0x7B, 1, {} },
|
|
{ .JMP, {.MEM_ABS_IND_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x7C, 3, {branch=true} },
|
|
{ .ADC, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x7D, 3, {page_cross=true} },
|
|
{ .ROR, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x7E, 3, {} },
|
|
{ .ADC, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0x7F, 4, {} },
|
|
{ .BRA, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x80, 2, {branch=true} },
|
|
{ .STA, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x81, 2, {} },
|
|
{ .BRL, {.REL_LONG, .NONE}, {.WORD_1_REL, .NONE}, 0x82, 3, {branch=true} },
|
|
{ .STA, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x83, 2, {} },
|
|
{ .STY, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x84, 2, {} },
|
|
{ .STA, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x85, 2, {} },
|
|
{ .STX, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x86, 2, {} },
|
|
{ .STA, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x87, 2, {} },
|
|
{ .DEY, {.NONE, .NONE}, {.NONE, .NONE}, 0x88, 1, {} },
|
|
{ .BIT, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0x89, 2, {} },
|
|
{ .BIT, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0x89, 3, {} },
|
|
{ .TXA, {.NONE, .NONE}, {.NONE, .NONE}, 0x8A, 1, {} },
|
|
{ .PHB, {.NONE, .NONE}, {.NONE, .NONE}, 0x8B, 1, {} },
|
|
{ .STY, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x8C, 3, {} },
|
|
{ .STA, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x8D, 3, {} },
|
|
{ .STX, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x8E, 3, {} },
|
|
{ .STA, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0x8F, 4, {} },
|
|
{ .BCC, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0x90, 2, {cond_branch=true} },
|
|
{ .STA, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x91, 2, {} },
|
|
{ .STA, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x92, 2, {} },
|
|
{ .STA, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x93, 2, {} },
|
|
{ .STY, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x94, 2, {} },
|
|
{ .STA, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x95, 2, {} },
|
|
{ .STX, {.MEM_DP_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x96, 2, {} },
|
|
{ .STA, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0x97, 2, {} },
|
|
{ .TYA, {.NONE, .NONE}, {.NONE, .NONE}, 0x98, 1, {} },
|
|
{ .STA, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0x99, 3, {} },
|
|
{ .TXS, {.NONE, .NONE}, {.NONE, .NONE}, 0x9A, 1, {} },
|
|
{ .TXY, {.NONE, .NONE}, {.NONE, .NONE}, 0x9B, 1, {} },
|
|
{ .STZ, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0x9C, 3, {} },
|
|
{ .STA, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x9D, 3, {} },
|
|
{ .STZ, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0x9E, 3, {} },
|
|
{ .STA, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0x9F, 4, {} },
|
|
{ .LDY, {.IMM_X8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xA0, 2, {} },
|
|
{ .LDY, {.IMM_X16, .NONE}, {.WORD_1_IMM, .NONE}, 0xA0, 3, {} },
|
|
{ .LDA, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA1, 2, {} },
|
|
{ .LDX, {.IMM_X8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xA2, 2, {} },
|
|
{ .LDX, {.IMM_X16, .NONE}, {.WORD_1_IMM, .NONE}, 0xA2, 3, {} },
|
|
{ .LDA, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA3, 2, {} },
|
|
{ .LDY, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA4, 2, {} },
|
|
{ .LDA, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA5, 2, {} },
|
|
{ .LDX, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA6, 2, {} },
|
|
{ .LDA, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xA7, 2, {} },
|
|
{ .TAY, {.NONE, .NONE}, {.NONE, .NONE}, 0xA8, 1, {} },
|
|
{ .LDA, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xA9, 2, {} },
|
|
{ .LDA, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0xA9, 3, {} },
|
|
{ .TAX, {.NONE, .NONE}, {.NONE, .NONE}, 0xAA, 1, {} },
|
|
{ .PLB, {.NONE, .NONE}, {.NONE, .NONE}, 0xAB, 1, {} },
|
|
{ .LDY, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xAC, 3, {} },
|
|
{ .LDA, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xAD, 3, {} },
|
|
{ .LDX, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xAE, 3, {} },
|
|
{ .LDA, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0xAF, 4, {} },
|
|
{ .BCS, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0xB0, 2, {cond_branch=true} },
|
|
{ .LDA, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB1, 2, {page_cross=true} },
|
|
{ .LDA, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB2, 2, {} },
|
|
{ .LDA, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB3, 2, {} },
|
|
{ .LDY, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB4, 2, {} },
|
|
{ .LDA, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB5, 2, {} },
|
|
{ .LDX, {.MEM_DP_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB6, 2, {} },
|
|
{ .LDA, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xB7, 2, {} },
|
|
{ .CLV, {.NONE, .NONE}, {.NONE, .NONE}, 0xB8, 1, {} },
|
|
{ .LDA, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0xB9, 3, {page_cross=true} },
|
|
{ .TSX, {.NONE, .NONE}, {.NONE, .NONE}, 0xBA, 1, {} },
|
|
{ .TYX, {.NONE, .NONE}, {.NONE, .NONE}, 0xBB, 1, {} },
|
|
{ .LDY, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xBC, 3, {page_cross=true} },
|
|
{ .LDA, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xBD, 3, {page_cross=true} },
|
|
{ .LDX, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0xBE, 3, {page_cross=true} },
|
|
{ .LDA, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0xBF, 4, {} },
|
|
{ .CPY, {.IMM_X8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xC0, 2, {} },
|
|
{ .CPY, {.IMM_X16, .NONE}, {.WORD_1_IMM, .NONE}, 0xC0, 3, {} },
|
|
{ .CMP, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC1, 2, {} },
|
|
{ .REP, {.IMM_8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xC2, 2, {} },
|
|
{ .CMP, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC3, 2, {} },
|
|
{ .CPY, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC4, 2, {} },
|
|
{ .CMP, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC5, 2, {} },
|
|
{ .DEC, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC6, 2, {} },
|
|
{ .CMP, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xC7, 2, {} },
|
|
{ .INY, {.NONE, .NONE}, {.NONE, .NONE}, 0xC8, 1, {} },
|
|
{ .CMP, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xC9, 2, {} },
|
|
{ .CMP, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0xC9, 3, {} },
|
|
{ .DEX, {.NONE, .NONE}, {.NONE, .NONE}, 0xCA, 1, {} },
|
|
{ .WAI, {.NONE, .NONE}, {.NONE, .NONE}, 0xCB, 1, {} },
|
|
{ .CPY, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xCC, 3, {} },
|
|
{ .CMP, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xCD, 3, {} },
|
|
{ .DEC, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xCE, 3, {} },
|
|
{ .CMP, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0xCF, 4, {} },
|
|
{ .BNE, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0xD0, 2, {cond_branch=true} },
|
|
{ .CMP, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD1, 2, {page_cross=true} },
|
|
{ .CMP, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD2, 2, {} },
|
|
{ .CMP, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD3, 2, {} },
|
|
{ .PEI, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD4, 2, {} },
|
|
{ .CMP, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD5, 2, {} },
|
|
{ .DEC, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD6, 2, {} },
|
|
{ .CMP, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xD7, 2, {} },
|
|
{ .CLD, {.NONE, .NONE}, {.NONE, .NONE}, 0xD8, 1, {} },
|
|
{ .CMP, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0xD9, 3, {page_cross=true} },
|
|
{ .PHX, {.NONE, .NONE}, {.NONE, .NONE}, 0xDA, 1, {} },
|
|
{ .STP, {.NONE, .NONE}, {.NONE, .NONE}, 0xDB, 1, {} },
|
|
{ .JML, {.MEM_ABS_IND_LONG, .NONE}, {.WORD_1_ADDR, .NONE}, 0xDC, 3, {branch=true} },
|
|
{ .CMP, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xDD, 3, {page_cross=true} },
|
|
{ .DEC, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xDE, 3, {} },
|
|
{ .CMP, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0xDF, 4, {} },
|
|
{ .CPX, {.IMM_X8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xE0, 2, {} },
|
|
{ .CPX, {.IMM_X16, .NONE}, {.WORD_1_IMM, .NONE}, 0xE0, 3, {} },
|
|
{ .SBC, {.MEM_DP_IND_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE1, 2, {} },
|
|
{ .SEP, {.IMM_8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xE2, 2, {} },
|
|
{ .SBC, {.MEM_SR, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE3, 2, {} },
|
|
{ .CPX, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE4, 2, {} },
|
|
{ .SBC, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE5, 2, {} },
|
|
{ .INC, {.MEM_DP, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE6, 2, {} },
|
|
{ .SBC, {.MEM_DP_IND_LONG, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xE7, 2, {} },
|
|
{ .INX, {.NONE, .NONE}, {.NONE, .NONE}, 0xE8, 1, {} },
|
|
{ .SBC, {.IMM_M8, .NONE}, {.BYTE_1_IMM, .NONE}, 0xE9, 2, {} },
|
|
{ .SBC, {.IMM_M16, .NONE}, {.WORD_1_IMM, .NONE}, 0xE9, 3, {} },
|
|
{ .NOP, {.NONE, .NONE}, {.NONE, .NONE}, 0xEA, 1, {} },
|
|
{ .XBA, {.NONE, .NONE}, {.NONE, .NONE}, 0xEB, 1, {} },
|
|
{ .CPX, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xEC, 3, {} },
|
|
{ .SBC, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xED, 3, {} },
|
|
{ .INC, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xEE, 3, {} },
|
|
{ .SBC, {.MEM_LONG, .NONE}, {.LONG_1_ADDR, .NONE}, 0xEF, 4, {} },
|
|
{ .BEQ, {.REL, .NONE}, {.BYTE_1_REL, .NONE}, 0xF0, 2, {cond_branch=true} },
|
|
{ .SBC, {.MEM_DP_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF1, 2, {page_cross=true} },
|
|
{ .SBC, {.MEM_DP_IND, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF2, 2, {} },
|
|
{ .SBC, {.MEM_SR_IND_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF3, 2, {} },
|
|
{ .PEA, {.MEM_ABS, .NONE}, {.WORD_1_ADDR, .NONE}, 0xF4, 3, {} },
|
|
{ .SBC, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF5, 2, {} },
|
|
{ .INC, {.MEM_DP_X, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF6, 2, {} },
|
|
{ .SBC, {.MEM_DP_IND_LONG_Y, .NONE}, {.BYTE_1_ADDR, .NONE}, 0xF7, 2, {} },
|
|
{ .SED, {.NONE, .NONE}, {.NONE, .NONE}, 0xF8, 1, {} },
|
|
{ .SBC, {.MEM_ABS_Y, .NONE}, {.WORD_1_ADDR, .NONE}, 0xF9, 3, {page_cross=true} },
|
|
{ .PLX, {.NONE, .NONE}, {.NONE, .NONE}, 0xFA, 1, {} },
|
|
{ .XCE, {.NONE, .NONE}, {.NONE, .NONE}, 0xFB, 1, {} },
|
|
{ .JSR, {.MEM_ABS_IND_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xFC, 3, {branch=true} },
|
|
{ .SBC, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xFD, 3, {page_cross=true} },
|
|
{ .INC, {.MEM_ABS_X, .NONE}, {.WORD_1_ADDR, .NONE}, 0xFE, 3, {} },
|
|
{ .SBC, {.MEM_LONG_X, .NONE}, {.LONG_1_ADDR, .NONE}, 0xFF, 4, {} },
|
|
}
|
|
DECODE_INDEX_OPCODE := [256]Decode_Index{
|
|
0x00 = {0, 1},
|
|
0x01 = {1, 1},
|
|
0x02 = {2, 1},
|
|
0x03 = {3, 1},
|
|
0x04 = {4, 1},
|
|
0x05 = {5, 1},
|
|
0x06 = {6, 1},
|
|
0x07 = {7, 1},
|
|
0x08 = {8, 1},
|
|
0x09 = {9, 2},
|
|
0x0A = {11, 1},
|
|
0x0B = {12, 1},
|
|
0x0C = {13, 1},
|
|
0x0D = {14, 1},
|
|
0x0E = {15, 1},
|
|
0x0F = {16, 1},
|
|
0x10 = {17, 1},
|
|
0x11 = {18, 1},
|
|
0x12 = {19, 1},
|
|
0x13 = {20, 1},
|
|
0x14 = {21, 1},
|
|
0x15 = {22, 1},
|
|
0x16 = {23, 1},
|
|
0x17 = {24, 1},
|
|
0x18 = {25, 1},
|
|
0x19 = {26, 1},
|
|
0x1A = {27, 1},
|
|
0x1B = {28, 1},
|
|
0x1C = {29, 1},
|
|
0x1D = {30, 1},
|
|
0x1E = {31, 1},
|
|
0x1F = {32, 1},
|
|
0x20 = {33, 1},
|
|
0x21 = {34, 1},
|
|
0x22 = {35, 1},
|
|
0x23 = {36, 1},
|
|
0x24 = {37, 1},
|
|
0x25 = {38, 1},
|
|
0x26 = {39, 1},
|
|
0x27 = {40, 1},
|
|
0x28 = {41, 1},
|
|
0x29 = {42, 2},
|
|
0x2A = {44, 1},
|
|
0x2B = {45, 1},
|
|
0x2C = {46, 1},
|
|
0x2D = {47, 1},
|
|
0x2E = {48, 1},
|
|
0x2F = {49, 1},
|
|
0x30 = {50, 1},
|
|
0x31 = {51, 1},
|
|
0x32 = {52, 1},
|
|
0x33 = {53, 1},
|
|
0x34 = {54, 1},
|
|
0x35 = {55, 1},
|
|
0x36 = {56, 1},
|
|
0x37 = {57, 1},
|
|
0x38 = {58, 1},
|
|
0x39 = {59, 1},
|
|
0x3A = {60, 1},
|
|
0x3B = {61, 1},
|
|
0x3C = {62, 1},
|
|
0x3D = {63, 1},
|
|
0x3E = {64, 1},
|
|
0x3F = {65, 1},
|
|
0x40 = {66, 1},
|
|
0x41 = {67, 1},
|
|
0x42 = {68, 1},
|
|
0x43 = {69, 1},
|
|
0x44 = {70, 1},
|
|
0x45 = {71, 1},
|
|
0x46 = {72, 1},
|
|
0x47 = {73, 1},
|
|
0x48 = {74, 1},
|
|
0x49 = {75, 2},
|
|
0x4A = {77, 1},
|
|
0x4B = {78, 1},
|
|
0x4C = {79, 1},
|
|
0x4D = {80, 1},
|
|
0x4E = {81, 1},
|
|
0x4F = {82, 1},
|
|
0x50 = {83, 1},
|
|
0x51 = {84, 1},
|
|
0x52 = {85, 1},
|
|
0x53 = {86, 1},
|
|
0x54 = {87, 1},
|
|
0x55 = {88, 1},
|
|
0x56 = {89, 1},
|
|
0x57 = {90, 1},
|
|
0x58 = {91, 1},
|
|
0x59 = {92, 1},
|
|
0x5A = {93, 1},
|
|
0x5B = {94, 1},
|
|
0x5C = {95, 1},
|
|
0x5D = {96, 1},
|
|
0x5E = {97, 1},
|
|
0x5F = {98, 1},
|
|
0x60 = {99, 1},
|
|
0x61 = {100, 1},
|
|
0x62 = {101, 1},
|
|
0x63 = {102, 1},
|
|
0x64 = {103, 1},
|
|
0x65 = {104, 1},
|
|
0x66 = {105, 1},
|
|
0x67 = {106, 1},
|
|
0x68 = {107, 1},
|
|
0x69 = {108, 2},
|
|
0x6A = {110, 1},
|
|
0x6B = {111, 1},
|
|
0x6C = {112, 1},
|
|
0x6D = {113, 1},
|
|
0x6E = {114, 1},
|
|
0x6F = {115, 1},
|
|
0x70 = {116, 1},
|
|
0x71 = {117, 1},
|
|
0x72 = {118, 1},
|
|
0x73 = {119, 1},
|
|
0x74 = {120, 1},
|
|
0x75 = {121, 1},
|
|
0x76 = {122, 1},
|
|
0x77 = {123, 1},
|
|
0x78 = {124, 1},
|
|
0x79 = {125, 1},
|
|
0x7A = {126, 1},
|
|
0x7B = {127, 1},
|
|
0x7C = {128, 1},
|
|
0x7D = {129, 1},
|
|
0x7E = {130, 1},
|
|
0x7F = {131, 1},
|
|
0x80 = {132, 1},
|
|
0x81 = {133, 1},
|
|
0x82 = {134, 1},
|
|
0x83 = {135, 1},
|
|
0x84 = {136, 1},
|
|
0x85 = {137, 1},
|
|
0x86 = {138, 1},
|
|
0x87 = {139, 1},
|
|
0x88 = {140, 1},
|
|
0x89 = {141, 2},
|
|
0x8A = {143, 1},
|
|
0x8B = {144, 1},
|
|
0x8C = {145, 1},
|
|
0x8D = {146, 1},
|
|
0x8E = {147, 1},
|
|
0x8F = {148, 1},
|
|
0x90 = {149, 1},
|
|
0x91 = {150, 1},
|
|
0x92 = {151, 1},
|
|
0x93 = {152, 1},
|
|
0x94 = {153, 1},
|
|
0x95 = {154, 1},
|
|
0x96 = {155, 1},
|
|
0x97 = {156, 1},
|
|
0x98 = {157, 1},
|
|
0x99 = {158, 1},
|
|
0x9A = {159, 1},
|
|
0x9B = {160, 1},
|
|
0x9C = {161, 1},
|
|
0x9D = {162, 1},
|
|
0x9E = {163, 1},
|
|
0x9F = {164, 1},
|
|
0xA0 = {165, 2},
|
|
0xA1 = {167, 1},
|
|
0xA2 = {168, 2},
|
|
0xA3 = {170, 1},
|
|
0xA4 = {171, 1},
|
|
0xA5 = {172, 1},
|
|
0xA6 = {173, 1},
|
|
0xA7 = {174, 1},
|
|
0xA8 = {175, 1},
|
|
0xA9 = {176, 2},
|
|
0xAA = {178, 1},
|
|
0xAB = {179, 1},
|
|
0xAC = {180, 1},
|
|
0xAD = {181, 1},
|
|
0xAE = {182, 1},
|
|
0xAF = {183, 1},
|
|
0xB0 = {184, 1},
|
|
0xB1 = {185, 1},
|
|
0xB2 = {186, 1},
|
|
0xB3 = {187, 1},
|
|
0xB4 = {188, 1},
|
|
0xB5 = {189, 1},
|
|
0xB6 = {190, 1},
|
|
0xB7 = {191, 1},
|
|
0xB8 = {192, 1},
|
|
0xB9 = {193, 1},
|
|
0xBA = {194, 1},
|
|
0xBB = {195, 1},
|
|
0xBC = {196, 1},
|
|
0xBD = {197, 1},
|
|
0xBE = {198, 1},
|
|
0xBF = {199, 1},
|
|
0xC0 = {200, 2},
|
|
0xC1 = {202, 1},
|
|
0xC2 = {203, 1},
|
|
0xC3 = {204, 1},
|
|
0xC4 = {205, 1},
|
|
0xC5 = {206, 1},
|
|
0xC6 = {207, 1},
|
|
0xC7 = {208, 1},
|
|
0xC8 = {209, 1},
|
|
0xC9 = {210, 2},
|
|
0xCA = {212, 1},
|
|
0xCB = {213, 1},
|
|
0xCC = {214, 1},
|
|
0xCD = {215, 1},
|
|
0xCE = {216, 1},
|
|
0xCF = {217, 1},
|
|
0xD0 = {218, 1},
|
|
0xD1 = {219, 1},
|
|
0xD2 = {220, 1},
|
|
0xD3 = {221, 1},
|
|
0xD4 = {222, 1},
|
|
0xD5 = {223, 1},
|
|
0xD6 = {224, 1},
|
|
0xD7 = {225, 1},
|
|
0xD8 = {226, 1},
|
|
0xD9 = {227, 1},
|
|
0xDA = {228, 1},
|
|
0xDB = {229, 1},
|
|
0xDC = {230, 1},
|
|
0xDD = {231, 1},
|
|
0xDE = {232, 1},
|
|
0xDF = {233, 1},
|
|
0xE0 = {234, 2},
|
|
0xE1 = {236, 1},
|
|
0xE2 = {237, 1},
|
|
0xE3 = {238, 1},
|
|
0xE4 = {239, 1},
|
|
0xE5 = {240, 1},
|
|
0xE6 = {241, 1},
|
|
0xE7 = {242, 1},
|
|
0xE8 = {243, 1},
|
|
0xE9 = {244, 2},
|
|
0xEA = {246, 1},
|
|
0xEB = {247, 1},
|
|
0xEC = {248, 1},
|
|
0xED = {249, 1},
|
|
0xEE = {250, 1},
|
|
0xEF = {251, 1},
|
|
0xF0 = {252, 1},
|
|
0xF1 = {253, 1},
|
|
0xF2 = {254, 1},
|
|
0xF3 = {255, 1},
|
|
0xF4 = {256, 1},
|
|
0xF5 = {257, 1},
|
|
0xF6 = {258, 1},
|
|
0xF7 = {259, 1},
|
|
0xF8 = {260, 1},
|
|
0xF9 = {261, 1},
|
|
0xFA = {262, 1},
|
|
0xFB = {263, 1},
|
|
0xFC = {264, 1},
|
|
0xFD = {265, 1},
|
|
0xFE = {266, 1},
|
|
0xFF = {267, 1},
|
|
}
|
|
|