From a98f4833185e1dd25392a94442ed6e74753717b5 Mon Sep 17 00:00:00 2001 From: holub Date: Sun, 30 Jun 2024 13:47:06 -0400 Subject: sprinter.cpp: fix #1f IO detect and redirect (#12532) --- src/mame/sinclair/sprinter.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/mame/sinclair/sprinter.cpp b/src/mame/sinclair/sprinter.cpp index 9e4f9b1b01e..d1aeb1b08b2 100644 --- a/src/mame/sinclair/sprinter.cpp +++ b/src/mame/sinclair/sprinter.cpp @@ -1200,8 +1200,7 @@ u8 sprinter_state::m1_r(offs_t offset) if (!machine().side_effects_disabled()) { - if (!m_prf_d) - m_in_out_cmd = (data & 0xf7) == 0xd3; // d3/db + m_in_out_cmd = !m_prf_d && (data & 0xf7) == 0xd3; // d3/db - only non-prefixed accel_control_r(data); } @@ -1262,8 +1261,12 @@ void sprinter_state::init_taps() { if (!machine().side_effects_disabled()) { - if (!m_z80_m1 && m_in_out_cmd && data == 0x1f) - data = 0x0f; + if (m_in_out_cmd && !m_z80_m1) + { + if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK)) + data = 0x0f; + m_in_out_cmd = false; + } if (!(m_pages[BIT(offset, 14, 2)] & (BANK_FASTRAM_MASK | BANK_ISA_MASK))) // ROM+RAM do_cpu_wait(); if(!m_z80_m1 && acc_ena() && (m_acc_dir != OFF)) @@ -1272,8 +1275,12 @@ void sprinter_state::init_taps() }); prg.install_write_tap(0x10000, 0x1ffff, "accel_write", [this](offs_t offset, u8 &data, u8 mem_mask) { - if (!m_z80_m1 && m_in_out_cmd && data == 0x1f) - data = 0x0f; + if (m_in_out_cmd && !m_z80_m1) + { + if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK)) + data = 0x0f; + m_in_out_cmd = false; + } if (!(m_pages[BIT(offset, 14, 2)] & 0xff00)) // ROM only, RAM(w) applies waits manually do_cpu_wait(); if (!m_z80_m1 && acc_ena() && (m_acc_dir != OFF)) -- cgit v1.2.3