From 5e4fca1c61d00caee2db04fa836ac5019e4bafcc Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Wed, 20 May 2026 13:42:17 -0400 Subject: [PATCH] Halt _until_ data is available; do it only once. --- Machines/Tandy/CoCo/DiskController.cpp | 6 ++++-- Machines/Tandy/CoCo/DiskController.hpp | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Machines/Tandy/CoCo/DiskController.cpp b/Machines/Tandy/CoCo/DiskController.cpp index 8e08f2fac..11fb36644 100644 --- a/Machines/Tandy/CoCo/DiskController.cpp +++ b/Machines/Tandy/CoCo/DiskController.cpp @@ -61,8 +61,10 @@ const Storage::Disk::Disk *DiskController::disk(const std::string &name) { // * DRQ informs HALT, if enabled. // -bool DiskController::halt() const { - return get_data_request_line() && enable_halt_; +bool DiskController::halt() { + const bool halt = !get_data_request_line() && enable_halt_; + if(halt) enable_halt_ = false; + return halt; } bool DiskController::nmi() const { diff --git a/Machines/Tandy/CoCo/DiskController.hpp b/Machines/Tandy/CoCo/DiskController.hpp index 5d2d3e947..b2a2d8cd4 100644 --- a/Machines/Tandy/CoCo/DiskController.hpp +++ b/Machines/Tandy/CoCo/DiskController.hpp @@ -43,7 +43,7 @@ public: void set_disk(std::shared_ptr, size_t drive); const Storage::Disk::Disk *disk(const std::string &); - bool halt() const; + bool halt(); bool nmi() const; private: