summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/opus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/opus.cpp')
-rw-r--r--src/devices/bus/spectrum/opus.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/devices/bus/spectrum/opus.cpp b/src/devices/bus/spectrum/opus.cpp
index fccac06175a..fef2107cb72 100644
--- a/src/devices/bus/spectrum/opus.cpp
+++ b/src/devices/bus/spectrum/opus.cpp
@@ -6,9 +6,11 @@
**********************************************************************/
-
#include "emu.h"
#include "opus.h"
+#include "softlist_dev.h"
+
+#include "formats/opd_dsk.h"
//**************************************************************************
@@ -81,8 +83,8 @@ void spectrum_opus_device::device_add_mconfig(machine_config &config)
WD1770(config, m_fdc, 16_MHz_XTAL / 2);
m_fdc->drq_wr_callback().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::nmi_w));
- FLOPPY_CONNECTOR(config, "fdc:0", spectrum_floppies, "35dd", spectrum_opus_device::floppy_formats).enable_sound(true);
- FLOPPY_CONNECTOR(config, "fdc:1", spectrum_floppies, "35dd", spectrum_opus_device::floppy_formats).enable_sound(true);
+ for (auto &floppy : m_floppy)
+ FLOPPY_CONNECTOR(config, floppy, spectrum_floppies, "35dd", spectrum_opus_device::floppy_formats).enable_sound(true);
/* parallel printer port */
CENTRONICS(config, m_centronics, centronics_devices, "printer");
@@ -90,7 +92,7 @@ void spectrum_opus_device::device_add_mconfig(machine_config &config)
m_centronics->busy_handler().set(FUNC(spectrum_opus_device::busy_w));
/* pia */
- PIA6821(config, m_pia, 0);
+ PIA6821(config, m_pia);
m_pia->writepa_handler().set(FUNC(spectrum_opus_device::pia_out_a));
m_pia->writepb_handler().set(FUNC(spectrum_opus_device::pia_out_b));
m_pia->cb2_handler().set("centronics", FUNC(centronics_device::write_strobe));
@@ -101,6 +103,7 @@ void spectrum_opus_device::device_add_mconfig(machine_config &config)
/* passthru without NMI */
SPECTRUM_EXPANSION_SLOT(config, m_exp, spectrum_expansion_devices, nullptr);
m_exp->irq_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::irq_w));
+ m_exp->fb_r_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::fb_r));
}
const tiny_rom_entry *spectrum_opus_device::device_rom_region() const
@@ -124,8 +127,7 @@ spectrum_opus_device::spectrum_opus_device(const machine_config &mconfig, const
, m_rom(*this, "rom")
, m_pia(*this, "pia")
, m_fdc(*this, "fdc")
- , m_floppy0(*this, "fdc:0")
- , m_floppy1(*this, "fdc:1")
+ , m_floppy(*this, "fdc:%u", 0U)
, m_centronics(*this, "centronics")
, m_exp(*this, "exp")
{
@@ -157,9 +159,9 @@ void spectrum_opus_device::device_reset()
// IMPLEMENTATION
//**************************************************************************
-READ_LINE_MEMBER(spectrum_opus_device::romcs)
+bool spectrum_opus_device::romcs()
{
- return m_romcs | m_exp->romcs();
+ return m_romcs || m_exp->romcs();
}
void spectrum_opus_device::post_opcode_fetch(offs_t offset)
@@ -187,7 +189,7 @@ uint8_t spectrum_opus_device::iorq_r(offs_t offset)
// PIA bit 7 is enable joystick and selected on A5 only
if (!BIT(m_pia->a_output(), 7) && (~offset & 0x20))
{
- data &= m_joy->read() & 0x1f;
+ data = m_joy->read() & 0x1f;
}
return data;
}
@@ -254,8 +256,8 @@ void spectrum_opus_device::pia_out_a(uint8_t data)
floppy_image_device *floppy = nullptr;
// bit 0, 1: drive select
- if (!BIT(data, 0)) floppy = m_floppy1->get_device();
- if (!BIT(data, 1)) floppy = m_floppy0->get_device();
+ if (!BIT(data, 0)) floppy = m_floppy[1]->get_device();
+ if (!BIT(data, 1)) floppy = m_floppy[0]->get_device();
m_fdc->set_floppy(floppy);
// bit 4: side select
@@ -278,7 +280,7 @@ void spectrum_opus_device::pia_out_b(uint8_t data)
m_centronics->write_data7(BIT(data, 7));
}
-WRITE_LINE_MEMBER(spectrum_opus_device::busy_w)
+void spectrum_opus_device::busy_w(int state)
{
m_pia->set_a_input(state << 6);
}