Apply applicable deferred actions before lookahead.

This commit is contained in:
Thomas Harte 2024-02-16 08:56:01 -05:00
parent fadd3bc6fc
commit 35545451fe
5 changed files with 14 additions and 3 deletions

View File

@ -73,6 +73,11 @@ template <typename TimeUnit> class DeferredQueue {
} }
} }
/// @returns @c true if no actions are enqueued; @c false otherwise.
bool empty() const {
return pending_actions_.empty();
}
private: private:
// The list of deferred actions. // The list of deferred actions.
struct DeferredAction { struct DeferredAction {

View File

@ -742,6 +742,9 @@ template <Analyser::Static::AppleII::Target::Model model, bool has_mockingboard>
// actor, but this will actually be the result most of the time so it's not // actor, but this will actually be the result most of the time so it's not
// too terrible. // too terrible.
if(isReadOperation(operation) && address != 0xc000) { if(isReadOperation(operation) && address != 0xc000) {
if(video_.has_deferred_actions()) {
update_video();
}
*value = video_.get_last_read_value(cycles_since_video_update_); *value = video_.get_last_read_value(cycles_since_video_update_);
} }
@ -851,7 +854,7 @@ template <Analyser::Static::AppleII::Target::Model model, bool has_mockingboard>
case 0xc050: case 0xc050:
case 0xc051: case 0xc051:
update_video(); update_video();
video_.set_text(!!(address&1)); video_.set_text(address&1);
break; break;
case 0xc052: update_video(); video_.set_mixed(false); break; case 0xc052: update_video(); video_.set_mixed(false); break;
case 0xc053: update_video(); video_.set_mixed(true); break; case 0xc053: update_video(); video_.set_mixed(true); break;

View File

@ -10,7 +10,6 @@
#include "../../../Outputs/CRT/CRT.hpp" #include "../../../Outputs/CRT/CRT.hpp"
#include "../../../ClockReceiver/ClockReceiver.hpp" #include "../../../ClockReceiver/ClockReceiver.hpp"
#include "../../../ClockReceiver/DeferredQueue.hpp"
#include "VideoSwitches.hpp" #include "VideoSwitches.hpp"

View File

@ -247,6 +247,10 @@ template <typename TimeUnit> class VideoSwitches {
} }
} }
bool has_deferred_actions() const {
return !deferrer_.empty();
}
protected: protected:
GraphicsMode graphics_mode(int row) const { GraphicsMode graphics_mode(int row) const {
if( if(

View File

@ -62,7 +62,7 @@
</Testables> </Testables>
</TestAction> </TestAction>
<LaunchAction <LaunchAction
buildConfiguration = "Release" buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
enableASanStackUseAfterReturn = "YES" enableASanStackUseAfterReturn = "YES"