From 95491792aa9547b8b16207ae205d897f03bdf6dc Mon Sep 17 00:00:00 2001 From: AJR Date: Sat, 19 Jan 2019 16:20:40 -0500 Subject: devices/bus: More floppy MCFG_ removal (nw) --- src/devices/bus/a2bus/a2diskiing.cpp | 29 +++++++++++++++-------------- src/devices/bus/a2bus/a2diskiing.h | 5 ++--- src/devices/bus/compucolor/floppy.cpp | 33 +++++++++++++++++++++------------ src/devices/bus/compucolor/floppy.h | 2 +- 4 files changed, 39 insertions(+), 30 deletions(-) diff --git a/src/devices/bus/a2bus/a2diskiing.cpp b/src/devices/bus/a2bus/a2diskiing.cpp index 28194db0421..1846b447a04 100644 --- a/src/devices/bus/a2bus/a2diskiing.cpp +++ b/src/devices/bus/a2bus/a2diskiing.cpp @@ -54,17 +54,19 @@ FLOPPY_FORMATS_END // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(diskiing_device::device_add_mconfig) - MCFG_DEVICE_ADD(WOZFDC_TAG, DISKII_FDC, 1021800*2) - MCFG_FLOPPY_DRIVE_ADD("0", a2_floppies, "525", diskiing_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("1", a2_floppies, "525", diskiing_device::floppy_formats) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(a2bus_diskiing13_device::device_add_mconfig) - MCFG_DEVICE_ADD(WOZFDC_TAG, DISKII_FDC, 1021800*2) - MCFG_FLOPPY_DRIVE_ADD("0", a2_floppies, "525", a2bus_diskiing13_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("1", a2_floppies, "525", a2bus_diskiing13_device::floppy_formats) -MACHINE_CONFIG_END +void diskiing_device::device_add_mconfig(machine_config &config) +{ + DISKII_FDC(config, m_wozfdc, 1021800*2); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, a2_floppies, "525", diskiing_device::floppy_formats); +} + +void a2bus_diskiing13_device::device_add_mconfig(machine_config &config) +{ + DISKII_FDC(config, m_wozfdc, 1021800*2); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, a2_floppies, "525", a2bus_diskiing13_device::floppy_formats); +} //------------------------------------------------- // rom_region - device-specific ROM region @@ -88,8 +90,7 @@ diskiing_device::diskiing_device(const machine_config &mconfig, device_type type device_t(mconfig, type, tag, owner, clock), device_a2bus_card_interface(mconfig, *this), m_wozfdc(*this, WOZFDC_TAG), - floppy0(*this, "0"), - floppy1(*this, "1"), + m_floppy(*this, "%u", 0U), m_rom(nullptr) { } @@ -115,7 +116,7 @@ void diskiing_device::device_start() void diskiing_device::device_reset() { - m_wozfdc->set_floppies(floppy0, floppy1); + m_wozfdc->set_floppies(m_floppy[0], m_floppy[1]); } /*------------------------------------------------- diff --git a/src/devices/bus/a2bus/a2diskiing.h b/src/devices/bus/a2bus/a2diskiing.h index e6476cb29a7..c30d49ebf0d 100644 --- a/src/devices/bus/a2bus/a2diskiing.h +++ b/src/devices/bus/a2bus/a2diskiing.h @@ -42,11 +42,10 @@ protected: virtual void write_c0nx(uint8_t offset, uint8_t data) override; virtual uint8_t read_cnxx(uint8_t offset) override; -private: required_device m_wozfdc; - required_device floppy0; - required_device floppy1; + required_device_array m_floppy; +private: const uint8_t *m_rom; DECLARE_FLOPPY_FORMATS( floppy_formats ); diff --git a/src/devices/bus/compucolor/floppy.cpp b/src/devices/bus/compucolor/floppy.cpp index f454a4f092a..fbe7912f6b6 100644 --- a/src/devices/bus/compucolor/floppy.cpp +++ b/src/devices/bus/compucolor/floppy.cpp @@ -52,9 +52,10 @@ static void compucolor_floppies(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(compucolor_floppy_device::device_add_mconfig) - MCFG_FLOPPY_DRIVE_ADD_FIXED("floppy", compucolor_floppies, "525sssd", compucolor_floppy_device::floppy_formats) -MACHINE_CONFIG_END +void compucolor_floppy_device::device_add_mconfig(machine_config &config) +{ + FLOPPY_CONNECTOR(config, m_floppy, compucolor_floppies, "525sssd", compucolor_floppy_device::floppy_formats); +} @@ -89,7 +90,7 @@ compucolor_floppy_port_device::compucolor_floppy_port_device(const machine_confi compucolor_floppy_device::compucolor_floppy_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, COMPUCOLOR_FLOPPY, tag, owner, clock) , device_compucolor_floppy_port_interface(mconfig, *this) - , m_floppy(*this, "floppy:525sssd") + , m_floppy(*this, "floppy") , m_rw(1) , m_stp(0) , m_sel(1) @@ -183,19 +184,23 @@ void compucolor_floppy_device::stepper_w(uint8_t data) { if (!m_sel) { + floppy_image_device *floppy = m_floppy->get_device(); + if (floppy == nullptr) + return; + if ((m_stp == 1 && data == 4) || (m_stp == 2 && data == 1) || (m_stp == 4 && data == 2)) { // step in - m_floppy->dir_w(1); - m_floppy->stp_w(0); - m_floppy->stp_w(1); + floppy->dir_w(1); + floppy->stp_w(0); + floppy->stp_w(1); } else if ((m_stp == 1 && data == 2) || (m_stp == 2 && data == 4) || (m_stp == 4 && data == 1)) { // step out - m_floppy->dir_w(0); - m_floppy->stp_w(0); - m_floppy->stp_w(1); + floppy->dir_w(0); + floppy->stp_w(0); + floppy->stp_w(1); } } @@ -209,7 +214,9 @@ void compucolor_floppy_device::stepper_w(uint8_t data) void compucolor_floppy_device::select_w(int state) { - m_floppy->mon_w(state); + floppy_image_device *floppy = m_floppy->get_device(); + if (floppy != nullptr) + floppy->mon_w(state); if (!m_sel && state) { @@ -226,8 +233,10 @@ void compucolor_floppy_device::select_w(int state) bool compucolor_floppy_device::read_bit() { + floppy_image_device *floppy = m_floppy->get_device(); + attotime when = machine().time(); - attotime edge = m_floppy->get_next_transition(when); + attotime edge = (floppy == nullptr) ? attotime::never : floppy->get_next_transition(when); attotime next = when + m_period; return (edge.is_never() || edge >= next) ? 0 : 1; diff --git a/src/devices/bus/compucolor/floppy.h b/src/devices/bus/compucolor/floppy.h index 63e9c78782a..a4e476eb152 100644 --- a/src/devices/bus/compucolor/floppy.h +++ b/src/devices/bus/compucolor/floppy.h @@ -91,7 +91,7 @@ protected: private: DECLARE_FLOPPY_FORMATS( floppy_formats ); - required_device m_floppy; + required_device m_floppy; bool read_bit(); void write_bit(bool bit); -- cgit v1.2.3