From 17f6f0f07dbe39b06df2669e31d308432de67bd5 Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 10 Nov 2024 19:17:31 -0500 Subject: m6809: Remove fake SWI interrupt line, replacing interrupt callback with exception hook for debugging --- src/devices/cpu/m6809/base6x09.lst | 6 +++--- src/devices/cpu/m6809/m6809.h | 11 ++++++++++- src/devices/cpu/m6809/m6809.lst | 6 +++--- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/devices/cpu/m6809/base6x09.lst b/src/devices/cpu/m6809/base6x09.lst index 4372eacd1d5..ad35b2746a0 100644 --- a/src/devices/cpu/m6809/base6x09.lst +++ b/src/devices/cpu/m6809/base6x09.lst @@ -672,7 +672,7 @@ SWI: // doesn't use SOFTWARE_INTERRUPT label because SWI will // inhibit IRQ/FIRQ set_ea(VECTOR_SWI); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_SWI); m_cc |= CC_E; set_regop16(m_s); m_temp.w = entire_state_registers(); @@ -684,12 +684,12 @@ SWI: SWI2: set_ea(VECTOR_SWI2); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_SWI2); goto SOFTWARE_INTERRUPT; SWI3: set_ea(VECTOR_SWI3); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_SWI3); goto SOFTWARE_INTERRUPT; SOFTWARE_INTERRUPT: diff --git a/src/devices/cpu/m6809/m6809.h b/src/devices/cpu/m6809/m6809.h index 38c38c09fba..0a48fb2a5f1 100644 --- a/src/devices/cpu/m6809/m6809.h +++ b/src/devices/cpu/m6809/m6809.h @@ -128,6 +128,16 @@ protected: VECTOR_RESET_FFFE = 0xFFFE }; + // exception numbers for debugger + enum + { + EXCEPTION_SWI = 1, + EXCEPTION_SWI2 = 2, + EXCEPTION_SWI3 = 3, + EXCEPTION_XFIRQ = 4, + EXCEPTION_XRES = 5 + }; + union M6809Q { #ifdef LSB_FIRST @@ -332,6 +342,5 @@ enum #define M6809_IRQ_LINE 0 /* IRQ line number */ #define M6809_FIRQ_LINE 1 /* FIRQ line number */ -#define M6809_SWI 2 /* Virtual SWI line to be used during SWI acknowledge cycle */ #endif // MAME_CPU_M6809_M6809_H diff --git a/src/devices/cpu/m6809/m6809.lst b/src/devices/cpu/m6809/m6809.lst index 4f2b8077bb5..787b084ebc3 100644 --- a/src/devices/cpu/m6809/m6809.lst +++ b/src/devices/cpu/m6809/m6809.lst @@ -663,7 +663,7 @@ XANDCC: XRES: set_ea(VECTOR_RESET_FFFE); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_XRES); set_regop16(m_s); m_temp.w = entire_state_registers(); @dummy_read_opcode_arg(0); @@ -724,7 +724,7 @@ XST16: XSWI2: set_ea(VECTOR_SWI2); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_SWI2); set_regop16(m_s); m_temp.w = entire_state_registers(); @dummy_read_opcode_arg(0); @@ -745,7 +745,7 @@ XADD16: XFIRQ: set_ea(VECTOR_FIRQ); - standard_irq_callback(M6809_SWI, m_pc.w); + debugger_exception_hook(EXCEPTION_XFIRQ); set_regop16(m_s); m_temp.w = entire_state_registers(); @dummy_read_opcode_arg(0); -- cgit v1.2.3