summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/a2bus/pc_xporter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/a2bus/pc_xporter.cpp')
-rw-r--r--src/devices/bus/a2bus/pc_xporter.cpp45
1 files changed, 27 insertions, 18 deletions
diff --git a/src/devices/bus/a2bus/pc_xporter.cpp b/src/devices/bus/a2bus/pc_xporter.cpp
index 6334463533b..305da9aa868 100644
--- a/src/devices/bus/a2bus/pc_xporter.cpp
+++ b/src/devices/bus/a2bus/pc_xporter.cpp
@@ -115,14 +115,15 @@ void a2bus_pcxporter_device::pc_io(address_map &map)
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
- MCFG_DEVICE_ADD(m_v30, V30, A2BUS_7M_CLOCK) // 7.16 MHz as per manual
- MCFG_DEVICE_PROGRAM_MAP(pc_map)
- MCFG_DEVICE_IO_MAP(pc_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("pic8259", pic8259_device, inta_cb)
- MCFG_DEVICE_DISABLE()
-
- PIT8253(config, m_pit8253, 0);
+void a2bus_pcxporter_device::device_add_mconfig(machine_config &config)
+{
+ V30(config, m_v30, A2BUS_7M_CLOCK); // 7.16 MHz as per manual
+ m_v30->set_addrmap(AS_PROGRAM, &a2bus_pcxporter_device::pc_map);
+ m_v30->set_addrmap(AS_IO, &a2bus_pcxporter_device::pc_io);
+ m_v30->set_irq_acknowledge_callback("pic8259", FUNC(pic8259_device::inta_cb));
+ m_v30->set_disable();
+
+ PIT8253(config, m_pit8253);
m_pit8253->set_clk<0>(A2BUS_7M_CLOCK / 6.0); // heartbeat IRQ
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(A2BUS_7M_CLOCK / 6.0); // DRAM refresh
@@ -147,11 +148,12 @@ MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
m_dma8237->out_dack_callback<2>().set(FUNC(a2bus_pcxporter_device::pc_dack2_w));
m_dma8237->out_dack_callback<3>().set(FUNC(a2bus_pcxporter_device::pc_dack3_w));
- PIC8259(config, m_pic8259, 0);
+ PIC8259(config, m_pic8259);
m_pic8259->out_int_callback().set_inputline(m_v30, 0);
ISA8(config, m_isabus, 0);
- m_isabus->set_cputag(m_v30);
+ m_isabus->set_memspace(m_v30, AS_PROGRAM);
+ m_isabus->set_iospace(m_v30, AS_IO);
m_isabus->irq2_callback().set(m_pic8259, FUNC(pic8259_device::ir2_w));
m_isabus->irq3_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w));
m_isabus->irq4_callback().set(m_pic8259, FUNC(pic8259_device::ir4_w));
@@ -162,18 +164,18 @@ MACHINE_CONFIG_START(a2bus_pcxporter_device::device_add_mconfig)
m_isabus->drq2_callback().set(m_dma8237, FUNC(am9517a_device::dreq2_w));
m_isabus->drq3_callback().set(m_dma8237, FUNC(am9517a_device::dreq3_w));
- MCFG_DEVICE_ADD(m_pc_kbdc, PC_KBDC, 0)
- MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, a2bus_pcxporter_device, keyboard_clock_w))
- MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE(*this, a2bus_pcxporter_device, keyboard_data_w))
- MCFG_PC_KBDC_SLOT_ADD("pc_kbdc", "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270)
+ PC_KBDC(config, m_pc_kbdc, 0);
+ m_pc_kbdc->out_clock_cb().set(FUNC(a2bus_pcxporter_device::keyboard_clock_w));
+ m_pc_kbdc->out_data_cb().set(FUNC(a2bus_pcxporter_device::keyboard_data_w));
+ PC_KBDC_SLOT(config, "kbd", pc_xt_keyboards, STR_KBD_KEYTRONIC_PC3270).set_pc_kbdc_slot(m_pc_kbdc);
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
- MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "cga", true) // FIXME: determine ISA bus clock
- MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, m_isabus, pc_isa8_cards, "fdc_xt", true)
-MACHINE_CONFIG_END
+ ISA8_SLOT(config, "isa1", 0, m_isabus, pc_isa8_cards, "cga", true); // FIXME: determine ISA bus clock
+ ISA8_SLOT(config, "isa2", 0, m_isabus, pc_isa8_cards, "fdc_xt", true);
+}
//**************************************************************************
// LIVE DEVICE
@@ -631,5 +633,12 @@ WRITE_LINE_MEMBER( a2bus_pcxporter_device::keyboard_data_w )
WRITE8_MEMBER( a2bus_pcxporter_device::nmi_enable_w )
{
m_nmi_enabled = BIT(data,7);
- m_isabus->set_nmi_state(m_nmi_enabled);
+ if (!m_nmi_enabled)
+ m_v30->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER( a2bus_pcxporter_device::iochck_w )
+{
+ if (m_nmi_enabled && !state)
+ m_v30->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}