From 3bc91699263d56f2a3958483b34c09e174cd086b Mon Sep 17 00:00:00 2001 From: Robbbert Date: Wed, 21 Apr 2021 02:07:27 +1000 Subject: trs80: used array of floppy drives --- src/mame/drivers/lnw80.cpp | 8 ++++---- src/mame/drivers/radionic.cpp | 8 ++++---- src/mame/drivers/trs80.cpp | 8 ++++---- src/mame/drivers/trs80m3.cpp | 4 ++-- src/mame/includes/trs80.h | 14 ++++---------- src/mame/includes/trs80m3.h | 10 ++++------ src/mame/machine/trs80.cpp | 21 ++++++++++----------- src/mame/machine/trs80m3.cpp | 20 ++++++++++---------- 8 files changed, 42 insertions(+), 51 deletions(-) diff --git a/src/mame/drivers/lnw80.cpp b/src/mame/drivers/lnw80.cpp index efcc022b165..1c97fe4a70a 100644 --- a/src/mame/drivers/lnw80.cpp +++ b/src/mame/drivers/lnw80.cpp @@ -603,10 +603,10 @@ void lnw80_state::lnw80(machine_config &config) FD1771(config, m_fdc, 4_MHz_XTAL / 4); m_fdc->intrq_wr_callback().set(FUNC(lnw80_state::intrq_w)); - FLOPPY_CONNECTOR(config, "fdc:0", lnw80_floppies, "sssd", lnw80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", lnw80_floppies, "sssd", lnw80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:2", lnw80_floppies, nullptr, lnw80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:3", lnw80_floppies, nullptr, lnw80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], lnw80_floppies, "sssd", lnw80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], lnw80_floppies, "sssd", lnw80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[2], lnw80_floppies, nullptr, lnw80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[3], lnw80_floppies, nullptr, lnw80_state::floppy_formats).enable_sound(true); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7)); diff --git a/src/mame/drivers/radionic.cpp b/src/mame/drivers/radionic.cpp index 11b24ca81a0..eb84efa7a22 100644 --- a/src/mame/drivers/radionic.cpp +++ b/src/mame/drivers/radionic.cpp @@ -372,10 +372,10 @@ void radionic_state::radionic(machine_config &config) FD1771(config, m_fdc, 4_MHz_XTAL / 4); m_fdc->intrq_wr_callback().set(FUNC(radionic_state::intrq_w)); - FLOPPY_CONNECTOR(config, "fdc:0", radionic_floppies, "80t_qd", radionic_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", radionic_floppies, "80t_qd", radionic_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:2", radionic_floppies, nullptr, radionic_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:3", radionic_floppies, nullptr, radionic_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], radionic_floppies, "80t_qd", radionic_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], radionic_floppies, "80t_qd", radionic_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[2], radionic_floppies, nullptr, radionic_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[3], radionic_floppies, nullptr, radionic_state::floppy_formats).enable_sound(true); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7)); diff --git a/src/mame/drivers/trs80.cpp b/src/mame/drivers/trs80.cpp index 0ea4c8373a5..f7766def498 100644 --- a/src/mame/drivers/trs80.cpp +++ b/src/mame/drivers/trs80.cpp @@ -460,10 +460,10 @@ void trs80_state::model1(machine_config &config) // model I, level II FD1771(config, m_fdc, 4_MHz_XTAL / 4); m_fdc->intrq_wr_callback().set(FUNC(trs80_state::intrq_w)); - FLOPPY_CONNECTOR(config, "fdc:0", trs80_floppies, "80t_qd", trs80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", trs80_floppies, "80t_qd", trs80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:2", trs80_floppies, nullptr, trs80_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:3", trs80_floppies, nullptr, trs80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], trs80_floppies, "80t_qd", trs80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], trs80_floppies, "80t_qd", trs80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[2], trs80_floppies, nullptr, trs80_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[3], trs80_floppies, nullptr, trs80_state::floppy_formats).enable_sound(true); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7)); diff --git a/src/mame/drivers/trs80m3.cpp b/src/mame/drivers/trs80m3.cpp index 011bb2e8782..0e70d31d686 100644 --- a/src/mame/drivers/trs80m3.cpp +++ b/src/mame/drivers/trs80m3.cpp @@ -384,8 +384,8 @@ void trs80m3_state::model3(machine_config &config) m_fdc->drq_wr_callback().set(FUNC(trs80m3_state::drq_w)); // Internal drives - FLOPPY_CONNECTOR(config, "fdc:0", trs80_floppies, "40t_dd", trs80m3_state::floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "fdc:1", trs80_floppies, "40t_dd", trs80m3_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[0], trs80_floppies, "40t_dd", trs80m3_state::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], trs80_floppies, "40t_dd", trs80m3_state::floppy_formats).enable_sound(true); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7)); diff --git a/src/mame/includes/trs80.h b/src/mame/includes/trs80.h index 937acda5552..41e41b9f62b 100644 --- a/src/mame/includes/trs80.h +++ b/src/mame/includes/trs80.h @@ -41,15 +41,12 @@ public: , m_uart(*this, "uart") , m_uart_clock(*this, "uart_clock") , m_fdc(*this, "fdc") - , m_floppy0(*this, "fdc:0") - , m_floppy1(*this, "fdc:1") - , m_floppy2(*this, "fdc:2") - , m_floppy3(*this, "fdc:3") + , m_floppy(*this, "flop%u", 0U) , m_speaker(*this, "speaker") , m_cassette(*this, "cassette") , m_io_baud(*this, "BAUD") , m_io_config(*this, "CONFIG") - , m_io_keyboard(*this, "LINE%u", 0) + , m_io_keyboard(*this, "LINE%u", 0U) { } void sys80(machine_config &config); @@ -99,7 +96,7 @@ protected: double m_old_cassette_val; uint8_t m_size_store; uint16_t m_timeout; - floppy_image_device *m_floppy; + floppy_image_device *m_fdd; required_device m_maincpu; required_memory_region m_region_maincpu; required_region_ptr m_p_chargen; @@ -110,10 +107,7 @@ protected: optional_device m_uart; optional_device m_uart_clock; optional_device m_fdc; - optional_device m_floppy0; - optional_device m_floppy1; - optional_device m_floppy2; - optional_device m_floppy3; + optional_device_array m_floppy; required_device m_speaker; required_device m_cassette; optional_ioport m_io_baud; diff --git a/src/mame/includes/trs80m3.h b/src/mame/includes/trs80m3.h index 6c59507bb5e..f3e72c65024 100644 --- a/src/mame/includes/trs80m3.h +++ b/src/mame/includes/trs80m3.h @@ -41,12 +41,11 @@ public: , m_uart(*this, "uart") , m_brg(*this, "brg") , m_fdc(*this, "fdc") - , m_floppy0(*this, "fdc:0") - , m_floppy1(*this, "fdc:1") + , m_floppy(*this, "fdc%u", 0U) , m_speaker(*this, "speaker") , m_cassette(*this, "cassette") , m_io_config(*this, "CONFIG") - , m_io_keyboard(*this, "LINE%u", 0) + , m_io_keyboard(*this, "LINE%u", 0U) , m_mainram(*this, RAM_TAG) , m_m4_bank(*this, "m4_banked_mem") , m_m4p_bank(*this, "m4p_banked_mem") @@ -130,7 +129,7 @@ private: bool m_wait; bool m_drq_off; bool m_intrq_off; - floppy_image_device *m_floppy; + floppy_image_device *m_fdd; required_device m_maincpu; required_memory_region m_region_maincpu; required_region_ptr m_p_chargen; @@ -142,8 +141,7 @@ private: optional_device m_uart; optional_device m_brg; optional_device m_fdc; - optional_device m_floppy0; - optional_device m_floppy1; + optional_device_array m_floppy; required_device m_speaker; optional_device m_cassette; optional_ioport m_io_config; diff --git a/src/mame/machine/trs80.cpp b/src/mame/machine/trs80.cpp index 0d9ccc97f9e..27c8e016ec4 100644 --- a/src/mame/machine/trs80.cpp +++ b/src/mame/machine/trs80.cpp @@ -203,8 +203,8 @@ INTERRUPT_GEN_MEMBER(trs80_state::rtc_interrupt) // { // m_timeout--; // if (m_timeout == 0) -// if (m_floppy) -// m_floppy->mon_w(1); // motor off +// if (m_fdd) +// m_fdd->mon_w(1); // motor off // } } @@ -279,19 +279,18 @@ uint8_t trs80_state::irq_status_r() void trs80_state::motor_w(uint8_t data) { - m_floppy = nullptr; + m_fdd = nullptr; - if (BIT(data, 0)) m_floppy = m_floppy0->get_device(); - if (BIT(data, 1)) m_floppy = m_floppy1->get_device(); - if (BIT(data, 2)) m_floppy = m_floppy2->get_device(); - if (BIT(data, 3)) m_floppy = m_floppy3->get_device(); + for (u8 i = 0; i < 4; i++) + if (BIT(data, i)) + m_fdd = m_floppy[i]->get_device(); - m_fdc->set_floppy(m_floppy); + m_fdc->set_floppy(m_fdd); - if (m_floppy) + if (m_fdd) { - m_floppy->mon_w(0); - m_floppy->ss_w(BIT(data, 4)); + m_fdd->mon_w(0); + m_fdd->ss_w(BIT(data, 4)); m_timeout = 200; } diff --git a/src/mame/machine/trs80m3.cpp b/src/mame/machine/trs80m3.cpp index 3ab8e597985..85c81ba4d0e 100644 --- a/src/mame/machine/trs80m3.cpp +++ b/src/mame/machine/trs80m3.cpp @@ -389,17 +389,17 @@ void trs80m3_state::port_f4_w(uint8_t data) m_wait = false; } - m_floppy = nullptr; + m_fdd = nullptr; - if (BIT(data, 0)) m_floppy = m_floppy0->get_device(); - if (BIT(data, 1)) m_floppy = m_floppy1->get_device(); + if (BIT(data, 0)) m_fdd = m_floppy[0]->get_device(); + if (BIT(data, 1)) m_fdd = m_floppy[1]->get_device(); - m_fdc->set_floppy(m_floppy); + m_fdc->set_floppy(m_fdd); - if (m_floppy) + if (m_fdd) { - m_floppy->mon_w(0); - m_floppy->ss_w(BIT(data, 4)); + m_fdd->mon_w(0); + m_fdd->ss_w(BIT(data, 4)); m_timeout = 1600; } @@ -443,8 +443,8 @@ INTERRUPT_GEN_MEMBER(trs80m3_state::rtc_interrupt) { m_timeout--; if (m_timeout == 0) - if (m_floppy) - m_floppy->mon_w(1); // motor off + if (m_fdd) + m_fdd->mon_w(1); // motor off } // Also, if cpu is in wait, unlock it and trigger NMI // Don't, it breaks disk loading @@ -625,7 +625,7 @@ void trs80m3_state::machine_reset() if (m_model4 & 6) port_84_w(0); // 4 & 4P - switch in devices - m_floppy = nullptr; + m_fdd = nullptr; } -- cgit v1.2.3