Skip to content

Commit

Permalink
sprinter.cpp: fix #1f IO detect and redirect (#12532)
Browse files Browse the repository at this point in the history
  • Loading branch information
holub authored Jun 30, 2024
1 parent d3dd3a3 commit a98f483
Showing 1 changed file with 13 additions and 6 deletions.
19 changes: 13 additions & 6 deletions src/mame/sinclair/sprinter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}

Expand Down Expand Up @@ -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))
Expand All @@ -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))
Expand Down

0 comments on commit a98f483

Please sign in to comment.