summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/spectrum/sixword.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/spectrum/sixword.cpp')
-rw-r--r--src/devices/bus/spectrum/sixword.cpp26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/devices/bus/spectrum/sixword.cpp b/src/devices/bus/spectrum/sixword.cpp
index 943f10a887e..81c3ad842a4 100644
--- a/src/devices/bus/spectrum/sixword.cpp
+++ b/src/devices/bus/spectrum/sixword.cpp
@@ -45,6 +45,8 @@
#include "emu.h"
#include "sixword.h"
+#include "formats/swd_dsk.h"
+
/***************************************************************************
DEVICE DEFINITIONS
@@ -105,7 +107,7 @@ static void swiftdisc_floppies(device_slot_interface &device)
}
//-------------------------------------------------
-// floppy_format_type floppy_formats
+// floppy_formats
//-------------------------------------------------
void spectrum_swiftdisc_device::floppy_formats(format_registration &fr)
@@ -163,6 +165,7 @@ void spectrum_swiftdisc_device::device_add_mconfig(machine_config &config)
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->nmi_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::nmi_w));
+ m_exp->fb_r_handler().set(DEVICE_SELF_OWNER, FUNC(spectrum_expansion_slot_device::fb_r));
}
void spectrum_swiftdisc2_device::device_add_mconfig(machine_config &config)
@@ -265,9 +268,9 @@ void spectrum_swiftdisc2_device::device_reset()
// IMPLEMENTATION (swiftdisc)
//**************************************************************************
-READ_LINE_MEMBER(spectrum_swiftdisc_device::romcs)
+bool spectrum_swiftdisc_device::romcs()
{
- return m_romcs | m_exp->romcs();
+ return m_romcs || m_exp->romcs();
}
void spectrum_swiftdisc_device::post_opcode_fetch(offs_t offset)
@@ -376,7 +379,7 @@ uint8_t spectrum_swiftdisc_device::iorq_r(offs_t offset)
uint8_t data = m_exp->iorq_r(offset);
if (!BIT(offset, 5))
- data &= m_joy->read();
+ data = m_joy->read() & 0x1f;
return data;
}
@@ -484,10 +487,10 @@ uint8_t spectrum_swiftdisc2_device::iorq_r(offs_t offset)
uint8_t data = m_exp->iorq_r(offset);
if (m_romcs && (offset & 0xf890) == 0x3000)
- data &= control_r();
+ data = control_r();
if (!BIT(offset, 5) && !BIT(m_control, 3))
- data &= m_joy->read();
+ data = m_joy->read() & 0x1f;
if (m_conf->read())
{
@@ -496,14 +499,14 @@ uint8_t spectrum_swiftdisc2_device::iorq_r(offs_t offset)
if (!BIT(offset, 3)) // port F7
{
// D7 - RS232 /RX
- data &= ~(m_rs232->rxd_r() << 7);
+ data &= ~0x80;
+ data |= !m_rs232->rxd_r() << 7;
}
if (!BIT(offset, 4)) // port EF
{
- data &= ~4;
- data |= 0x0b;
// D3 - RS232 /DSR
- data &= ~(m_rs232->dsr_r() << 3);
+ data &= ~0x8;
+ data |= !m_rs232->dsr_r() << 3;
}
}
}
@@ -512,7 +515,8 @@ uint8_t spectrum_swiftdisc2_device::iorq_r(offs_t offset)
if (!BIT(offset, 3)) // port F7
{
// D7 - Centronics /BUSY
- data &= ~(m_busy << 7);
+ data &= ~0x80;
+ data |= !m_busy << 7;
}
}