diff options
Diffstat (limited to 'src/devices/bus/abcbus/lux21046.cpp')
-rw-r--r-- | src/devices/bus/abcbus/lux21046.cpp | 54 |
1 files changed, 30 insertions, 24 deletions
diff --git a/src/devices/bus/abcbus/lux21046.cpp b/src/devices/bus/abcbus/lux21046.cpp index 27a6cbf0bcb..facfeb83c7d 100644 --- a/src/devices/bus/abcbus/lux21046.cpp +++ b/src/devices/bus/abcbus/lux21046.cpp @@ -77,6 +77,9 @@ Notes: #include "emu.h" #include "lux21046.h" +#include "formats/abc800_dsk.h" +#include "formats/abc800i_dsk.h" + //************************************************************************** @@ -226,7 +229,7 @@ void luxor_55_21046_device::luxor_55_21046_io(address_map &map) */ -WRITE_LINE_MEMBER( luxor_55_21046_device::dma_int_w ) +void luxor_55_21046_device::dma_int_w(int state) { m_dma_irq = state; @@ -257,6 +260,7 @@ void luxor_55_21046_device::io_write_byte(offs_t offset, uint8_t data) void luxor_55_21046_device::floppy_formats(format_registration &fr) { fr.add_mfm_containers(); + fr.add(FLOPPY_ABC800I_FORMAT); fr.add(FLOPPY_ABC800_FORMAT); } @@ -270,7 +274,7 @@ static void abc_floppies(device_slot_interface &device) device.option_add("8dsdd", FLOPPY_8_DSDD); } -WRITE_LINE_MEMBER( luxor_55_21046_device::fdc_intrq_w ) +void luxor_55_21046_device::fdc_intrq_w(int state) { m_fdc_irq = state; @@ -317,36 +321,36 @@ void luxor_55_21046_device::device_add_mconfig(machine_config & config) void abc830_device::device_add_mconfig(machine_config &config) { luxor_55_21046_device::device_add_mconfig(config); - FLOPPY_CONNECTOR(config, m_floppy0, abc_floppies, "525ssdd", luxor_55_21046_device::floppy_formats); - FLOPPY_CONNECTOR(config, m_floppy1, abc_floppies, "525ssdd", luxor_55_21046_device::floppy_formats); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, abc_floppies, "525ssdd", luxor_55_21046_device::floppy_formats).enable_sound(true); } void abc832_device::device_add_mconfig(machine_config &config) { luxor_55_21046_device::device_add_mconfig(config); - FLOPPY_CONNECTOR(config, m_floppy0, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats); - FLOPPY_CONNECTOR(config, m_floppy1, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats).enable_sound(true); } void abc834_device::device_add_mconfig(machine_config &config) { luxor_55_21046_device::device_add_mconfig(config); - FLOPPY_CONNECTOR(config, m_floppy0, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats); - FLOPPY_CONNECTOR(config, m_floppy1, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats).enable_sound(true); } void abc838_device::device_add_mconfig(machine_config &config) { luxor_55_21046_device::device_add_mconfig(config); - FLOPPY_CONNECTOR(config, m_floppy0, abc_floppies, "8dsdd", luxor_55_21046_device::floppy_formats); - FLOPPY_CONNECTOR(config, m_floppy1, abc_floppies, "8dsdd", luxor_55_21046_device::floppy_formats); + for (auto &floppy : m_floppy) + FLOPPY_CONNECTOR(config, floppy, abc_floppies, "8dsdd", luxor_55_21046_device::floppy_formats).enable_sound(true); } void abc850_floppy_device::device_add_mconfig(machine_config &config) { luxor_55_21046_device::device_add_mconfig(config); - FLOPPY_CONNECTOR(config, m_floppy0, abc_floppies, "525qd", luxor_55_21046_device::floppy_formats); - FLOPPY_CONNECTOR(config, m_floppy1, abc_floppies, nullptr, luxor_55_21046_device::floppy_formats); + FLOPPY_CONNECTOR(config, m_floppy[0], abc_floppies, "525qd", luxor_55_21046_device::floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, m_floppy[1], abc_floppies, nullptr, luxor_55_21046_device::floppy_formats).enable_sound(true); } @@ -718,12 +722,11 @@ luxor_55_21046_device::luxor_55_21046_device(const machine_config &mconfig, cons luxor_55_21046_device::luxor_55_21046_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, type, tag, owner, clock), device_abcbus_card_interface(mconfig, *this), - m_floppy0(*this, SAB1793_TAG":0"), - m_floppy1(*this, SAB1793_TAG":1"), + m_floppy(*this, SAB1793_TAG":%u", 0U), m_maincpu(*this, Z80_TAG), m_dma(*this, Z80DMA_TAG), m_fdc(*this, SAB1793_TAG), - m_floppy(nullptr), + m_selected_floppy(nullptr), m_sw1(*this, "SW1"), m_sw2(*this, "SW2"), m_sw3(*this, "SW3"), @@ -1014,20 +1017,23 @@ void luxor_55_21046_device::_9b_w(uint8_t data) */ // drive select - m_floppy = nullptr; + m_selected_floppy = nullptr; - if (BIT(data, 0)) m_floppy = m_floppy0->get_device(); - if (BIT(data, 1)) m_floppy = m_floppy1->get_device(); + for (int n = 0; n < 2; n++) + { + if (BIT(data, n)) + m_selected_floppy = m_floppy[n]->get_device(); + } - m_fdc->set_floppy(m_floppy); + m_fdc->set_floppy(m_selected_floppy); - if (m_floppy) + if (m_selected_floppy) { // motor enable - m_floppy->mon_w(!BIT(data, 3)); + m_selected_floppy->mon_w(!BIT(data, 3)); // side select - m_floppy->ss_w(BIT(data, 5)); + m_selected_floppy->ss_w(BIT(data, 5)); } } @@ -1092,8 +1098,8 @@ uint8_t luxor_55_21046_device::_9a_r(offs_t offset) data |= m_busy; // floppy - data |= (m_floppy ? m_floppy->twosid_r() : 1) << 1; - //data |= (m_floppy ? m_floppy->dskchg_r() : 1) << 4; + data |= (m_selected_floppy ? m_selected_floppy->twosid_r() : 1) << 1; + //data |= (m_selected_floppy ? m_selected_floppy->dskchg_r() : 1) << 4; // SW2 uint8_t sw2 = m_sw2->read() & 0x0f; |