diff --git a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp index 3ae467571..921b182b9 100644 --- a/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp +++ b/Processors/68000Mk2/Implementation/68000Mk2Implementation.hpp @@ -531,7 +531,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor Access(captured_status_); // ns // Do the interrupt cycle, to obtain a vector. - temporary_address_.l = 0xffff'fff8 | uint32_t(captured_interrupt_level_); + temporary_address_.l = 0xffff'fff1 | uint32_t(captured_interrupt_level_ << 1); SetupDataAccess(0, Microcycle::InterruptAcknowledge); SetDataAddress(temporary_address_.l); Access(temporary_value_.low); // ni @@ -541,6 +541,8 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor temporary_value_.w = uint16_t(InstructionSet::M68k::Exception::InterruptAutovectorBase - 1 + captured_interrupt_level_); } + // TODO: if bus error is set, treat interrupt as spurious. + IdleBus(3); // n- n // Do the rest of the stack work.