1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-26 23:52:26 +00:00

Invents some additional PEA tests, and further fixes PEA.

This commit is contained in:
Thomas Harte 2019-06-27 17:59:03 -04:00
parent 8d39c3bc98
commit d81053ea38
2 changed files with 6 additions and 6 deletions

View File

@ -487,7 +487,7 @@ template <Analyser::Static::Macintosh::Target::Model model> class ConcreteMachin
CB1 = clock (input) CB1 = clock (input)
CA2 is used for receiving RTC interrupts. CA2 is used for receiving RTC interrupts.
CA1 is used for receiving vsync maybe? CA1 is used for receiving vsync.
*/ */
if(port == Port::B && line == Line::Two) keyboard_.set_input(value); if(port == Port::B && line == Line::Two) keyboard_.set_input(value);
else printf("Unhandled control line output: %c %d\n", port ? 'B' : 'A', int(line)); else printf("Unhandled control line output: %c %d\n", port ? 'B' : 'A', int(line));

View File

@ -863,7 +863,7 @@ struct ProcessorStorageConstructor {
// Temporary storage for the Program fields. // Temporary storage for the Program fields.
ProcessorBase::Program program; ProcessorBase::Program program;
// if(instruction == 0xe569) { // if(instruction == 0x4879) {
// printf(""); // printf("");
// } // }
@ -2455,16 +2455,16 @@ struct ProcessorStorageConstructor {
case Ind: // PEA (An) case Ind: // PEA (An)
operation = Operation::MOVEAl; operation = Operation::MOVEAl;
op(Action::PerformOperation);
op(int(Action::Decrement4) | MicroOp::DestinationMask); op(int(Action::Decrement4) | MicroOp::DestinationMask);
op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask); op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask, seq("np nW+ nw", { ea(1), ea(1) }));
op(Action::PerformOperation, seq("np nW+ nw", { ea(1), ea(1) }));
break; break;
case XXXl: // PEA (XXX).l case XXXl: // PEA (XXX).l
case XXXw: // PEA (XXX).w case XXXw: // PEA (XXX).w
op(int(Action::Decrement4) | MicroOp::DestinationMask, (mode == XXXl) ? seq("np") : nullptr);
op(address_assemble_for_mode(mode) | MicroOp::SourceMask); op(address_assemble_for_mode(mode) | MicroOp::SourceMask);
op(int(Action::Decrement4) | MicroOp::DestinationMask); op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask);
op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask, (mode == XXXl) ? seq("np") : nullptr);
op(Action::PerformOperation, seq("np nW+ nw np", { ea(1), ea(1) })); op(Action::PerformOperation, seq("np nW+ nw np", { ea(1), ea(1) }));
break; break;