summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/unsp/unsp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/unsp/unsp.cpp')
-rw-r--r--src/devices/cpu/unsp/unsp.cpp13
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()