From f211cf034303a495cc07e7d01b6ed38bf098545b Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 28 Sep 2018 19:04:34 +0200 Subject: [PATCH] pc_lpt, upd765: removed MCFG macros (nw) --- src/devices/bus/a2bus/corvfdc02.cpp | 19 +++--- src/devices/bus/bbc/fdc/opus.cpp | 3 +- src/devices/bus/cpc/ddi1.cpp | 2 +- src/devices/bus/epson_sio/pf10.cpp | 2 +- src/devices/bus/epson_sio/tf20.cpp | 4 +- src/devices/bus/hexbus/hx5102.cpp | 3 +- src/devices/bus/iq151/disc2.cpp | 11 +-- src/devices/bus/isa/fdc.cpp | 45 ++++++------ src/devices/bus/isa/lpt.cpp | 9 +-- src/devices/bus/isa/mda.cpp | 8 +-- src/devices/bus/isa/mufdc.cpp | 21 +++--- src/devices/bus/isbx/compis_fdc.cpp | 15 ++-- src/devices/bus/isbx/isbc_218a.cpp | 13 ++-- src/devices/bus/msx_cart/disk.cpp | 2 +- src/devices/bus/newbrain/fdc.cpp | 6 +- src/devices/bus/spc1000/fdd.cpp | 20 +++--- src/devices/machine/fdc37c93x.cpp | 19 +++--- src/devices/machine/pc_fdc.cpp | 19 +++--- src/devices/machine/pc_lpt.h | 6 +- src/devices/machine/pdc.cpp | 23 ++++--- src/devices/machine/upd765.h | 102 ++++++++-------------------- src/mame/drivers/a5105.cpp | 2 +- src/mame/drivers/alphatro.cpp | 6 +- src/mame/drivers/altos486.cpp | 2 +- src/mame/drivers/amstr_pc.cpp | 12 ++-- src/mame/drivers/amstrad.cpp | 9 ++- src/mame/drivers/apc.cpp | 6 +- src/mame/drivers/ax20.cpp | 2 +- src/mame/drivers/bw12.cpp | 2 +- src/mame/drivers/czk80.cpp | 2 +- src/mame/drivers/dim68k.cpp | 2 +- src/mame/drivers/dmv.cpp | 6 +- src/mame/drivers/dps1.cpp | 6 +- src/mame/drivers/duet16.cpp | 8 +-- src/mame/drivers/fanucspmg.cpp | 6 +- src/mame/drivers/hec2hrp.cpp | 18 ++--- src/mame/drivers/ibm6580.cpp | 14 ++-- src/mame/drivers/ibmpcjr.cpp | 12 ++-- src/mame/drivers/kdt6.cpp | 6 +- src/mame/drivers/m5.cpp | 12 ++-- src/mame/drivers/mikromik.cpp | 6 +- src/mame/drivers/mpc3000.cpp | 6 +- src/mame/drivers/msx.cpp | 7 +- src/mame/drivers/multi8.cpp | 2 +- src/mame/drivers/mz3500.cpp | 4 +- src/mame/drivers/mz6500.cpp | 2 +- src/mame/drivers/nanos.cpp | 2 +- src/mame/drivers/nc.cpp | 6 +- src/mame/drivers/next.cpp | 6 +- src/mame/drivers/olyboss.cpp | 6 +- src/mame/drivers/p8k.cpp | 4 +- src/mame/drivers/pasopia7.cpp | 2 +- src/mame/drivers/pc100.cpp | 6 +- src/mame/drivers/pc8801.cpp | 8 +-- src/mame/drivers/pc88va.cpp | 6 +- src/mame/drivers/pcw.cpp | 4 +- src/mame/drivers/pcw16.cpp | 8 +-- src/mame/drivers/peoplepc.cpp | 6 +- src/mame/drivers/prof180x.cpp | 2 +- src/mame/drivers/prof80.cpp | 2 +- src/mame/drivers/pwrview.cpp | 6 +- src/mame/drivers/pyl601.cpp | 2 +- src/mame/drivers/sage2.cpp | 4 +- src/mame/drivers/sg1000.cpp | 2 +- src/mame/drivers/specpls3.cpp | 2 +- src/mame/drivers/sun3x.cpp | 2 +- src/mame/drivers/tandy2k.cpp | 10 +-- src/mame/drivers/tim011.cpp | 4 +- src/mame/drivers/tv990.cpp | 4 +- src/mame/drivers/wangpc.cpp | 6 +- src/mame/machine/ibm6580_fdc.cpp | 6 +- src/mame/machine/ioc2.cpp | 2 +- src/mame/machine/isbc_208.cpp | 11 +-- 73 files changed, 304 insertions(+), 337 deletions(-) diff --git a/src/devices/bus/a2bus/corvfdc02.cpp b/src/devices/bus/a2bus/corvfdc02.cpp index 04282f080a1..4b67b6e364f 100644 --- a/src/devices/bus/a2bus/corvfdc02.cpp +++ b/src/devices/bus/a2bus/corvfdc02.cpp @@ -52,15 +52,16 @@ ROM_END // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(a2bus_corvfdc02_device::device_add_mconfig) - MCFG_UPD765A_ADD(FDC02_FDC_TAG, true, false) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, a2bus_corvfdc02_device, intrq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, a2bus_corvfdc02_device, drq_w)) - MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":0", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":1", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":2", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC02_FDC_TAG":3", corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats) -MACHINE_CONFIG_END +void a2bus_corvfdc02_device::device_add_mconfig(machine_config &config) +{ + UPD765A(config, m_fdc, true, false); + m_fdc->intrq_wr_callback().set(FUNC(a2bus_corvfdc02_device::intrq_w)); + m_fdc->drq_wr_callback().set(FUNC(a2bus_corvfdc02_device::drq_w)); + FLOPPY_CONNECTOR(config, m_con1, corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats); + FLOPPY_CONNECTOR(config, m_con2, corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats); + FLOPPY_CONNECTOR(config, m_con3, corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats); + FLOPPY_CONNECTOR(config, m_con4, corv_floppies, "525dsqd", a2bus_corvfdc02_device::corv_floppy_formats); +} //------------------------------------------------- // rom_region - device-specific ROM region diff --git a/src/devices/bus/bbc/fdc/opus.cpp b/src/devices/bus/bbc/fdc/opus.cpp index 85eb8f5e7e9..0a0bb79ffd0 100644 --- a/src/devices/bus/bbc/fdc/opus.cpp +++ b/src/devices/bus/bbc/fdc/opus.cpp @@ -91,8 +91,7 @@ ROM_END void bbc_opus8272_device::device_add_mconfig(machine_config &config) { - I8272A(config, m_fdc, 0); - m_fdc->set_ready_line_connected(true); + I8272A(config, m_fdc, true); m_fdc->intrq_wr_callback().set(FUNC(bbc_opus8272_device::fdc_intrq_w)); FLOPPY_CONNECTOR(config, m_floppy0, bbc_floppies_525, "525qd", bbc_opusfdc_device::floppy_formats).enable_sound(true); diff --git a/src/devices/bus/cpc/ddi1.cpp b/src/devices/bus/cpc/ddi1.cpp index bac64263871..6e75738d76a 100644 --- a/src/devices/bus/cpc/ddi1.cpp +++ b/src/devices/bus/cpc/ddi1.cpp @@ -41,7 +41,7 @@ const tiny_rom_entry *cpc_ddi1_device::device_rom_region() const // device machine config MACHINE_CONFIG_START(cpc_ddi1_device::device_add_mconfig) - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", ddi1_floppies, "3ssdd", floppy_image_device::default_floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop") diff --git a/src/devices/bus/epson_sio/pf10.cpp b/src/devices/bus/epson_sio/pf10.cpp index b1c2859599d..a295975d964 100644 --- a/src/devices/bus/epson_sio/pf10.cpp +++ b/src/devices/bus/epson_sio/pf10.cpp @@ -72,7 +72,7 @@ MACHINE_CONFIG_START(epson_pf10_device::device_add_mconfig) MCFG_DEVICE_IO_MAP(cpu_io) MCFG_M6801_SER_TX(WRITELINE(DEVICE_SELF, epson_pf10_device, hd6303_tx_w)) - MCFG_UPD765A_ADD("upd765a", false, true) + UPD765A(config, m_fdc, false, true); MCFG_FLOPPY_DRIVE_ADD("upd765a:0", pf10_floppies, "smd165", floppy_image_device::default_floppy_formats) MCFG_EPSON_SIO_ADD("sio", nullptr) diff --git a/src/devices/bus/epson_sio/tf20.cpp b/src/devices/bus/epson_sio/tf20.cpp index 1ba26849112..bc9bb669b1e 100644 --- a/src/devices/bus/epson_sio/tf20.cpp +++ b/src/devices/bus/epson_sio/tf20.cpp @@ -101,8 +101,8 @@ MACHINE_CONFIG_START(epson_tf20_device::device_add_mconfig) m_mpsc->out_dtra_callback().set(FUNC(epson_tf20_device::dtra_w)); // floppy disk controller - MCFG_UPD765A_ADD("5a", true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("19b", INPUT_LINE_IRQ0)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); // floppy drives MCFG_FLOPPY_DRIVE_ADD("5a:0", tf20_floppies, "sd320", floppy_image_device::default_floppy_formats) diff --git a/src/devices/bus/hexbus/hx5102.cpp b/src/devices/bus/hexbus/hx5102.cpp index cb715ec51fe..1fbced1bc80 100644 --- a/src/devices/bus/hexbus/hx5102.cpp +++ b/src/devices/bus/hexbus/hx5102.cpp @@ -688,8 +688,7 @@ void hx5102_device::device_add_mconfig(machine_config& config) // Not connected: Select lines (DS0, DS1), Head load (HDL), VCO // Tied to 1: READY // Tied to 0: TC - I8272A(config, m_floppy_ctrl, 0); - m_floppy_ctrl->set_ready_line_connected(false); + I8272A(config, m_floppy_ctrl, false); m_floppy_ctrl->intrq_wr_callback().set(FUNC(hx5102_device::fdc_irq_w)); m_floppy_ctrl->drq_wr_callback().set(FUNC(hx5102_device::fdc_drq_w)); diff --git a/src/devices/bus/iq151/disc2.cpp b/src/devices/bus/iq151/disc2.cpp index d48ea10e9c2..e3445d61897 100644 --- a/src/devices/bus/iq151/disc2.cpp +++ b/src/devices/bus/iq151/disc2.cpp @@ -72,11 +72,12 @@ void iq151_disc2_device::device_reset() // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(iq151_disc2_device::device_add_mconfig) - MCFG_UPD765A_ADD("fdc", false, true) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", iq151_disc2_floppies, "8sssd", iq151_disc2_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:2", iq151_disc2_floppies, "8sssd", iq151_disc2_device::floppy_formats) -MACHINE_CONFIG_END +void iq151_disc2_device::device_add_mconfig(machine_config &config) +{ + UPD765A(config, m_fdc, false, true); + FLOPPY_CONNECTOR(config, "fdc:1", iq151_disc2_floppies, "8sssd", iq151_disc2_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:2", iq151_disc2_floppies, "8sssd", iq151_disc2_device::floppy_formats); +} //------------------------------------------------- diff --git a/src/devices/bus/isa/fdc.cpp b/src/devices/bus/isa/fdc.cpp index f341480cb17..7b24fcd00e9 100644 --- a/src/devices/bus/isa/fdc.cpp +++ b/src/devices/bus/isa/fdc.cpp @@ -108,37 +108,40 @@ isa8_fdc_smc_device::isa8_fdc_smc_device(const machine_config &mconfig, const ch { } -MACHINE_CONFIG_START(isa8_fdc_smc_device::device_add_mconfig) - MCFG_SMC37C78_ADD("fdc") - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, drq_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) -MACHINE_CONFIG_END +void isa8_fdc_smc_device::device_add_mconfig(machine_config &config) +{ + smc37c78_device &smc(SMC37C78(config, fdc)); + smc.intrq_wr_callback().set(FUNC(isa8_fdc_device::irq_w)); + smc.drq_wr_callback().set(FUNC(isa8_fdc_device::drq_w)); + FLOPPY_CONNECTOR(config, "fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); +} isa8_fdc_ps2_device::isa8_fdc_ps2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_PS2, tag, owner, clock) { } -MACHINE_CONFIG_START(isa8_fdc_ps2_device::device_add_mconfig) - MCFG_N82077AA_ADD("fdc", n82077aa_device::MODE_PS2) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, drq_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) -MACHINE_CONFIG_END +void isa8_fdc_ps2_device::device_add_mconfig(machine_config &config) +{ + n82077aa_device &n82077aa(N82077AA(config, fdc, n82077aa_device::MODE_PS2)); + n82077aa.intrq_wr_callback().set(FUNC(isa8_fdc_device::irq_w)); + n82077aa.drq_wr_callback().set(FUNC(isa8_fdc_device::drq_w)); + FLOPPY_CONNECTOR(config, "fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); +} isa8_fdc_superio_device::isa8_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_FDC_SUPERIO, tag, owner, clock) { } -MACHINE_CONFIG_START(isa8_fdc_superio_device::device_add_mconfig) - MCFG_PC_FDC_SUPERIO_ADD("fdc") - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, isa8_fdc_device, drq_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats) -MACHINE_CONFIG_END +void isa8_fdc_superio_device::device_add_mconfig(machine_config &config) +{ + pc_fdc_superio_device &superio(PC_FDC_SUPERIO(config, fdc)); + superio.intrq_wr_callback().set(FUNC(isa8_fdc_device::irq_w)); + superio.drq_wr_callback().set(FUNC(isa8_fdc_device::drq_w)); + FLOPPY_CONNECTOR(config, "fdc:0", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:1", pc_hd_floppies, "35hd", isa8_fdc_device::floppy_formats); +} isa8_ec1841_0003_device::isa8_ec1841_0003_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : isa8_fdc_device(mconfig, ISA8_EC1841_0003, tag, owner, clock) diff --git a/src/devices/bus/isa/lpt.cpp b/src/devices/bus/isa/lpt.cpp index 3860896bf7b..e47404a498d 100644 --- a/src/devices/bus/isa/lpt.cpp +++ b/src/devices/bus/isa/lpt.cpp @@ -19,10 +19,11 @@ isa8_lpt_device::isa8_lpt_device(const machine_config &mconfig, const char *tag, { } -MACHINE_CONFIG_START(isa8_lpt_device::device_add_mconfig) - MCFG_DEVICE_ADD("lpt", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, isa8_lpt_device, pc_cpu_line)) -MACHINE_CONFIG_END +void isa8_lpt_device::device_add_mconfig(machine_config &config) +{ + pc_lpt_device &lpt(PC_LPT(config, "lpt")); + lpt.irq_handler().set(FUNC(isa8_lpt_device::pc_cpu_line)); +} static INPUT_PORTS_START( lpt_dsw ) PORT_START("DSW") diff --git a/src/devices/bus/isa/mda.cpp b/src/devices/bus/isa/mda.cpp index bd1f2d19300..7d5ffb6efd9 100644 --- a/src/devices/bus/isa/mda.cpp +++ b/src/devices/bus/isa/mda.cpp @@ -126,8 +126,8 @@ MACHINE_CONFIG_START(isa8_mda_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcmda) - MCFG_DEVICE_ADD("lpt", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, isa8_mda_device, pc_cpu_line)) + pc_lpt_device &lpt(PC_LPT(config, "lpt")); + lpt.irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); MACHINE_CONFIG_END //------------------------------------------------- @@ -554,8 +554,8 @@ MACHINE_CONFIG_START(isa8_hercules_device::device_add_mconfig) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_pcherc) - MCFG_DEVICE_ADD("lpt", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, isa8_mda_device, pc_cpu_line)) + pc_lpt_device &lpt(PC_LPT(config, "lpt")); + lpt.irq_handler().set(FUNC(isa8_mda_device::pc_cpu_line)); MACHINE_CONFIG_END //------------------------------------------------- diff --git a/src/devices/bus/isa/mufdc.cpp b/src/devices/bus/isa/mufdc.cpp index e1c16b1b6ea..d402403e4a6 100644 --- a/src/devices/bus/isa/mufdc.cpp +++ b/src/devices/bus/isa/mufdc.cpp @@ -45,16 +45,17 @@ static void drives(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(mufdc_device::device_add_mconfig) - MCFG_MCS3201_ADD("fdc") - MCFG_MCS3201_INPUT_HANDLER(READ8(*this, mufdc_device, fdc_input_r)) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, mufdc_device, fdc_irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, mufdc_device, fdc_drq_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", drives, "35hd", mufdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", drives, "35hd", mufdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:2", drives, nullptr, mufdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:3", drives, nullptr, mufdc_device::floppy_formats) -MACHINE_CONFIG_END +void mufdc_device::device_add_mconfig(machine_config &config) +{ + mcs3201_device &mcs3201(MCS3201(config, m_fdc)); + mcs3201.input_handler().set(FUNC(mufdc_device::fdc_input_r)); + mcs3201.intrq_wr_callback().set(FUNC(mufdc_device::fdc_irq_w)); + mcs3201.drq_wr_callback().set(FUNC(mufdc_device::fdc_drq_w)); + FLOPPY_CONNECTOR(config, "fdc:0", drives, "35hd", mufdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:1", drives, "35hd", mufdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:2", drives, nullptr, mufdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:3", drives, nullptr, mufdc_device::floppy_formats); +} //------------------------------------------------- // input_ports - device-specific input ports diff --git a/src/devices/bus/isbx/compis_fdc.cpp b/src/devices/bus/isbx/compis_fdc.cpp index a2300020119..4a14beacb09 100644 --- a/src/devices/bus/isbx/compis_fdc.cpp +++ b/src/devices/bus/isbx/compis_fdc.cpp @@ -54,13 +54,14 @@ static void compis_floppies(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(compis_fdc_device::device_add_mconfig) - MCFG_I8272A_ADD(I8272_TAG, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, compis_fdc_device, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, compis_fdc_device, fdc_drq)) - MCFG_FLOPPY_DRIVE_ADD(I8272_TAG":0", compis_floppies, "525qd", compis_fdc_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(I8272_TAG":1", compis_floppies, "525qd", compis_fdc_device::floppy_formats) -MACHINE_CONFIG_END +void compis_fdc_device::device_add_mconfig(machine_config &config) +{ + I8272A(config, m_fdc, true); + m_fdc->intrq_wr_callback().set(FUNC(compis_fdc_device::fdc_irq)); + m_fdc->drq_wr_callback().set(FUNC(compis_fdc_device::fdc_drq)); + FLOPPY_CONNECTOR(config, m_floppy0, compis_floppies, "525qd", compis_fdc_device::floppy_formats); + FLOPPY_CONNECTOR(config, m_floppy1, compis_floppies, "525qd", compis_fdc_device::floppy_formats); +} diff --git a/src/devices/bus/isbx/isbc_218a.cpp b/src/devices/bus/isbx/isbc_218a.cpp index c98df25dd9d..b52054ae5db 100644 --- a/src/devices/bus/isbx/isbc_218a.cpp +++ b/src/devices/bus/isbx/isbc_218a.cpp @@ -54,12 +54,13 @@ static void isbc_218a_floppies(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(isbc_218a_device::device_add_mconfig) - MCFG_I8272A_ADD(I8272_TAG, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isbc_218a_device, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, isbc_218a_device, fdc_drq)) - MCFG_FLOPPY_DRIVE_ADD(I8272_TAG":0", isbc_218a_floppies, "525dd", isbc_218a_device::floppy_formats) -MACHINE_CONFIG_END +void isbc_218a_device::device_add_mconfig(machine_config &config) +{ + I8272A(config, m_fdc, true); + m_fdc->intrq_wr_callback().set(FUNC(isbc_218a_device::fdc_irq)); + m_fdc->drq_wr_callback().set(FUNC(isbc_218a_device::fdc_drq)); + FLOPPY_CONNECTOR(config, m_floppy0, isbc_218a_floppies, "525dd", isbc_218a_device::floppy_formats); +} //************************************************************************** diff --git a/src/devices/bus/msx_cart/disk.cpp b/src/devices/bus/msx_cart/disk.cpp index f66495e1cd8..cbaba85f01c 100644 --- a/src/devices/bus/msx_cart/disk.cpp +++ b/src/devices/bus/msx_cart/disk.cpp @@ -232,7 +232,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(msx_cart_fsfd1a_device::device_add_mconfig) - MCFG_TC8566AF_ADD("fdc") + TC8566AF(config, m_fdc); // Double sided 3.5" floppy drive MCFG_FLOPPY_DRIVE_ADD("fdc:0", msx_floppies, "35dd", msx_cart_disk_device::floppy_formats) diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp index 733a277d49f..c3378dd5108 100644 --- a/src/devices/bus/newbrain/fdc.cpp +++ b/src/devices/bus/newbrain/fdc.cpp @@ -84,7 +84,7 @@ void newbrain_fdc_device::newbrain_fdc_io(address_map &map) { map.unmap_value_high(); map.global_mask(0x71); - map(0x00, 0x01).mirror(0x10).m(UPD765_TAG, FUNC(upd765a_device::map)); + map(0x00, 0x01).mirror(0x10).m(m_fdc, FUNC(upd765a_device::map)); map(0x20, 0x20).mirror(0x11).w(FUNC(newbrain_fdc_device::fdc_auxiliary_w)); map(0x40, 0x40).mirror(0x11).r(FUNC(newbrain_fdc_device::fdc_control_r)); } @@ -109,8 +109,8 @@ MACHINE_CONFIG_START(newbrain_fdc_device::device_add_mconfig) MCFG_DEVICE_PROGRAM_MAP(newbrain_fdc_mem) MCFG_DEVICE_IO_MAP(newbrain_fdc_io) - MCFG_UPD765A_ADD(UPD765_TAG, false, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, newbrain_fdc_device, fdc_int_w)) + UPD765A(config, m_fdc, false, true); + m_fdc->intrq_wr_callback().set(FUNC(newbrain_fdc_device::fdc_int_w)); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/devices/bus/spc1000/fdd.cpp b/src/devices/bus/spc1000/fdd.cpp index eb04f8e5fb6..203ff1059bd 100644 --- a/src/devices/bus/spc1000/fdd.cpp +++ b/src/devices/bus/spc1000/fdd.cpp @@ -80,12 +80,12 @@ static void sd725_floppies(device_slot_interface &device) // device_add_mconfig //------------------------------------------------- -MACHINE_CONFIG_START(spc1000_fdd_exp_device::device_add_mconfig) - +void spc1000_fdd_exp_device::device_add_mconfig(machine_config &config) +{ // sub CPU (5 inch floppy drive) - MCFG_DEVICE_ADD("fdccpu", Z80, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(sd725_mem) - MCFG_DEVICE_IO_MAP(sd725_io) + Z80(config, m_cpu, XTAL(4'000'000)); + m_cpu->set_addrmap(AS_PROGRAM, spc1000_fdd_exp_device::sd725_mem); + m_cpu->set_addrmap(AS_IO, spc1000_fdd_exp_device::sd725_io); I8255(config, m_ppi); m_ppi->in_pa_callback().set(m_ppi, FUNC(i8255_device::pb_r)); @@ -95,13 +95,13 @@ MACHINE_CONFIG_START(spc1000_fdd_exp_device::device_add_mconfig) m_ppi->out_pc_callback().set(FUNC(spc1000_fdd_exp_device::i8255_c_w)); // floppy disk controller - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("fdccpu", INPUT_LINE_IRQ0)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); // floppy drives - MCFG_FLOPPY_DRIVE_ADD("upd765:0", sd725_floppies, "sd320", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("upd765:1", sd725_floppies, "sd320", floppy_image_device::default_floppy_formats) -MACHINE_CONFIG_END + FLOPPY_CONNECTOR(config, "upd765:0", sd725_floppies, "sd320", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, "upd765:1", sd725_floppies, "sd320", floppy_image_device::default_floppy_formats); +} ROM_START( spc1000_fdd ) ROM_REGION(0x10000, "fdccpu", 0) diff --git a/src/devices/machine/fdc37c93x.cpp b/src/devices/machine/fdc37c93x.cpp index ce18f033dea..d285bac1ee9 100644 --- a/src/devices/machine/fdc37c93x.cpp +++ b/src/devices/machine/fdc37c93x.cpp @@ -240,16 +240,17 @@ FLOPPY_FORMATS_MEMBER(fdc37c93x_device::floppy_formats) FLOPPY_NASLITE_FORMAT FLOPPY_FORMATS_END -MACHINE_CONFIG_START(fdc37c93x_device::device_add_mconfig) +void fdc37c93x_device::device_add_mconfig(machine_config &config) +{ // floppy disc controller - MCFG_SMC37C78_ADD("fdc") - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, fdc37c93x_device, irq_floppy_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, fdc37c93x_device, drq_floppy_w)) - MCFG_FLOPPY_DRIVE_ADD("fdc:0", pc_hd_floppies, "35hd", fdc37c93x_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("fdc:1", pc_hd_floppies, "35hd", fdc37c93x_device::floppy_formats) + smc37c78_device &fdcdev(SMC37C78(config, floppy_controller_fdcdev)); + fdcdev.intrq_wr_callback().set(FUNC(fdc37c93x_device::irq_floppy_w)); + fdcdev.drq_wr_callback().set(FUNC(fdc37c93x_device::drq_floppy_w)); + FLOPPY_CONNECTOR(config, "fdc:0", pc_hd_floppies, "35hd", fdc37c93x_device::floppy_formats); + FLOPPY_CONNECTOR(config, "fdc:1", pc_hd_floppies, "35hd", fdc37c93x_device::floppy_formats); // parallel port - MCFG_DEVICE_ADD("lpt", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_parallel_w)) + PC_LPT(config, pc_lpt_lptdev); + pc_lpt_lptdev->irq_handler().set(FUNC(fdc37c93x_device::irq_parallel_w)); // serial ports NS16450(config, pc_serial1_comdev, XTAL(1'843'200)); // or NS16550 ? @@ -275,7 +276,7 @@ MACHINE_CONFIG_START(fdc37c93x_device::device_add_mconfig) m_kbdc->input_buffer_full_callback().set(FUNC(fdc37c93x_device::irq_keyboard_w)); m_kbdc->system_reset_callback().set(FUNC(fdc37c93x_device::kbdp20_gp20_reset_w)); m_kbdc->gate_a20_callback().set(FUNC(fdc37c93x_device::kbdp21_gp25_gatea20_w)); -MACHINE_CONFIG_END +} WRITE_LINE_MEMBER(fdc37c93x_device::irq_floppy_w) { diff --git a/src/devices/machine/pc_fdc.cpp b/src/devices/machine/pc_fdc.cpp index bc760e832b4..d49450e1318 100644 --- a/src/devices/machine/pc_fdc.cpp +++ b/src/devices/machine/pc_fdc.cpp @@ -34,11 +34,11 @@ void pc_fdc_family_device::map(address_map &map) // The schematics show address decoding is minimal void pc_fdc_xt_device::map(address_map &map) { - map(0x0, 0x0).r("upd765", FUNC(upd765a_device::msr_r)).w(FUNC(pc_fdc_xt_device::dor_w)); - map(0x1, 0x1).r("upd765", FUNC(upd765a_device::fifo_r)).w(FUNC(pc_fdc_xt_device::dor_fifo_w)); + map(0x0, 0x0).r(fdc, FUNC(upd765a_device::msr_r)).w(FUNC(pc_fdc_xt_device::dor_w)); + map(0x1, 0x1).r(fdc, FUNC(upd765a_device::fifo_r)).w(FUNC(pc_fdc_xt_device::dor_fifo_w)); map(0x2, 0x2).w(FUNC(pc_fdc_xt_device::dor_w)); map(0x3, 0x3).w(FUNC(pc_fdc_xt_device::dor_w)); - map(0x4, 0x5).m("upd765", FUNC(upd765a_device::map)); + map(0x4, 0x5).m(fdc, FUNC(upd765a_device::map)); } @@ -46,7 +46,7 @@ void pc_fdc_xt_device::map(address_map &map) void pc_fdc_at_device::map(address_map &map) { map(0x2, 0x2).rw(FUNC(pc_fdc_at_device::dor_r), FUNC(pc_fdc_at_device::dor_w)); - map(0x4, 0x5).m("upd765", FUNC(upd765a_device::map)); + map(0x4, 0x5).m(fdc, FUNC(upd765a_device::map)); map(0x7, 0x7).rw(FUNC(pc_fdc_at_device::dir_r), FUNC(pc_fdc_at_device::ccr_w)); } @@ -72,11 +72,12 @@ void pc_fdc_family_device::dma_w(uint8_t data) fdc->dma_w(data); } -MACHINE_CONFIG_START(pc_fdc_family_device::device_add_mconfig) - MCFG_UPD765A_ADD("upd765", false, false) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc_fdc_family_device, irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, pc_fdc_family_device, drq_w)) -MACHINE_CONFIG_END +void pc_fdc_family_device::device_add_mconfig(machine_config &config) +{ + UPD765A(config, fdc, false, false); + fdc->intrq_wr_callback().set(FUNC(pc_fdc_family_device::irq_w)); + fdc->drq_wr_callback().set(FUNC(pc_fdc_family_device::drq_w)); +} void pc_fdc_family_device::device_start() { diff --git a/src/devices/machine/pc_lpt.h b/src/devices/machine/pc_lpt.h index d85768bb5d4..72677832926 100644 --- a/src/devices/machine/pc_lpt.h +++ b/src/devices/machine/pc_lpt.h @@ -13,8 +13,6 @@ #include "bus/centronics/ctronics.h" -#define MCFG_PC_LPT_IRQ_HANDLER(_devcb) \ - downcast(*device).set_irq_handler(DEVCB_##_devcb); /*************************************************************************** DEVICE CONFIGURATION MACROS @@ -23,10 +21,10 @@ class pc_lpt_device : public device_t { public: - pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // configuration helpers - template devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward(cb)); } + auto irq_handler() { return m_irq_handler.bind(); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/devices/machine/pdc.cpp b/src/devices/machine/pdc.cpp index deccddb7869..0c21778fc14 100644 --- a/src/devices/machine/pdc.cpp +++ b/src/devices/machine/pdc.cpp @@ -157,9 +157,9 @@ void pdc_device::pdc_io(address_map &map) map(0x3c, 0x3c).portr("SW2").mirror(0xFF00); /* FDC Dipswitch */ map(0x3d, 0x3d).portr("SW1").mirror(0xFF00); /* HDC Dipswitch */ map(0x40, 0x41).rw(HDC_TAG, FUNC(hdc9224_device::read), FUNC(hdc9224_device::write)).mirror(0xFF00); - map(0x42, 0x43).m(FDC_TAG, FUNC(upd765a_device::map)).mirror(0xFF00); + map(0x42, 0x43).m(m_fdc, FUNC(upd765a_device::map)).mirror(0xFF00); map(0x50, 0x5f).w(FUNC(pdc_device::p50_5f_w)).mirror(0xFF00); - map(0x60, 0x6f).rw(FDCDMA_TAG, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xFF00); + map(0x60, 0x6f).rw(m_dma8237, FUNC(am9517a_device::read), FUNC(am9517a_device::write)).mirror(0xFF00); } //------------------------------------------------- @@ -255,20 +255,21 @@ FLOPPY_FORMATS_END // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(pdc_device::device_add_mconfig) +void pdc_device::device_add_mconfig(machine_config &config) +{ /* CPU - Zilog Z0840006PSC */ - MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(10'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(pdc_mem) - MCFG_DEVICE_IO_MAP(pdc_io) + Z80(config, m_pdccpu, XTAL(10'000'000) / 2); + m_pdccpu->set_addrmap(AS_PROGRAM, pdc_device::pdc_mem); + m_pdccpu->set_addrmap(AS_IO, pdc_device::pdc_io); //MCFG_QUANTUM_PERFECT_CPU(M6502_TAG) /* Floppy Disk Controller - uPD765a - NEC D765AC-2 */ - MCFG_UPD765A_ADD(FDC_TAG, true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pdc_device, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(FDCDMA_TAG, am9517a_device, dreq0_w)) //MCFG_DEVCB_INVERT + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(FUNC(pdc_device::fdc_irq)); + m_fdc->drq_wr_callback().set(m_dma8237, FUNC(am9517a_device::dreq0_w)); //.invert(); // Floppy disk drive - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", pdc_floppies, "35hd", pdc_device::floppy_formats) + FLOPPY_CONNECTOR(config, FDC_TAG":0", pdc_floppies, "35hd", pdc_device::floppy_formats); /* DMA Controller - Intel P8237A-5 */ /* Channel 0: uPD765a Floppy Disk Controller */ @@ -288,7 +289,7 @@ MACHINE_CONFIG_START(pdc_device::device_add_mconfig) HDC9224(config, HDC_TAG, 0); MFM_HD_CONNECTOR(config, "h1", pdc_harddisks, nullptr, MFM_BYTE, 3000, 20, MFMHD_GEN_FORMAT); -MACHINE_CONFIG_END +} ioport_constructor pdc_device::device_input_ports() const { diff --git a/src/devices/machine/upd765.h b/src/devices/machine/upd765.h index ee7dd91b1da..ffe2577fddf 100644 --- a/src/devices/machine/upd765.h +++ b/src/devices/machine/upd765.h @@ -14,66 +14,6 @@ * mode = MODE_AT, MODE_PS2 or MODE_M30 for the fdcs that have reset-time selection */ -#define MCFG_UPD765A_ADD(_tag, _ready, _select) \ - MCFG_DEVICE_ADD(_tag, UPD765A, 0) \ - downcast(device)->set_ready_line_connected(_ready); \ - downcast(device)->set_select_lines_connected(_select); - -#define MCFG_UPD765B_ADD(_tag, _ready, _select) \ - MCFG_DEVICE_ADD(_tag, UPD765B, 0) \ - downcast(device)->set_ready_line_connected(_ready); \ - downcast(device)->set_select_lines_connected(_select); - -#define MCFG_I8272A_ADD(_tag, _ready) \ - MCFG_DEVICE_ADD(_tag, I8272A, 0) \ - downcast(device)->set_ready_line_connected(_ready); - -#define MCFG_UPD72065_ADD(_tag, _ready, _select) \ - MCFG_DEVICE_ADD(_tag, UPD72065, 0) \ - downcast(device)->set_ready_line_connected(_ready); \ - downcast(device)->set_select_lines_connected(_select); - -#define MCFG_I82072_ADD(_tag, _ready) \ - MCFG_DEVICE_ADD(_tag, I82072, 24_MHz_XTAL) \ - downcast(device)->set_ready_line_connected(_ready); - -#define MCFG_SMC37C78_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, SMC37C78, 0) - -#define MCFG_N82077AA_ADD(_tag, _mode) \ - MCFG_DEVICE_ADD(_tag, N82077AA, 0) \ - downcast(device)->set_mode(_mode); - -#define MCFG_PC_FDC_SUPERIO_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, PC_FDC_SUPERIO, 0) - -#define MCFG_DP8473_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, DP8473, 0) - -#define MCFG_PC8477A_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, PC8477A, 0) - -#define MCFG_WD37C65C_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, WD37C65C, 0) - -#define MCFG_MCS3201_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, MCS3201, 0) - -#define MCFG_TC8566AF_ADD(_tag) \ - MCFG_DEVICE_ADD(_tag, TC8566AF, 0) - -#define MCFG_MCS3201_INPUT_HANDLER(_devcb) \ - downcast(*device).set_input_handler(DEVCB_##_devcb); - -#define MCFG_UPD765_INTRQ_CALLBACK(_write) \ - downcast(*device).set_intrq_wr_callback(DEVCB_##_write); - -#define MCFG_UPD765_DRQ_CALLBACK(_write) \ - downcast(*device).set_drq_wr_callback(DEVCB_##_write); - -#define MCFG_UPD765_HDL_CALLBACK(_write) \ - downcast(*device).set_hdl_wr_callback(DEVCB_##_write); - /* Interface required for PC ISA wrapping */ class pc_fdc_interface : public device_t { protected: @@ -101,9 +41,6 @@ class upd765_family_device : public pc_fdc_interface { public: enum { MODE_AT, MODE_PS2, MODE_M30 }; - template devcb_base &set_intrq_wr_callback(Object &&cb) { return intrq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_hdl_wr_callback(Object &&cb) { return hdl_cb.set_callback(std::forward(cb)); } auto intrq_wr_callback() { return intrq_cb.bind(); } auto drq_wr_callback() { return drq_cb.bind(); } auto hdl_wr_callback() { return hdl_cb.bind(); } @@ -454,6 +391,12 @@ public: class upd765b_device : public upd765_family_device { public: + upd765b_device(const machine_config &mconfig, const char *tag, device_t *owner, bool ready, bool select) + : upd765b_device(mconfig, tag, owner, 0U) + { + set_ready_line_connected(ready); + set_select_lines_connected(select); + } upd765b_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void map(address_map &map) override; @@ -461,6 +404,11 @@ public: class i8272a_device : public upd765_family_device { public: + i8272a_device(const machine_config &mconfig, const char *tag, device_t *owner, bool ready) + : i8272a_device(mconfig, tag, owner, 0U) + { + set_ready_line_connected(ready); + } i8272a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void map(address_map &map) override; @@ -468,7 +416,12 @@ public: class i82072_device : public upd765_family_device { public: - i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, bool ready) + : i82072_device(mconfig, tag, owner) + { + set_ready_line_connected(ready); + } + i82072_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 24'000'000); virtual void map(address_map &map) override; @@ -502,7 +455,7 @@ private: class smc37c78_device : public upd765_family_device { public: - smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + smc37c78_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; }; @@ -524,6 +477,11 @@ public: class n82077aa_device : public upd765_family_device { public: + n82077aa_device(const machine_config &mconfig, const char *tag, device_t *owner, int mode) + : n82077aa_device(mconfig, tag, owner, 0U) + { + set_mode(mode); + } n82077aa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual void map(address_map &map) override; @@ -531,38 +489,38 @@ public: class pc_fdc_superio_device : public upd765_family_device { public: - pc_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pc_fdc_superio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; }; class dp8473_device : public upd765_family_device { public: - dp8473_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + dp8473_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; }; class pc8477a_device : public upd765_family_device { public: - pc8477a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pc8477a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; }; class wd37c65c_device : public upd765_family_device { public: - wd37c65c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + wd37c65c_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; }; class mcs3201_device : public upd765_family_device { public: - mcs3201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + mcs3201_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // configuration helpers - template devcb_base &set_input_handler(Object &&cb) { return m_input_handler.set_callback(std::forward(cb)); } + auto input_handler() { return m_input_handler.bind(); } virtual void map(address_map &map) override; DECLARE_READ8_MEMBER( input_r ); @@ -576,7 +534,7 @@ private: class tc8566af_device : public upd765_family_device { public: - tc8566af_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + tc8566af_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); virtual void map(address_map &map) override; diff --git a/src/mame/drivers/a5105.cpp b/src/mame/drivers/a5105.cpp index 93b6b34d7dc..152d3ec1688 100644 --- a/src/mame/drivers/a5105.cpp +++ b/src/mame/drivers/a5105.cpp @@ -608,7 +608,7 @@ MACHINE_CONFIG_START(a5105_state::a5105) MCFG_CASSETTE_ADD( "cassette" ) - MCFG_UPD765A_ADD("upd765a", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765a:0", a5105_floppies, "525qd", a5105_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765a:1", a5105_floppies, "525qd", a5105_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765a:2", a5105_floppies, "525qd", a5105_state::floppy_formats) diff --git a/src/mame/drivers/alphatro.cpp b/src/mame/drivers/alphatro.cpp index 09b1e263844..9a4cd32ae99 100644 --- a/src/mame/drivers/alphatro.cpp +++ b/src/mame/drivers/alphatro.cpp @@ -722,9 +722,9 @@ MACHINE_CONFIG_START(alphatro_state::alphatro) WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); /* Devices */ - MCFG_UPD765A_ADD("fdc", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, alphatro_state, fdc_irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_dmac, i8257_device, dreq2_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(FUNC(alphatro_state::fdc_irq_w)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq2_w)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", alphatro_floppies, "525dd", alphatro_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", alphatro_floppies, "525dd", alphatro_state::floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list", "alphatro_flop") diff --git a/src/mame/drivers/altos486.cpp b/src/mame/drivers/altos486.cpp index 19267323754..bdca3416812 100644 --- a/src/mame/drivers/altos486.cpp +++ b/src/mame/drivers/altos486.cpp @@ -148,7 +148,7 @@ MACHINE_CONFIG_START(altos486_state::altos486) MCFG_DEVICE_ADD("ppi8255", I8255, 0) - MCFG_UPD765A_ADD("fdc", false, false) + UPD765A(config, "fdc", false, false); MCFG_FLOPPY_DRIVE_ADD("fdc:0", altos486_floppies, "525qd", altos486_state::floppy_formats) MCFG_SLOT_FIXED(true) diff --git a/src/mame/drivers/amstr_pc.cpp b/src/mame/drivers/amstr_pc.cpp index 4df7b158d05..6788af70430 100644 --- a/src/mame/drivers/amstr_pc.cpp +++ b/src/mame/drivers/amstr_pc.cpp @@ -510,14 +510,14 @@ MACHINE_CONFIG_START(amstrad_pc_state::pc200) MCFG_DEVICE_ADD("isa2", ISA8_SLOT, 0, "mb:isa", pc_isa8_cards, nullptr, false) /* printer */ - MCFG_DEVICE_ADD("lpt_0", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE("mb:pic8259", pic8259_device, ir7_w)) + pc_lpt_device &lpt0(PC_LPT(config, "lpt_0")); + lpt0.irq_handler().set("mb:pic8259", FUNC(pic8259_device::ir7_w)); - MCFG_DEVICE_ADD("lpt_1", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE("mb:pic8259", pic8259_device, ir7_w)) + PC_LPT(config, m_lpt1); + m_lpt1->irq_handler().set("mb:pic8259", FUNC(pic8259_device::ir7_w)); - MCFG_DEVICE_ADD("lpt_2", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE("mb:pic8259", pic8259_device, ir5_w)) + PC_LPT(config, m_lpt2); + m_lpt2->irq_handler().set("mb:pic8259", FUNC(pic8259_device::ir5_w)); MCFG_PC_JOY_ADD("pc_joy") diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index f1531b47de5..d099a99b872 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -984,7 +984,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(amstrad_state::cpc664) amstrad_base(config); - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop") @@ -1002,7 +1002,7 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(amstrad_state::cpc6128) amstrad_base(config); - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop") @@ -1087,7 +1087,7 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus) MCFG_CASSETTE_INTERFACE("cpc_cass") MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass") - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); cpcplus_cartslot(config); @@ -1173,8 +1173,7 @@ MACHINE_CONFIG_START(amstrad_state::aleste) MCFG_DEVICE_ADD("rtc", MC146818, 4.194304_MHz_XTAL) - MCFG_DEVICE_REMOVE("upd765") - MCFG_I8272A_ADD("upd765", true) + I8272A(config.replace(), m_fdc, true); MCFG_DEVICE_REMOVE("exp") MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0) diff --git a/src/mame/drivers/apc.cpp b/src/mame/drivers/apc.cpp index 764a22a3c65..db93be349aa 100644 --- a/src/mame/drivers/apc.cpp +++ b/src/mame/drivers/apc.cpp @@ -973,9 +973,9 @@ MACHINE_CONFIG_START(apc_state::apc) NVRAM(config, m_cmos, nvram_device::DEFAULT_ALL_1); UPD1990A(config, m_rtc); - MCFG_UPD765A_ADD(m_fdc, true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(m_i8259_s, pic8259_device, ir4_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_dmac, am9517a_device, dreq1_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(m_i8259_s, FUNC(pic8259_device::ir4_w)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq1_w)); MCFG_FLOPPY_DRIVE_ADD(m_fdc_connector[0], apc_floppies, "8", apc_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(m_fdc_connector[1], apc_floppies, "8", apc_floppy_formats) MCFG_SOFTWARE_LIST_ADD("disk_list","apc") diff --git a/src/mame/drivers/ax20.cpp b/src/mame/drivers/ax20.cpp index bcee6d7cd3e..4047d3ff3e1 100644 --- a/src/mame/drivers/ax20.cpp +++ b/src/mame/drivers/ax20.cpp @@ -149,7 +149,7 @@ MACHINE_CONFIG_START(ax20_state::ax20) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ax20) MCFG_PALETTE_ADD_MONOCHROME("palette") - MCFG_I8272A_ADD("fdc", true) + I8272A(config, m_fdc, true); /* Devices */ MCFG_FLOPPY_DRIVE_ADD("fdc:0", ax20_floppies, "525dd", isa8_fdc_device::floppy_formats) diff --git a/src/mame/drivers/bw12.cpp b/src/mame/drivers/bw12.cpp index 6285c6d1825..1a26bd62754 100644 --- a/src/mame/drivers/bw12.cpp +++ b/src/mame/drivers/bw12.cpp @@ -579,7 +579,7 @@ MACHINE_CONFIG_START(bw12_state::common) /* devices */ MCFG_TIMER_DRIVER_ADD(FLOPPY_TIMER_TAG, bw12_state, floppy_motor_off_tick) - MCFG_UPD765A_ADD(UPD765_TAG, false, true) + UPD765A(config, m_fdc, false, true); PIA6821(config, m_pia, 0); m_pia->readpa_handler().set(FUNC(bw12_state::pia_pa_r)); diff --git a/src/mame/drivers/czk80.cpp b/src/mame/drivers/czk80.cpp index fcedf34fb1a..e9c165ce16a 100644 --- a/src/mame/drivers/czk80.cpp +++ b/src/mame/drivers/czk80.cpp @@ -195,7 +195,7 @@ MACHINE_CONFIG_START(czk80_state::czk80) MCFG_DEVICE_ADD(m_terminal, GENERIC_TERMINAL, 0) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(PUT(czk80_state, kbd_put)) - MCFG_UPD765A_ADD("fdc", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("fdc:0", czk80_floppies, "525dd", floppy_image_device::default_floppy_formats) z80ctc_device& ctc(Z80CTC(config, "ctc", XTAL(16'000'000) / 4)); diff --git a/src/mame/drivers/dim68k.cpp b/src/mame/drivers/dim68k.cpp index 77e7952dac6..f68c5eb3ccc 100644 --- a/src/mame/drivers/dim68k.cpp +++ b/src/mame/drivers/dim68k.cpp @@ -331,7 +331,7 @@ MACHINE_CONFIG_START(dim68k_state::dim68k) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* Devices */ - MCFG_UPD765A_ADD("fdc", true, true) // these options unknown + UPD765A(config, "fdc", true, true); // these options unknown MCFG_FLOPPY_DRIVE_ADD("fdc:0", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", dim68k_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index 5232bdda4f7..23a5c3ead87 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -821,9 +821,9 @@ MACHINE_CONFIG_START(dmv_state::dmv) m_dmac->out_iow_callback<3>().set(m_fdc, FUNC(i8272a_device::mdma_w)); m_dmac->out_dack_callback<3>().set(FUNC(dmv_state::dmac_dack3)); - MCFG_I8272A_ADD( "i8272", true ) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, dmv_state, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma8237", am9517a_device, dreq3_w)) + I8272A(config, m_fdc, true); + m_fdc->intrq_wr_callback().set(FUNC(dmv_state::fdc_irq)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w)); MCFG_FLOPPY_DRIVE_ADD("i8272:0", dmv_floppies, "525dd", dmv_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("i8272:1", dmv_floppies, "525dd", dmv_state::floppy_formats) diff --git a/src/mame/drivers/dps1.cpp b/src/mame/drivers/dps1.cpp index 8d104b1fdc0..ecc3c5c7931 100644 --- a/src/mame/drivers/dps1.cpp +++ b/src/mame/drivers/dps1.cpp @@ -218,9 +218,9 @@ MACHINE_CONFIG_START(dps1_state::dps1) AM9519(config, "am9519b", 0); // floppy - MCFG_UPD765A_ADD("fdc", false, true) - //MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, dps1_state, fdc_int_w)) // doesn't appear to be used - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, dps1_state, fdc_drq_w)) + UPD765A(config, m_fdc, false, true); + //m_fdc->intrq_wr_callback().set(FUNC(dps1_state::fdc_int_w)); // doesn't appear to be used + m_fdc->drq_wr_callback().set(FUNC(dps1_state::fdc_drq_w)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", floppies, "floppy0", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) //MCFG_FLOPPY_DRIVE_ADD("fdc:1", floppies, "floppy1", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/duet16.cpp b/src/mame/drivers/duet16.cpp index 6d6a5a3c3f2..3b37314e0c3 100644 --- a/src/mame/drivers/duet16.cpp +++ b/src/mame/drivers/duet16.cpp @@ -161,7 +161,7 @@ void duet16_state::duet16_mem(address_map &map) map(0xf80c0, 0xf80c0).rw("crtc", FUNC(h46505_device::status_r), FUNC(h46505_device::address_w)); map(0xf80c2, 0xf80c2).rw("crtc", FUNC(h46505_device::register_r), FUNC(h46505_device::register_w)); map(0xf80e0, 0xf80e3).rw("i8741", FUNC(upi41_cpu_device::upi41_master_r), FUNC(upi41_cpu_device::upi41_master_w)).umask16(0x00ff); - map(0xf8100, 0xf8103).m("fdc", FUNC(upd765a_device::map)).umask16(0x00ff); + map(0xf8100, 0xf8103).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff); map(0xf8120, 0xf8120).rw(FUNC(duet16_state::rtc_r), FUNC(duet16_state::rtc_w)); map(0xf8160, 0xf819f).w(FUNC(duet16_state::pal_w)); map(0xf8200, 0xf8201).r(FUNC(duet16_state::sysstat_r)); @@ -406,9 +406,9 @@ MACHINE_CONFIG_START(duet16_state::duet16) MCFG_INPUT_MERGER_ANY_HIGH("tmint") MCFG_INPUT_MERGER_OUTPUT_HANDLER(WRITELINE("pic", pic8259_device, ir0_w)) // INT6 - MCFG_UPD765A_ADD("fdc", true, false) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dmac", am9517a_device, dreq0_w)) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("pic", pic8259_device, ir3_w)) // INT4 + UPD765A(config, m_fdc, true, false); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq0_w)); + m_fdc->intrq_wr_callback().set(m_pic, FUNC(pic8259_device::ir3_w)); // INT4 MCFG_FLOPPY_DRIVE_ADD("fdc:0", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_SLOT_FIXED(true) MCFG_FLOPPY_DRIVE_ADD("fdc:1", duet16_floppies, "525qd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/fanucspmg.cpp b/src/mame/drivers/fanucspmg.cpp index a444ee32f8b..9733705191d 100644 --- a/src/mame/drivers/fanucspmg.cpp +++ b/src/mame/drivers/fanucspmg.cpp @@ -1011,9 +1011,9 @@ MACHINE_CONFIG_START(fanucspmg_state::fanucspmg) MCFG_PIC8259_OUT_INT_CB(WRITELINE(PIC0_TAG, pic8259_device, ir7_w)) MCFG_PIC8259_IN_SP_CB(CONSTANT(0)) - MCFG_UPD765A_ADD(FDC_TAG, true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(PIC0_TAG, pic8259_device, ir3_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(DMAC_TAG, i8257_device, dreq0_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(m_pic0, FUNC(pic8259_device::ir3_w)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w)); MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", fanuc_floppies, "525dd", fanucspmg_state::floppy_formats) diff --git a/src/mame/drivers/hec2hrp.cpp b/src/mame/drivers/hec2hrp.cpp index 76a09123b7a..9b5cd732fea 100644 --- a/src/mame/drivers/hec2hrp.cpp +++ b/src/mame/drivers/hec2hrp.cpp @@ -464,9 +464,9 @@ MACHINE_CONFIG_START(hec2hrp_state::hec2mx40) MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL) MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem) MCFG_DEVICE_IO_MAP(hecdisc2_io) - MCFG_UPD765A_ADD(m_upd_fdc, false, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_interrupt)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_dma_irq)) + UPD765A(config, m_upd_fdc, false, true); + m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt)); + m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq)); MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_MACHINE_RESET_OVERRIDE(hec2hrp_state,hec2hrx) @@ -504,9 +504,9 @@ MACHINE_CONFIG_START(hec2hrp_state::hec2hrx) MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL) MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem) MCFG_DEVICE_IO_MAP(hecdisc2_io) - MCFG_UPD765A_ADD(m_upd_fdc, false, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_interrupt)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_dma_irq)) + UPD765A(config, m_upd_fdc, false, true); + m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt)); + m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq)); MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) @@ -575,9 +575,9 @@ MACHINE_CONFIG_START(hec2hrp_state::hec2mx80) MCFG_DEVICE_ADD("disc2cpu", Z80, 4_MHz_XTAL) MCFG_DEVICE_PROGRAM_MAP(hecdisc2_mem) MCFG_DEVICE_IO_MAP(hecdisc2_io) - MCFG_UPD765A_ADD(m_upd_fdc, false, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_interrupt)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, hec2hrp_state, disc2_fdc_dma_irq)) + UPD765A(config, m_upd_fdc, false, true); + m_upd_fdc->intrq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_interrupt)); + m_upd_fdc->drq_wr_callback().set(FUNC(hec2hrp_state::disc2_fdc_dma_irq)); MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[0], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(m_upd_connector[1], hector_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/ibm6580.cpp b/src/mame/drivers/ibm6580.cpp index 9512ff266da..092c062daca 100644 --- a/src/mame/drivers/ibm6580.cpp +++ b/src/mame/drivers/ibm6580.cpp @@ -918,16 +918,16 @@ MACHINE_CONFIG_START(ibm6580_state::ibm6580) I8257(config, m_dma8257, XTAL(14'745'600)/3); m_dma8257->out_hrq_cb().set(FUNC(ibm6580_state::hrq_w)); - m_dma8257->out_tc_cb().set(UPD765_TAG, FUNC(upd765a_device::tc_line_w)); + m_dma8257->out_tc_cb().set(m_fdc, FUNC(upd765a_device::tc_line_w)); m_dma8257->in_memr_cb().set(FUNC(ibm6580_state::memory_read_byte)); m_dma8257->out_memw_cb().set(FUNC(ibm6580_state::memory_write_byte)); - m_dma8257->in_ior_cb<0>().set(UPD765_TAG, FUNC(upd765a_device::mdma_r)); - m_dma8257->out_iow_cb<0>().set(UPD765_TAG, FUNC(upd765a_device::mdma_w)); + m_dma8257->in_ior_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_r)); + m_dma8257->out_iow_cb<0>().set(m_fdc, FUNC(upd765a_device::mdma_w)); - MCFG_UPD765A_ADD(UPD765_TAG, false, false) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, ibm6580_state, floppy_intrq)) -// MCFG_DEVCB_CHAIN_OUTPUT(WRITELINE("pic8259", pic8259_device, ir4_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma8257", i8257_device, dreq0_w)) + UPD765A(config, m_fdc, false, false); + m_fdc->intrq_wr_callback().set(FUNC(ibm6580_state::floppy_intrq)); +// m_fdc->intrq_wr_callback().append("pic8259", FUNC(pic8259_device::ir4_w)); + m_fdc->drq_wr_callback().set(m_dma8257, FUNC(i8257_device::dreq0_w)); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", dw_floppies, "8sssd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/ibmpcjr.cpp b/src/mame/drivers/ibmpcjr.cpp index 0561a8efeb6..eb24d034596 100644 --- a/src/mame/drivers/ibmpcjr.cpp +++ b/src/mame/drivers/ibmpcjr.cpp @@ -611,12 +611,12 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr) */ MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL(14'318'181)/12) - MCFG_PIT8253_OUT0_HANDLER(WRITELINE("pic8259", pic8259_device, ir0_w)) + MCFG_PIT8253_OUT0_HANDLER(WRITELINE(m_pic8259, pic8259_device, ir0_w)) MCFG_PIT8253_CLK1(XTAL(14'318'181)/12) MCFG_PIT8253_CLK2(XTAL(14'318'181)/12) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(*this, pcjr_state, out2_changed)) - MCFG_DEVICE_ADD("pic8259", PIC8259, 0) + MCFG_DEVICE_ADD(m_pic8259, PIC8259, 0) MCFG_PIC8259_OUT_INT_CB(WRITELINE(*this, pcjr_state, pic8259_set_int_line)) i8255_device &ppi(I8255(config, "ppi8255")); @@ -628,7 +628,7 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr) uart.out_tx_callback().set("serport", FUNC(rs232_port_device::write_txd)); uart.out_dtr_callback().set("serport", FUNC(rs232_port_device::write_dtr)); uart.out_rts_callback().set("serport", FUNC(rs232_port_device::write_rts)); - uart.out_int_callback().set("pic8259", FUNC(pic8259_device::ir3_w)); + uart.out_int_callback().set(m_pic8259, FUNC(pic8259_device::ir3_w)); MCFG_DEVICE_ADD( "serport", RS232_PORT, pcjr_com, nullptr ) MCFG_RS232_RXD_HANDLER(WRITELINE("ins8250", ins8250_uart_device, rx_w)) @@ -651,8 +651,8 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) /* printer */ - MCFG_DEVICE_ADD("lpt_0", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE("pic8259", pic8259_device, ir7_w)) + pc_lpt_device &lpt0(PC_LPT(config, "lpt_0")); + lpt0.irq_handler().set(m_pic8259, FUNC(pic8259_device::ir7_w)); MCFG_PC_JOY_ADD("pc_joy") @@ -660,7 +660,7 @@ MACHINE_CONFIG_START(pcjr_state::ibmpcjr) MCFG_CASSETTE_ADD( "cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) - MCFG_UPD765A_ADD("fdc", false, false) + UPD765A(config, m_fdc, false, false); MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcjr_floppies, "525dd", isa8_fdc_device::floppy_formats) MCFG_SLOT_FIXED(true) diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp index c60a855dafb..0d60a88380c 100644 --- a/src/mame/drivers/kdt6.cpp +++ b/src/mame/drivers/kdt6.cpp @@ -707,9 +707,9 @@ MACHINE_CONFIG_START(kdt6_state::psi98) UPD1990A(config, m_rtc); - MCFG_UPD765A_ADD("fdc", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("ctc1", z80ctc_device, trg0)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, kdt6_state, fdc_drq_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set("ctc1", FUNC(z80ctc_device::trg0)); + m_fdc->drq_wr_callback().set(FUNC(kdt6_state::fdc_drq_w)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", kdt6_floppies, "fd55f", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/m5.cpp b/src/mame/drivers/m5.cpp index a6b289916f4..3d9ee11c460 100644 --- a/src/mame/drivers/m5.cpp +++ b/src/mame/drivers/m5.cpp @@ -1411,7 +1411,7 @@ MACHINE_CONFIG_START(m5_state::m5) m_maincpu->set_addrmap(AS_IO, &m5_state::m5_io); m_maincpu->set_daisy_config(m5_daisy_chain); - MCFG_DEVICE_ADD(Z80_FD5_TAG, Z80, 14.318181_MHz_XTAL / 4) + MCFG_DEVICE_ADD(m_fd5cpu, Z80, 14.318181_MHz_XTAL / 4) MCFG_DEVICE_PROGRAM_MAP(fd5_mem) MCFG_DEVICE_IO_MAP(fd5_io) @@ -1443,8 +1443,8 @@ MACHINE_CONFIG_START(m5_state::m5) m_ppi->in_pc_callback().set(FUNC(m5_state::ppi_pc_r)); m_ppi->out_pc_callback().set(FUNC(m5_state::ppi_pc_w)); - MCFG_UPD765A_ADD(UPD765_TAG, true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE(Z80_FD5_TAG, INPUT_LINE_IRQ0)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_fd5cpu, INPUT_LINE_IRQ0); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", m5_floppies, "525dd", m5_state::floppy_formats) // cartridge @@ -1507,9 +1507,9 @@ MACHINE_CONFIG_START(brno_state::brno) //remove devices used for fd5 floppy - MCFG_DEVICE_REMOVE(Z80_FD5_TAG) - MCFG_DEVICE_REMOVE(I8255A_TAG) - MCFG_DEVICE_REMOVE(UPD765_TAG) + config.device_remove(Z80_FD5_TAG); + config.device_remove(I8255A_TAG); + config.device_remove(UPD765_TAG); // video hardware tms9929a_device &vdp(TMS9929A(config, "tms9928a", 10.738635_MHz_XTAL)); diff --git a/src/mame/drivers/mikromik.cpp b/src/mame/drivers/mikromik.cpp index 708944db362..96d9a72381c 100644 --- a/src/mame/drivers/mikromik.cpp +++ b/src/mame/drivers/mikromik.cpp @@ -490,9 +490,9 @@ MACHINE_CONFIG_START(mm1_state::mm1) m_pit->set_clk<2>(6.144_MHz_XTAL/2/2); m_pit->out_handler<2>().set(FUNC(mm1_state::auxc_w)); - MCFG_UPD765A_ADD(UPD765_TAG, /* 16_MHz_XTAL/2/2 */ true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE(I8085A_TAG, I8085_RST55_LINE)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(I8237_TAG, am9517a_device, dreq3_w)) + UPD765A(config, m_fdc, /* 16_MHz_XTAL/2/2, */ true, true); + m_fdc->intrq_wr_callback().set_inputline(m_maincpu, I8085_RST55_LINE); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq3_w)); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", mm1_floppies, "525qd", mm1_state::floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", mm1_floppies, "525qd", mm1_state::floppy_formats) diff --git a/src/mame/drivers/mpc3000.cpp b/src/mame/drivers/mpc3000.cpp index 42e2197e230..fee0ca9f1aa 100644 --- a/src/mame/drivers/mpc3000.cpp +++ b/src/mame/drivers/mpc3000.cpp @@ -213,9 +213,9 @@ void mpc3000_state::mpc3000(machine_config &config) MCFG_PALETTE_ADD("palette", 2) MCFG_PALETTE_INIT_OWNER(mpc3000_state, mpc3000) - MCFG_UPD72065_ADD("upd72068", true, true) // TODO: upd72068 supports motor control - //MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("maincpu", v53a_device, ir?_w)) - //MCFG_UPD765_DRQ_CALLBACK(WRITELINE("maincpu", v53a_device, drq?_w)) + UPD72065(config, m_fdc, 0, true, true); // TODO: upd72068 supports motor control + //m_fdc->intrq_wr_callback().set(m_maincpu, FUNC(v53a_device::ir?_w)); + //m_fdc->drq_wr_callback().set(m_maincpu, FUNC(v53a_device::drq?_w)); pit8254_device &pit(PIT8254(config, "synctmr", 0)); // MB89254 pit.set_clk<0>(16_MHz_XTAL / 4); diff --git a/src/mame/drivers/msx.cpp b/src/mame/drivers/msx.cpp index d9b2a5f5fdb..1d8a8d61348 100644 --- a/src/mame/drivers/msx.cpp +++ b/src/mame/drivers/msx.cpp @@ -1317,9 +1317,10 @@ void msx_state::msx_mb8877a(machine_config & config) fdc.set_force_ready(true); } -MACHINE_CONFIG_START(msx_state::msx_tc8566af) - MCFG_TC8566AF_ADD("fdc") -MACHINE_CONFIG_END +void msx_state::msx_tc8566af(machine_config &config) +{ + TC8566AF(config, "fdc"); +} void msx_state::msx_microsol(machine_config &config) { diff --git a/src/mame/drivers/multi8.cpp b/src/mame/drivers/multi8.cpp index 84bcf4220a2..5d78a6e795e 100644 --- a/src/mame/drivers/multi8.cpp +++ b/src/mame/drivers/multi8.cpp @@ -612,7 +612,7 @@ MACHINE_CONFIG_START(multi8_state::multi8) MCFG_DEVICE_ADD("pit", PIT8253, 0) MCFG_DEVICE_ADD("pic", PIC8259, 0) - //MCFG_UPD765A_ADD("fdc", false, true) + //UPD765A(config, "fdc", false, true); //MCFG_FLOPPY_DRIVE_ADD("fdc:0", multi8_floppies, "525hd", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END diff --git a/src/mame/drivers/mz3500.cpp b/src/mame/drivers/mz3500.cpp index 083ca202a13..595773cf421 100644 --- a/src/mame/drivers/mz3500.cpp +++ b/src/mame/drivers/mz3500.cpp @@ -826,8 +826,8 @@ MACHINE_CONFIG_START(mz3500_state::mz3500) ppi.out_pb_callback().set(FUNC(mz3500_state::mz3500_pb_w)); ppi.out_pc_callback().set(FUNC(mz3500_state::mz3500_pc_w)); - MCFG_UPD765A_ADD("upd765a", true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("master", INPUT_LINE_IRQ0)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_master, INPUT_LINE_IRQ0); MCFG_FLOPPY_DRIVE_ADD("upd765a:0", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765a:1", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765a:2", mz3500_floppies, "525ssdd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/mz6500.cpp b/src/mame/drivers/mz6500.cpp index 814a19fcb4a..831472fe85f 100644 --- a/src/mame/drivers/mz6500.cpp +++ b/src/mame/drivers/mz6500.cpp @@ -169,7 +169,7 @@ MACHINE_CONFIG_START(mz6500_state::mz6500) MCFG_DEVICE_ADDRESS_MAP(0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(mz6500_state, hgdc_display_pixels) - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", mz6500_floppies, "525hd", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END diff --git a/src/mame/drivers/nanos.cpp b/src/mame/drivers/nanos.cpp index decc7342ede..38c2a6db01a 100644 --- a/src/mame/drivers/nanos.cpp +++ b/src/mame/drivers/nanos.cpp @@ -515,7 +515,7 @@ MACHINE_CONFIG_START(nanos_state::nanos) m_pio->out_pb_callback().set(FUNC(nanos_state::port_b_w)); /* UPD765 */ - MCFG_UPD765A_ADD(m_fdc, false, true) + UPD765A(config, m_fdc, false, true); MCFG_FLOPPY_DRIVE_ADD(m_floppy, nanos_floppies, "525hd", nanos_state::floppy_formats) /* internal ram */ diff --git a/src/mame/drivers/nc.cpp b/src/mame/drivers/nc.cpp index 6b622164f45..9e3ad119c76 100644 --- a/src/mame/drivers/nc.cpp +++ b/src/mame/drivers/nc.cpp @@ -1260,7 +1260,7 @@ void nc200_state::nc200_io(address_map &map) map(0xb0, 0xb9).r(FUNC(nc200_state::nc_key_data_in_r)); map(0xc0, 0xc1).rw(m_uart, FUNC(i8251_device::read), FUNC(i8251_device::write)); map(0xd0, 0xd1).rw("mc", FUNC(mc146818_device::read), FUNC(mc146818_device::write)); - map(0xe0, 0xe1).m("upd765", FUNC(upd765a_device::map)); + map(0xe0, 0xe1).m(m_fdc, FUNC(upd765a_device::map)); } static INPUT_PORTS_START(nc200) @@ -1482,8 +1482,8 @@ MACHINE_CONFIG_START(nc200_state::nc200) m_uart->rxrdy_handler().set(FUNC(nc200_state::nc200_rxrdy_callback)); m_uart->txrdy_handler().set(FUNC(nc200_state::nc200_txrdy_callback)); - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, nc200_state, nc200_fdc_interrupt)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(FUNC(nc200_state::nc200_fdc_interrupt)); MCFG_FLOPPY_DRIVE_ADD("upd765:0", ibmpc_floppies, "525dd", ibmpc_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", ibmpc_floppies, "525dd", ibmpc_floppy_formats) diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp index a9c834fc83b..bc962a26910 100644 --- a/src/mame/drivers/next.cpp +++ b/src/mame/drivers/next.cpp @@ -1055,9 +1055,9 @@ MACHINE_CONFIG_END MACHINE_CONFIG_START(next_state::next_fdc_base) next_base(config); - MCFG_N82077AA_ADD("fdc", n82077aa_device::MODE_PS2) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, next_state, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, next_state, fdc_drq)) + N82077AA(config, fdc, n82077aa_device::MODE_PS2); + fdc->intrq_wr_callback().set(FUNC(next_state::fdc_irq)); + fdc->drq_wr_callback().set(FUNC(next_state::fdc_drq)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", next_floppies, "35ed", next_state::floppy_formats) // software list diff --git a/src/mame/drivers/olyboss.cpp b/src/mame/drivers/olyboss.cpp index 45499d83768..f1bdbc88b33 100644 --- a/src/mame/drivers/olyboss.cpp +++ b/src/mame/drivers/olyboss.cpp @@ -514,9 +514,9 @@ MACHINE_CONFIG_START( olyboss_state::bossb85 ) MCFG_DEVICE_ADD("pic", PIC8259, 0) MCFG_PIC8259_OUT_INT_CB(INPUTLINE("maincpu", 0)) - MCFG_UPD765A_ADD("fdc", true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("maincpu", I8085_RST65_LINE)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_dma, i8257_device, dreq0_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_maincpu, I8085_RST65_LINE); + m_fdc->drq_wr_callback().set(m_dma, FUNC(i8257_device::dreq0_w)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", bossb_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_ADD("fdc:1", bossb_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/p8k.cpp b/src/mame/drivers/p8k.cpp index 24b4c33c7eb..47d836d0b44 100644 --- a/src/mame/drivers/p8k.cpp +++ b/src/mame/drivers/p8k.cpp @@ -472,8 +472,8 @@ MACHINE_CONFIG_START(p8k_state::p8k) m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); m_pio2->in_pa_callback().set_ioport("DSW"); - MCFG_I8272A_ADD("i8272", true) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma", z80dma_device, rdy_w)) + I8272A(config, m_i8272, true); + m_i8272->drq_wr_callback().set("dma", FUNC(z80dma_device::rdy_w)); MCFG_FLOPPY_DRIVE_ADD("i8272:0", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("i8272:1", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/pasopia7.cpp b/src/mame/drivers/pasopia7.cpp index e16dd1fc3d4..78f5673da9d 100644 --- a/src/mame/drivers/pasopia7.cpp +++ b/src/mame/drivers/pasopia7.cpp @@ -966,7 +966,7 @@ MACHINE_CONFIG_START(pasopia7_state::p7_base) m_ppi2->in_pc_callback().set(FUNC(pasopia7_state::nmi_reg_r)); m_ppi2->out_pc_callback().set(FUNC(pasopia7_state::nmi_reg_w)); - MCFG_UPD765A_ADD("fdc", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("fdc:0", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats) MACHINE_CONFIG_END diff --git a/src/mame/drivers/pc100.cpp b/src/mame/drivers/pc100.cpp index c1dd19b6a40..24cf154d520 100644 --- a/src/mame/drivers/pc100.cpp +++ b/src/mame/drivers/pc100.cpp @@ -667,9 +667,9 @@ MACHINE_CONFIG_START(pc100_state::pc100) //i8251.rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); i8251.rxrdy_handler().set("pic8259", FUNC(pic8259_device::ir1_w)); - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc100_state, irqnmi_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, pc100_state, drqnmi_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(FUNC(pc100_state::irqnmi_w)); + m_fdc->drq_wr_callback().set(FUNC(pc100_state::drqnmi_w)); MCFG_DEVICE_ADD("rtc", MSM58321, XTAL(32'768)) MCFG_MSM58321_D0_HANDLER(WRITELINE(*this, pc100_state, rtc_portc_0_w)) diff --git a/src/mame/drivers/pc8801.cpp b/src/mame/drivers/pc8801.cpp index b498cce8c82..f404fc5bbff 100644 --- a/src/mame/drivers/pc8801.cpp +++ b/src/mame/drivers/pc8801.cpp @@ -1685,7 +1685,7 @@ void pc8801_state::pc8801fdc_io(address_map &map) map(0xf4, 0xf4).w(FUNC(pc8801_state::fdc_drive_mode_w)); // Drive mode, 2d, 2dd, 2hd map(0xf7, 0xf7).nopw(); // printer port output map(0xf8, 0xf8).rw(FUNC(pc8801_state::upd765_tc_r), FUNC(pc8801_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port - map(0xfa, 0xfb).m("upd765", FUNC(upd765a_device::map)); + map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map)); map(0xfc, 0xff).rw("d8255_slave", FUNC(i8255_device::read), FUNC(i8255_device::write)); } @@ -2351,7 +2351,7 @@ MACHINE_CONFIG_START(pc8801_state::pc8801) MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(pc8801_state,pc8801_irq_callback) /* sub CPU(5 inch floppy drive) */ - MCFG_DEVICE_ADD("fdccpu", Z80, MASTER_CLOCK) /* 4 MHz */ + MCFG_DEVICE_ADD(m_fdccpu, Z80, MASTER_CLOCK) /* 4 MHz */ MCFG_DEVICE_PROGRAM_MAP(pc8801fdc_mem) MCFG_DEVICE_IO_MAP(pc8801fdc_io) @@ -2370,8 +2370,8 @@ MACHINE_CONFIG_START(pc8801_state::pc8801) d8255_slave.in_pc_callback().set(FUNC(pc8801_state::fdc_8255_c_r)); d8255_slave.out_pc_callback().set(FUNC(pc8801_state::fdc_8255_c_w)); - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("fdccpu", INPUT_LINE_IRQ0)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_fdccpu, INPUT_LINE_IRQ0); #if USE_PROPER_I8214 I8214(config, I8214_TAG, MASTER_CLOCK); diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp index 00cd0c6c959..6753c89381d 100644 --- a/src/mame/drivers/pc88va.cpp +++ b/src/mame/drivers/pc88va.cpp @@ -1648,9 +1648,9 @@ MACHINE_CONFIG_START(pc88va_state::pc88va) m_dmac->in_memr_callback().set(FUNC(pc88va_state::dma_memr_cb)); m_dmac->out_memw_callback().set(FUNC(pc88va_state::dma_memw_cb)); - MCFG_UPD765A_ADD("upd765", false, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_irq)) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pc88va_state, fdc_drq)) + UPD765A(config, m_fdc, false, true); + m_fdc->intrq_wr_callback().set(FUNC(pc88va_state::fdc_irq)); + m_fdc->drq_wr_callback().set(FUNC(pc88va_state::fdc_drq)); FLOPPY_CONNECTOR(config, m_fdd[0], pc88va_floppies, "525hd", pc88va_state::floppy_formats); FLOPPY_CONNECTOR(config, m_fdd[1], pc88va_floppies, "525hd", pc88va_state::floppy_formats); MCFG_SOFTWARE_LIST_ADD("disk_list","pc88va") diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp index a718faf0373..d0c55c7a763 100644 --- a/src/mame/drivers/pcw.cpp +++ b/src/mame/drivers/pcw.cpp @@ -1263,8 +1263,8 @@ MACHINE_CONFIG_START(pcw_state::pcw) MCFG_DEVICE_ADD("beeper", BEEP, 3750) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pcw_state, pcw_fdc_interrupt)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set(FUNC(pcw_state::pcw_fdc_interrupt)); MCFG_FLOPPY_DRIVE_ADD("upd765:0", pcw_floppies, "3dsdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", pcw_floppies, "3dsdd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/pcw16.cpp b/src/mame/drivers/pcw16.cpp index 9c6e8b6accf..4df31663131 100644 --- a/src/mame/drivers/pcw16.cpp +++ b/src/mame/drivers/pcw16.cpp @@ -1060,11 +1060,11 @@ MACHINE_CONFIG_START(pcw16_state::pcw16) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* printer */ - MCFG_DEVICE_ADD("lpt", PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(INPUTLINE("maincpu", 0)) + pc_lpt_device &lpt(PC_LPT(config, "lpt")); + lpt.irq_handler().set_inputline(m_maincpu, 0); - MCFG_PC_FDC_SUPERIO_ADD("fdc") - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, pcw16_state, fdc_interrupt)) + PC_FDC_SUPERIO(config, m_fdc); + m_fdc->intrq_wr_callback().set(FUNC(pcw16_state::fdc_interrupt)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", pcw16_floppies, "35hd", pcw16_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", pcw16_floppies, "35hd", pcw16_state::floppy_formats) diff --git a/src/mame/drivers/peoplepc.cpp b/src/mame/drivers/peoplepc.cpp index 565fa2c21c3..153c78fdfd4 100644 --- a/src/mame/drivers/peoplepc.cpp +++ b/src/mame/drivers/peoplepc.cpp @@ -288,9 +288,9 @@ MACHINE_CONFIG_START(peoplepc_state::olypeopl) m_dmac->in_ior_cb<0>().set("upd765", FUNC(upd765a_device::mdma_r)); m_dmac->out_iow_cb<0>().set("upd765", FUNC(upd765a_device::mdma_w)); - MCFG_UPD765A_ADD("upd765", true, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("pic8259_0", pic8259_device, ir2_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(m_dmac, i8257_device, dreq0_w)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set("pic8259_0", FUNC(pic8259_device::ir2_w)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(i8257_device::dreq0_w)); MCFG_FLOPPY_DRIVE_ADD("upd765:0", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", peoplepc_floppies, "525qd", peoplepc_state::floppy_formats) diff --git a/src/mame/drivers/prof180x.cpp b/src/mame/drivers/prof180x.cpp index c4e7fe5c1bf..0ba1d386377 100644 --- a/src/mame/drivers/prof180x.cpp +++ b/src/mame/drivers/prof180x.cpp @@ -252,7 +252,7 @@ MACHINE_CONFIG_START(prof180x_state::prof180x) MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1) /* devices */ - MCFG_UPD765A_ADD(FDC9268_TAG, false, true) + UPD765A(config, FDC9268_TAG, false, true); MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":0", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":1", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FDC9268_TAG ":2", prof180x_floppies, "35dd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/prof80.cpp b/src/mame/drivers/prof80.cpp index e46451b2aba..11a596e0774 100644 --- a/src/mame/drivers/prof80.cpp +++ b/src/mame/drivers/prof80.cpp @@ -463,7 +463,7 @@ MACHINE_CONFIG_START(prof80_state::prof80) UPD1990A(config, m_rtc); // FDC - MCFG_UPD765A_ADD(UPD765_TAG, true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", prof80_floppies, "525qd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", prof80_floppies, nullptr, floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/pwrview.cpp b/src/mame/drivers/pwrview.cpp index 0e66b61a15e..4a8cb3ebe54 100644 --- a/src/mame/drivers/pwrview.cpp +++ b/src/mame/drivers/pwrview.cpp @@ -419,9 +419,9 @@ MACHINE_CONFIG_START(pwrview_state::pwrview) MCFG_PIT8253_CLK2(XTAL(16'000'000)/16) // floppy disk controller - MCFG_UPD765A_ADD("fdc", true, true) // Rockwell R7675P - //MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("pic1", pic8259_device, ir6_w)) - //MCFG_UPD765_DRQ_CALLBACK(WRITELINE("maincpu", i80186_cpu_device, drq1_w)) + UPD765A(config, "fdc", true, true); // Rockwell R7675P + //fdc.intrq_wr_callback().set("pic1", FUNC(pic8259_device::ir6_w)); + //fdc.drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w)); MCFG_FLOPPY_DRIVE_ADD("fdc:0", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", pwrview_floppies, "525dd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/pyl601.cpp b/src/mame/drivers/pyl601.cpp index e9a0102fa51..87c70ad0b2b 100644 --- a/src/mame/drivers/pyl601.cpp +++ b/src/mame/drivers/pyl601.cpp @@ -569,7 +569,7 @@ MACHINE_CONFIG_START(pyl601_state::pyl601) MCFG_MC6845_CHAR_WIDTH(8) /* ? */ MCFG_MC6845_UPDATE_ROW_CB(pyl601_state, pyl601_update_row) - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_fdc, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", pyl601_floppies, "525hd", pyl601_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", pyl601_floppies, "525hd", pyl601_state::floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list","pyl601") diff --git a/src/mame/drivers/sage2.cpp b/src/mame/drivers/sage2.cpp index b3a7ddd1eb6..66a8cdb0334 100644 --- a/src/mame/drivers/sage2.cpp +++ b/src/mame/drivers/sage2.cpp @@ -467,8 +467,8 @@ MACHINE_CONFIG_START(sage2_state::sage2) MCFG_RS232_RXD_HANDLER(WRITELINE(m_usart1, i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE(m_usart1, i8251_device, write_dsr)) - MCFG_UPD765A_ADD(UPD765_TAG, false, false) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, sage2_state, fdc_irq)) + UPD765A(config, m_fdc, false, false); + m_fdc->intrq_wr_callback().set(FUNC(sage2_state::fdc_irq)); MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, sage2_state, write_centronics_ack)) diff --git a/src/mame/drivers/sg1000.cpp b/src/mame/drivers/sg1000.cpp index d7a5a34579e..f9cd0d60758 100644 --- a/src/mame/drivers/sg1000.cpp +++ b/src/mame/drivers/sg1000.cpp @@ -649,7 +649,7 @@ MACHINE_CONFIG_START(sf7000_state::sf7000) MCFG_RS232_RXD_HANDLER(WRITELINE(UPD8251_TAG, i8251_device, write_rxd)) MCFG_RS232_DSR_HANDLER(WRITELINE(UPD8251_TAG, i8251_device, write_dsr)) - MCFG_UPD765A_ADD(UPD765_TAG, false, false) + UPD765A(config, m_fdc, false, false); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", sf7000_floppies, "3ssdd", sf7000_state::floppy_formats) MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp index 5acc987f1ca..15089e10516 100644 --- a/src/mame/drivers/specpls3.cpp +++ b/src/mame/drivers/specpls3.cpp @@ -389,7 +389,7 @@ MACHINE_CONFIG_START(spectrum_state::spectrum_plus3) MCFG_MACHINE_RESET_OVERRIDE(spectrum_state, spectrum_plus3 ) - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, m_upd765, true, true); MCFG_FLOPPY_DRIVE_ADD("upd765:0", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("upd765:1", specpls3_floppies, "3ssdd", floppy_image_device::default_floppy_formats) diff --git a/src/mame/drivers/sun3x.cpp b/src/mame/drivers/sun3x.cpp index f07021c3dc2..43010631bd1 100644 --- a/src/mame/drivers/sun3x.cpp +++ b/src/mame/drivers/sun3x.cpp @@ -625,7 +625,7 @@ MACHINE_CONFIG_START(sun3x_state::sun3_80) MCFG_DEVICE_ADD(ESP_TAG, NCR539X, 20000000/2) MCFG_LEGACY_SCSI_PORT("scsi") - MCFG_N82077AA_ADD("fdc", n82077aa_device::MODE_PS2) + N82077AA(config, m_fdc, n82077aa_device::MODE_PS2); MCFG_FLOPPY_DRIVE_ADD("fdc:0", sun_floppies, "35hd", sun3x_state::floppy_formats) // the timekeeper has no interrupt output, so 3/80 includes a dedicated timer circuit diff --git a/src/mame/drivers/tandy2k.cpp b/src/mame/drivers/tandy2k.cpp index 03b12ee5e0c..2f76b848870 100644 --- a/src/mame/drivers/tandy2k.cpp +++ b/src/mame/drivers/tandy2k.cpp @@ -851,11 +851,11 @@ MACHINE_CONFIG_START(tandy2k_state::tandy2k) MCFG_DEVICE_ADD(I8259A_1_TAG, PIC8259, 0) MCFG_PIC8259_OUT_INT_CB(WRITELINE(I80186_TAG, i80186_cpu_device, int1_w)) - MCFG_I8272A_ADD(I8272A_TAG, true) - downcast(device)->set_select_lines_connected(true); - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(I8259A_0_TAG, pic8259_device, ir4_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, tandy2k_state, fdc_drq_w)) - MCFG_UPD765_HDL_CALLBACK(WRITELINE(*this, tandy2k_state, fdc_hdl_w)) + I8272A(config, m_fdc, true); + m_fdc->set_select_lines_connected(true); + m_fdc->intrq_wr_callback().set(m_pic0, FUNC(pic8259_device::ir4_w)); + m_fdc->drq_wr_callback().set(FUNC(tandy2k_state::fdc_drq_w)); + m_fdc->hdl_wr_callback().set(FUNC(tandy2k_state::fdc_hdl_w)); MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":0", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(I8272A_TAG ":1", tandy2k_floppies, "525qd", tandy2k_state::floppy_formats) diff --git a/src/mame/drivers/tim011.cpp b/src/mame/drivers/tim011.cpp index cad70b3cab4..61d70ecccc7 100644 --- a/src/mame/drivers/tim011.cpp +++ b/src/mame/drivers/tim011.cpp @@ -140,8 +140,8 @@ MACHINE_CONFIG_START(tim011_state::tim011) // MCFG_DEVICE_ADD("keyboard",CDP1802, XTAL(1'750'000)) // CDP1802, unknown clock // FDC9266 location U43 XTAL(8'000'000) - MCFG_UPD765A_ADD(FDC9266_TAG, true, true) - MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ2)) + UPD765A(config, m_fdc, true, true); + m_fdc->intrq_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ2); /* floppy drives */ MCFG_FLOPPY_DRIVE_ADD(FDC9266_TAG ":0", tim011_floppies, "35dd", tim011_floppy_formats) diff --git a/src/mame/drivers/tv990.cpp b/src/mame/drivers/tv990.cpp index 98f9b93e127..ad60b8028ab 100644 --- a/src/mame/drivers/tv990.cpp +++ b/src/mame/drivers/tv990.cpp @@ -399,8 +399,8 @@ MACHINE_CONFIG_START(tv990_state::tv990) m_uart1->out_tx_callback().set(RS232B_TAG, FUNC(rs232_port_device::write_txd)); m_uart1->out_int_callback().set(FUNC(tv990_state::uart1_irq)); - MCFG_DEVICE_ADD(LPT_TAG, PC_LPT, 0) - MCFG_PC_LPT_IRQ_HANDLER(WRITELINE(*this, tv990_state, lpt_irq)) + pc_lpt_device &lpt(PC_LPT(config, LPT_TAG)); + lpt.irq_handler().set(FUNC(tv990_state::lpt_irq)); MCFG_DEVICE_ADD(RS232A_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(UART0_TAG, ns16450_device, rx_w)) diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index d77a2d3b48d..5126269d9c3 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -1326,9 +1326,9 @@ MACHINE_CONFIG_START(wangpc_state::wangpc) m_epci->dtr_handler().set(RS232_TAG, FUNC(rs232_port_device::write_dtr)); m_epci->txemt_dschg_handler().set(FUNC(wangpc_state::epci_irq_w)); - MCFG_UPD765A_ADD(UPD765_TAG, false, false) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, wangpc_state, fdc_irq)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE(*this, wangpc_state, fdc_drq)) + UPD765A(config, m_fdc, false, false); + m_fdc->intrq_wr_callback().set(FUNC(wangpc_state::fdc_irq)); + m_fdc->drq_wr_callback().set(FUNC(wangpc_state::fdc_drq)); MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats) diff --git a/src/mame/machine/ibm6580_fdc.cpp b/src/mame/machine/ibm6580_fdc.cpp index 14648266a53..ac9e2db3fd8 100644 --- a/src/mame/machine/ibm6580_fdc.cpp +++ b/src/mame/machine/ibm6580_fdc.cpp @@ -43,9 +43,9 @@ MACHINE_CONFIG_START(dw_fdc_device::device_add_mconfig) MCFG_DEVICE_ADD("ppi8255", I8255, 0) - MCFG_UPD765A_ADD("upd765", false, false) -// MCFG_UPD765_INTRQ_CALLBACK(WRITELINE("pic8259", pic8259_device, ir4_w)) -// MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dma8257", dma8257_device, XXX)) + UPD765A(config, "upd765", false, false); +// m_upd_fdc->intrq_wr_callback().set("pic8259", FUNC(pic8259_device::ir4_w)); +// m_upd_fdc->drq_wr_callback().set("dma8257", FUNC(dma8257_device::XXX)); // MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats) // MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats) MACHINE_CONFIG_END diff --git a/src/mame/machine/ioc2.cpp b/src/mame/machine/ioc2.cpp index f5313a244d2..bb96828ccef 100644 --- a/src/mame/machine/ioc2.cpp +++ b/src/mame/machine/ioc2.cpp @@ -68,7 +68,7 @@ MACHINE_CONFIG_START(ioc2_device::device_add_mconfig) MCFG_RS232_DCD_HANDLER(WRITELINE(m_scc, scc85230_device, dcdb_w)) MCFG_RS232_RXD_HANDLER(WRITELINE(m_scc, scc85230_device, rxb_w)) - PC_LPT(config, m_pi1, 0); + PC_LPT(config, m_pi1); KBDC8042(config, m_kbdc); m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2); diff --git a/src/mame/machine/isbc_208.cpp b/src/mame/machine/isbc_208.cpp index 3f2b2806ef0..22456234ad7 100644 --- a/src/mame/machine/isbc_208.cpp +++ b/src/mame/machine/isbc_208.cpp @@ -31,7 +31,8 @@ static void isbc_208_floppies(device_slot_interface &device) device.option_add("525dd", FLOPPY_525_DD); } -MACHINE_CONFIG_START(isbc_208_device::device_add_mconfig) +void isbc_208_device::device_add_mconfig(machine_config &config) +{ AM9517A(config, m_dmac, 8_MHz_XTAL/4); m_dmac->out_hreq_callback().set(FUNC(isbc_208_device::hreq_w)); m_dmac->out_eop_callback().set(FUNC(isbc_208_device::out_eop_w)); @@ -40,12 +41,12 @@ MACHINE_CONFIG_START(isbc_208_device::device_add_mconfig) m_dmac->in_ior_callback<0>().set(m_fdc, FUNC(i8272a_device::mdma_r)); m_dmac->out_iow_callback<0>().set(m_fdc, FUNC(i8272a_device::mdma_w)); - MCFG_I8272A_ADD(m_fdc, true) - MCFG_UPD765_INTRQ_CALLBACK(WRITELINE(*this, isbc_208_device, irq_w)) - MCFG_UPD765_DRQ_CALLBACK(WRITELINE("dmac", am9517a_device, dreq0_w)) + I8272A(config, m_fdc, true); + m_fdc->intrq_wr_callback().set(FUNC(isbc_208_device::irq_w)); + m_fdc->drq_wr_callback().set(m_dmac, FUNC(am9517a_device::dreq0_w)); FLOPPY_CONNECTOR(config, "fdc:0", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats); FLOPPY_CONNECTOR(config, "fdc:1", isbc_208_floppies, "525dd", isbc_208_device::floppy_formats); -MACHINE_CONFIG_END +} void isbc_208_device::map(address_map &map) {