summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/amis2000/amis2000d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/amis2000/amis2000d.cpp')
-rw-r--r--src/devices/cpu/amis2000/amis2000d.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/devices/cpu/amis2000/amis2000d.cpp b/src/devices/cpu/amis2000/amis2000d.cpp
index cff6155fa0a..6f9d95d2a70 100644
--- a/src/devices/cpu/amis2000/amis2000d.cpp
+++ b/src/devices/cpu/amis2000/amis2000d.cpp
@@ -9,6 +9,19 @@
#include "emu.h"
#include "amis2000d.h"
+
+// common lookup tables
+
+enum amis2000_disassembler::e_mnemonics : unsigned
+{
+ mLAB = 0, mLAE, mLAI, mLBE, mLBEP, mLBF, mLBZ, mXAB, mXABU, mXAE,
+ mLAM, mXC, mXCI, mXCD, mSTM, mRSM,
+ mADD, mADCS, mADIS, mAND, mXOR, mCMA, mSTC, mRSC, mSF1, mRF1, mSF2, mRF2,
+ mSAM, mSZM, mSBE, mSZC, mSOS, mSZK, mSZI, mTF1, mTF2,
+ mPP, mJMP, mJMS, mRT, mRTS, mNOP, mHALT,
+ mINP, mOUT, mDISB, mDISN, mMVS, mPSH, mPSL, mEUR
+};
+
const char *const amis2000_disassembler::s_mnemonics[] =
{
"LAB", "LAE", "LAI", "LBE", "LBEP", "LBF", "LBZ", "XAB", "XABU", "XAE",
@@ -33,9 +46,9 @@ const s8 amis2000_disassembler::s_bits[] =
const u32 amis2000_disassembler::s_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, 0, 0, 0, 0, 0, 0,
+ 0, 0, STEP_COND, STEP_COND, 0, 0,
+ 0, STEP_COND, STEP_COND, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND, STEP_COND,
0, 0, STEP_OVER, STEP_OUT, STEP_OUT, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0
};
@@ -83,12 +96,15 @@ const u8 amis2000_disassembler::s2000_mnemonic[0x100] =
mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP, mJMP
};
+
+// disasm
+
offs_t amis2000_disassembler::disassemble(std::ostream &stream, offs_t pc, const data_buffer &opcodes, const data_buffer &params)
{
u8 op = opcodes.r8(pc);
u8 instr = s2000_mnemonic[op];
- util::stream_format(stream, "%-5s ", s_mnemonics[instr]);
+ util::stream_format(stream, "%-6s", s_mnemonics[instr]);
// opcode parameter
int mask = s_bits[instr];
@@ -112,8 +128,3 @@ offs_t amis2000_disassembler::disassemble(std::ostream &stream, offs_t pc, const
return 1 | s_flags[instr] | SUPPORTED;
}
-
-u32 amis2000_disassembler::opcode_alignment() const
-{
- return 1;
-}