diff options
Diffstat (limited to 'src/devices/cpu/unsp/unsp.cpp')
-rw-r--r-- | src/devices/cpu/unsp/unsp.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/devices/cpu/unsp/unsp.cpp b/src/devices/cpu/unsp/unsp.cpp index 1239a1075ed..6a815b7f441 100644 --- a/src/devices/cpu/unsp/unsp.cpp +++ b/src/devices/cpu/unsp/unsp.cpp @@ -20,8 +20,6 @@ #include "unsp.h" #include "unspfe.h" -#include "debugger.h" - #include "unspdasm.h" #include <climits> @@ -59,6 +57,7 @@ unsp_device::unsp_device(const machine_config &mconfig, device_type type, const , m_mem_read(nullptr) , m_mem_write(nullptr) , m_enable_drc(false) + , m_vectorbase(0xfff0) { m_iso = 10; m_numregs = 8; @@ -317,7 +316,7 @@ void unsp_device::device_reset() m_core->m_r[i] = 0xdeadbeef; } - m_core->m_r[REG_PC] = read16(0xfff7); + m_core->m_r[REG_PC] = read16(m_vectorbase + 0x7); m_core->m_enable_irq = 0; m_core->m_enable_fiq = 0; m_core->m_fir_move = 1; @@ -450,13 +449,13 @@ inline void unsp_device::trigger_fiq() if (!m_core->m_enable_fiq || m_core->m_fiq) return; + standard_irq_callback(UNSP_FIQ_LINE, m_core->m_r[REG_PC]); m_core->m_fiq = 1; push(m_core->m_r[REG_PC], &m_core->m_r[REG_SP]); push(m_core->m_r[REG_SR], &m_core->m_r[REG_SP]); - m_core->m_r[REG_PC] = read16(0xfff6); + m_core->m_r[REG_PC] = read16(m_vectorbase + 0x06); m_core->m_r[REG_SR] = 0; - standard_irq_callback(UNSP_FIQ_LINE); } inline void unsp_device::trigger_irq(int line) @@ -464,6 +463,7 @@ inline void unsp_device::trigger_irq(int line) if ((m_core->m_ine == 0 && m_core->m_irq == 1) || m_core->m_pri <= line || !m_core->m_enable_irq) return; + standard_irq_callback(UNSP_IRQ0_LINE+line, m_core->m_r[REG_PC]); m_core->m_irq = 1; push(m_core->m_r[REG_PC], &m_core->m_r[REG_SP]); @@ -476,9 +476,8 @@ inline void unsp_device::trigger_irq(int line) if (m_core->m_ine) m_core->m_pri = line; - m_core->m_r[REG_PC] = read16(0xfff8 + line); + m_core->m_r[REG_PC] = read16(m_vectorbase + 0x08 + line); m_core->m_r[REG_SR] = 0; - standard_irq_callback(UNSP_IRQ0_LINE+line); } void unsp_device::check_irqs() |