From 0074e4df451e74aad57248da5ce6b0033b0ca333 Mon Sep 17 00:00:00 2001 From: Mike <7153163+hackbar@users.noreply.github.com> Date: Mon, 10 Jun 2019 13:31:37 -0700 Subject: pia6821: roll back port A read change. --- src/devices/machine/6821pia.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/devices/machine/6821pia.cpp b/src/devices/machine/6821pia.cpp index b5b6b123b0b..4171b9c6f82 100644 --- a/src/devices/machine/6821pia.cpp +++ b/src/devices/machine/6821pia.cpp @@ -237,11 +237,12 @@ uint8_t pia6821_device::get_in_a_value() } } - // For port A, when the port is in output mode, other devices can drive the pins too. - // If they load the lines so the voltage changes from what the PIA is outputting, that - // value will be read back. - // TODO: Figure out if any boards do this, and compensate. - ret = (m_out_a & m_ddr_a) | (port_a_data & ~m_ddr_a); + // - connected pins are always read + // - disconnected pins read the output buffer in output mode + // - disconnected pins are HI in input mode + ret = (~m_port_a_z_mask & port_a_data) | + ( m_port_a_z_mask & m_ddr_a & m_out_a) | + ( m_port_a_z_mask & ~m_ddr_a); return ret; } -- cgit v1.2.3