Skip to content

Commit a98f483

Browse files
authored
sprinter.cpp: fix #1f IO detect and redirect (#12532)
1 parent d3dd3a3 commit a98f483

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

src/mame/sinclair/sprinter.cpp

+13-6
Original file line numberDiff line numberDiff line change
@@ -1200,8 +1200,7 @@ u8 sprinter_state::m1_r(offs_t offset)
12001200

12011201
if (!machine().side_effects_disabled())
12021202
{
1203-
if (!m_prf_d)
1204-
m_in_out_cmd = (data & 0xf7) == 0xd3; // d3/db
1203+
m_in_out_cmd = !m_prf_d && (data & 0xf7) == 0xd3; // d3/db - only non-prefixed
12051204
accel_control_r(data);
12061205
}
12071206

@@ -1262,8 +1261,12 @@ void sprinter_state::init_taps()
12621261
{
12631262
if (!machine().side_effects_disabled())
12641263
{
1265-
if (!m_z80_m1 && m_in_out_cmd && data == 0x1f)
1266-
data = 0x0f;
1264+
if (m_in_out_cmd && !m_z80_m1)
1265+
{
1266+
if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK))
1267+
data = 0x0f;
1268+
m_in_out_cmd = false;
1269+
}
12671270
if (!(m_pages[BIT(offset, 14, 2)] & (BANK_FASTRAM_MASK | BANK_ISA_MASK))) // ROM+RAM
12681271
do_cpu_wait();
12691272
if(!m_z80_m1 && acc_ena() && (m_acc_dir != OFF))
@@ -1272,8 +1275,12 @@ void sprinter_state::init_taps()
12721275
});
12731276
prg.install_write_tap(0x10000, 0x1ffff, "accel_write", [this](offs_t offset, u8 &data, u8 mem_mask)
12741277
{
1275-
if (!m_z80_m1 && m_in_out_cmd && data == 0x1f)
1276-
data = 0x0f;
1278+
if (m_in_out_cmd && !m_z80_m1)
1279+
{
1280+
if (data == 0x1f && (m_pages[BIT(offset, 14, 2)] & BANK_RAM_MASK))
1281+
data = 0x0f;
1282+
m_in_out_cmd = false;
1283+
}
12771284
if (!(m_pages[BIT(offset, 14, 2)] & 0xff00)) // ROM only, RAM(w) applies waits manually
12781285
do_cpu_wait();
12791286
if (!m_z80_m1 && acc_ena() && (m_acc_dir != OFF))

0 commit comments

Comments
 (0)