summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/pc1512.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc1512.cpp')
-rw-r--r--src/mame/drivers/pc1512.cpp176
1 files changed, 92 insertions, 84 deletions
diff --git a/src/mame/drivers/pc1512.cpp b/src/mame/drivers/pc1512.cpp
index c523b83473b..6063960ff70 100644
--- a/src/mame/drivers/pc1512.cpp
+++ b/src/mame/drivers/pc1512.cpp
@@ -558,16 +558,16 @@ READ8_MEMBER( pc1640_state::io_r )
offs_t addr = offset & 0x3ff;
bool decoded = false;
- if ( addr <= 0x00f) { data = m_dmac->read(space, offset & 0x0f); decoded = true; }
+ if ( addr <= 0x00f) { data = m_dmac->read(offset & 0x0f); decoded = true; }
else if (addr >= 0x020 && addr <= 0x021) { data = m_pic->read(offset & 0x01); decoded = true; }
else if (addr >= 0x040 && addr <= 0x043) { data = m_pit->read(offset & 0x03); decoded = true; }
else if (addr >= 0x060 && addr <= 0x06f) { data = system_r(space, offset & 0x0f); decoded = true; }
- else if (addr >= 0x070 && addr <= 0x073) { data = m_rtc->read(space, offset & 0x01); decoded = true; }
+ else if (addr >= 0x070 && addr <= 0x073) { data = m_rtc->read(offset & 0x01); decoded = true; }
else if (addr >= 0x078 && addr <= 0x07f) { data = mouse_r(space, offset & 0x07); decoded = true; }
else if (addr >= 0x378 && addr <= 0x37b) { data = printer_r(space, offset & 0x03); decoded = true; }
else if (addr >= 0x3b0 && addr <= 0x3df) { decoded = true; }
- else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(space, offset & 0x01); decoded = true; }
- else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(space, offset & 0x01); decoded = true; }
+ else if (addr >= 0x3f4 && addr <= 0x3f4) { data = m_fdc->fdc->msr_r(); decoded = true; }
+ else if (addr >= 0x3f5 && addr <= 0x3f5) { data = m_fdc->fdc->fifo_r(); decoded = true; }
else if (addr >= 0x3f8 && addr <= 0x3ff) { data = m_uart->ins8250_r(space, offset & 0x07); decoded = true; }
if (decoded)
@@ -1152,14 +1152,15 @@ void pc1640_state::machine_start()
//**************************************************************************
//-------------------------------------------------
-// MACHINE_CONFIG( pc1512 )
+// machine_config( pc1512 )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1512_state::pc1512)
- MCFG_DEVICE_ADD(I8086_TAG, I8086, 24_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(pc1512_mem)
- MCFG_DEVICE_IO_MAP(pc1512_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A2_TAG, pic8259_device, inta_cb)
+void pc1512_state::pc1512(machine_config &config)
+{
+ I8086(config, m_maincpu, 24_MHz_XTAL / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1512_state::pc1512_mem);
+ m_maincpu->set_addrmap(AS_IO, &pc1512_state::pc1512_io);
+ m_maincpu->set_irq_acknowledge_callback(I8259A2_TAG, FUNC(pic8259_device::inta_cb));
// video
pc1512_video(config);
@@ -1173,11 +1174,11 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
m_kb->clock_wr_callback().set(FUNC(pc1512_state::kbclk_w));
m_kb->data_wr_callback().set(FUNC(pc1512_state::kbdata_w));
- MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse")
- MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(*this, pc1512_state, mouse_x_w))
- MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(*this, pc1512_state, mouse_y_w))
- MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
- MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
+ pc1512_mouse_port_device &mouse(PC1512_MOUSE_PORT(config, PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse"));
+ mouse.x_wr_callback().set(FUNC(pc1512_base_state::mouse_x_w));
+ mouse.y_wr_callback().set(FUNC(pc1512_base_state::mouse_y_w));
+ mouse.m1_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m1_w));
+ mouse.m2_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m2_w));
AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
m_dmac->out_hreq_callback().set(FUNC(pc1512_state::hrq_w));
@@ -1196,10 +1197,10 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
m_dmac->out_dack_callback<2>().set(FUNC(pc1512_state::dack2_w));
m_dmac->out_dack_callback<3>().set(FUNC(pc1512_state::dack3_w));
- PIC8259(config, m_pic, 0);
+ PIC8259(config, m_pic);
m_pic->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
- PIT8253(config, m_pit, 0);
+ PIT8253(config, m_pit);
m_pit->set_clk<0>(28.636363_MHz_XTAL / 24);
m_pit->out_handler<0>().set(m_pic, FUNC(pic8259_device::ir0_w));
m_pit->set_clk<1>(28.636363_MHz_XTAL / 24);
@@ -1213,8 +1214,8 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
PC_FDC_XT(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set(FUNC(pc1512_state::fdc_int_w));
m_fdc->drq_wr_callback().set(FUNC(pc1512_state::fdc_drq_w));
- MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
+ FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
INS8250(config, m_uart, 1.8432_MHz_XTAL);
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -1222,13 +1223,15 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
m_uart->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_ack))
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_busy))
- MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_perror))
- MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_select))
- MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, pc1512_state, write_centronics_fault))
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->ack_handler().set(FUNC(pc1512_state::write_centronics_ack));
+ m_centronics->busy_handler().set(FUNC(pc1512_state::write_centronics_busy));
+ m_centronics->perror_handler().set(FUNC(pc1512_state::write_centronics_perror));
+ m_centronics->select_handler().set(FUNC(pc1512_state::write_centronics_select));
+ m_centronics->fault_handler().set(FUNC(pc1512_state::write_centronics_fault));
+
+ OUTPUT_LATCH(config, m_cent_data_out);
+ m_centronics->set_output_latch(*m_cent_data_out);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w));
@@ -1239,7 +1242,8 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
// ISA8 bus
isa8_device &isa(ISA8(config, ISA_BUS_TAG, 0));
- isa.set_cputag(I8086_TAG);
+ isa.set_memspace(m_maincpu, AS_PROGRAM);
+ isa.set_iospace(m_maincpu, AS_IO);
isa.irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
isa.irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
isa.irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
@@ -1249,51 +1253,52 @@ MACHINE_CONFIG_START(pc1512_state::pc1512)
isa.drq1_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq1_w));
isa.drq2_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq2_w));
isa.drq3_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq3_w));
- MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false) // FIXME: determine ISA clock
- MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
- MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
+ ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); // FIXME: determine ISA clock
+ ISA8_SLOT(config, "isa2", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
+ ISA8_SLOT(config, "isa3", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
// internal ram
RAM(config, RAM_TAG).set_default_size("512K").set_extra_options("544K,576K,608K,640K");
// software list
- MCFG_SOFTWARE_LIST_ADD("flop_list", "pc1512_flop")
- MCFG_SOFTWARE_LIST_ADD("hdd_list", "pc1512_hdd")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop_list").set_original("pc1512_flop");
+ SOFTWARE_LIST(config, "hdd_list").set_original("pc1512_hdd");
+}
//-------------------------------------------------
-// MACHINE_CONFIG( pc1512dd )
+// machine_config( pc1512dd )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1512_state::pc1512dd)
+void pc1512_state::pc1512dd(machine_config &config)
+{
pc1512(config);
- MCFG_DEVICE_MODIFY(PC_FDC_XT_TAG ":1")
- MCFG_SLOT_DEFAULT_OPTION("525dd")
-MACHINE_CONFIG_END
+ subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
+}
//-------------------------------------------------
-// MACHINE_CONFIG( pc1512hd )
+// machine_config( pc1512hd )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1512_state::pc1512hd)
+void pc1512_state::pc1512hd(machine_config &config)
+{
pc1512(config);
- MCFG_DEVICE_MODIFY("isa1")
- //MCFG_SLOT_DEFAULT_OPTION("wdxt_gen")
- MCFG_SLOT_DEFAULT_OPTION("hdc")
-MACHINE_CONFIG_END
+ //subdevice<isa8_slot_device>("isa1")->set_default_option("wdxt_gen");
+ subdevice<isa8_slot_device>("isa1")->set_default_option("hdc");
+}
//-------------------------------------------------
-// MACHINE_CONFIG( pc1640 )
+// machine_config( pc1640 )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1640_state::pc1640)
- MCFG_DEVICE_ADD(I8086_TAG, I8086, 24_MHz_XTAL / 3)
- MCFG_DEVICE_PROGRAM_MAP(pc1640_mem)
- MCFG_DEVICE_IO_MAP(pc1640_io)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE(I8259A2_TAG, pic8259_device, inta_cb)
+void pc1640_state::pc1640(machine_config &config)
+{
+ I8086(config, m_maincpu, 24_MHz_XTAL / 3);
+ m_maincpu->set_addrmap(AS_PROGRAM, &pc1640_state::pc1640_mem);
+ m_maincpu->set_addrmap(AS_IO, &pc1640_state::pc1640_io);
+ m_maincpu->set_irq_acknowledge_callback(I8259A2_TAG, FUNC(pic8259_device::inta_cb));
// sound
SPEAKER(config, "mono").front_center();
@@ -1304,11 +1309,11 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
m_kb->clock_wr_callback().set(FUNC(pc1512_base_state::kbclk_w));
m_kb->data_wr_callback().set(FUNC(pc1512_base_state::kbdata_w));
- MCFG_PC1512_MOUSE_PORT_ADD(PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse")
- MCFG_PC1512_MOUSE_PORT_X_CB(WRITE8(*this, pc1512_base_state, mouse_x_w))
- MCFG_PC1512_MOUSE_PORT_Y_CB(WRITE8(*this, pc1512_base_state, mouse_y_w))
- MCFG_PC1512_MOUSE_PORT_M1_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m1_w))
- MCFG_PC1512_MOUSE_PORT_M2_CB(WRITELINE(PC1512_KEYBOARD_TAG, pc1512_keyboard_device, m2_w))
+ pc1512_mouse_port_device &mouse(PC1512_MOUSE_PORT(config, PC1512_MOUSE_PORT_TAG, pc1512_mouse_port_devices, "mouse"));
+ mouse.x_wr_callback().set(FUNC(pc1512_base_state::mouse_x_w));
+ mouse.y_wr_callback().set(FUNC(pc1512_base_state::mouse_y_w));
+ mouse.m1_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m1_w));
+ mouse.m2_wr_callback().set(m_kb, FUNC(pc1512_keyboard_device::m2_w));
AM9517A(config, m_dmac, 24_MHz_XTAL / 6);
m_dmac->out_hreq_callback().set(FUNC(pc1640_state::hrq_w));
@@ -1344,8 +1349,8 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
PC_FDC_XT(config, m_fdc, 0);
m_fdc->intrq_wr_callback().set(FUNC(pc1512_base_state::fdc_int_w));
m_fdc->drq_wr_callback().set(FUNC(pc1512_base_state::fdc_drq_w));
- MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats)
- MCFG_FLOPPY_DRIVE_ADD(PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats)
+ FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":0", pc1512_floppies, "525dd", pc1512_base_state::floppy_formats);
+ FLOPPY_CONNECTOR(config, PC_FDC_XT_TAG ":1", pc1512_floppies, nullptr, pc1512_base_state::floppy_formats);
INS8250(config, m_uart, 1.8432_MHz_XTAL);
m_uart->out_tx_callback().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
@@ -1353,13 +1358,15 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
m_uart->out_rts_callback().set(RS232_TAG, FUNC(rs232_port_device::write_rts));
m_uart->out_int_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
- MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer")
- MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_ack))
- MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_busy))
- MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_perror))
- MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_select))
- MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, pc1512_base_state, write_centronics_fault))
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG)
+ CENTRONICS(config, m_centronics, centronics_devices, "printer");
+ m_centronics->ack_handler().set(FUNC(pc1512_state::write_centronics_ack));
+ m_centronics->busy_handler().set(FUNC(pc1512_state::write_centronics_busy));
+ m_centronics->perror_handler().set(FUNC(pc1512_state::write_centronics_perror));
+ m_centronics->select_handler().set(FUNC(pc1512_state::write_centronics_select));
+ m_centronics->fault_handler().set(FUNC(pc1512_state::write_centronics_fault));
+
+ OUTPUT_LATCH(config, m_cent_data_out);
+ m_centronics->set_output_latch(*m_cent_data_out);
rs232_port_device &rs232(RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr));
rs232.rxd_handler().set(m_uart, FUNC(ins8250_uart_device::rx_w));
@@ -1370,7 +1377,8 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
// ISA8 bus
isa8_device &isa(ISA8(config, ISA_BUS_TAG, 0));
- isa.set_cputag(I8086_TAG);
+ isa.set_memspace(m_maincpu, AS_PROGRAM);
+ isa.set_iospace(m_maincpu, AS_IO);
isa.irq2_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
isa.irq3_callback().set(m_pic, FUNC(pic8259_device::ir3_w));
isa.irq4_callback().set(m_pic, FUNC(pic8259_device::ir4_w));
@@ -1380,42 +1388,42 @@ MACHINE_CONFIG_START(pc1640_state::pc1640)
isa.drq1_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq1_w));
isa.drq2_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq2_w));
isa.drq3_callback().set(I8237A5_TAG, FUNC(am9517a_device::dreq3_w));
- MCFG_DEVICE_ADD("isa1", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false) // FIXME: determine ISA bus clock
- MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
- MCFG_DEVICE_ADD("isa3", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
- MCFG_DEVICE_ADD("isa4", ISA8_SLOT, 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false)
- MCFG_DEVICE_ADD("isa5", ISA8_SLOT, 0, ISA_BUS_TAG, pc1640_isa8_cards, "iga", false)
+ ISA8_SLOT(config, "isa1", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false); // FIXME: determine ISA bus clock
+ ISA8_SLOT(config, "isa2", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
+ ISA8_SLOT(config, "isa3", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
+ ISA8_SLOT(config, "isa4", 0, ISA_BUS_TAG, pc_isa8_cards, nullptr, false);
+ ISA8_SLOT(config, "isa5", 0, ISA_BUS_TAG, pc1640_isa8_cards, "iga", false);
// internal ram
RAM(config, RAM_TAG).set_default_size("640K");
// software list
- MCFG_SOFTWARE_LIST_ADD("flop_list", "pc1640_flop")
- MCFG_SOFTWARE_LIST_ADD("hdd_list", "pc1640_hdd")
-MACHINE_CONFIG_END
+ SOFTWARE_LIST(config, "flop_list").set_original("pc1640_flop");
+ SOFTWARE_LIST(config, "hdd_list").set_original("pc1640_hdd");
+}
//-------------------------------------------------
-// MACHINE_CONFIG( pc1640dd )
+// machine_config( pc1640dd )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1640_state::pc1640dd)
+void pc1640_state::pc1640dd(machine_config &config)
+{
pc1640(config);
- MCFG_DEVICE_MODIFY(PC_FDC_XT_TAG ":1")
- MCFG_SLOT_DEFAULT_OPTION("525dd")
-MACHINE_CONFIG_END
+ subdevice<floppy_connector>(PC_FDC_XT_TAG ":1")->set_default_option("525dd");
+}
//-------------------------------------------------
-// MACHINE_CONFIG( pc1640hd )
+// machine_config( pc1640hd )
//-------------------------------------------------
-MACHINE_CONFIG_START(pc1640_state::pc1640hd)
+void pc1640_state::pc1640hd(machine_config &config)
+{
pc1640(config);
- MCFG_DEVICE_MODIFY("isa1")
- //MCFG_SLOT_DEFAULT_OPTION("wdxt_gen")
- MCFG_SLOT_DEFAULT_OPTION("hdc")
-MACHINE_CONFIG_END
+ //subdevice<isa8_slot_device>("isa1")->set_default_option("wdxt_gen");
+ subdevice<isa8_slot_device>("isa1")->set_default_option("hdc");
+}