summaryrefslogtreecommitdiff
path: root/disasm.h
diff options
context:
space:
mode:
authormrb0nk500 <b0nk@b0nk.xyz>2020-08-08 18:11:35 -0400
committermrb0nk500 <b0nk@b0nk.xyz>2020-08-08 18:11:35 -0400
commitf16af793a58a9f398fc598a0c129e3bb90eb61f6 (patch)
tree2f674574f2955a1bc52ee3a6818516226833ea9b /disasm.h
parent1ec19679b3db209429b0897f6ccda6d09d018a70 (diff)
- Refactored the opcode table, in order to make the
instruction formatting simpler. - Refactored the instruction table of the emulator's assembler, it now has two parts, the addressing mode bits, and the base value. The base value is what's used to generate the actual opcode, with the addressing mode bits telling the assembler what addressing modes this instruction supports. The reason for doing this was to use less space. For comparison, the previous version used 870 bytes for the instruction table, while the new version uses only 222 bytes. The new version is nearly 4 times smaller than the pervious version. - The B register based ALU instructions now use their own addressing mode, and are specified by using 'b' as the operand for those instructions. For example, to add the Accumulator with the B register, you now use "ADC B" instead of "AAB".
Diffstat (limited to 'disasm.h')
-rw-r--r--disasm.h282
1 files changed, 141 insertions, 141 deletions
diff --git a/disasm.h b/disasm.h
index 6164d94..e56007f 100644
--- a/disasm.h
+++ b/disasm.h
@@ -1,171 +1,171 @@
static const char *opname[0x100] = {
[CPS_IMP ] = "CPS",
[ADC_IMM ] = "ADC #",
- [AAB_IMP ] = "AAB",
- [ADC_AB ] = "ADC a",
- [LDA_IN ] = "LDA ind",
+ [ROR_IMM ] = "ROR #",
+ [CPB_IMM ] = "CPB #",
[ADC_Z ] = "ADC zm",
+ [ROR_Z ] = "ROR zm",
+ [CPB_Z ] = "CPB zm",
[CLC_IMP ] = "CLC",
- [DEX_IMP ] = "DEX",
- [DEC_IMP ] = "DEC",
- [DEC_AB ] = "DEC a",
- [DEC_Z ] = "DEC zm",
+ [TAB_IMP ] = "TAB",
+ [STY_Z ] = "STY zm",
[JMP_AB ] = "JMP a",
+ [ADC_AB ] = "ADC a",
+ [ROR_AB ] = "ROR a",
+ [CPB_AB ] = "CPB a",
+ [ADC_B ] = "ADC B",
+ [ROR_B ] = "ROR B",
+ [STY_AB ] = "STY a",
+ [SEC_IMP ] = "SEC",
+ [TBA_IMP ] = "TBA",
+ [JMP_Z ] = "JMP zm",
[SBC_IMM ] = "SBC #",
- [SAB_IMP ] = "SAB",
- [SBC_AB ] = "SBC a",
- [STA_IN ] = "STA ind",
+ [MUL_IMM ] = "MUL #",
+ [CPX_IMM ] = "CPX #",
[SBC_Z ] = "SBC zm",
- [SEC_IMP ] = "SEC",
- [INX_IMP ] = "INX",
- [INC_IMP ] = "INC",
- [INC_AB ] = "INC a",
- [INC_Z ] = "INC zm",
+ [MUL_Z ] = "MUL zm",
+ [CPX_Z ] = "CPX zm",
+ [CLI_IMP ] = "CLI",
+ [TAY_IMP ] = "TAY",
+ [STA_Z ] = "STA zm",
+ [STA_ZX ] = "STA zmx",
[JSR_AB ] = "JSR a",
+ [SBC_AB ] = "SBC a",
+ [MUL_AB ] = "MUL a",
+ [CPX_AB ] = "CPX a",
+ [SBC_B ] = "SBC B",
+ [MUL_B ] = "MUL B",
+ [STA_AB ] = "STA a",
+ [SEI_IMP ] = "SEI",
+ [TYA_IMP ] = "TYA",
+ [STA_ZY ] = "STA zmy",
+ [STA_IX ] = "STA indx",
+ [JSR_Z ] = "JSR zm",
[AND_IMM ] = "AND #",
- [ABA_IMP ] = "ABA",
- [AND_AB ] = "AND a",
- [CMP_IN ] = "CMP ind",
+ [DIV_IMM ] = "DIV #",
+ [CPY_IMM ] = "CPY #",
[AND_Z ] = "AND zm",
- [CLI_IMP ] = "CLI",
- [DEY_IMP ] = "DEY",
- [CPB_IMM ] = "CPB #",
- [CPB_AB ] = "CPB a",
- [CPB_Z ] = "CPB zm",
- [JMP_Z ] = "JMP zm",
- [ORA_IMM ] = "ORA #",
- [OAB_IMP ] = "OAB",
- [ORA_AB ] = "ORA a",
- [LDB_IN ] = "LDB ind",
- [ORA_Z ] = "ORA zm",
- [SEI_IMP ] = "SEI",
- [INY_IMP ] = "INY",
- [CPX_IMM ] = "CPX #",
- [CPX_AB ] = "CPX a",
+ [DIV_Z ] = "DIV zm",
[CPY_Z ] = "CPY zm",
- [JSR_Z ] = "JSR zm",
- [XOR_IMM ] = "XOR #",
- [XAB_IMP ] = "XAB",
- [XOR_AB ] = "XOR a",
- [STB_IN ] = "STB ind",
- [XOR_Z ] = "XOR zm",
[CLV_IMP ] = "CLV",
- [CPY_IMM ] = "CPY #",
+ [TAX_IMP ] = "TAX",
+ [STB_Z ] = "STB zm",
+ [STB_ZX ] = "STB zmx",
+ [RTS_IMP ] = "RTS",
+ [AND_AB ] = "AND a",
+ [DIV_AB ] = "DIV a",
[CPY_AB ] = "CPY a",
- [CPX_Z ] = "CPX zm",
- [BPO_REL ] = "BPO rel",
- [LSL_IMM ] = "LSL #",
- [LLB_IMP ] = "LLB",
- [LSL_AB ] = "LSL a",
- [CPB_IN ] = "CPB ind",
- [LSL_Z ] = "LSL zm",
+ [AND_B ] = "AND B",
+ [DIV_B ] = "DIV B",
+ [STB_AB ] = "STB a",
[WAI_IMP ] = "WAI",
- [PHP_IMP ] = "PHP",
- [TAB_IMP ] = "TAB",
- [LDA_IY ] = "LDA indy",
- [LDA_IX ] = "LDA indx",
- [BNG_REL ] = "BNG rel",
- [LSR_IMM ] = "LSR #",
- [LRB_IMP ] = "LRB",
- [LSR_AB ] = "LSR a",
- [LDY_IN ] = "LDY ind",
- [LSR_Z ] = "LSR zm",
+ [TXA_IMP ] = "TXA",
+ [STB_ZY ] = "STB zmy",
+ [STB_IX ] = "STB indx",
+ [RTI_IMP ] = "RTI",
+ [ORA_IMM ] = "ORA #",
+ [ASR_IMM ] = "ASR #",
+ [LDX_IMM ] = "LDX #",
+ [ORA_Z ] = "ORA zm",
+ [ASR_Z ] = "ASR zm",
+ [LDX_Z ] = "LDX zm",
[BRK_IMP ] = "BRK",
+ [TYX_IMP ] = "TYX",
+ [STX_Z ] = "STX zm",
+ [PHP_IMP ] = "PHP",
+ [BPO_REL ] = "BPO rel",
+ [ORA_AB ] = "ORA a",
+ [ASR_AB ] = "ASR a",
+ [LDX_AB ] = "LDX a",
+ [ORA_B ] = "ORA B",
+ [ASR_B ] = "ASR B",
+ [STX_AB ] = "STX a",
+ [DEY_IMP ] = "DEY",
+ [TXY_IMP ] = "TXY",
+ [CPB_IN ] = "CPB ind",
[PLP_IMP ] = "PLP",
- [TBA_IMP ] = "TBA",
- [STA_IY ] = "STA indy",
- [STA_IX ] = "STA indx",
+ [BNG_REL ] = "BNG rel",
+ [XOR_IMM ] = "XOR #",
+ [CMP_IMM ] = "CMP #",
+ [DEC_IMP ] = "DEC",
+ [XOR_Z ] = "XOR zm",
+ [CMP_Z ] = "CMP zm",
+ [DEC_Z ] = "DEC zm",
+ [INY_IMP ] = "INY",
+ [TSX_IMP ] = "TSX",
+ [CMP_IN ] = "CMP ind",
+ [PHA_IMP ] = "PHA",
[BCS_REL ] = "BCS rel",
- [ROL_IMM ] = "ROL #",
- [RLB_IMP ] = "RLB",
- [ROL_AB ] = "ROL a",
+ [XOR_AB ] = "XOR a",
+ [CMP_AB ] = "CMP a",
+ [DEC_AB ] = "DEC a",
+ [XOR_B ] = "XOR B",
+ [CMP_B ] = "CMP B",
+ [DEB_IMP ] = "DEB",
+ [TXS_IMM ] = "TXS #",
[STY_IN ] = "STY ind",
- [ROL_Z ] = "ROL zm",
- [LDA_ZY ] = "LDA zmy",
- [PHA_IMP ] = "PHA",
- [TAY_IMP ] = "TAY",
- [CMP_IY ] = "CMP indy",
- [CMP_IX ] = "CMP indx",
- [BCC_REL ] = "BCC rel",
- [ROR_IMM ] = "ROR #",
- [RRB_IMP ] = "RRB",
- [ROR_AB ] = "ROR a",
- [LDX_IN ] = "LDX ind",
- [ROR_Z ] = "ROR zm",
- [STA_ZY ] = "STA zmy",
[PLA_IMP ] = "PLA",
- [TYA_IMP ] = "TYA",
- [LDB_IY ] = "LDB indy",
- [LDB_IX ] = "LDB indx",
- [BEQ_REL ] = "BEQ rel",
- [MUL_IMM ] = "MUL #",
- [MAB_IMP ] = "MAB",
- [MUL_AB ] = "MUL a",
- [STX_IN ] = "STX ind",
- [MUL_Z ] = "MUL zm",
- [LDB_ZY ] = "LDB zmy",
+ [BCC_REL ] = "BCC rel",
+ [LSL_IMM ] = "LSL #",
+ [LDY_IMM ] = "LDY #",
+ [INC_IMP ] = "INC",
+ [LSL_Z ] = "LSL zm",
+ [LDY_Z ] = "LDY zm",
+ [INC_Z ] = "INC zm",
+ [INB_IMP ] = "INB",
+ [CMP_IX ] = "CMP indx",
+ [LDY_IN ] = "LDY ind",
[PHB_IMP ] = "PHB",
- [TAX_IMP ] = "TAX",
- [STB_IY ] = "STB indy",
- [STB_IX ] = "STB indx",
- [BNE_REL ] = "BNE rel",
- [DIV_IMM ] = "DIV #",
- [DAB_IMP ] = "DAB",
- [DIV_AB ] = "DIV a",
- [JSR_IN ] = "JSR ind",
- [DIV_Z ] = "DIV zm",
- [STB_ZY ] = "STB zmy",
- [PLB_IMP ] = "PLB",
- [TXA_IMP ] = "TXA",
- [CPB_IY ] = "CPB indy",
+ [BEQ_REL ] = "BEQ rel",
+ [LSL_AB ] = "LSL a",
+ [LDY_AB ] = "LDY a",
+ [INC_AB ] = "INC a",
+ [LSL_B ] = "LSL B",
+ [DEX_IMP ] = "DEX",
[CPB_IX ] = "CPB indx",
- [BVS_REL ] = "BVS rel",
- [CMP_IMM ] = "CMP #",
- [CAB_IMP ] = "CAB",
- [CMP_AB ] = "CMP a",
- [JMP_IN ] = "JMP ind",
- [CMP_Z ] = "CMP zm",
- [LDA_ZX ] = "LDA zmx",
- [LDX_IMM ] = "LDX #",
- [TYX_IMP ] = "TYX",
- [LDX_AB ] = "LDX a",
- [LDX_Z ] = "LDX zm",
- [BVC_REL ] = "BVC rel",
+ [LDX_IN ] = "LDX ind",
+ [PLB_IMP ] = "PLB",
+ [BNE_REL ] = "BNE rel",
+ [LSR_IMM ] = "LSR #",
[LDA_IMM ] = "LDA #",
- [DEB_IMP ] = "DEB",
- [LDA_AB ] = "LDA a",
+ [LDA_IN ] = "LDA ind",
+ [LSR_Z ] = "LSR zm",
[LDA_Z ] = "LDA zm",
- [STA_ZX ] = "STA zmx",
+ [LDA_ZX ] = "LDA zmx",
+ [INX_IMP ] = "INX",
+ [STA_IY ] = "STA indy",
+ [STX_IN ] = "STX ind",
[PHY_IMP ] = "PHY",
- [TXY_IMP ] = "TXY",
- [STA_AB ] = "STA a",
- [STA_Z ] = "STA zm",
- [BRA_REL ] = "BRA rel",
+ [BVS_REL ] = "BVS rel",
+ [LSR_AB ] = "LSR a",
+ [LDA_AB ] = "LDA a",
+ [STA_IN ] = "STA ind",
+ [LSR_B ] = "LSR B",
+ [LDA_ZY ] = "LDA zmy",
+ [LDA_IX ] = "LDA indx",
+ [LDA_IY ] = "LDA indy",
+ [STB_IY ] = "STB indy",
+ [JSR_IN ] = "JSR ind",
+ [PLY_IMP ] = "PLY",
+ [BVC_REL ] = "BVC rel",
+ [ROL_IMM ] = "ROL #",
[LDB_IMM ] = "LDB #",
- [INB_IMP ] = "INB",
- [LDB_AB ] = "LDB a",
+ [LDB_IN ] = "LDB ind",
+ [ROL_Z ] = "ROL zm",
[LDB_Z ] = "LDB zm",
[LDB_ZX ] = "LDB zmx",
- [PLY_IMP ] = "PLY",
- [TSX_IMP ] = "TSX",
- [STB_AB ] = "STB a",
- [STB_Z ] = "STB zm",
- [RTS_IMP ] = "RTS",
- [LDY_IMM ] = "LDY #",
- [LDY_AB ] = "LDY a",
- [LDY_Z ] = "LDY zm",
- [STB_ZX ] = "STB zmx",
- [PHX_IMP ] = "PHX",
+ [LDB_IY ] = "LDB indy",
[NOP_IMP ] = "NOP",
- [STY_AB ] = "STY a",
- [STY_Z ] = "STY zm",
- [RTI_IMP ] = "RTI",
- [ASR_IMM ] = "ASR #",
- [ARB_IMP ] = "ARB",
- [ASR_AB ] = "ASR a",
- [ASR_Z ] = "ASR zm",
- [PLX_IMP ] = "PLX",
- [TXS_IMM ] = "TXS #",
- [STX_AB ] = "STX a",
- [STX_Z ] = "STX zm"
+ [JMP_IN ] = "JMP ind",
+ [PHX_IMP ] = "PHX",
+ [BRA_REL ] = "BRA rel",
+ [ROL_AB ] = "ROL a",
+ [LDB_AB ] = "LDB a",
+ [STB_IN ] = "STB ind",
+ [ROL_B ] = "ROL B",
+ [LDB_ZY ] = "LDB zmy",
+ [LDB_IX ] = "LDB indx",
+ [CMP_IY ] = "CMP indy",
+ [CPB_IY ] = "CPB indy",
+ [PLX_IMP ] = "PLX"
};