summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author AJR <ajrhacker@users.noreply.github.com>2019-04-04 21:02:51 -0400
committer AJR <ajrhacker@users.noreply.github.com>2019-04-04 21:04:28 -0400
commit3826322efb26fde99721ffd5df5d9995bdbb42db (patch)
tree3af0d186e1099f16c6519871c7c456a702db9663
parentdd37ad0d407323fcc3a65eea17b68af49f2936f5 (diff)
fs3216: Use CPU space map for interrupt acknowledgment (nw)
-rw-r--r--src/mame/drivers/fs3216.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/mame/drivers/fs3216.cpp b/src/mame/drivers/fs3216.cpp
index 19dbda235b7..c4b50cceb4c 100644
--- a/src/mame/drivers/fs3216.cpp
+++ b/src/mame/drivers/fs3216.cpp
@@ -56,7 +56,7 @@ private:
void mmu_init_w(u16 data);
u16 irq_r();
- IRQ_CALLBACK_MEMBER(intack);
+ u8 intack_r(offs_t offset);
u8 ctc_r(offs_t offset);
void ctc_w(offs_t offset, u8 data);
@@ -78,6 +78,7 @@ private:
void main_map(address_map &map);
void clb_map(address_map &map);
+ void fc7_map(address_map &map);
void wdcpu_prog_map(address_map &map);
void wdcpu_bank_map(address_map &map);
@@ -220,10 +221,10 @@ u16 fs3216_state::irq_r()
return 0xfff8;
}
-IRQ_CALLBACK_MEMBER(fs3216_state::intack)
+u8 fs3216_state::intack_r(offs_t offset)
{
- // FIXME: not all levels are vectored this way
- return m_vecprom[irqline];
+ // FIXME: all interrupts are vectored, but not all levels go through this PROM
+ return m_vecprom[offset];
}
u8 fs3216_state::ctc_r(offs_t offset)
@@ -443,6 +444,11 @@ void fs3216_state::clb_map(address_map &map)
map(0x7f7400, 0x7f75ff).rw(m_earom, FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
}
+void fs3216_state::fc7_map(address_map &map)
+{
+ map(0xfffff0, 0xffffff).r(FUNC(fs3216_state::intack_r)).umask16(0x00ff);
+}
+
void fs3216_state::wdcpu_prog_map(address_map &map)
{
map(0x0000, 0x03ff).rom().region("wdcpu", 0);
@@ -463,8 +469,8 @@ void fs3216_state::fs3216(machine_config &config)
{
M68000(config, m_maincpu, 44.2368_MHz_XTAL / 8); // 5.5 MHz
m_maincpu->set_addrmap(AS_PROGRAM, &fs3216_state::main_map);
+ m_maincpu->set_addrmap(m68000_device::AS_CPU_SPACE, &fs3216_state::fc7_map);
m_maincpu->set_reset_callback(write_line_delegate(FUNC(fs3216_state::mmu_reset_w), this));
- m_maincpu->set_irq_acknowledge_callback(FUNC(fs3216_state::intack));
ADDRESS_MAP_BANK(config, m_clb);
m_clb->set_addrmap(0, &fs3216_state::clb_map);