diff options
Diffstat (limited to 'src/mame/machine/at.cpp')
-rw-r--r-- | src/mame/machine/at.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/mame/machine/at.cpp b/src/mame/machine/at.cpp index 85286de7a30..b05778a5749 100644 --- a/src/mame/machine/at.cpp +++ b/src/mame/machine/at.cpp @@ -105,7 +105,8 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig) m_pic8259_slave->in_sp_callback().set_constant(0); ISA16(config, m_isabus, 0); - m_isabus->set_cputag(":maincpu"); + m_isabus->set_memspace(":maincpu", AS_PROGRAM); + m_isabus->set_iospace(":maincpu", AS_IO); m_isabus->irq2_callback().set(m_pic8259_slave, FUNC(pic8259_device::ir2_w)); // in place of irq 2 on at irq 9 is used m_isabus->irq3_callback().set("pic8259_master", FUNC(pic8259_device::ir3_w)); m_isabus->irq4_callback().set("pic8259_master", FUNC(pic8259_device::ir4_w)); @@ -124,6 +125,7 @@ MACHINE_CONFIG_START(at_mb_device::device_add_mconfig) m_isabus->drq5_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq1_w)); m_isabus->drq6_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq2_w)); m_isabus->drq7_callback().set(m_dma8237_2, FUNC(am9517a_device::dreq3_w)); + m_isabus->iochck_callback().set(FUNC(at_mb_device::iochck_w)); MC146818(config, m_mc146818, 32.768_kHz_XTAL); m_mc146818->irq().set(m_pic8259_slave, FUNC(pic8259_device::ir0_w)); @@ -364,7 +366,8 @@ WRITE8_MEMBER( at_mb_device::write_rtc ) { if (offset==0) { m_nmi_enabled = BIT(data,7); - m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0)); + if (!m_nmi_enabled) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); m_mc146818->write(space,0,data); } else { @@ -413,5 +416,12 @@ WRITE8_MEMBER( at_mb_device::portb_w ) m_pit8254->write_gate2(BIT(data, 0)); speaker_set_spkrdata( BIT(data, 1)); m_channel_check = BIT(data, 3); - m_isabus->set_nmi_state((m_nmi_enabled==0) && (m_channel_check==0)); + if (m_channel_check) + m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); +} + +WRITE_LINE_MEMBER( at_mb_device::iochck_w ) +{ + if (!state && m_nmi_enabled && !m_channel_check) + m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } |