From e9cbd65325111304ec144681196a820b3d67a710 Mon Sep 17 00:00:00 2001 From: cracyc Date: Fri, 3 Jun 2016 16:47:26 -0500 Subject: [PATCH] rainbow: getting better (nw) --- src/mame/machine/dec_lk201.cpp | 40 +++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index dc3b07f7d2d..9af587d2021 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -635,24 +635,28 @@ void lk201_device::send_port(address_space &space, UINT8 offset, UINT8 data) if (((data & 0x40) == 0) && (ports[offset] & 0x40)) { #ifndef KEYBOARD_WORKAROUND - if (ports[0] & 0x1) kbd_data = m_kbd0->read(); - if (ports[0] & 0x2) kbd_data = m_kbd1->read(); - if (ports[0] & 0x4) kbd_data = m_kbd2->read(); - if (ports[0] & 0x8) kbd_data = m_kbd3->read(); - if (ports[0] & 0x10) kbd_data = m_kbd4->read(); - if (ports[0] & 0x20) kbd_data = m_kbd5->read(); - if (ports[0] & 0x40) kbd_data = m_kbd6->read(); - if (ports[0] & 0x80) kbd_data = m_kbd7->read(); - if (ports[1] & 0x1) kbd_data = m_kbd8->read(); - if (ports[1] & 0x2) kbd_data = m_kbd9->read(); - if (ports[1] & 0x4) kbd_data = m_kbd10->read(); - if (ports[1] & 0x8) kbd_data = m_kbd11->read(); - if (ports[1] & 0x10) kbd_data = m_kbd12->read(); - if (ports[1] & 0x20) kbd_data = m_kbd13->read(); - if (ports[1] & 0x40) kbd_data = m_kbd14->read(); - if (ports[1] & 0x80) kbd_data = m_kbd15->read(); - if (ports[2] & 0x1) kbd_data = m_kbd16->read(); - if (ports[2] & 0x2) kbd_data = m_kbd17->read(); + UINT8 porta = ports[0] & ddrs[0]; + UINT8 portb = ports[1] & ddrs[1]; + UINT8 portc = ports[2] & ddrs[2]; + + if (porta & 0x1) kbd_data = m_kbd0->read(); + if (porta & 0x2) kbd_data = m_kbd1->read(); + if (porta & 0x4) kbd_data = m_kbd2->read(); + if (porta & 0x8) kbd_data = m_kbd3->read(); + if (porta & 0x10) kbd_data = m_kbd4->read(); + if (porta & 0x20) kbd_data = m_kbd5->read(); + if (porta & 0x40) kbd_data = m_kbd6->read(); + if (porta & 0x80) kbd_data = m_kbd7->read(); + if (portb & 0x1) kbd_data = m_kbd8->read(); + if (portb & 0x2) kbd_data = m_kbd9->read(); + if (portb & 0x4) kbd_data = m_kbd10->read(); + if (portb & 0x8) kbd_data = m_kbd11->read(); + if (portb & 0x10) kbd_data = m_kbd12->read(); + if (portb & 0x20) kbd_data = m_kbd13->read(); + if (portb & 0x40) kbd_data = m_kbd14->read(); + if (portb & 0x80) kbd_data = m_kbd15->read(); + if (portc & 0x1) kbd_data = m_kbd16->read(); + if (portc & 0x2) kbd_data = m_kbd17->read(); } // Check for LED update strobe if (((data & 0x80) == 0) && (ports[offset] & 0x80))