summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/melps4/melps4d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/melps4/melps4d.cpp')
-rw-r--r--src/devices/cpu/melps4/melps4d.cpp54
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 &params)
{
- 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;
}