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:
parent
3a42b0ac3d
commit
fa1139acb3
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user