diff options
Diffstat (limited to 'src/devices/cpu/melps4/melps4d.cpp')
-rw-r--r-- | src/devices/cpu/melps4/melps4d.cpp | 54 |
1 files changed, 24 insertions, 30 deletions
diff --git a/src/devices/cpu/melps4/melps4d.cpp b/src/devices/cpu/melps4/melps4d.cpp index efd199097c5..8ab9c0bd2c7 100644 --- a/src/devices/cpu/melps4/melps4d.cpp +++ b/src/devices/cpu/melps4/melps4d.cpp @@ -10,27 +10,9 @@ */ #include "emu.h" -#include "debugger.h" -#include "melps4.h" +#include "melps4d.h" - -// opcode mnemonics -enum e_mnemonics -{ - em_ILL, - em_TAB, em_TBA, em_TAY, em_TYA, em_TEAB, em_TABE, em_TEPA, em_TXA, em_TAX, - em_LXY, em_LZ, em_INY, em_DEY, em_LCPS, em_SADR, - em_TAM, em_XAM, em_XAMD, em_XAMI, - em_LA, em_AM, em_AMC, em_AMCS, em_A, em_SC, em_RC, em_SZC, em_CMA, em_RL, em_RR, - em_SB, em_RB, em_SZB, em_SEAM, em_SEY, - em_TLA, em_THA, em_TAJ, em_XAL, em_XAH, em_LC7, em_DEC, em_SHL, em_RHL, em_CPA, em_CPAS, em_CPAE, em_SZJ, - em_T1AB, em_TRAB, em_T2AB, em_TAB1, em_TABR, em_TAB2, em_TVA, em_TWA, em_SNZ1, em_SNZ2, - em_BA, em_SP, em_B, em_BM, em_RT, em_RTS, em_RTI, - em_CLD, em_CLS, em_CLDS, em_SD, em_RD, em_SZD, em_OSAB, em_OSPA, em_OSE, em_IAS, em_OFA, em_IAF, em_OGA, em_IAK, em_SZK, em_SU, em_RU, - em_EI, em_DI, em_INTH, em_INTL, em_NOP -}; - -static const char *const em_name[] = +const char *const melps4_disassembler::em_name[] = { "?", "TAB", "TBA", "TAY", "TYA", "TEAB", "TABE", "TEPA", "TXA", "TAX", @@ -46,7 +28,7 @@ static const char *const em_name[] = }; // number of bits per opcode parameter -static const uint8_t em_bits[] = +const uint8_t melps4_disassembler::em_bits[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -61,10 +43,7 @@ static const uint8_t em_bits[] = 0, 0, 0, 0, 0 }; -#define _OVER DASMFLAG_STEP_OVER -#define _OUT DASMFLAG_STEP_OUT - -static const uint32_t em_flags[] = +const uint32_t melps4_disassembler::em_flags[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -74,7 +53,7 @@ static const uint32_t em_flags[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, _OVER, _OUT, _OUT, _OUT, + 0, 0, 0, STEP_OVER, STEP_OUT, STEP_OUT, STEP_OUT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; @@ -83,7 +62,7 @@ static const uint32_t em_flags[] = // M58846 disasm -static const uint8_t m58846_opmap[0xc0] = +const uint8_t melps4_disassembler::m58846_opmap[0xc0] = { // 0 1 2 3 4 5 6 7 8 9 A B C D E F em_NOP, em_BA, em_INY, em_DEY, em_DI, em_EI, em_RU, em_SU, 0, em_TABE, em_AM, em_OSE, em_TYA, 0, 0, em_CMA, // 0x @@ -100,9 +79,9 @@ static const uint8_t m58846_opmap[0xc0] = em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA, em_LA // Bx }; -CPU_DISASSEMBLE(m58846) +offs_t melps4_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer ¶ms) { - uint16_t op = (oprom[0] | oprom[1] << 8) & 0x1ff; + uint16_t op = opcodes.r16(pc) & 0x1ff; // get opcode uint8_t instr; @@ -136,5 +115,20 @@ CPU_DISASSEMBLE(m58846) util::stream_format(stream, " %d", param); } - return 1 | em_flags[instr] | DASMFLAG_SUPPORTED; + return 1 | em_flags[instr] | SUPPORTED; +} + +u32 melps4_disassembler::opcode_alignment() const +{ + return 1; +} + +u32 melps4_disassembler::interface_flags() const +{ + return PAGED; +} + +u32 melps4_disassembler::page_address_bits() const +{ + return 7; } |