1
0
mirror of https://github.com/TomHarte/CLK.git synced 2024-11-29 12:50:28 +00:00

It seems status reads are not required to clear the interrupt line.

This commit is contained in:
Thomas Harte 2019-11-09 20:12:09 -05:00
parent 7ae0902103
commit 072b0266af

View File

@ -25,7 +25,6 @@ uint8_t ACIA::read(int address) {
received_data_ |= NoValueMask; received_data_ |= NoValueMask;
return uint8_t(received_data_); return uint8_t(received_data_);
} else { } else {
clear_interrupt_cause(StatusNeedsRead);
return return
((received_data_ & NoValueMask) ? 0x00 : 0x01) | ((received_data_ & NoValueMask) ? 0x00 : 0x01) |
((next_transmission_ == NoValueMask) ? 0x02 : 0x00) | ((next_transmission_ == NoValueMask) ? 0x02 : 0x00) |
@ -176,7 +175,7 @@ void ACIA::set_interrupt_delegate(InterruptDelegate *delegate) {
void ACIA::add_interrupt_cause(int cause) { void ACIA::add_interrupt_cause(int cause) {
const bool is_changing_state = !interrupt_causes_; const bool is_changing_state = !interrupt_causes_;
interrupt_causes_ |= cause | StatusNeedsRead; interrupt_causes_ |= cause;
if(interrupt_delegate_ && is_changing_state) if(interrupt_delegate_ && is_changing_state)
interrupt_delegate_->acia6850_did_change_interrupt_status(this); interrupt_delegate_->acia6850_did_change_interrupt_status(this);
} }