1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-07-06 01:28:57 +00:00

Implements a missing form of BTST.

This commit is contained in:
Thomas Harte 2019-04-28 23:20:50 -04:00
parent d9278e9827
commit 412f091d76

View File

@ -1739,6 +1739,9 @@ struct ProcessorStorageConstructor {
op(Action::PerformOperation, is_bclr ? seq("nw", { a(ea_register) }, false) : nullptr); op(Action::PerformOperation, is_bclr ? seq("nw", { a(ea_register) }, false) : nullptr);
break; break;
case XXXl: // BTST.b Dn, (xxx).l
op(Action::None, seq("np"));
case XXXw: // BTST.b Dn, (xxx).w
case d16An: // BTST.b Dn, (d16, An) case d16An: // BTST.b Dn, (d16, An)
case d8AnXn: // BTST.b Dn, (d8, An, Xn) case d8AnXn: // BTST.b Dn, (d8, An, Xn)
case d16PC: // BTST.b Dn, (d16, PC) case d16PC: // BTST.b Dn, (d16, PC)
@ -1746,17 +1749,17 @@ struct ProcessorStorageConstructor {
// PC-relative addressing isn't support for BCLR. // PC-relative addressing isn't support for BCLR.
if((mode == d16PC || mode == d8PCXn) && is_bclr) continue; if((mode == d16PC || mode == d8PCXn) && is_bclr) continue;
op( calc_action_for_mode(mode) | MicroOp::DestinationMask, op( address_action_for_mode(mode) | MicroOp::DestinationMask,
seq(pseq("np nrd np", mode), { ea(1) }, false)); seq(pseq("np nrd np", mode), { ea(1) }, false));
op(Action::PerformOperation, is_bclr ? seq("nw", { ea(1) }, false) : nullptr); op(Action::PerformOperation, is_bclr ? seq("nw", { ea(1) }, false) : nullptr);
break; break;
case XXXl: // BTST.b Dn, (xxx).l case Imm: // BTST.b Dn, #
op(Action::None, seq("np")); if(is_bclr) continue;
case XXXw: // BTST.b Dn, (xxx).w
op( address_assemble_for_mode(mode) | MicroOp::DestinationMask, /* Yacht.txt doesn't cover this; this is a guess. */
seq("np nrd np", { ea(1) }, false)); op(int(Action::AssembleWordDataFromPrefetch) | MicroOp::DestinationMask, seq("np"));
op(Action::PerformOperation, is_bclr ? seq("nw", { ea(1) }, false) : nullptr); op(Action::PerformOperation, seq("np"));
break; break;
} }
} break; } break;