diff options
author | MetalliC <0vetal0@gmail.com> | 2020-08-18 19:55:03 +0300 |
---|---|---|
committer | MetalliC <0vetal0@gmail.com> | 2020-08-18 19:55:03 +0300 |
commit | d2d1540681c6bb85e6f10e68645aad49110ed7d8 (patch) | |
tree | cdeb6439d1b64385027fc3cda2315e1129daead7 /src/mame/machine | |
parent | e96932a60bd676f29612caa6faa204a781bd2710 (diff) |
midxunit.cpp issue note update, cleanup security chip access
Diffstat (limited to 'src/mame/machine')
-rw-r--r-- | src/mame/machine/midxunit.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/mame/machine/midxunit.cpp b/src/mame/machine/midxunit.cpp index 762a092b331..2bcda95e389 100644 --- a/src/mame/machine/midxunit.cpp +++ b/src/mame/machine/midxunit.cpp @@ -267,6 +267,8 @@ void midxunit_state::machine_reset() m_dcs->reset_w(0); m_dcs->reset_w(1); + m_security_bits = 0; + /* reset I/O shuffling */ for (int i = 0; i < 16; i++) m_ioshuffle[i] = i % 8; @@ -290,14 +292,22 @@ uint16_t midxunit_state::midxunit_security_r() void midxunit_state::midxunit_security_w(offs_t offset, uint16_t data, uint16_t mem_mask) { if (ACCESSING_BITS_0_7) - m_security_bits = data & 0x0f; + { + m_security_bits &= ~0xf; + m_security_bits |= data & 0xf; + m_midway_serial_pic->write(m_security_bits ^ 0x10); + } } void midxunit_state::midxunit_security_clock_w(offs_t offset, uint16_t data, uint16_t mem_mask) { if (offset == 0 && ACCESSING_BITS_0_7) - m_midway_serial_pic->write(((~data & 2) << 3) | m_security_bits); + { + m_security_bits &= ~0x10; + m_security_bits |= BIT(data, 1) << 4; + m_midway_serial_pic->write(m_security_bits ^ 0x10); + } } |