diff options
Diffstat (limited to 'src/devices/bus/spectrum/sixword.cpp')
-rw-r--r-- | src/devices/bus/spectrum/sixword.cpp | 26 |
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; } } |