m6809: Remove fake SWI interrupt line, replacing interrupt callback with exception hook for debugging

This commit is contained in:
AJR 2024-11-10 19:17:31 -05:00
parent 8d41e6f920
commit 17f6f0f07d
3 changed files with 16 additions and 7 deletions

View File

@ -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:

View File

@ -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

View File

@ -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);