diff --git a/src/mame/drivers/atari_s1.cpp b/src/mame/drivers/atari_s1.cpp index fedceb0ead6..c0f8595e1b2 100644 --- a/src/mame/drivers/atari_s1.cpp +++ b/src/mame/drivers/atari_s1.cpp @@ -72,6 +72,7 @@ public: , m_p_ram(*this, "ram") , m_dac(*this, "dac") , m_switch(*this, "SWITCH.%u", 0) + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(m1080_r); @@ -108,10 +109,12 @@ private: uint8_t m_t_c; uint8_t *m_p_prom; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_shared_ptr m_p_ram; required_device m_dac; required_ioport_array<10> m_switch; + output_finder<78> m_digits; }; void atari_s1_state::atari_s1_map(address_map &map) @@ -393,8 +396,8 @@ TIMER_DEVICE_CALLBACK_MEMBER( atari_s1_state::nmi ) else { // Digits - output().set_digit_value(m_out_offs << 1, patterns[m_p_ram[m_out_offs]>>4]); - output().set_digit_value((m_out_offs << 1)+1, patterns[m_p_ram[m_out_offs]&15]); + m_digits[m_out_offs << 1] = patterns[m_p_ram[m_out_offs]>>4]; + m_digits[(m_out_offs << 1)+1] = patterns[m_p_ram[m_out_offs]&15]; } } diff --git a/src/mame/drivers/atari_s2.cpp b/src/mame/drivers/atari_s2.cpp index 36739819bde..9c176aaaea9 100644 --- a/src/mame/drivers/atari_s2.cpp +++ b/src/mame/drivers/atari_s2.cpp @@ -42,6 +42,7 @@ public: , m_maincpu(*this, "maincpu") , m_dac(*this, "dac") , m_dac1(*this, "dac1") + , m_digits(*this, "digit%u", 0U) { } void atari_s2(machine_config &config); @@ -71,9 +72,11 @@ private: uint8_t m_segment[7]; uint8_t *m_p_prom; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_dac; required_device m_dac1; + output_finder<68> m_digits; }; @@ -369,7 +372,7 @@ WRITE8_MEMBER( atari_s2_state::display_w ) { data &= 7; for (uint8_t i = 0; i < 7; i++) - output().set_digit_value(i * 10 + data, m_segment[i]); + m_digits[i * 10 + data] = m_segment[i]; } } diff --git a/src/mame/drivers/dolphunk.cpp b/src/mame/drivers/dolphunk.cpp index 7af993dad48..9223e06c766 100644 --- a/src/mame/drivers/dolphunk.cpp +++ b/src/mame/drivers/dolphunk.cpp @@ -99,6 +99,7 @@ public: , m_maincpu(*this, "maincpu") , m_speaker(*this, "speaker") , m_cass(*this, "cassette") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ_LINE_MEMBER(cass_r); @@ -116,9 +117,11 @@ private: bool m_cass_state; bool m_cassold; bool m_speaker_state; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_speaker; required_device m_cass; + output_finder<4> m_digits; }; READ_LINE_MEMBER( dauphin_state::cass_r ) @@ -133,7 +136,7 @@ WRITE_LINE_MEMBER( dauphin_state::cass_w ) WRITE8_MEMBER( dauphin_state::port00_w ) { - output().set_digit_value(offset, data); + m_digits[offset] = data; } WRITE8_MEMBER( dauphin_state::port06_w ) diff --git a/src/mame/drivers/g627.cpp b/src/mame/drivers/g627.cpp index 62b68fd7166..00b7fbfb6fe 100644 --- a/src/mame/drivers/g627.cpp +++ b/src/mame/drivers/g627.cpp @@ -58,6 +58,7 @@ public: , m_maincpu(*this, "maincpu") , m_switch(*this, "SWITCH.%u", 0) , m_testipt(*this, "TEST.%u", 0) + , m_digits(*this, "digit%u", 0U) { } DECLARE_DRIVER_INIT(v115); @@ -75,9 +76,11 @@ private: uint8_t m_portc; uint8_t m_motor; bool m_type; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_ioport_array<7> m_switch; required_ioport_array<6> m_testipt; + output_finder<56> m_digits; }; @@ -214,22 +217,22 @@ WRITE8_MEMBER( g627_state::portc_w ) m_portc = data; if ((m_type) && (data < 6)) { - output().set_digit_value(data, m_seg[0]); - output().set_digit_value(10 + data, m_seg[1]); - output().set_digit_value(20 + data, m_seg[2]); - output().set_digit_value(30 + data, m_seg[3]); - output().set_digit_value(50 + data, m_seg[5]); + m_digits[data] = m_seg[0]; + m_digits[10 + data] = m_seg[1]; + m_digits[20 + data] = m_seg[2]; + m_digits[30 + data] = m_seg[3]; + m_digits[50 + data] = m_seg[5]; } else if ((!m_type) && (data)) { data--; - output().set_digit_value(data, m_seg[0]); - output().set_digit_value(10 + data, m_seg[1]); - output().set_digit_value(20 + data, m_seg[2]); - output().set_digit_value(30 + data, m_seg[3]); - output().set_digit_value(50 + data, m_seg[5]); + m_digits[data] = m_seg[0]; + m_digits[10 + data] = m_seg[1]; + m_digits[20 + data] = m_seg[2]; + m_digits[30 + data] = m_seg[3]; + m_digits[50 + data] = m_seg[5]; } } diff --git a/src/mame/drivers/h8.cpp b/src/mame/drivers/h8.cpp index fcd13e92d1f..303e730cde4 100644 --- a/src/mame/drivers/h8.cpp +++ b/src/mame/drivers/h8.cpp @@ -69,6 +69,7 @@ public: , m_uart(*this, "uart") , m_cass(*this, "cassette") , m_beep(*this, "beeper") + , m_digits(*this, "digit%u", 0U) { } DECLARE_READ8_MEMBER(portf0_r); @@ -93,10 +94,12 @@ private: bool m_cass_state; bool m_cassold; virtual void machine_reset() override; + virtual void machine_start() override { m_digits.resolve(); } required_device m_maincpu; required_device m_uart; required_device m_cass; required_device m_beep; + output_finder<16> m_digits; }; @@ -151,7 +154,7 @@ WRITE8_MEMBER( h8_state::portf0_w ) // d7 = beeper enable m_digit = data & 15; - if (m_digit) output().set_digit_value(m_digit, m_segment); + if (m_digit) m_digits[m_digit] = m_segment; output().set_value("mon_led", !BIT(data, 5)); m_beep->set_state(!BIT(data, 7)); @@ -174,7 +177,7 @@ WRITE8_MEMBER( h8_state::portf1_w ) //d0 segment g m_segment = 0xff ^ bitswap<8>(data, 7, 0, 6, 5, 4, 3, 2, 1); - if (m_digit) output().set_digit_value(m_digit, m_segment); + if (m_digit) m_digits[m_digit] = m_segment; } void h8_state::h8_mem(address_map &map) diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp index d5d199131e0..a7b7ae247e4 100644 --- a/src/mame/drivers/selz80.cpp +++ b/src/mame/drivers/selz80.cpp @@ -196,7 +196,8 @@ WRITE8_MEMBER( selz80_state::scanlines_w ) WRITE8_MEMBER( selz80_state::digit_w ) { - m_digits[m_digit] = bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4); + if (m_digit < 8) + m_digits[m_digit] = bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4); } READ8_MEMBER( selz80_state::kbd_r )