summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/ngen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ngen.cpp')
-rw-r--r--src/mame/drivers/ngen.cpp50
1 files changed, 26 insertions, 24 deletions
diff --git a/src/mame/drivers/ngen.cpp b/src/mame/drivers/ngen.cpp
index 0280c9a1f93..f56dbc11afa 100644
--- a/src/mame/drivers/ngen.cpp
+++ b/src/mame/drivers/ngen.cpp
@@ -92,11 +92,11 @@ public:
m_dmac(*this,"dmac"),
m_pic(*this,"pic"),
m_pit(*this,"pit"),
+ m_hdc(*this,"hdc"),
m_disk_rom(*this,"disk"),
m_fdc(*this,"fdc"),
m_fd0(*this,"fdc:0"),
m_fdc_timer(*this,"fdc_timer"),
- m_hdc(*this,"hdc"),
m_hdc_timer(*this,"hdc_timer"),
m_hd_buffer(*this,"hd_buffer_ram")
{
@@ -148,6 +148,7 @@ protected:
required_device<am9517a_device> m_dmac;
required_device<pic8259_device> m_pic;
required_device<pit8254_device> m_pit;
+ optional_device<wd2010_device> m_hdc;
private:
DECLARE_WRITE16_MEMBER(cpu_peripheral_cb);
@@ -182,7 +183,6 @@ private:
optional_device<wd2797_device> m_fdc;
optional_device<floppy_connector> m_fd0;
optional_device<pit8253_device> m_fdc_timer;
- optional_device<wd2010_device> m_hdc;
optional_device<pit8253_device> m_hdc_timer;
optional_shared_ptr<uint8_t> m_hd_buffer;
@@ -1014,7 +1014,7 @@ MACHINE_CONFIG_START(ngen_state::ngen)
// keyboard UART (patent says i8251 is used for keyboard communications, it is located on the video board)
I8251(config, m_viduart, 0); // main clock unknown, Rx/Tx clocks are 19.53kHz
-// m_viduart->txempty_handler().set("pic", FUNC(pic8259_device::ir4_w));
+// m_viduart->txempty_handler().set(m_pic, FUNC(pic8259_device::ir4_w));
m_viduart->txd_handler().set("keyboard", FUNC(rs232_port_device::write_txd));
MCFG_DEVICE_ADD("keyboard", RS232_PORT, keyboard, "ngen")
MCFG_RS232_RXD_HANDLER(WRITELINE(m_viduart, i8251_device, write_rxd))
@@ -1029,22 +1029,23 @@ MACHINE_CONFIG_START(ngen_state::ngen)
MCFG_WD_FDC_FORCE_READY
MCFG_DEVICE_ADD("fdc_timer", PIT8253, 0)
MCFG_PIT8253_CLK0(0)
- MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic",pic8259_device,ir5_w)) // clocked on FDC data register access
+ MCFG_PIT8253_OUT0_HANDLER(WRITELINE(m_pic,pic8259_device,ir5_w)) // clocked on FDC data register access
MCFG_PIT8253_CLK1(20_MHz_XTAL / 20)
-// MCFG_PIT8253_OUT1_HANDLER(WRITELINE("pic",pic8259_device,ir5_w)) // 1MHz
+// MCFG_PIT8253_OUT1_HANDLER(WRITELINE(m_pic,pic8259_device,ir5_w)) // 1MHz
MCFG_PIT8253_CLK2(20_MHz_XTAL / 20)
-// MCFG_PIT8253_OUT2_HANDLER(WRITELINE("pic",pic8259_device,ir5_w))
+// MCFG_PIT8253_OUT2_HANDLER(WRITELINE(m_pic,pic8259_device,ir5_w))
// TODO: WD1010 HDC (not implemented), use WD2010 for now
- MCFG_DEVICE_ADD("hdc", WD2010, 20_MHz_XTAL / 4)
- MCFG_WD2010_OUT_INTRQ_CB(WRITELINE("pic",pic8259_device,ir2_w))
- MCFG_WD2010_IN_BCS_CB(READ8(*this, ngen_state,hd_buffer_r))
- MCFG_WD2010_OUT_BCS_CB(WRITE8(*this, ngen_state,hd_buffer_w))
- MCFG_WD2010_IN_DRDY_CB(CONSTANT(1))
- MCFG_WD2010_IN_INDEX_CB(CONSTANT(1))
- MCFG_WD2010_IN_WF_CB(CONSTANT(1))
- MCFG_WD2010_IN_TK000_CB(CONSTANT(1))
- MCFG_WD2010_IN_SC_CB(CONSTANT(1))
+ WD2010(config, m_hdc, 20_MHz_XTAL / 4);
+ m_hdc->out_intrq_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
+ m_hdc->in_bcs_callback().set(FUNC(ngen_state::hd_buffer_r));
+ m_hdc->out_bcs_callback().set(FUNC(ngen_state::hd_buffer_w));
+ m_hdc->in_drdy_callback().set_constant(1);
+ m_hdc->in_index_callback().set_constant(1);
+ m_hdc->in_wf_callback().set_constant(1);
+ m_hdc->in_tk000_callback().set_constant(1);
+ m_hdc->in_sc_callback().set_constant(1);
+
MCFG_DEVICE_ADD("hdc_timer", PIT8253, 0)
MCFG_PIT8253_CLK2(20_MHz_XTAL / 10) // 2MHz
MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525qd", floppy_image_device::default_floppy_formats)
@@ -1147,15 +1148,16 @@ MACHINE_CONFIG_START(ngen386_state::ngen386)
// MCFG_PIT8253_OUT2_HANDLER(WRITELINE("pic",pic8259_device,ir5_w))
// TODO: WD1010 HDC (not implemented), use WD2010 for now
- MCFG_DEVICE_ADD("hdc", WD2010, 20_MHz_XTAL / 4)
- MCFG_WD2010_OUT_INTRQ_CB(WRITELINE("pic",pic8259_device,ir2_w))
- MCFG_WD2010_IN_BCS_CB(READ8(*this, ngen386_state,hd_buffer_r))
- MCFG_WD2010_OUT_BCS_CB(WRITE8(*this, ngen386_state,hd_buffer_w))
- MCFG_WD2010_IN_DRDY_CB(CONSTANT(1))
- MCFG_WD2010_IN_INDEX_CB(CONSTANT(1))
- MCFG_WD2010_IN_WF_CB(CONSTANT(1))
- MCFG_WD2010_IN_TK000_CB(CONSTANT(1))
- MCFG_WD2010_IN_SC_CB(CONSTANT(1))
+ WD2010(config, m_hdc, 20_MHz_XTAL / 4);
+ m_hdc->out_intrq_callback().set(m_pic, FUNC(pic8259_device::ir2_w));
+ m_hdc->in_bcs_callback().set(FUNC(ngen386_state::hd_buffer_r));
+ m_hdc->out_bcs_callback().set(FUNC(ngen386_state::hd_buffer_w));
+ m_hdc->in_drdy_callback().set_constant(1);
+ m_hdc->in_index_callback().set_constant(1);
+ m_hdc->in_wf_callback().set_constant(1);
+ m_hdc->in_tk000_callback().set_constant(1);
+ m_hdc->in_sc_callback().set_constant(1);
+
MCFG_DEVICE_ADD("hdc_timer", PIT8253, 0)
MCFG_PIT8253_CLK2(20_MHz_XTAL / 10) // 2MHz
MCFG_FLOPPY_DRIVE_ADD("fdc:0", ngen_floppies, "525qd", floppy_image_device::default_floppy_formats)