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: