diff options
Diffstat (limited to 'src/devices/bus/bbc/1mhzbus/ieee488.cpp')
-rw-r--r-- | src/devices/bus/bbc/1mhzbus/ieee488.cpp | 113 |
1 files changed, 54 insertions, 59 deletions
diff --git a/src/devices/bus/bbc/1mhzbus/ieee488.cpp b/src/devices/bus/bbc/1mhzbus/ieee488.cpp index 3aae6fe2f54..383ceef537b 100644 --- a/src/devices/bus/bbc/1mhzbus/ieee488.cpp +++ b/src/devices/bus/bbc/1mhzbus/ieee488.cpp @@ -54,8 +54,7 @@ ROM_END // device_add_mconfig - add device configuration //------------------------------------------------- -void bbc_ieee488_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(bbc_ieee488_device::device_add_mconfig) TMS9914(config, m_tms9914, 5_MHz_XTAL); m_tms9914->int_write_cb().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_tms9914->dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); @@ -68,25 +67,23 @@ void bbc_ieee488_device::device_add_mconfig(machine_config &config) m_tms9914->srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); m_tms9914->atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); m_tms9914->ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - - IEEE488(config, m_ieee); - m_ieee->eoi_callback().set(m_tms9914, FUNC(tms9914_device::eoi_w)); - m_ieee->dav_callback().set(m_tms9914, FUNC(tms9914_device::dav_w)); - m_ieee->nrfd_callback().set(m_tms9914, FUNC(tms9914_device::nrfd_w)); - m_ieee->ndac_callback().set(m_tms9914, FUNC(tms9914_device::ndac_w)); - m_ieee->ifc_callback().set(m_tms9914, FUNC(tms9914_device::ifc_w)); - m_ieee->srq_callback().set(m_tms9914, FUNC(tms9914_device::srq_w)); - m_ieee->atn_callback().set(m_tms9914, FUNC(tms9914_device::atn_w)); - m_ieee->ren_callback().set(m_tms9914, FUNC(tms9914_device::ren_w)); - IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); + MCFG_IEEE488_BUS_ADD() + MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_tms9914, tms9914_device, eoi_w)) + MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_tms9914, tms9914_device, dav_w)) + MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_tms9914, tms9914_device, nrfd_w)) + MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ndac_w)) + MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ifc_w)) + MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_tms9914, tms9914_device, srq_w)) + MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, atn_w)) + MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ren_w)) + MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) BBC_1MHZBUS_SLOT(config, m_1mhzbus, DERIVED_CLOCK(1, 1), bbc_1mhzbus_devices, nullptr); m_1mhzbus->irq_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_1mhzbus->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::nmi_w)); -} +MACHINE_CONFIG_END -void bbc_b488_device::device_add_mconfig(machine_config &config) -{ +MACHINE_CONFIG_START(bbc_b488_device::device_add_mconfig) TMS9914(config, m_tms9914, 5_MHz_XTAL); // TODO: verify clock m_tms9914->int_write_cb().set(DEVICE_SELF_OWNER, FUNC(bbc_1mhzbus_slot_device::irq_w)); m_tms9914->dio_read_cb().set(IEEE488_TAG, FUNC(ieee488_device::dio_r)); @@ -99,37 +96,35 @@ void bbc_b488_device::device_add_mconfig(machine_config &config) m_tms9914->srq_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_srq_w)); m_tms9914->atn_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_atn_w)); m_tms9914->ren_write_cb().set(IEEE488_TAG, FUNC(ieee488_device::host_ren_w)); - - IEEE488(config, m_ieee); - m_ieee->eoi_callback().set(m_tms9914, FUNC(tms9914_device::eoi_w)); - m_ieee->dav_callback().set(m_tms9914, FUNC(tms9914_device::dav_w)); - m_ieee->nrfd_callback().set(m_tms9914, FUNC(tms9914_device::nrfd_w)); - m_ieee->ndac_callback().set(m_tms9914, FUNC(tms9914_device::ndac_w)); - m_ieee->ifc_callback().set(m_tms9914, FUNC(tms9914_device::ifc_w)); - m_ieee->srq_callback().set(m_tms9914, FUNC(tms9914_device::srq_w)); - m_ieee->atn_callback().set(m_tms9914, FUNC(tms9914_device::atn_w)); - m_ieee->ren_callback().set(m_tms9914, FUNC(tms9914_device::ren_w)); - IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); + MCFG_IEEE488_BUS_ADD() + MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_tms9914, tms9914_device, eoi_w)) + MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_tms9914, tms9914_device, dav_w)) + MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_tms9914, tms9914_device, nrfd_w)) + MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ndac_w)) + MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ifc_w)) + MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_tms9914, tms9914_device, srq_w)) + MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, atn_w)) + MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_tms9914, tms9914_device, ren_w)) + MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) // TODO: LED's for ATN, TALK, and DATA -} +MACHINE_CONFIG_END -//void bbc_procyon_device::device_add_mconfig(machine_config &config) -//{ +//MACHINE_CONFIG_START(bbc_procyon_device::device_add_mconfig) // TODO: Implement MC68488 - //IEEE488(config, m_ieee); - //m_ieee->eoi_callback(m_mc68488, FUNC(mc68488_device::eoi_w)); - //m_ieee->dav_callback(m_mc68488, FUNC(mc68488_device::dav_w)); - //m_ieee->nrfd_callback(m_mc68488, FUNC(mc68488_device::nrfd_w)); - //m_ieee->ndac_callback(m_mc68488, FUNC(mc68488_device::ndac_w)); - //m_ieee->ifc_callback(m_mc68488, FUNC(mc68488_device::ifc_w)); - //m_ieee->srq_callback(m_mc68488, FUNC(mc68488_device::srq_w)); - //m_ieee->atn_callback(m_mc68488, FUNC(mc68488_device::atn_w)); - //m_ieee->ren_callback(m_mc68488, FUNC(mc68488_device::ren_w)); - //IEEE488_SLOT(config, "ieee_dev", 0, cbm_ieee488_devices, nullptr); + //MCFG_IEEE488_BUS_ADD() + //MCFG_IEEE488_EOI_CALLBACK(WRITELINE(m_mc68488, mc68488_device, eoi_w)) + //MCFG_IEEE488_DAV_CALLBACK(WRITELINE(m_mc68488, mc68488_device, dav_w)) + //MCFG_IEEE488_NRFD_CALLBACK(WRITELINE(m_mc68488, mc68488_device, nrfd_w)) + //MCFG_IEEE488_NDAC_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ndac_w)) + //MCFG_IEEE488_IFC_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ifc_w)) + //MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_mc68488, mc68488_device, srq_w)) + //MCFG_IEEE488_ATN_CALLBACK(WRITELINE(m_mc68488, mc68488_device, atn_w)) + //MCFG_IEEE488_REN_CALLBACK(WRITELINE(m_mc68488, mc68488_device, ren_w)) + //MCFG_IEEE488_SLOT_ADD("ieee_dev", 0, cbm_ieee488_devices, nullptr) // TODO: LED's for Bus Active, Byte Out, and Byte In -//} +//MACHINE_CONFIG_END //------------------------------------------------- // rom_region - device-specific ROM region @@ -197,82 +192,82 @@ void bbc_b488_device::device_start() // IMPLEMENTATION //************************************************************************** -uint8_t bbc_ieee488_device::fred_r(offs_t offset) +READ8_MEMBER(bbc_ieee488_device::fred_r) { uint8_t data = 0xff; if (offset >= 0x20 && offset < 0x28) { - data = m_tms9914->read(offset & 0x07); + data = m_tms9914->reg8_r(space, offset & 0x07); } - data &= m_1mhzbus->fred_r(offset); + data &= m_1mhzbus->fred_r(space, offset); return data; } -void bbc_ieee488_device::fred_w(offs_t offset, uint8_t data) +WRITE8_MEMBER(bbc_ieee488_device::fred_w) { if (offset >= 0x20 && offset < 0x28) { - m_tms9914->write(offset & 0x07, data); + m_tms9914->reg8_w(space, offset & 0x07, data); } - m_1mhzbus->fred_w(offset, data); + m_1mhzbus->fred_w(space, offset, data); } -uint8_t bbc_ieee488_device::jim_r(offs_t offset) +READ8_MEMBER(bbc_ieee488_device::jim_r) { uint8_t data = 0xff; - data &= m_1mhzbus->jim_r(offset); + data &= m_1mhzbus->jim_r(space, offset); return data; } -void bbc_ieee488_device::jim_w(offs_t offset, uint8_t data) +WRITE8_MEMBER(bbc_ieee488_device::jim_w) { - m_1mhzbus->jim_w(offset, data); + m_1mhzbus->jim_w(space, offset, data); } -uint8_t bbc_b488_device::fred_r(offs_t offset) +READ8_MEMBER(bbc_b488_device::fred_r) { uint8_t data = 0xff; if (offset >= 0x20 && offset < 0x28) { - data = m_tms9914->read(offset & 0x07); + data = m_tms9914->reg8_r(space, offset & 0x07); } return data; } -void bbc_b488_device::fred_w(offs_t offset, uint8_t data) +WRITE8_MEMBER(bbc_b488_device::fred_w) { if (offset >= 0x20 && offset < 0x28) { - m_tms9914->write(offset & 0x07, data); + m_tms9914->reg8_w(space, offset & 0x07, data); } } -//uint8_t bbc_procyon_device::fred_r(offs_t offset) +//READ8_MEMBER(bbc_procyon_device::fred_r) //{ //uint8_t data = 0xff; //if (offset >= 0x20 && offset < 0x28) //{ - // data = mc68488_device->read(offset & 0x07); + // data = mc68488_device->reg8_r(space, offset & 0x07); //} //return data; //} -//void bbc_procyon_device::fred_w(offs_t offset, uint8_t data) +//WRITE8_MEMBER(bbc_procyon_device::fred_w) //{ //if (offset >= 0x20 && offset < 0x28) //{ - // mc68488_device->write(offset & 0x07, data); + // mc68488_device->reg8_w(space, offset & 0x07, data); //} //} |