From a791680e6f0cc2644a118e0913170b26cee84a5c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 14 Feb 2021 21:04:20 -0500 Subject: [PATCH] Implements set_status as per advice. --- Machines/Apple/AppleIIgs/ADB.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Machines/Apple/AppleIIgs/ADB.cpp b/Machines/Apple/AppleIIgs/ADB.cpp index a1160ad50..402d1ce90 100644 --- a/Machines/Apple/AppleIIgs/ADB.cpp +++ b/Machines/Apple/AppleIIgs/ADB.cpp @@ -109,15 +109,19 @@ uint8_t GLU::get_status() { return status_; } +void GLU::set_status(uint8_t status) { + // This permits only the interrupt flags to be set. + constexpr uint8_t interrupt_flags = + uint8_t(CPUFlags::MouseInterruptEnabled) | + uint8_t(CPUFlags::CommandDataInterruptEnabled) | + uint8_t(CPUFlags::KeyboardDataInterruptEnabled); + status_ = (status_ & ~interrupt_flags) | (status & interrupt_flags); +} + void GLU::set_command(uint8_t command) { registers_[1] = command; registers_[4] |= uint8_t(MicrocontrollerFlags::CommandRegisterFull); status_ |= uint8_t(CPUFlags::CommandRegisterFull); -// printf("!!!%02x!!!\n", command); -} - -void GLU::set_status(uint8_t status) { - printf("TODO: set ADB status %02x\n", status); } // MARK: - Setup and run.