summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2020-02-25 10:20:22 -0500
committer AJR <ajrhacker@users.noreply.github.com>2020-02-25 10:21:23 -0500
commitb8e28405d2db37137d832c100b7d6fe22103bbb6 (patch)
tree831a47eb8f908c0a87c3849bd8cab2bfb4f12416 /src/devices/cpu
parentaec25eca0988737e680dcc98fe84b8a0292df79e (diff)
upd78k2d: Fix a whole batch of mistakes with disassembling 01-prefixed alternate-bank instructions (nw)
Diffstat (limited to 'src/devices/cpu')
-rw-r--r--src/devices/cpu/upd78k/upd78k2d.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/devices/cpu/upd78k/upd78k2d.cpp b/src/devices/cpu/upd78k/upd78k2d.cpp
index 79ab19ec907..9016faea8b3 100644
--- a/src/devices/cpu/upd78k/upd78k2d.cpp
+++ b/src/devices/cpu/upd78k/upd78k2d.cpp
@@ -13,7 +13,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc,
{
if (op2 == 0x05)
{
- u8 op3 = opcodes.r8(pc + 3);
+ u8 op3 = opcodes.r8(pc + 2);
if ((op3 & 0xed) == 0x89)
{
util::stream_format(stream, "%-8s&[%s]", BIT(op3, 4) ? "ROL4" : "ROR4", BIT(op3, 1) ? "HL" : "DE");
@@ -33,10 +33,10 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc,
}
else if (op2 == 0x06)
{
- u8 op3 = opcodes.r8(pc + 3);
+ u8 op3 = opcodes.r8(pc + 2);
if ((op3 & 0x70) < 0x30 && (BIT(op3, 7) ? (op3 & 0x0f) == 0 : BIT(op3, 3) || (op3 & 0x03) == 0))
{
- util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op2, 2) ? "XCH" : "MOV");
+ util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV");
if (!BIT(op3, 7))
stream << "A,";
stream << "&";
@@ -50,7 +50,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc,
}
else if (op2 == 0x09)
{
- u8 op3 = opcodes.r8(pc + 3);
+ u8 op3 = opcodes.r8(pc + 2);
if ((op3 & 0xfe) == 0xf0)
{
util::stream_format(stream, "%-8s", "MOV");
@@ -67,18 +67,18 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc,
}
else if (op2 == 0x0a)
{
- u8 op3 = opcodes.r8(pc + 3);
+ u8 op3 = opcodes.r8(pc + 2);
if (!BIT(op3, 6) && (BIT(op3, 7) ? (op3 & 0x0f) == 0 : BIT(op3, 3) || (op3 & 0x03) == 0))
{
- util::stream_format(stream, "%-8s", BIT(op2, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV");
- if (!BIT(op2, 7))
+ util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV");
+ if (!BIT(op3, 7))
stream << "A,";
stream << "&";
- if (BIT(op2, 4))
- format_ix_base16(stream, BIT(op2, 5) ? "B" : "A", opcodes.r16(pc + 2));
+ if (BIT(op3, 4))
+ format_ix_base16(stream, BIT(op3, 5) ? "B" : "A", opcodes.r16(pc + 3));
else
- format_ix_disp16(stream, BIT(op2, 5) ? "HL" : "DE", opcodes.r16(pc + 2));
- if (BIT(op2, 7))
+ format_ix_disp16(stream, BIT(op3, 5) ? "HL" : "DE", opcodes.r16(pc + 3));
+ if (BIT(op3, 7))
stream << ",A";
return 5 | SUPPORTED;
}
@@ -87,7 +87,7 @@ offs_t upd78k2_disassembler::dasm_01xx(std::ostream &stream, u8 op2, offs_t pc,
}
else if (op2 == 0x16)
{
- u8 op3 = opcodes.r8(pc + 3);
+ u8 op3 = opcodes.r8(pc + 2);
if ((op3 & 0x60) != 0x60 && (BIT(op3, 7) ? (op3 & 0x0f) == 0x00 : BIT(op3, 3) || (op3 & 0x03) == 0x00))
{
util::stream_format(stream, "%-8s", BIT(op3, 3) ? s_alu_ops[op3 & 0x07] : BIT(op3, 2) ? "XCH" : "MOV");