1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-08-07 23:25:00 +00:00

Implements set_status as per advice.

This commit is contained in:
Thomas Harte
2021-02-14 21:04:20 -05:00
parent a3e98907ca
commit a791680e6f

View File

@@ -109,15 +109,19 @@ uint8_t GLU::get_status() {
return 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) { void GLU::set_command(uint8_t command) {
registers_[1] = command; registers_[1] = command;
registers_[4] |= uint8_t(MicrocontrollerFlags::CommandRegisterFull); registers_[4] |= uint8_t(MicrocontrollerFlags::CommandRegisterFull);
status_ |= uint8_t(CPUFlags::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. // MARK: - Setup and run.