From d81053ea38637acc97760a20adb6d99025babfcd Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Thu, 27 Jun 2019 17:59:03 -0400 Subject: [PATCH] Invents some additional PEA tests, and further fixes PEA. --- Machines/Apple/Macintosh/Macintosh.cpp | 2 +- Processors/68000/Implementation/68000Storage.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Machines/Apple/Macintosh/Macintosh.cpp b/Machines/Apple/Macintosh/Macintosh.cpp index 4d747a044..531111246 100644 --- a/Machines/Apple/Macintosh/Macintosh.cpp +++ b/Machines/Apple/Macintosh/Macintosh.cpp @@ -487,7 +487,7 @@ template class ConcreteMachin CB1 = clock (input) 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); else printf("Unhandled control line output: %c %d\n", port ? 'B' : 'A', int(line)); diff --git a/Processors/68000/Implementation/68000Storage.cpp b/Processors/68000/Implementation/68000Storage.cpp index 96c646129..008920131 100644 --- a/Processors/68000/Implementation/68000Storage.cpp +++ b/Processors/68000/Implementation/68000Storage.cpp @@ -863,7 +863,7 @@ struct ProcessorStorageConstructor { // Temporary storage for the Program fields. ProcessorBase::Program program; -// if(instruction == 0xe569) { +// if(instruction == 0x4879) { // printf(""); // } @@ -2455,16 +2455,16 @@ struct ProcessorStorageConstructor { case Ind: // PEA (An) operation = Operation::MOVEAl; + op(Action::PerformOperation); op(int(Action::Decrement4) | MicroOp::DestinationMask); - op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask); - op(Action::PerformOperation, seq("np nW+ nw", { ea(1), ea(1) })); + op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask, seq("np nW+ nw", { ea(1), ea(1) })); break; case XXXl: // PEA (XXX).l 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(int(Action::Decrement4) | MicroOp::DestinationMask); - op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask, (mode == XXXl) ? seq("np") : nullptr); + op(int(Action::CopyToEffectiveAddress) | MicroOp::DestinationMask); op(Action::PerformOperation, seq("np nW+ nw np", { ea(1), ea(1) })); break;