--- nono/m680x0/m680x0disasm.cpp 2026/04/29 17:05:30 1.1.1.1 +++ nono/m680x0/m680x0disasm.cpp 2026/04/29 17:05:40 1.1.1.3 @@ -719,6 +719,10 @@ m680x0disasm::make_movec() case 0x806: reg = Reg::URP; break; case 0x807: reg = Reg::SRP; break; + // 060 + case 0x008: reg = Reg::BUSCR; break; + case 0x808: reg = Reg::PCR; break; + default: return string_format("", n); } @@ -906,6 +910,9 @@ decode_maskstr(const char *maskstr) "itt1", "dtt0", "dtt1", + + "buscr", + "pcr", }; /*static*/ const char * const m680x0disasm::size_str[] = { @@ -3540,7 +3547,6 @@ OP_DEF(cmp_b) // %1011_xxx001_mmmrrr d.m+-rxwpi 034 CMP.W ,Dx OP_DEF(cmp_w) { - CHECK_EA(ir[0] & 077, "d.m+-rxwpi"); name = "cmp"; size = Size::W; src = make_ea(); @@ -3550,7 +3556,6 @@ OP_DEF(cmp_w) // %1011_xxx010_mmmrrr d.m+-rxwpi 034 CMP.L ,Dx OP_DEF(cmp_l) { - CHECK_EA(ir[0] & 077, "d.m+-rxwpi"); name = "cmp"; size = Size::L; src = make_ea(); @@ -4803,6 +4808,26 @@ OP_DEF(cprestore) src = make_ea(); } +// %1111_010110_001nnn .......... --6 PLPAW (An) +// %1111_010111_001nnn .......... --6 PLPAR (An) +OP_DEF(plpa) +{ + uint y = ir[0] & 7; + + if ((ir[0] & 0x0040) == 0) { + name = "plpaw"; + } else { + name = "plpar"; + } + src = make_anin(y); +} + +// %1111_100000_000000 .......... --6 LPSTOP +OP_DEF(lpstop) +{ + name = "lpstop"; +} + // illegal (or not-assigned) instructions OP_DEF(illegal) {