1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-02-07 20:30:52 +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: { case Decoder::MOVEP: {
program.set_destination(storage_, An, ea_register); program.set_destination(storage_, An, ea_register);
program.set_source(storage_, Dn, data_register); program.set_source(storage_, Dn, data_register);
dumper.set_source_dest(An, ea_register, Dn, data_register);
switch(operation) { switch(operation) {
default: continue; default: continue;
@ -3018,22 +3017,26 @@ struct ProcessorStorageConstructor {
case Operation::MOVEPtoMw: case Operation::MOVEPtoMw:
op(Action::PerformOperation); op(Action::PerformOperation);
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nW+ nw np", { ea(1), ea(1) }, false)); 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; break;
case Operation::MOVEPtoMl: case Operation::MOVEPtoMl:
op(Action::PerformOperation); 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)); 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; break;
case Operation::MOVEPtoRw: case Operation::MOVEPtoRw:
op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nRd+ nrd np", { ea(1), ea(1) }, false)); op(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nRd+ nrd np", { ea(1), ea(1) }, false));
op(Action::PerformOperation); op(Action::PerformOperation);
dumper.set_source_dest(d16An, ea_register, Dn, data_register);
break; break;
case Operation::MOVEPtoRl: case Operation::MOVEPtoRl:
// TODO: nR+ increments EA(0), not EA(1). Fix. // 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(int(Action::CalcD16An) | MicroOp::DestinationMask, seq("np nRd+ nR+ nrd+ nr np", { ea(1), ea(1), ea(1), ea(1) }, false));
op(Action::PerformOperation); op(Action::PerformOperation);
dumper.set_source_dest(d16An, ea_register, Dn, data_register);
break; break;
} }
} break; } break;