diff options
Diffstat (limited to 'src/devices/cpu/amis2000/amis2000d.cpp')
-rw-r--r-- | src/devices/cpu/amis2000/amis2000d.cpp | 29 |
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 ¶ms) { 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; -} |