summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Olivier Galibert <galibert@pobox.com>2020-03-11 19:58:32 +0100
committer Olivier Galibert <galibert@pobox.com>2020-03-11 19:58:47 +0100
commit29f838fe84ff1de3ff852c3f8421fbe2b6b0067d (patch)
tree21e7c407b29ee71aa29e52fa6f1886e2a590d533
parent3fb189284342b8dfdc6416fce1e6ae4324e0511b (diff)
ks0164 disassembler work (nw)
-rw-r--r--src/devices/cpu/ks0164/ks0164d.cpp271
-rw-r--r--src/devices/sound/k054539.cpp2
-rw-r--r--src/mame/drivers/konamigx.cpp4
3 files changed, 159 insertions, 118 deletions
diff --git a/src/devices/cpu/ks0164/ks0164d.cpp b/src/devices/cpu/ks0164/ks0164d.cpp
index 2a357e9f70e..55f0a8525cf 100644
--- a/src/devices/cpu/ks0164/ks0164d.cpp
+++ b/src/devices/cpu/ks0164/ks0164d.cpp
@@ -29,148 +29,185 @@ std::string ks0164_disassembler::off16(s16 dt)
const ks0164_disassembler::instruction ks0164_disassembler::instructions[] {
{ 0x0000, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bne %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x0400, 0xfc00, [](P) -> u32 { util::stream_format(stream, "beq %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x0800, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?2 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x0c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?3 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x1000, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?4 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x1400, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?5 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
+ { 0x0800, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bcc %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
+ { 0x0c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bcs %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
+ { 0x1000, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bpl %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
+ { 0x1400, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bmi %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x1800, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?6 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x1c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?7 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x2000, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?8 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x2400, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?9 %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x2800, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?a %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x2c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?b %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
+ { 0x2c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bgt %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x3000, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?c %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x3400, 0xfc00, [](P) -> u32 { util::stream_format(stream, "b?d %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x3800, 0xfc00, [](P) -> u32 { util::stream_format(stream, "blt %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
{ 0x3c00, 0xfc00, [](P) -> u32 { util::stream_format(stream, "bra %04x", (pc + 2 + off10(opcode)) & 0xffff); return 2; } },
- { 0x4000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w += %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x4800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w -= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x5000, 0xf800, [](P) -> u32 { util::stream_format(stream, "cmp %s.w, %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x5800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w &= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x6000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w |= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x6800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w ?5 %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x7000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w = %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
- { 0x7800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s.w ?7 %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
-
- { 0x8004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b += %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x800c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w += %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x8804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b -= %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x880c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w -= %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x9004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.b, %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x900c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.w, %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x9804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b &= %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x980c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w &= %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b |= %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa00c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w |= %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?5 %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa80c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?5 %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b = %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb00c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w = %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?7 %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb80c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?7 %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
-
- { 0x8075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b += %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x807d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w += %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x8875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b -= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x887d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w -= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x9075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "cmp %s.b, %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x907d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "cmp %s.w, %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x9875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b &= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0x987d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w &= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xa075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b |= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xa07d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w |= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xa875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b ?5 %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xa87d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w ?5 %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xb075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b = %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xb07d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w = %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xb875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.b ?7 %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
- { 0xb87d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s.w ?7 %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
-
- { 0x8006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b += (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x800e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w += (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x8806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b -= (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x880e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w -= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x9006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.b, (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x900e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.w, (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x9806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b &= (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0x980e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w &= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b |= (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w |= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?5 (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xa80e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?5 (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b = (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w = (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?7 (%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xb80e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?7 (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
-
- { 0x8077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b += (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x807f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w += (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x8877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b -= (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x887f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w -= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x9077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmp %s.b, (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x907f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmp %s.w, (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x9877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b &= (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0x987f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w &= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xa077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b |= (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xa07f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w |= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xa877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b ?5 (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xa87f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w ?5 (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xb077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b = (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xb07f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w = (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xb877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.b ?7 (%04x).b", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
- { 0xb87f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s.w ?7 (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
-
- { 0x8007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b += (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x800f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w += (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x8807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b -= (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x880f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w -= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x9007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.b, (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x900f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s.w, (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x9807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b &= (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0x980f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w &= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xa007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b |= (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xa00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w |= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xa807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?5 (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xa80f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?5 (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xb007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b = (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xb00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w = (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xb807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.b ?7 (%s%s).b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
- { 0xb80f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w ?7 (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
-
- { 0xc000, 0xf88f, [](P) -> u32 { util::stream_format(stream, "-(%s).w = %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x4000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s += %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x4800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s -= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x5000, 0xf800, [](P) -> u32 { util::stream_format(stream, "cmp %s, %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x5800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s &= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x6000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s |= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x6800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s ?5 %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x7000, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s = %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+ { 0x7800, 0xf800, [](P) -> u32 { util::stream_format(stream, "%s *= %02x", regs[(opcode >> 8) & 7], opcode & 0xff); return 2; } },
+
+ { 0x8004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8084, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x800c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8884, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x880c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9084, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x900c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9884, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x980c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa084, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa00c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa884, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa80c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb004, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb084, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb00c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb804, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= %s.bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb884, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= %s.bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb80c, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+
+ { 0x8075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s += %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x807d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s += %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x8875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s -= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x887d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s -= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x9075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "cmp %s, %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x907d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "cmp %s, %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x9875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s &= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0x987d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s &= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xa075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s |= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xa07d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s |= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xa875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s ?5 %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xa87d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s ?5 %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xb075, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s = %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xb07d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s = %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xb875, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s *= %02x", regs[(opcode >> 8) & 7], imm); return 4; } },
+ { 0xb87d, 0xf8ff, [](P) -> u32 { u16 imm = opcodes.r16(pc+2); util::stream_format(stream, "%s *= %04x", regs[(opcode >> 8) & 7], imm); return 4; } },
+
+ { 0x8006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8086, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x800e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x8886, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x880e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9086, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x900e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x9886, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0x980e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa086, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa886, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xa80e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb086, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb806, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb886, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xb80e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+
+ { 0x8077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s += (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x80f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s += (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x807f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s += (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x8877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s -= (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x88f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s -= (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x887f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s -= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x9077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x90f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x907f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x9877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s &= (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x98f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s &= (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0x987f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s &= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s |= (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa0f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s |= (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa07f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s |= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa8f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xa87f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb077, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s = (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb0f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s = (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb07f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s = (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb877, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s *= (%04x).bu", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb8f7, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s *= (%04x).bs", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xb87f, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s *= (%04x).w", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+
+ { 0x8007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x8087, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x800f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s += (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x8807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x8887, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x880f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s -= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x9007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x9087, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x900f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "cmp %s, (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x9807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x9887, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0x980f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s &= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa087, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s |= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa887, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xa80f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s ?5 (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb087, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb807, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s%s).bu", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb887, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s%s).bs", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+ { 0xb80f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s *= (%s%s).w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], off16(opcodes.r16(pc+2))); return 4; } },
+
+ { 0xc800, 0xf88f, [](P) -> u32 { util::stream_format(stream, "-(%s).w = %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
{ 0xc001, 0xffff, [](P) -> u32 { util::stream_format(stream, "push?"); return 2; } },
{ 0xc003, 0xffff, [](P) -> u32 { util::stream_format(stream, "pop?"); return 2; } },
- { 0xc008, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s)+.w = %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xc00a, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s.w = (%s)+.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xc008, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s)+.w = %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xc00a, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = (%s)+.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xc00c, 0xf80f, [](P) -> u32 { util::stream_format(stream, "%s.w <<= %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xc80c, 0xf80f, [](P) -> u32 { util::stream_format(stream, "%s.w >>= %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xc00c, 0xf80f, [](P) -> u32 { util::stream_format(stream, "%s <<= %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xc80c, 0xf80f, [](P) -> u32 { util::stream_format(stream, "%s >>= %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xc80d, 0xf80f, [](P) -> u32 { util::stream_format(stream, "%s >>s= %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xd088, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = max(%s, %04x)", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xd888, 0xf88f, [](P) -> u32 { util::stream_format(stream, "%s = min(%s, %04x)", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xd000, 0xf007, [](P) -> u32 { util::stream_format(stream, "d?%d%d%d %s, %s, %04x", opcode & 0x800 ? 1 : 0, opcode & 0x80 ? 1 : 0, opcode & 8 ? 1 : 0, regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7], opcodes.r16(pc+2)); return 4; } },
{ 0xd001, 0xffff, [](P) -> u32 { util::stream_format(stream, "jmp %04x", opcodes.r16(pc+2)); return 4; } },
{ 0xd002, 0xffff, [](P) -> u32 { util::stream_format(stream, "jsr %04x", opcodes.r16(pc+2)); return 4; } },
{ 0xd003, 0xffff, [](P) -> u32 { util::stream_format(stream, "rts"); return 2; } },
{ 0xd004, 0xffff, [](P) -> u32 { util::stream_format(stream, "rti"); return 2; } },
+ { 0xd085, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "%s = -%s", regs[(opcode >> 8) & 7], regs[(opcode >> 8) & 7]); return 2; } },
- { 0xe000, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst %s.b, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xe008, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst %s.w, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xe001, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bset %s.b, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xe009, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bset %s.w, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xe000, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst %s, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xe001, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bset %s, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
{ 0xe002, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst (%s).b, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
{ 0xe00a, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst (%s).w, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
{ 0xe703, 0xff0f, [](P) -> u32 { util::stream_format(stream, "btst (%04x).b, %x", opcodes.r16(pc+2), (opcode >> 4) & 0xf); return 4; } },
{ 0xe70b, 0xff0f, [](P) -> u32 { util::stream_format(stream, "btst (%04x).w, %x", opcodes.r16(pc+2), (opcode >> 4) & 0xf); return 4; } },
{ 0xe003, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst (%s%s).b, %x", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), (opcode >> 4) & 0xf); return 4; } },
{ 0xe00b, 0xf80f, [](P) -> u32 { util::stream_format(stream, "btst (%s%s).w, %x", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), (opcode >> 4) & 0xf); return 4; } },
- { 0xe004, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bclr %s.b, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xe00c, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bclr %s.w, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
- { 0xe006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s).b = %s.b", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xe00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s).w = %s.w", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
- { 0xe707, 0xff8f, [](P) -> u32 { util::stream_format(stream, "(%04x).b = %s.b", opcodes.r16(pc+2), regs[(opcode >> 4) & 7]); return 4; } },
- { 0xe70f, 0xff8f, [](P) -> u32 { util::stream_format(stream, "(%04x).w = %s.w", opcodes.r16(pc+2), regs[(opcode >> 4) & 7]); return 4; } },
- { 0xe007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s%s).b = %s.b", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), regs[(opcode >> 4) & 7]); return 4; } },
- { 0xe00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s%s).w = %s.w", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), regs[(opcode >> 4) & 7]); return 4; } },
-
+ { 0xe004, 0xf80f, [](P) -> u32 { util::stream_format(stream, "bclr %s, %x", regs[(opcode >> 8) & 7], (opcode >> 4) & 0xf); return 2; } },
+ { 0xe006, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s).b = %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xe00e, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s).w = %s", regs[(opcode >> 8) & 7], regs[(opcode >> 4) & 7]); return 2; } },
+ { 0xe707, 0xff8f, [](P) -> u32 { util::stream_format(stream, "(%04x).b = %s", opcodes.r16(pc+2), regs[(opcode >> 4) & 7]); return 4; } },
+ { 0xe70f, 0xff8f, [](P) -> u32 { util::stream_format(stream, "(%04x).w = %s", opcodes.r16(pc+2), regs[(opcode >> 4) & 7]); return 4; } },
+ { 0xe007, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s%s).b = %s", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), regs[(opcode >> 4) & 7]); return 4; } },
+ { 0xe00f, 0xf88f, [](P) -> u32 { util::stream_format(stream, "(%s%s).w = %s", regs[(opcode >> 8) & 7], off16(opcodes.r16(pc+2)), regs[(opcode >> 4) & 7]); return 4; } },
+
+ { 0xf004, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "dbra %s, %04x", regs[(opcode >> 8) & 7], opcodes.r16(pc+2)); return 4; } },
+ { 0xf00d, 0xf8ff, [](P) -> u32 { util::stream_format(stream, "cmpbeq %s, %04x, %04x", regs[(opcode >> 8) & 7], opcodes.r16(pc+2), opcodes.r16(pc+4)); return 6; } },
+
{ 0x0000, 0x0000, [](P) -> u32 { util::stream_format(stream, "?%04x", opcode); return 2; } },
};
diff --git a/src/devices/sound/k054539.cpp b/src/devices/sound/k054539.cpp
index b824650544d..42bc943bee3 100644
--- a/src/devices/sound/k054539.cpp
+++ b/src/devices/sound/k054539.cpp
@@ -421,7 +421,7 @@ void k054539_device::write(offs_t offset, u8 data)
case 0x227:
{
attotime period = attotime::from_hz((float)(38 + data) * (clock()/384.0f/14400.0f)) / 2.0f;
-
+ logerror("TIMER %02x %g\n", data, (float)(38 + data) * (clock()/384.0f/14400.0f));
m_timer->adjust(period, 0, period);
m_timer_state = 0;
diff --git a/src/mame/drivers/konamigx.cpp b/src/mame/drivers/konamigx.cpp
index bece7338b8b..039e1e92bb5 100644
--- a/src/mame/drivers/konamigx.cpp
+++ b/src/mame/drivers/konamigx.cpp
@@ -3694,6 +3694,10 @@ ROM_END
MACHINE_START_MEMBER(konamigx_state,konamigx)
{
+ m_soundcpu->space(AS_PROGRAM).install_write_tap(0x200000, 0x2004ff, "snd", [this](offs_t offset, u16 &data, u16 mem_mask) {
+ logerror("%10d write %06x %04x %04x\n", machine().time().as_ticks(18432000), offset, data, mem_mask);
+ });
+
m_lamp.resolve();
save_item(NAME(m_sound_ctrl));