diff options
-rw-r--r-- | src/mame/drivers/sdk85.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/sdk86.cpp | 11 |
2 files changed, 6 insertions, 7 deletions
diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index 78bbad3e976..2495cdd1f8f 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -192,7 +192,7 @@ INPUT_PORTS_END void sdk85_state::scanlines_w(u8 data) { - m_digit = data; + m_digit = data & 7; } void sdk85_state::digit_w(u8 data) diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index 490d855cad0..f73518148fd 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -45,6 +45,7 @@ public: sdk86_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") + , m_kbdrow(*this, "X%X", 0U) , m_digits(*this, "digit%u", 0U) { } @@ -61,6 +62,7 @@ private: uint8_t m_digit; virtual void machine_start() override { m_digits.resolve(); } required_device<cpu_device> m_maincpu; + required_ioport_array<3> m_kbdrow; output_finder<8> m_digits; }; @@ -127,12 +129,9 @@ READ8_MEMBER( sdk86_state::kbd_r ) { uint8_t data = 0xff; - if (m_digit < 3) - { - char kbdrow[6]; - sprintf(kbdrow,"X%X",m_digit); - data = ioport(kbdrow)->read(); - } + if ((m_digit & 7) < 3) + data = m_kbdrow[m_digit & 7]->read(); + return data; } |