From 56c07c0a0b9c2d3bc3020c2fb51c09ce8796b5ce Mon Sep 17 00:00:00 2001 From: Dirk Hoffmann Date: Sat, 28 Dec 2024 15:44:56 +0100 Subject: [PATCH] Fixed Headless --- Emulator/Base/MsgQueueTypes.h | 4 ++++ Emulator/Components/Amiga.cpp | 16 ++++++++++++++++ Emulator/Components/AmigaTypes.h | 22 ++++++++++++---------- Emulator/HeadlessScripts.h | 2 +- GUI/MyController.swift | 2 +- 5 files changed, 34 insertions(+), 12 deletions(-) diff --git a/Emulator/Base/MsgQueueTypes.h b/Emulator/Base/MsgQueueTypes.h index 8ebe9d0a5..b026a80de 100644 --- a/Emulator/Base/MsgQueueTypes.h +++ b/Emulator/Base/MsgQueueTypes.h @@ -57,6 +57,8 @@ enum_long(MSG_TYPE) MSG_CPU_HALT, // Agnus + MSG_EOL_REACHED, + MSG_EOF_REACHED, MSG_BEAMTRAP_REACHED, MSG_BEAMTRAP_UPDATED, @@ -171,6 +173,8 @@ struct MsgTypeEnum : vamiga::util::Reflection case MSG_SWTRAP_REACHED: return "SWTRAP_REACHED"; case MSG_CPU_HALT: return "CPU_HALT"; + case MSG_EOL_REACHED: return "EOL_REACHED"; + case MSG_EOF_REACHED: return "EOF_REACHED"; case MSG_BEAMTRAP_REACHED: return "BEAMTRAP_REACHED"; case MSG_BEAMTRAP_UPDATED: return "BEAMTRAP_UPDATED"; diff --git a/Emulator/Components/Amiga.cpp b/Emulator/Components/Amiga.cpp index 7a394e5f2..de8f7d89b 100644 --- a/Emulator/Components/Amiga.cpp +++ b/Emulator/Components/Amiga.cpp @@ -843,6 +843,22 @@ Amiga::computeFrame() break; } + // Shall we stop at the end of the current line? + if (flags & RL::EOL_REACHED) { + clearFlag(RL::EOL_REACHED); + msgQueue.put(MSG_EOL_REACHED); + throw StateChangeException(STATE_PAUSED); + break; + } + + // Shall we stop at the end of the current frame? + if (flags & RL::EOF_REACHED) { + clearFlag(RL::EOF_REACHED); + msgQueue.put(MSG_EOF_REACHED); + throw StateChangeException(STATE_PAUSED); + break; + } + // Did we reach a breakpoint? if (flags & RL::BREAKPOINT_REACHED) { clearFlag(RL::BREAKPOINT_REACHED); diff --git a/Emulator/Components/AmigaTypes.h b/Emulator/Components/AmigaTypes.h index 9f8b01d76..742ea41b2 100644 --- a/Emulator/Components/AmigaTypes.h +++ b/Emulator/Components/AmigaTypes.h @@ -352,16 +352,18 @@ namespace RL { constexpr u32 STOP = (1 << 0); constexpr u32 SOFTSTOP_REACHED = (1 << 1); -constexpr u32 BREAKPOINT_REACHED = (1 << 2); -constexpr u32 WATCHPOINT_REACHED = (1 << 3); -constexpr u32 CATCHPOINT_REACHED = (1 << 4); -constexpr u32 SWTRAP_REACHED = (1 << 5); -constexpr u32 BEAMTRAP_REACHED = (1 << 6); -constexpr u32 COPPERBP_REACHED = (1 << 7); -constexpr u32 COPPERWP_REACHED = (1 << 8); -constexpr u32 AUTO_SNAPSHOT = (1 << 9); -constexpr u32 USER_SNAPSHOT = (1 << 10); -constexpr u32 SYNC_THREAD = (1 << 11); +constexpr u32 EOL_REACHED = (1 << 2); +constexpr u32 EOF_REACHED = (1 << 3); +constexpr u32 BREAKPOINT_REACHED = (1 << 4); +constexpr u32 WATCHPOINT_REACHED = (1 << 5); +constexpr u32 CATCHPOINT_REACHED = (1 << 6); +constexpr u32 SWTRAP_REACHED = (1 << 7); +constexpr u32 BEAMTRAP_REACHED = (1 << 8); +constexpr u32 COPPERBP_REACHED = (1 << 9); +constexpr u32 COPPERWP_REACHED = (1 << 10); +constexpr u32 AUTO_SNAPSHOT = (1 << 11); +constexpr u32 USER_SNAPSHOT = (1 << 12); +constexpr u32 SYNC_THREAD = (1 << 13); }; #endif diff --git a/Emulator/HeadlessScripts.h b/Emulator/HeadlessScripts.h index bc6721a34..7901e881e 100644 --- a/Emulator/HeadlessScripts.h +++ b/Emulator/HeadlessScripts.h @@ -484,7 +484,7 @@ static const char *smokeTestScript[] = { "? df3", "? df3 disk", - "? host", + "? thread", "? server", "shutdown", diff --git a/GUI/MyController.swift b/GUI/MyController.swift index 67bfa878c..a74a54b69 100644 --- a/GUI/MyController.swift +++ b/GUI/MyController.swift @@ -491,7 +491,7 @@ extension MyController { case .CPU_HALT: refreshStatusBar() - case .BEAMTRAP_REACHED: + case .BEAMTRAP_REACHED, .EOF_REACHED, .EOL_REACHED: inspector?.signalBeamtrap()