diff --git a/src/devices/machine/pdc.h b/src/devices/machine/pdc.h index 8f2b958ce2b..df205ae0b29 100644 --- a/src/devices/machine/pdc.h +++ b/src/devices/machine/pdc.h @@ -113,10 +113,5 @@ private: /* Device type */ DECLARE_DEVICE_TYPE(PDC, pdc_device) -/* MCFG defines */ -#define MCFG_PDC_R_CB(_devcb) \ - downcast(*device).m68k_r_callback(DEVCB_##_devcb); -#define MCFG_PDC_W_CB(_devcb) \ - downcast(*device).m68k_w_callback(DEVCB_##_devcb); #endif // MAME_MACHINE_PDC_H diff --git a/src/devices/machine/phi.h b/src/devices/machine/phi.h index ea3cad4c09a..c75fbe08427 100644 --- a/src/devices/machine/phi.h +++ b/src/devices/machine/phi.h @@ -11,47 +11,6 @@ #ifndef MAME_MACHINE_PHI_H #define MAME_MACHINE_PHI_H -// Set read and write callbacks to access DIO bus on IEEE-488 -#define MCFG_PHI_DIO_READWRITE_CB(_read , _write) \ - downcast(*device).set_dio_read_cb(DEVCB_##_read); \ - downcast(*device).set_dio_write_cb(DEVCB_##_write); - -// Set write callbacks to access uniline signals on IEEE-488 -#define MCFG_PHI_EOI_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_EOI , DEVCB_##_write); - -#define MCFG_PHI_DAV_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_DAV , DEVCB_##_write); - -#define MCFG_PHI_NRFD_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_NRFD , DEVCB_##_write); - -#define MCFG_PHI_NDAC_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_NDAC , DEVCB_##_write); - -#define MCFG_PHI_IFC_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_IFC , DEVCB_##_write); - -#define MCFG_PHI_SRQ_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_SRQ , DEVCB_##_write); - -#define MCFG_PHI_ATN_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_ATN , DEVCB_##_write); - -#define MCFG_PHI_REN_WRITE_CB(_write) \ - downcast(*device).set_488_signal_write_cb(phi_device::PHI_488_REN , DEVCB_##_write); - -// Set write callback for INT signal -#define MCFG_PHI_INT_WRITE_CB(_write) \ - downcast(*device).set_int_write_cb(DEVCB_##_write); - -// Set write callback for DMARQ signal -#define MCFG_PHI_DMARQ_WRITE_CB(_write) \ - downcast(*device).set_dmarq_write_cb(DEVCB_##_write); - -// Set read callback for SYS_CNTRL signal -#define MCFG_PHI_SYS_CNTRL_READ_CB(_read) \ - downcast(*device).set_sys_cntrl_read_cb(DEVCB_##_read); class phi_device : public device_t { @@ -72,18 +31,16 @@ public: PHI_488_SIGNAL_COUNT }; - template devcb_base& set_dio_read_cb(Object &&cb) { return m_dio_read_func.set_callback(std::forward(cb)); } - template devcb_base& set_dio_write_cb(Object &&cb) { return m_dio_write_func.set_callback(std::forward(cb)); } - template devcb_base& set_488_signal_write_cb(phi_488_signal_t signal , Object &&cb) { return m_signal_wr_fns[ signal ].set_callback(std::forward(cb)); } - template devcb_base& set_int_write_cb(Object &&cb) { return m_int_write_func.set_callback(std::forward(cb)); } - template devcb_base& set_dmarq_write_cb(Object &&cb) { return m_dmarq_write_func.set_callback(std::forward(cb)); } - template devcb_base &set_sys_cntrl_read_cb(Object &&cb) { return m_sys_cntrl_read_func.set_callback(std::forward(cb)); } - + // Set read and write callbacks to access DIO bus on IEEE-488 auto dio_read_cb() { return m_dio_read_func.bind(); } auto dio_write_cb() { return m_dio_write_func.bind(); } + // Set write callbacks to access uniline signals on IEEE-488 template auto signal_write_cb() { return m_signal_wr_fns[ Signal ].bind(); } + // Set write callback for INT signal auto int_write_cb() { return m_int_write_func.bind(); } + // Set write callback for DMARQ signal auto dmarq_write_cb() { return m_dmarq_write_func.bind(); } + // Set read callback for SYS_CNTRL signal auto sys_cntrl_read_cb() { return m_sys_cntrl_read_func.bind(); } DECLARE_WRITE_LINE_MEMBER(eoi_w); diff --git a/src/mame/drivers/hp64k.cpp b/src/mame/drivers/hp64k.cpp index 23139325f1d..9ae8ad5ee7c 100644 --- a/src/mame/drivers/hp64k.cpp +++ b/src/mame/drivers/hp64k.cpp @@ -1449,29 +1449,31 @@ MACHINE_CONFIG_START(hp64k_state::hp64k) m_rs232->dcd_handler().set(FUNC(hp64k_state::hp64k_rs232_dcd_w)); m_rs232->cts_handler().set(FUNC(hp64k_state::hp64k_rs232_cts_w)); - MCFG_DEVICE_ADD("phi", PHI, 0) - MCFG_PHI_INT_WRITE_CB(WRITELINE(*this, hp64k_state, hp64k_phi_int_w)) - MCFG_PHI_DMARQ_WRITE_CB(WRITELINE("cpu" , hp_5061_3011_cpu_device, halt_w)) - MCFG_PHI_SYS_CNTRL_READ_CB(READLINE(*this, hp64k_state, hp64k_phi_sys_ctrl_r)) - MCFG_PHI_DIO_READWRITE_CB(READ8(IEEE488_TAG, ieee488_device, dio_r), WRITE8(IEEE488_TAG, ieee488_device, host_dio_w)) - MCFG_PHI_EOI_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_eoi_w)) - MCFG_PHI_DAV_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_dav_w)) - MCFG_PHI_NRFD_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_nrfd_w)) - MCFG_PHI_NDAC_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ndac_w)) - MCFG_PHI_IFC_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ifc_w)) - MCFG_PHI_SRQ_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_srq_w)) - MCFG_PHI_ATN_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_atn_w)) - MCFG_PHI_REN_WRITE_CB(WRITELINE(IEEE488_TAG, ieee488_device, host_ren_w)) + PHI(config, m_phi, 0); + m_phi->int_write_cb().set(FUNC(hp64k_state::hp64k_phi_int_w)); + m_phi->dmarq_write_cb().set(m_cpu, FUNC(hp_5061_3011_cpu_device::halt_w)); + m_phi->sys_cntrl_read_cb().set(FUNC(hp64k_state::hp64k_phi_sys_ctrl_r)); + m_phi->dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); + m_phi->dio_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dio_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_eoi_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_dav_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_nrfd_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ndac_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ifc_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); + m_phi->signal_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); + MCFG_IEEE488_BUS_ADD() - MCFG_IEEE488_EOI_CALLBACK(WRITELINE("phi", phi_device, eoi_w)) - MCFG_IEEE488_DAV_CALLBACK(WRITELINE("phi", phi_device, dav_w)) - MCFG_IEEE488_NRFD_CALLBACK(WRITELINE("phi", phi_device, nrfd_w)) - MCFG_IEEE488_NDAC_CALLBACK(WRITELINE("phi", phi_device, ndac_w)) - MCFG_IEEE488_IFC_CALLBACK(WRITELINE("phi", phi_device, ifc_w)) - MCFG_IEEE488_SRQ_CALLBACK(WRITELINE("phi", phi_device, srq_w)) - MCFG_IEEE488_ATN_CALLBACK(WRITELINE("phi", phi_device, atn_w)) - MCFG_IEEE488_REN_CALLBACK(WRITELINE("phi", phi_device, ren_w)) - MCFG_IEEE488_DIO_CALLBACK(WRITE8("phi", phi_device , bus_dio_w)) + MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_phi, phi_device, eoi_w)) + MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_phi, phi_device, dav_w)) + MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_phi, phi_device, nrfd_w)) + MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_phi, phi_device, ndac_w)) + MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_phi, phi_device, ifc_w)) + MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_phi, phi_device, srq_w)) + MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_phi, phi_device, atn_w)) + MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_phi, phi_device, ren_w)) + MCFG_IEEE488_DIO_CALLBACK(WRITE8(m_phi, phi_device , bus_dio_w)) MCFG_IEEE488_SLOT_ADD("ieee_rem" , 0 , remote488_devices , nullptr) MACHINE_CONFIG_END diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp index 34df45d79e5..23d168c30fe 100644 --- a/src/mame/drivers/ql.cpp +++ b/src/mame/drivers/ql.cpp @@ -900,7 +900,7 @@ void ql_state::machine_reset() MACHINE_CONFIG_START(ql_state::ql) // basic machine hardware - MCFG_DEVICE_ADD(M68008_TAG, M68008, X1/2) + MCFG_DEVICE_ADD(m_maincpu, M68008, X1/2) MCFG_DEVICE_PROGRAM_MAP(ql_mem) MCFG_DEVICE_ADD(I8749_TAG, I8749, X4) @@ -925,27 +925,26 @@ MACHINE_CONFIG_START(ql_state::ql) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_DEVICE_ADD(ZX8301_TAG, ZX8301, X1, M68008_TAG) - MCFG_ZX8301_VSYNC_CALLBACK(WRITELINE(ZX8302_TAG, zx8302_device, vsync_w)) + ZX8301(config, m_zx8301, X1, m_maincpu); + m_zx8301->vsync_wr_callback().set(m_zx8302, FUNC(zx8302_device::vsync_w)); + m_zx8301->set_screen(SCREEN_TAG); - MCFG_VIDEO_SET_SCREEN(SCREEN_TAG) - - MCFG_DEVICE_ADD(ZX8302_TAG, ZX8302, X1) - MCFG_ZX8302_RTC_CLOCK(X2) - MCFG_ZX8302_OUT_IPL1L_CB(INPUTLINE(M68008_TAG, M68K_IRQ_2)) - MCFG_ZX8302_OUT_BAUDX4_CB(WRITELINE(*this, ql_state, ql_baudx4_w)) - MCFG_ZX8302_OUT_COMDATA_CB(WRITELINE(*this, ql_state, ql_comdata_w)) + ZX8302(config, m_zx8302, X1); + m_zx8302->set_rtc_clock(X2); + m_zx8302->out_ipl1l_callback().set_inputline(m_maincpu, M68K_IRQ_2); + m_zx8302->out_baudx4_callback().set(FUNC(ql_state::ql_baudx4_w)); + m_zx8302->out_comdata_callback().set(FUNC(ql_state::ql_comdata_w)); // TXD1 - MCFG_ZX8302_OUT_TXD2_CB(WRITELINE(RS232_B_TAG, rs232_port_device, write_txd)) + m_zx8302->out_txd2_callback().set(RS232_B_TAG, FUNC(rs232_port_device::write_txd)); // NETOUT - MCFG_ZX8302_OUT_MDSELCK_CB(WRITELINE(*this, ql_state, zx8302_mdselck_w)) - MCFG_ZX8302_OUT_MDSELD_CB(WRITELINE(MDV_1, microdrive_image_device, comms_in_w)) - MCFG_ZX8302_OUT_MDRDW_CB(WRITELINE(*this, ql_state, zx8302_mdrdw_w)) - MCFG_ZX8302_OUT_ERASE_CB(WRITELINE(*this, ql_state, zx8302_erase_w)) - MCFG_ZX8302_OUT_RAW1_CB(WRITELINE(*this, ql_state, zx8302_raw1_w)) - MCFG_ZX8302_IN_RAW1_CB(READLINE(*this, ql_state, zx8302_raw1_r)) - MCFG_ZX8302_OUT_RAW2_CB(WRITELINE(*this, ql_state, zx8302_raw2_w)) - MCFG_ZX8302_IN_RAW2_CB(READLINE(*this, ql_state, zx8302_raw2_r)) + m_zx8302->out_mdselck_callback().set(FUNC(ql_state::zx8302_mdselck_w)); + m_zx8302->out_mdseld_callback().set(m_mdv1, FUNC(microdrive_image_device::comms_in_w)); + m_zx8302->out_mdrdw_callback().set(FUNC(ql_state::zx8302_mdrdw_w)); + m_zx8302->out_erase_callback().set(FUNC(ql_state::zx8302_erase_w)); + m_zx8302->out_raw1_callback().set(FUNC(ql_state::zx8302_raw1_w)); + m_zx8302->in_raw1_callback().set(FUNC(ql_state::zx8302_raw1_r)); + m_zx8302->out_raw2_callback().set(FUNC(ql_state::zx8302_raw2_w)); + m_zx8302->in_raw2_callback().set(FUNC(ql_state::zx8302_raw2_r)); MCFG_MICRODRIVE_ADD(MDV_1) MCFG_MICRODRIVE_COMMS_OUT_CALLBACK(WRITELINE(MDV_2, microdrive_image_device, comms_in_w)) diff --git a/src/mame/machine/zx8302.h b/src/mame/machine/zx8302.h index 150a697c624..5502e2d2f64 100644 --- a/src/mame/machine/zx8302.h +++ b/src/mame/machine/zx8302.h @@ -37,56 +37,6 @@ #include "diserial.h" -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_ZX8302_RTC_CLOCK(_clk) \ - downcast(*device).set_rtc_clock(_clk); - -#define MCFG_ZX8302_OUT_IPL1L_CB(_devcb) \ - downcast(*device).set_out_ipl1l_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_BAUDX4_CB(_devcb) \ - downcast(*device).set_out_baudx4_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_COMDATA_CB(_devcb) \ - downcast(*device).set_out_comdata_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_TXD1_CB(_devcb) \ - downcast(*device).set_out_txd1_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_TXD2_CB(_devcb) \ - downcast(*device).set_out_txd2_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_NETOUT_CB(_devcb) \ - downcast(*device).set_out_netout_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_MDSELCK_CB(_devcb) \ - downcast(*device).set_out_mdselck_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_MDSELD_CB(_devcb) \ - downcast(*device).set_out_mdseld_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_MDRDW_CB(_devcb) \ - downcast(*device).set_out_mdrdw_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_ERASE_CB(_devcb) \ - downcast(*device).set_out_erase_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_RAW1_CB(_devcb) \ - downcast(*device).set_out_raw1_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_IN_RAW1_CB(_devcb) \ - downcast(*device).set_in_raw1_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_OUT_RAW2_CB(_devcb) \ - downcast(*device).set_out_raw2_callback(DEVCB_##_devcb); - -#define MCFG_ZX8302_IN_RAW2_CB(_devcb) \ - downcast(*device).set_in_raw2_callback(DEVCB_##_devcb); - - ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* @@ -102,20 +52,20 @@ public: void set_rtc_clock(int rtc_clock) { m_rtc_clock = rtc_clock; } void set_rtc_clock(const XTAL &rtc_clock) { set_rtc_clock(rtc_clock.value()); } - template devcb_base &set_out_ipl1l_callback(Object &&cb) { return m_out_ipl1l_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_baudx4_callback(Object &&cb) { return m_out_baudx4_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_comdata_callback(Object &&cb) { return m_out_comdata_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_txd1_callback(Object &&cb) { return m_out_txd1_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_txd2_callback(Object &&cb) { return m_out_txd2_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_netout_callback(Object &&cb) { return m_out_netout_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_mdselck_callback(Object &&cb) { return m_out_mdselck_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_mdseld_callback(Object &&cb) { return m_out_mdseld_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_mdrdw_callback(Object &&cb) { return m_out_mdrdw_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_erase_callback(Object &&cb) { return m_out_erase_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_raw1_callback(Object &&cb) { return m_out_raw1_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_raw1_callback(Object &&cb) { return m_in_raw1_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_raw2_callback(Object &&cb) { return m_out_raw2_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_raw2_callback(Object &&cb) { return m_in_raw2_cb.set_callback(std::forward(cb)); } + auto out_ipl1l_callback() { return m_out_ipl1l_cb.bind(); } + auto out_baudx4_callback() { return m_out_baudx4_cb.bind(); } + auto out_comdata_callback() { return m_out_comdata_cb.bind(); } + auto out_txd1_callback() { return m_out_txd1_cb.bind(); } + auto out_txd2_callback() { return m_out_txd2_cb.bind(); } + auto out_netout_callback() { return m_out_netout_cb.bind(); } + auto out_mdselck_callback() { return m_out_mdselck_cb.bind(); } + auto out_mdseld_callback() { return m_out_mdseld_cb.bind(); } + auto out_mdrdw_callback() { return m_out_mdrdw_cb.bind(); } + auto out_erase_callback() { return m_out_erase_cb.bind(); } + auto out_raw1_callback() { return m_out_raw1_cb.bind(); } + auto in_raw1_callback() { return m_in_raw1_cb.bind(); } + auto out_raw2_callback() { return m_out_raw2_cb.bind(); } + auto in_raw2_callback() { return m_in_raw2_cb.bind(); } DECLARE_READ8_MEMBER( rtc_r ); DECLARE_WRITE8_MEMBER( rtc_w ); diff --git a/src/mame/video/zx8301.h b/src/mame/video/zx8301.h index 1d3b64f22d8..568f3303b6b 100644 --- a/src/mame/video/zx8301.h +++ b/src/mame/video/zx8301.h @@ -35,17 +35,6 @@ #pragma once - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_ZX8301_VSYNC_CALLBACK(_write) \ - downcast(*device).set_vsync_wr_callback(DEVCB_##_write); - - - ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* @@ -66,7 +55,7 @@ public: zx8301_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_vsync_wr_callback(Object &&cb) { return m_write_vsync.set_callback(std::forward(cb)); } + auto vsync_wr_callback() { return m_write_vsync.bind(); } DECLARE_WRITE8_MEMBER( control_w ); DECLARE_READ8_MEMBER( data_r );