diff options
Diffstat (limited to 'src/mame/drivers/ngen.cpp')
-rw-r--r-- | src/mame/drivers/ngen.cpp | 50 |
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) |