diff options
Diffstat (limited to 'src/devices/cpu/sm8500/sm8500d.cpp')
-rw-r--r-- | src/devices/cpu/sm8500/sm8500d.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/devices/cpu/sm8500/sm8500d.cpp b/src/devices/cpu/sm8500/sm8500d.cpp index 7a30af1dfbe..e3080d64cef 100644 --- a/src/devices/cpu/sm8500/sm8500d.cpp +++ b/src/devices/cpu/sm8500/sm8500d.cpp @@ -80,7 +80,7 @@ const sm8500_disassembler::sm8500dasm sm8500_disassembler::mnemonic[256] = { /* 50 - 5F */ {zCMP,AM_iR}, {zADD,AM_iR}, {zSUB,AM_iR}, {zADC,AM_iR}, {zSBC,AM_iR}, {zAND,AM_iR}, {zOR,AM_iR}, {zXOR,AM_iR}, - {zMOV, AM_iR}, {zINVLD,0}, {z5A,AM_ii}, {z5B,AM_ii}, + {zMOV, AM_iR}, {zINVLD,0}, {z5A,AM_5A}, {z5B,AM_5B}, {zDIV,AM_SS}, {zDIV,AM_iS}, {zMOVM,AM_RiR}, {zMOVM,AM_Rii}, /* 60 - 6F */ {zCMPW,AM_SS}, {zADDW,AM_SS}, {zSUBW,AM_SS}, {zADCW,AM_SS}, @@ -147,6 +147,7 @@ offs_t sm8500_disassembler::disassemble(std::ostream &stream, offs_t pc, const d int8_t offset; uint16_t ea; uint16_t ea2; + uint16_t ea3; offs_t pos = pc; op = opcodes.r8(pos++); @@ -371,6 +372,32 @@ offs_t sm8500_disassembler::disassemble(std::ostream &stream, offs_t pc, const d ea += opcodes.r8(pos++); util::stream_format(stream, "$%04X", ea); break; + case AM_5A: + ea = opcodes.r8(pos++); + ea2 = opcodes.r8(pos++); + switch( ea & 0xC0 ) { + case 0x00: + util::stream_format(stream, "CMP (rr%02Xh),$%02Xh", ea & 7, ea2); break; + case 0x40: + util::stream_format(stream, "undef $%04X", ea); break; + case 0x80: + ea3 = opcodes.r8(pos++); + util::stream_format(stream, "CMP (rr%02Xh+%02Xh),$%02Xh", ea & 7, ea2, ea3); break; + case 0xC0: + util::stream_format(stream, "undef $%04X", ea); break; + } + break; + case AM_5B: + ea = opcodes.r8(pos++); + ea2 = opcodes.r8(pos++); + ea3 = (ea << 8) | ea2; + switch( ea & 0xC0 ) { + case 0x40: + util::stream_format(stream, "MOV (rr%02Xh)+,$%02Xh", ea & 7, ea2); break; // could be AND instead of MOV + default: + util::stream_format(stream, "undef $%04X", ea3); break; + } + break; case AM_ss: ea = opcodes.r8(pos++); switch( ea & 0xC0 ) { |