diff options
-rw-r--r-- | src/emu/machine/ds75161a.c | 132 | ||||
-rw-r--r-- | src/emu/machine/ds75161a.h | 135 | ||||
-rw-r--r-- | src/mess/drivers/cbm2.c | 79 |
3 files changed, 188 insertions, 158 deletions
diff --git a/src/emu/machine/ds75161a.c b/src/emu/machine/ds75161a.c index 50fc3321d6c..70d32d9ead6 100644 --- a/src/emu/machine/ds75161a.c +++ b/src/emu/machine/ds75161a.c @@ -31,6 +31,22 @@ const device_type DS75161A = &device_creator<ds75161a_device>; ds75161a_device::ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, DS75161A, "DS75161A", tag, owner, clock, "ds75161a", __FILE__), + m_in_ren_cb(*this), + m_in_ifc_cb(*this), + m_in_ndac_cb(*this), + m_in_nrfd_cb(*this), + m_in_dav_cb(*this), + m_in_eoi_cb(*this), + m_in_atn_cb(*this), + m_in_srq_cb(*this), + m_out_ren_cb(*this), + m_out_ifc_cb(*this), + m_out_ndac_cb(*this), + m_out_nrfd_cb(*this), + m_out_dav_cb(*this), + m_out_eoi_cb(*this), + m_out_atn_cb(*this), + m_out_srq_cb(*this), m_ren(1), m_ifc(1), m_ndac(1), @@ -44,44 +60,6 @@ ds75161a_device::ds75161a_device(const machine_config &mconfig, const char *tag, { } - -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void ds75161a_device::device_config_complete() -{ - // inherit a copy of the static data - const ds75161a_interface *intf = reinterpret_cast<const ds75161a_interface *>(static_config()); - if (intf != NULL) - *static_cast<ds75161a_interface *>(this) = *intf; - - // or initialize to defaults if none provided - else - { - memset(&m_in_ren_cb, 0, sizeof(m_in_ren_cb)); - memset(&m_in_ifc_cb, 0, sizeof(m_in_ifc_cb)); - memset(&m_in_ndac_cb, 0, sizeof(m_in_ndac_cb)); - memset(&m_in_nrfd_cb, 0, sizeof(m_in_nrfd_cb)); - memset(&m_in_dav_cb, 0, sizeof(m_in_dav_cb)); - memset(&m_in_eoi_cb, 0, sizeof(m_in_eoi_cb)); - memset(&m_in_atn_cb, 0, sizeof(m_in_atn_cb)); - memset(&m_in_srq_cb, 0, sizeof(m_in_srq_cb)); - - memset(&m_out_ren_cb, 0, sizeof(m_out_ren_cb)); - memset(&m_out_ifc_cb, 0, sizeof(m_out_ifc_cb)); - memset(&m_out_ndac_cb, 0, sizeof(m_out_ndac_cb)); - memset(&m_out_nrfd_cb, 0, sizeof(m_out_nrfd_cb)); - memset(&m_out_dav_cb, 0, sizeof(m_out_dav_cb)); - memset(&m_out_eoi_cb, 0, sizeof(m_out_eoi_cb)); - memset(&m_out_atn_cb, 0, sizeof(m_out_atn_cb)); - memset(&m_out_srq_cb, 0, sizeof(m_out_srq_cb)); - } -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -89,23 +67,23 @@ void ds75161a_device::device_config_complete() void ds75161a_device::device_start() { // resolve callbacks - m_in_ren_func.resolve(m_in_ren_cb, *this); - m_in_ifc_func.resolve(m_in_ifc_cb, *this); - m_in_ndac_func.resolve(m_in_ndac_cb, *this); - m_in_nrfd_func.resolve(m_in_nrfd_cb, *this); - m_in_dav_func.resolve(m_in_dav_cb, *this); - m_in_eoi_func.resolve(m_in_eoi_cb, *this); - m_in_atn_func.resolve(m_in_atn_cb, *this); - m_in_srq_func.resolve(m_in_srq_cb, *this); - - m_out_ren_func.resolve(m_out_ren_cb, *this); - m_out_ifc_func.resolve(m_out_ifc_cb, *this); - m_out_ndac_func.resolve(m_out_ndac_cb, *this); - m_out_nrfd_func.resolve(m_out_nrfd_cb, *this); - m_out_dav_func.resolve(m_out_dav_cb, *this); - m_out_eoi_func.resolve(m_out_eoi_cb, *this); - m_out_atn_func.resolve(m_out_atn_cb, *this); - m_out_srq_func.resolve(m_out_srq_cb, *this); + m_in_ren_cb.resolve_safe(0); + m_in_ifc_cb.resolve_safe(0); + m_in_ndac_cb.resolve_safe(0); + m_in_nrfd_cb.resolve_safe(0); + m_in_dav_cb.resolve_safe(0); + m_in_eoi_cb.resolve_safe(0); + m_in_atn_cb.resolve_safe(0); + m_in_srq_cb.resolve_safe(0); + + m_out_ren_cb.resolve_safe(); + m_out_ifc_cb.resolve_safe(); + m_out_ndac_cb.resolve_safe(); + m_out_nrfd_cb.resolve_safe(); + m_out_dav_cb.resolve_safe(); + m_out_eoi_cb.resolve_safe(); + m_out_atn_cb.resolve_safe(); + m_out_srq_cb.resolve_safe(); // register for state saving save_item(NAME(m_ren)); @@ -127,19 +105,19 @@ void ds75161a_device::device_start() void ds75161a_device::update_signals() { - m_out_ren_func(m_dc ? 1 : m_ren); - m_out_ifc_func(m_dc ? 1 : m_ifc); - m_out_ndac_func(m_te ? 1 : m_ndac); - m_out_nrfd_func(m_te ? 1 : m_nrfd); - m_out_dav_func(m_te ? m_dav : 1); - m_out_atn_func(m_dc ? 1 : m_atn); - m_out_srq_func(m_dc ? m_srq : 1 ); - - int atn = m_in_atn_func(); - - if (m_te && atn) m_out_eoi_func(m_eoi); - else if (!m_dc && !atn) m_out_eoi_func(m_eoi); - else m_out_eoi_func(1); + m_out_ren_cb(m_dc ? 1 : m_ren); + m_out_ifc_cb(m_dc ? 1 : m_ifc); + m_out_ndac_cb(m_te ? 1 : m_ndac); + m_out_nrfd_cb(m_te ? 1 : m_nrfd); + m_out_dav_cb(m_te ? m_dav : 1); + m_out_atn_cb(m_dc ? 1 : m_atn); + m_out_srq_cb(m_dc ? m_srq : 1 ); + + int atn = m_in_atn_cb(); + + if (m_te && atn) m_out_eoi_cb(m_eoi); + else if (!m_dc && !atn) m_out_eoi_cb(m_eoi); + else m_out_eoi_cb(1); } @@ -179,7 +157,7 @@ WRITE_LINE_MEMBER( ds75161a_device::dc_w ) READ_LINE_MEMBER( ds75161a_device::ren_r ) { - return m_dc ? m_in_ren_func() : 0; + return m_dc ? m_in_ren_cb() : 0; } @@ -189,7 +167,7 @@ READ_LINE_MEMBER( ds75161a_device::ren_r ) READ_LINE_MEMBER( ds75161a_device::ifc_r ) { - return m_dc ? m_in_ifc_func() : 0; + return m_dc ? m_in_ifc_cb() : 0; } @@ -199,7 +177,7 @@ READ_LINE_MEMBER( ds75161a_device::ifc_r ) READ_LINE_MEMBER( ds75161a_device::ndac_r ) { - return m_te ? m_in_ndac_func() : 0; + return m_te ? m_in_ndac_cb() : 0; } @@ -209,7 +187,7 @@ READ_LINE_MEMBER( ds75161a_device::ndac_r ) READ_LINE_MEMBER( ds75161a_device::nrfd_r ) { - return m_te ? m_in_nrfd_func() : 0; + return m_te ? m_in_nrfd_cb() : 0; } @@ -219,7 +197,7 @@ READ_LINE_MEMBER( ds75161a_device::nrfd_r ) READ_LINE_MEMBER( ds75161a_device::dav_r ) { - return m_te ? 0 : m_in_dav_func(); + return m_te ? 0 : m_in_dav_cb(); } @@ -229,8 +207,8 @@ READ_LINE_MEMBER( ds75161a_device::dav_r ) READ_LINE_MEMBER( ds75161a_device::eoi_r ) { - int atn = m_in_atn_func(); - int eoi = m_in_eoi_func(); + int atn = m_in_atn_cb(); + int eoi = m_in_eoi_cb(); if (!m_te && atn) return eoi; else if (m_dc && !atn) return eoi; @@ -244,7 +222,7 @@ READ_LINE_MEMBER( ds75161a_device::eoi_r ) READ_LINE_MEMBER( ds75161a_device::atn_r ) { - return m_dc ? m_in_atn_func() : 0; + return m_dc ? m_in_atn_cb() : 0; } @@ -254,7 +232,7 @@ READ_LINE_MEMBER( ds75161a_device::atn_r ) READ_LINE_MEMBER( ds75161a_device::srq_r ) { - return m_dc ? 0 : m_in_srq_func(); + return m_dc ? 0 : m_in_srq_cb(); } diff --git a/src/emu/machine/ds75161a.h b/src/emu/machine/ds75161a.h index 2a24065b39a..bd0e3df7142 100644 --- a/src/emu/machine/ds75161a.h +++ b/src/emu/machine/ds75161a.h @@ -35,52 +35,82 @@ // INTERFACE CONFIGURATION MACROS ///************************************************************************* -#define MCFG_DS75161A_ADD(_tag, _config) \ - MCFG_DEVICE_ADD(_tag, DS75161A, 0) \ - MCFG_DEVICE_CONFIG(_config) - - -#define DS75161A_INTERFACE(name) \ - const ds75161a_interface (name) = - - +#define MCFG_DS75161A_IN_REN_CB(_devcb) \ + devcb = &ds75161a_device::set_in_ren_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_IFC_CB(_devcb) \ + devcb = &ds75161a_device::set_in_ifc_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_NDAC_CB(_devcb) \ + devcb = &ds75161a_device::set_in_ndac_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_NRFD_CB(_devcb) \ + devcb = &ds75161a_device::set_in_nrfd_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_DAV_CB(_devcb) \ + devcb = &ds75161a_device::set_in_dav_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_EOI_CB(_devcb) \ + devcb = &ds75161a_device::set_in_eoi_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_ATN_CB(_devcb) \ + devcb = &ds75161a_device::set_in_atn_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_IN_SRQ_CB(_devcb) \ + devcb = &ds75161a_device::set_in_srq_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_REN_CB(_devcb) \ + devcb = &ds75161a_device::set_out_ren_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_IFC_CB(_devcb) \ + devcb = &ds75161a_device::set_out_ifc_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_NDAC_CB(_devcb) \ + devcb = &ds75161a_device::set_out_ndac_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_NRFD_CB(_devcb) \ + devcb = &ds75161a_device::set_out_nrfd_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_DAV_CB(_devcb) \ + devcb = &ds75161a_device::set_out_dav_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_EOI_CB(_devcb) \ + devcb = &ds75161a_device::set_out_eoi_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_ATN_CB(_devcb) \ + devcb = &ds75161a_device::set_out_atn_callback(*device, DEVCB2_##_devcb); + +#define MCFG_DS75161A_OUT_SRQ_CB(_devcb) \ + devcb = &ds75161a_device::set_out_srq_callback(*device, DEVCB2_##_devcb); ///************************************************************************* // TYPE DEFINITIONS ///************************************************************************* -// ======================> ds75161a_interface - -struct ds75161a_interface -{ - devcb_read_line m_in_ren_cb; - devcb_read_line m_in_ifc_cb; - devcb_read_line m_in_ndac_cb; - devcb_read_line m_in_nrfd_cb; - devcb_read_line m_in_dav_cb; - devcb_read_line m_in_eoi_cb; - devcb_read_line m_in_atn_cb; - devcb_read_line m_in_srq_cb; - - devcb_write_line m_out_ren_cb; - devcb_write_line m_out_ifc_cb; - devcb_write_line m_out_ndac_cb; - devcb_write_line m_out_nrfd_cb; - devcb_write_line m_out_dav_cb; - devcb_write_line m_out_eoi_cb; - devcb_write_line m_out_atn_cb; - devcb_write_line m_out_srq_cb; -}; - - // ======================> ds75161a_device -class ds75161a_device : public device_t, - public ds75161a_interface +class ds75161a_device : public device_t { public: // construction/destruction ds75161a_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + template<class _Object> static devcb2_base &set_in_ren_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ren_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ifc_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ifc_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_ndac_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_ndac_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_nrfd_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_nrfd_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_dav_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_dav_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_eoi_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_eoi_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_atn_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_atn_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_in_srq_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_in_srq_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_ren_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ren_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_ifc_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ifc_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_ndac_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_ndac_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_nrfd_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_nrfd_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_dav_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_dav_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_eoi_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_eoi_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_atn_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_atn_cb.set_callback(object); } + template<class _Object> static devcb2_base &set_out_srq_callback(device_t &device, _Object object) { return downcast<ds75161a_device &>(device).m_out_srq_cb.set_callback(object); } DECLARE_WRITE_LINE_MEMBER( te_w ); DECLARE_WRITE_LINE_MEMBER( dc_w ); @@ -105,29 +135,28 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); private: void update_signals(); - devcb_resolved_read_line m_in_ren_func; - devcb_resolved_read_line m_in_ifc_func; - devcb_resolved_read_line m_in_ndac_func; - devcb_resolved_read_line m_in_nrfd_func; - devcb_resolved_read_line m_in_dav_func; - devcb_resolved_read_line m_in_eoi_func; - devcb_resolved_read_line m_in_atn_func; - devcb_resolved_read_line m_in_srq_func; - - devcb_resolved_write_line m_out_ren_func; - devcb_resolved_write_line m_out_ifc_func; - devcb_resolved_write_line m_out_ndac_func; - devcb_resolved_write_line m_out_nrfd_func; - devcb_resolved_write_line m_out_dav_func; - devcb_resolved_write_line m_out_eoi_func; - devcb_resolved_write_line m_out_atn_func; - devcb_resolved_write_line m_out_srq_func; + devcb2_read_line m_in_ren_cb; + devcb2_read_line m_in_ifc_cb; + devcb2_read_line m_in_ndac_cb; + devcb2_read_line m_in_nrfd_cb; + devcb2_read_line m_in_dav_cb; + devcb2_read_line m_in_eoi_cb; + devcb2_read_line m_in_atn_cb; + devcb2_read_line m_in_srq_cb; + + devcb2_write_line m_out_ren_cb; + devcb2_write_line m_out_ifc_cb; + devcb2_write_line m_out_ndac_cb; + devcb2_write_line m_out_nrfd_cb; + devcb2_write_line m_out_dav_cb; + devcb2_write_line m_out_eoi_cb; + devcb2_write_line m_out_atn_cb; + devcb2_write_line m_out_srq_cb; int m_ren; int m_ifc; diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index afbc342a928..01be13e5c22 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1657,31 +1657,6 @@ READ8_MEMBER( cbm2_state::cia_pb_r ) //------------------------------------------------- -// DS75161A_INTERFACE( ds75161a_intf ) -//------------------------------------------------- - -static DS75161A_INTERFACE( ds75161a_intf ) -{ - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ren_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ifc_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ndac_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, nrfd_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, dav_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, eoi_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, atn_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, srq_r), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ren_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ifc_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, ndac_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, nrfd_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, dav_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, eoi_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, atn_w), - DEVCB_DEVICE_LINE_MEMBER(IEEE488_TAG, ieee488_device, srq_w) -}; - - -//------------------------------------------------- // pic8259_interface ext_pic_intf //------------------------------------------------- @@ -2177,7 +2152,23 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state ) MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) - MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) + MCFG_DEVICE_ADD(DS75161A_TAG, DS75161A, 0) + MCFG_DS75161A_IN_REN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ren_r)) + MCFG_DS75161A_IN_IFC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ifc_r)) + MCFG_DS75161A_IN_NDAC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ndac_r)) + MCFG_DS75161A_IN_NRFD_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, nrfd_r)) + MCFG_DS75161A_IN_DAV_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, dav_r)) + MCFG_DS75161A_IN_EOI_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, eoi_r)) + MCFG_DS75161A_IN_ATN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, atn_r)) + MCFG_DS75161A_IN_SRQ_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, srq_r)) + MCFG_DS75161A_OUT_REN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ren_w)) + MCFG_DS75161A_OUT_IFC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ifc_w)) + MCFG_DS75161A_OUT_NDAC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ndac_w)) + MCFG_DS75161A_OUT_NRFD_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, nrfd_w)) + MCFG_DS75161A_OUT_DAV_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, dav_w)) + MCFG_DS75161A_OUT_EOI_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, eoi_w)) + MCFG_DS75161A_OUT_ATN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, atn_w)) + MCFG_DS75161A_OUT_SRQ_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, srq_w)) MCFG_CBM_IEEE488_ADD("c8050") MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) @@ -2243,7 +2234,23 @@ static MACHINE_CONFIG_START( p500_pal, p500_state ) MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) - MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) + MCFG_DEVICE_ADD(DS75161A_TAG, DS75161A, 0) + MCFG_DS75161A_IN_REN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ren_r)) + MCFG_DS75161A_IN_IFC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ifc_r)) + MCFG_DS75161A_IN_NDAC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ndac_r)) + MCFG_DS75161A_IN_NRFD_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, nrfd_r)) + MCFG_DS75161A_IN_DAV_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, dav_r)) + MCFG_DS75161A_IN_EOI_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, eoi_r)) + MCFG_DS75161A_IN_ATN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, atn_r)) + MCFG_DS75161A_IN_SRQ_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, srq_r)) + MCFG_DS75161A_OUT_REN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ren_w)) + MCFG_DS75161A_OUT_IFC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ifc_w)) + MCFG_DS75161A_OUT_NDAC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ndac_w)) + MCFG_DS75161A_OUT_NRFD_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, nrfd_w)) + MCFG_DS75161A_OUT_DAV_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, dav_w)) + MCFG_DS75161A_OUT_EOI_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, eoi_w)) + MCFG_DS75161A_OUT_ATN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, atn_w)) + MCFG_DS75161A_OUT_SRQ_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, srq_w)) MCFG_CBM_IEEE488_ADD("c8050") MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) @@ -2318,7 +2325,23 @@ static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state ) MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w)) MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) - MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) + MCFG_DEVICE_ADD(DS75161A_TAG, DS75161A, 0) + MCFG_DS75161A_IN_REN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ren_r)) + MCFG_DS75161A_IN_IFC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ifc_r)) + MCFG_DS75161A_IN_NDAC_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, ndac_r)) + MCFG_DS75161A_IN_NRFD_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, nrfd_r)) + MCFG_DS75161A_IN_DAV_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, dav_r)) + MCFG_DS75161A_IN_EOI_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, eoi_r)) + MCFG_DS75161A_IN_ATN_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, atn_r)) + MCFG_DS75161A_IN_SRQ_CB(DEVREADLINE(IEEE488_TAG, ieee488_device, srq_r)) + MCFG_DS75161A_OUT_REN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ren_w)) + MCFG_DS75161A_OUT_IFC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ifc_w)) + MCFG_DS75161A_OUT_NDAC_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, ndac_w)) + MCFG_DS75161A_OUT_NRFD_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, nrfd_w)) + MCFG_DS75161A_OUT_DAV_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, dav_w)) + MCFG_DS75161A_OUT_EOI_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, eoi_w)) + MCFG_DS75161A_OUT_ATN_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, atn_w)) + MCFG_DS75161A_OUT_SRQ_CB(DEVWRITELINE(IEEE488_TAG, ieee488_device, srq_w)) MCFG_CBM_IEEE488_ADD("c8050") MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL,DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) |