mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
Fix opcodes 20/24 (nw)
This commit is contained in:
parent
cbd2e2d69c
commit
9ab7babb52
@ -233,9 +233,9 @@ void xavix2_device::execute_run()
|
||||
case 0x1c: case 0x1d: m_program->write_word(m_r[r2(opcode)] + val19s(opcode), m_r[r1(opcode)]); break;
|
||||
case 0x1e: case 0x1f: m_program->write_dword(m_r[r2(opcode)] + val19s(opcode), m_r[r1(opcode)]); break;
|
||||
|
||||
case 0x20: case 0x21: m_r[r1(opcode)] = do_add(m_r[r1(opcode)], val14s(opcode)); break;
|
||||
case 0x20: case 0x21: m_r[r1(opcode)] = do_add(m_r[r2(opcode)], val11s(opcode)); break;
|
||||
case 0x22: case 0x23: m_r[r1(opcode)] = val14h(opcode); break;
|
||||
case 0x24: case 0x25: m_r[r1(opcode)] = do_sub(m_r[r1(opcode)], val14s(opcode)); break;
|
||||
case 0x24: case 0x25: m_r[r1(opcode)] = do_sub(m_r[r2(opcode)], val11s(opcode)); break;
|
||||
case 0x26: case 0x27: do_sub(m_r[r1(opcode)], val14s(opcode)); break;
|
||||
case 0x28: npc = m_pc + val16s(opcode); break;
|
||||
case 0x29: m_r[7] = npc; npc = m_pc + val16s(opcode); break;
|
||||
|
@ -86,6 +86,15 @@ std::string xavix2_disassembler::val14sa()
|
||||
return util::string_format("%04x", r);
|
||||
}
|
||||
|
||||
std::string xavix2_disassembler::val11s()
|
||||
{
|
||||
u16 r = (m_opcode >> 8) & 0x7ff;
|
||||
if(r & 0x400)
|
||||
return util::string_format("-%03x", 0x800 - r);
|
||||
else
|
||||
return util::string_format("%03x", r);
|
||||
}
|
||||
|
||||
std::string xavix2_disassembler::val11u()
|
||||
{
|
||||
return util::string_format("%03x", (m_opcode >> 8) & 0x7ff);
|
||||
@ -214,9 +223,9 @@ offs_t xavix2_disassembler::disassemble(std::ostream &stream, offs_t pc, const d
|
||||
case 0x1c: case 0x1d: util::stream_format(stream, "(%s%s).w = %s", r2(), off19s(), r1()); break;
|
||||
case 0x1e: case 0x1f: util::stream_format(stream, "(%s%s).l = %s", r2(), off19s(), r1()); break;
|
||||
|
||||
case 0x20: case 0x21: util::stream_format(stream, "%s += %s", r1(), val14s()); break;
|
||||
case 0x20: case 0x21: util::stream_format(stream, "%s = %s + %s", r1(), r2(), val11s()); break;
|
||||
case 0x22: case 0x23: util::stream_format(stream, "%s = %s", r1(), val14h()); break;
|
||||
case 0x24: case 0x25: util::stream_format(stream, "%s -= %s", r1(), val14s()); break;
|
||||
case 0x24: case 0x25: util::stream_format(stream, "%s = %s - %s", r1(), r2(), val11s()); break;
|
||||
case 0x26: case 0x27: util::stream_format(stream, "cmp %s, %s", r1(), val14s()); break;
|
||||
case 0x28: util::stream_format(stream, "bra %s", rel16()); break;
|
||||
case 0x29: util::stream_format(stream, "bsr %s", rel16()); flags = STEP_OVER; break;
|
||||
|
@ -34,6 +34,7 @@ private:
|
||||
std::string val14u();
|
||||
std::string val14s();
|
||||
std::string val14sa();
|
||||
std::string val11s();
|
||||
std::string val11u();
|
||||
std::string val6u();
|
||||
std::string val6s();
|
||||
|
Loading…
Reference in New Issue
Block a user