diff options
Diffstat (limited to 'src/mame/drivers/wildpkr.cpp')
-rw-r--r-- | src/mame/drivers/wildpkr.cpp | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/mame/drivers/wildpkr.cpp b/src/mame/drivers/wildpkr.cpp index e83cb7a1d6e..7d7b9ebc872 100644 --- a/src/mame/drivers/wildpkr.cpp +++ b/src/mame/drivers/wildpkr.cpp @@ -224,7 +224,8 @@ private: DECLARE_WRITE16_MEMBER(clock_start_w); DECLARE_WRITE16_MEMBER(clock_rate_w); DECLARE_WRITE16_MEMBER(unknown_trigger_w); - IRQ_CALLBACK_MEMBER(tabpkr_irq_ack); + u16 tabpkr_irq_ack(offs_t offset); + void cpu_space_map(address_map &map); void hd63484_map(address_map &map); void ramdac_map(address_map &map); void tabpkr_map(address_map &map); @@ -451,13 +452,19 @@ void wildpkr_state::ramdac_map(address_map &map) } -IRQ_CALLBACK_MEMBER(wildpkr_state::tabpkr_irq_ack) +void wildpkr_state::cpu_space_map(address_map &map) { - m_maincpu->set_input_line(irqline, CLEAR_LINE); - if (irqline == M68K_IRQ_2) + map(0xfffff2, 0xffffff).r(FUNC(wildpkr_state::tabpkr_irq_ack)); +} + +u16 wildpkr_state::tabpkr_irq_ack(offs_t offset) +{ + m_maincpu->set_input_line(offset+1, CLEAR_LINE); + + if (offset+1 == 2) return m_duart->get_irq_vector(); else - return M68K_INT_ACK_AUTOVECTOR; + return 0x19 + offset; } @@ -501,7 +508,7 @@ void wildpkr_state::tabpkr(machine_config &config) M68000(config, m_maincpu, XTAL(24'000'000) / 2); m_maincpu->set_addrmap(AS_PROGRAM, &wildpkr_state::tabpkr_map); m_maincpu->set_periodic_int(FUNC(wildpkr_state::irq3_line_assert), attotime::from_hz(60*256)); - m_maincpu->set_irq_acknowledge_callback(FUNC(wildpkr_state::tabpkr_irq_ack)); + m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &wildpkr_state::cpu_space_map); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); // DS1220Y |