1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-07 05:30:30 +00:00

Correct MOVEP parameters.

This commit is contained in:
Thomas Harte 2022-04-21 19:02:28 -04:00
parent 3a42b0ac3d
commit fa1139acb3

View File

@ -3008,7 +3008,6 @@ struct ProcessorStorageConstructor {
case Decoder::MOVEP: {
program.set_destination(storage_, An, ea_register);
program.set_source(storage_, Dn, data_register);
dumper.set_source_dest(An, ea_register, Dn, data_register);
switch(operation) {
default: continue;
@ -3018,22 +3017,26 @@ struct ProcessorStorageConstructor {
case Operation::MOVEPtoMw:
op(Action::PerformOperation);
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nW+ nw np", { ea(1), ea(1) }, false));
dumper.set_source_dest(Dn, data_register, d16An, ea_register);
break;
case Operation::MOVEPtoMl:
op(Action::PerformOperation);
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nW+ nWr+ nw+ nwr np", { ea(1), ea(1), ea(1), ea(1) }, false));
dumper.set_source_dest(Dn, data_register, d16An, ea_register);
break;
case Operation::MOVEPtoRw:
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nRd+ nrd np", { ea(1), ea(1) }, false));
op(Action::PerformOperation);
dumper.set_source_dest(d16An, ea_register, Dn, data_register);
break;
case Operation::MOVEPtoRl:
// TODO: nR+ increments EA(0), not EA(1). Fix.
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nRd+ nR+ nrd+ nr np", { ea(1), ea(1), ea(1), ea(1) }, false));
op(Action::PerformOperation);
dumper.set_source_dest(d16An, ea_register, Dn, data_register);
break;
}
} break;