From b63b1b1a84870d003388cf51d5e9f2ebbbec2a00 Mon Sep 17 00:00:00 2001 From: LLeny Date: Sun, 10 Nov 2024 09:05:41 +0800 Subject: [PATCH] Fix interrupts register update condition --- src/mikey/mod.rs | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/mikey/mod.rs b/src/mikey/mod.rs index fd24fcd..dfa81bb 100644 --- a/src/mikey/mod.rs +++ b/src/mikey/mod.rs @@ -144,10 +144,8 @@ impl Mikey { if int != 0 { int |= self.registers.data(INTSET); - trace!("INTSET -> {:02X}", int); - if !self.cpu.flags().contains(M6502Flags::I) { - self.registers.set_data(INTSET, int); - } + self.registers.set_data(INTSET, int); + trace!("INTSET -> {:02X}", int); if !bus.grant() { // wake up the cpu bus.set_request(true); } @@ -206,9 +204,10 @@ impl Mikey { match self.bus_owner { MikeyBusOwner::Cpu => { - match self.registers.data(INTSET) { - 0 => self.cpu_pins.pin_off(M6502_IRQ), - _ => self.cpu_pins.pin_on(M6502_IRQ), + if self.cpu.flags().contains(M6502Flags::I) || self.registers.data(INTSET) == 0 { + self.cpu_pins.pin_off(M6502_IRQ); + } else { + self.cpu_pins.pin_on(M6502_IRQ); } match bus.grant() {