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:
parent
7ae0902103
commit
072b0266af
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user