1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-12-26 09:29:45 +00:00

Adds MOVE XXX.lw, -(An)

This commit is contained in:
Thomas Harte 2019-04-18 23:40:54 -04:00
parent 27c7d00a05
commit ffdf02c5df

View File

@ -2460,21 +2460,27 @@ struct ProcessorStorageConstructor {
op(int(Action::Decrement2) | MicroOp::DestinationMask ); op(int(Action::Decrement2) | MicroOp::DestinationMask );
break; break;
case bw2(XXXl, PreDec):
op(Action::None, seq("np"));
case bw2(XXXw, PreDec):
case bw2(d16An, PreDec): case bw2(d16An, PreDec):
case bw2(d8AnXn, PreDec): case bw2(d8AnXn, PreDec):
case bw2(d16PC, PreDec): case bw2(d16PC, PreDec):
case bw2(d8PCXn, PreDec): case bw2(d8PCXn, PreDec):
op( calc_action_for_mode(combined_source_mode) | MicroOp::SourceMask, op( address_action_for_mode(combined_source_mode) | MicroOp::SourceMask,
seq(pseq("np nr", combined_source_mode), { ea(0) }, !is_byte_access )); seq(pseq("np nr", combined_source_mode), { ea(0) }, !is_byte_access ));
op(Action::PerformOperation); op(Action::PerformOperation);
op(decrement_action | MicroOp::DestinationMask, seq("np nw", { a(destination_register) }, !is_byte_access)); op(decrement_action | MicroOp::DestinationMask, seq("np nw", { a(destination_register) }, !is_byte_access));
break; break;
case l2(XXXl, PreDec):
op(Action::None, seq("np"));
case l2(XXXw, PreDec):
case l2(d16An, PreDec): case l2(d16An, PreDec):
case l2(d8AnXn, PreDec): case l2(d8AnXn, PreDec):
case l2(d16PC, PreDec): case l2(d16PC, PreDec):
case l2(d8PCXn, PreDec): case l2(d8PCXn, PreDec):
op( calc_action_for_mode(combined_source_mode) | MicroOp::SourceMask, op( address_action_for_mode(combined_source_mode) | MicroOp::SourceMask,
seq(pseq("np nR+ nr", combined_source_mode), { ea(0), ea(0) } )); seq(pseq("np nR+ nr", combined_source_mode), { ea(0), ea(0) } ));
op(Action::PerformOperation); op(Action::PerformOperation);
op(int(Action::Decrement2) | MicroOp::DestinationMask, seq("np") ); op(int(Action::Decrement2) | MicroOp::DestinationMask, seq("np") );
@ -2497,8 +2503,6 @@ struct ProcessorStorageConstructor {
op(int(Action::Decrement2) | MicroOp::DestinationMask); op(int(Action::Decrement2) | MicroOp::DestinationMask);
break; break;
// TODO: (xxx).l, (xxx).w
// //
// MOVE <ea>, (d16, An) // MOVE <ea>, (d16, An)
// MOVE <ea>, (d8, An, Xn) // MOVE <ea>, (d8, An, Xn)