summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/genpc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/genpc.cpp')
-rw-r--r--src/devices/machine/genpc.cpp60
1 files changed, 37 insertions, 23 deletions
diff --git a/src/devices/machine/genpc.cpp b/src/devices/machine/genpc.cpp
index 269c1915bb0..e626bf96b30 100644
--- a/src/devices/machine/genpc.cpp
+++ b/src/devices/machine/genpc.cpp
@@ -135,6 +135,8 @@ WRITE_LINE_MEMBER( ibm5160_mb_device::pc_dma8237_out_eop )
void ibm5160_mb_device::pc_select_dma_channel(int channel, bool state)
{
+ m_isabus->dack_line_w(channel, state);
+
if(!state) {
m_dma_channel = channel;
if(m_cur_eop)
@@ -393,8 +395,16 @@ WRITE8_MEMBER( ibm5160_mb_device::pc_ppi_portb_w )
WRITE8_MEMBER( ibm5160_mb_device::nmi_enable_w )
{
m_nmi_enabled = BIT(data,7);
- m_isabus->set_nmi_state(m_nmi_enabled);
+ if (!m_nmi_enabled)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE);
+}
+
+WRITE_LINE_MEMBER( ibm5160_mb_device::iochck_w )
+{
+ if (m_nmi_enabled && !state)
+ m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE);
}
+
//**************************************************************************
// GLOBAL VARIABLES
//**************************************************************************
@@ -410,8 +420,9 @@ DEFINE_DEVICE_TYPE(IBM5160_MOTHERBOARD, ibm5160_mb_device, "ibm5160_mb", "IBM 51
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
- PIT8253(config, m_pit8253, 0);
+void ibm5160_mb_device::device_add_mconfig(machine_config &config)
+{
+ PIT8253(config, m_pit8253);
m_pit8253->set_clk<0>(XTAL(14'318'181)/12.0); // heartbeat IRQ
m_pit8253->out_handler<0>().set(m_pic8259, FUNC(pic8259_device::ir0_w));
m_pit8253->set_clk<1>(XTAL(14'318'181)/12.0); // DRAM refresh
@@ -436,7 +447,7 @@ MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
m_dma8237->out_dack_callback<2>().set(FUNC(ibm5160_mb_device::pc_dack2_w));
m_dma8237->out_dack_callback<3>().set(FUNC(ibm5160_mb_device::pc_dack3_w));
- PIC8259(config, m_pic8259, 0);
+ PIC8259(config, m_pic8259);
m_pic8259->out_int_callback().set(FUNC(ibm5160_mb_device::pic_int_w));
I8255A(config, m_ppi8255, 0);
@@ -445,7 +456,8 @@ MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
m_ppi8255->in_pc_callback().set(FUNC(ibm5160_mb_device::pc_ppi_portc_r));
ISA8(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, 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));
@@ -455,15 +467,16 @@ MACHINE_CONFIG_START(ibm5160_mb_device::device_add_mconfig)
m_isabus->drq1_callback().set(m_dma8237, FUNC(am9517a_device::dreq1_w));
m_isabus->drq2_callback().set(m_dma8237, FUNC(am9517a_device::dreq2_w));
m_isabus->drq3_callback().set(m_dma8237, FUNC(am9517a_device::dreq3_w));
+ m_isabus->iochck_callback().set(FUNC(ibm5160_mb_device::iochck_w));
- MCFG_DEVICE_ADD("pc_kbdc", PC_KBDC, 0)
- MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, ibm5160_mb_device, keyboard_clock_w))
- MCFG_PC_KBDC_OUT_DATA_CB(WRITELINE(*this, ibm5160_mb_device, keyboard_data_w))
+ PC_KBDC(config, m_pc_kbdc, 0);
+ m_pc_kbdc->out_clock_cb().set(FUNC(ibm5160_mb_device::keyboard_clock_w));
+ m_pc_kbdc->out_data_cb().set(FUNC(ibm5160_mb_device::keyboard_data_w));
/* sound hardware */
SPEAKER(config, "mono").front_center();
SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 1.00);
-MACHINE_CONFIG_END
+}
static INPUT_PORTS_START( ibm5160_mb )
@@ -595,18 +608,18 @@ DEFINE_DEVICE_TYPE(IBM5150_MOTHERBOARD, ibm5150_mb_device, "ibm5150_mb", "IBM 51
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(ibm5150_mb_device::device_add_mconfig)
+void ibm5150_mb_device::device_add_mconfig(machine_config &config)
+{
ibm5160_mb_device::device_add_mconfig(config);
- MCFG_DEVICE_MODIFY("pc_kbdc")
- MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, ibm5150_mb_device, keyboard_clock_w))
+ subdevice<pc_kbdc_device>("pc_kbdc")->out_clock_cb().set(FUNC(ibm5150_mb_device::keyboard_clock_w));
m_ppi8255->out_pb_callback().set(FUNC(ibm5150_mb_device::pc_ppi_portb_w));
m_ppi8255->in_pc_callback().set(FUNC(ibm5150_mb_device::pc_ppi_portc_r));
- MCFG_CASSETTE_ADD( "cassette" )
- MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED)
-MACHINE_CONFIG_END
+ CASSETTE(config, m_cassette);
+ m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
+}
//**************************************************************************
// LIVE DEVICE
@@ -772,15 +785,15 @@ DEFINE_DEVICE_TYPE(EC1841_MOTHERBOARD, ec1841_mb_device, "ec1841_mb", "EC-1840 m
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(ec1841_mb_device::device_add_mconfig)
+void ec1841_mb_device::device_add_mconfig(machine_config &config)
+{
ibm5160_mb_device::device_add_mconfig(config);
m_ppi8255->out_pb_callback().set(FUNC(ec1841_mb_device::pc_ppi_portb_w));
m_ppi8255->in_pc_callback().set(FUNC(ec1841_mb_device::pc_ppi_portc_r));
- MCFG_DEVICE_MODIFY("pc_kbdc")
- MCFG_PC_KBDC_OUT_CLOCK_CB(WRITELINE(*this, ec1841_mb_device, keyboard_clock_w))
-MACHINE_CONFIG_END
+ subdevice<pc_kbdc_device>("pc_kbdc")->out_clock_cb().set(FUNC(ec1841_mb_device::keyboard_clock_w));
+}
static INPUT_PORTS_START( ec1841_mb )
PORT_START("DSW0") /* SA1 */
@@ -898,12 +911,13 @@ pc_noppi_mb_device::pc_noppi_mb_device(const machine_config &mconfig, device_typ
// device_add_mconfig - add device configuration
//-------------------------------------------------
-MACHINE_CONFIG_START(pc_noppi_mb_device::device_add_mconfig)
+void pc_noppi_mb_device::device_add_mconfig(machine_config &config)
+{
ibm5160_mb_device::device_add_mconfig(config);
- MCFG_DEVICE_REMOVE("pc_kbdc")
- MCFG_DEVICE_REMOVE("ppi8255")
-MACHINE_CONFIG_END
+ config.device_remove("pc_kbdc");
+ config.device_remove("ppi8255");
+}
static INPUT_PORTS_START( pc_noppi_mb )
INPUT_PORTS_END