summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-03-29 02:22:19 +1100
committer Robbbert <Robbbert@users.noreply.github.com>2018-03-29 02:22:19 +1100
commit69c3279d6a97f7d6c29f1a17a28454089b82415c (patch)
tree7f426dfb13928dddc355b05fc4a2500e1a66b128
parenta0742962886168e160c0f79b22c59aacb417f63d (diff)
(nw) output finder for amico2k,babbage,barata,bob85,c80,minicom
-rw-r--r--src/mame/drivers/amico2k.cpp18
-rw-r--r--src/mame/drivers/babbage.cpp5
-rw-r--r--src/mame/drivers/barata.cpp39
-rw-r--r--src/mame/drivers/bob85.cpp32
-rw-r--r--src/mame/drivers/c80.cpp3
-rw-r--r--src/mame/drivers/minicom.cpp7
-rw-r--r--src/mame/includes/c80.h16
7 files changed, 74 insertions, 46 deletions
diff --git a/src/mame/drivers/amico2k.cpp b/src/mame/drivers/amico2k.cpp
index acdf4189bf7..080338c1e28 100644
--- a/src/mame/drivers/amico2k.cpp
+++ b/src/mame/drivers/amico2k.cpp
@@ -40,8 +40,10 @@ class amico2k_state : public driver_device
{
public:
amico2k_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag) ,
- m_maincpu(*this, "maincpu") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_digits(*this, "digit%u", 0U)
+ { }
void machine_start() override;
@@ -50,15 +52,16 @@ public:
DECLARE_READ8_MEMBER( ppi_pb_r );
DECLARE_WRITE8_MEMBER( ppi_pb_w );
- int m_ls145_p;
- uint8_t m_segment;
-
// timers
emu_timer *m_led_refresh_timer;
TIMER_CALLBACK_MEMBER(led_refresh);
- required_device<cpu_device> m_maincpu;
void amico2k(machine_config &config);
void amico2k_mem(address_map &map);
+private:
+ int m_ls145_p;
+ uint8_t m_segment;
+ required_device<cpu_device> m_maincpu;
+ output_finder<6> m_digits;
};
@@ -109,7 +112,7 @@ TIMER_CALLBACK_MEMBER(amico2k_state::led_refresh)
{
if (m_ls145_p > 3)
{
- output().set_digit_value(m_ls145_p - 4, m_segment);
+ m_digits[m_ls145_p - 4] = m_segment;
}
}
@@ -202,6 +205,7 @@ WRITE8_MEMBER( amico2k_state::ppi_pb_w )
void amico2k_state::machine_start()
{
+ m_digits.resolve();
m_led_refresh_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(amico2k_state::led_refresh),this));
// state saving
diff --git a/src/mame/drivers/babbage.cpp b/src/mame/drivers/babbage.cpp
index 5ce472b1047..5990e3aa9c8 100644
--- a/src/mame/drivers/babbage.cpp
+++ b/src/mame/drivers/babbage.cpp
@@ -42,6 +42,7 @@ public:
, m_pio_2(*this, "z80pio_2")
, m_ctc(*this, "z80ctc")
, m_keyboard(*this, "X%u", 0)
+ , m_digits(*this, "digit%u", 0U)
{ }
void babbage(machine_config &config);
@@ -63,11 +64,13 @@ private:
uint8_t m_key;
uint8_t m_prev_key;
bool m_step;
+ virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
required_device<z80pio_device> m_pio_1;
required_device<z80pio_device> m_pio_2;
required_device<z80ctc_device> m_ctc;
required_ioport_array<4> m_keyboard;
+ output_finder<33> m_digits;
};
@@ -179,7 +182,7 @@ WRITE8_MEMBER( babbage_state::pio2_b_w )
}
else
{
- output().set_digit_value(data, m_segment);
+ m_digits[data] = m_segment;
}
}
diff --git a/src/mame/drivers/barata.cpp b/src/mame/drivers/barata.cpp
index f992add66ed..85d4c6ab5b0 100644
--- a/src/mame/drivers/barata.cpp
+++ b/src/mame/drivers/barata.cpp
@@ -47,18 +47,22 @@ class barata_state : public driver_device
{
public:
barata_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_digits(*this, "digit%u", 0U)
+ { }
+
DECLARE_WRITE8_MEMBER(fpga_w);
DECLARE_WRITE8_MEMBER(port0_w);
DECLARE_WRITE8_MEMBER(port2_w);
DECLARE_READ8_MEMBER(port2_r);
- void fpga_send(unsigned char cmd);
-
- required_device<cpu_device> m_maincpu;
void barata(machine_config &config);
private:
unsigned char row_selection;
+ void fpga_send(unsigned char cmd);
+ virtual void machine_start() override { m_digits.resolve(); }
+ required_device<cpu_device> m_maincpu;
+ output_finder<4> m_digits;
};
/************************
@@ -185,7 +189,8 @@ void barata_state::fpga_send(unsigned char cmd)
bool state, erase_all;
char lamp_index;
if (mode == FPGA_LAMP){
- switch (byte){
+ switch (byte)
+ {
case 1:
lamp_data = cmd;
break;
@@ -195,12 +200,15 @@ void barata_state::fpga_send(unsigned char cmd)
erase_all = BIT(lamp_data,4);
lamp_index = lamp_data & 0x0F;
- if (erase_all){
+ if (erase_all)
+ {
// logerror("LED: ERASE ALL\n");
for (int i=0; i<16; i++){
output().set_led_value(i, 1);
}
- } else {
+ }
+ else
+ {
output().set_led_value(lamp_index, state ? 0 : 1);
}
default:
@@ -228,12 +236,15 @@ void barata_state::fpga_send(unsigned char cmd)
case 3:
counter_data = (counter_data << 3) | cmd;
- if (counter_state){
- output().set_digit_value(2*counter_bank, 0);
- output().set_digit_value(2*counter_bank+1, 0);
- } else {
- output().set_digit_value(2*counter_bank, dec_7seg(counter_data/10));
- output().set_digit_value(2*counter_bank+1, dec_7seg(counter_data%10));
+ if (counter_state)
+ {
+ m_digits[2*counter_bank] = 0;
+ m_digits[2*counter_bank+1] = 0;
+ }
+ else
+ {
+ m_digits[2*counter_bank] = dec_7seg(counter_data/10);
+ m_digits[2*counter_bank+1] = dec_7seg(counter_data%10);
}
default:
mode = FPGA_WAITING_FOR_NEW_CMD;
diff --git a/src/mame/drivers/bob85.cpp b/src/mame/drivers/bob85.cpp
index 7d0e36688c2..6691b143539 100644
--- a/src/mame/drivers/bob85.cpp
+++ b/src/mame/drivers/bob85.cpp
@@ -31,30 +31,34 @@ class bob85_state : public driver_device
{
public:
bob85_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_cass(*this, "cassette"),
- m_line0(*this, "LINE0"),
- m_line1(*this, "LINE1"),
- m_line2(*this, "LINE2") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_cass(*this, "cassette")
+ , m_line0(*this, "LINE0")
+ , m_line1(*this, "LINE1")
+ , m_line2(*this, "LINE2")
+ , m_digits(*this, "digit%u", 0U)
+ { }
- required_device<cpu_device> m_maincpu;
- required_device<cassette_image_device> m_cass;
+ void bob85(machine_config &config);
+ void bob85_io(address_map &map);
+ void bob85_mem(address_map &map);
DECLARE_READ8_MEMBER(bob85_keyboard_r);
DECLARE_WRITE8_MEMBER(bob85_7seg_w);
DECLARE_WRITE_LINE_MEMBER(sod_w);
DECLARE_READ_LINE_MEMBER(sid_r);
+
+private:
uint8_t m_prev_key;
uint8_t m_count_key;
virtual void machine_reset() override;
-
- void bob85(machine_config &config);
- void bob85_io(address_map &map);
- void bob85_mem(address_map &map);
-protected:
+ virtual void machine_start() override { m_digits.resolve(); }
+ required_device<cpu_device> m_maincpu;
+ required_device<cassette_image_device> m_cass;
required_ioport m_line0;
required_ioport m_line1;
required_ioport m_line2;
+ output_finder<6> m_digits;
};
@@ -140,7 +144,7 @@ READ8_MEMBER(bob85_state::bob85_keyboard_r)
WRITE8_MEMBER(bob85_state::bob85_7seg_w)
{
- output().set_digit_value(offset, bitswap<8>( data,3,2,1,0,7,6,5,4 ));
+ m_digits[offset] = bitswap<8>( data,3,2,1,0,7,6,5,4 );
}
void bob85_state::bob85_mem(address_map &map)
diff --git a/src/mame/drivers/c80.cpp b/src/mame/drivers/c80.cpp
index e1b3c5c1531..353dd2c3fa5 100644
--- a/src/mame/drivers/c80.cpp
+++ b/src/mame/drivers/c80.cpp
@@ -209,7 +209,7 @@ WRITE8_MEMBER( c80_state::pio1_pb_w )
if (!m_pio1_a5)
{
- output().set_digit_value(m_digit, data);
+ m_digits[m_digit] = data;
}
m_keylatch = data;
@@ -244,6 +244,7 @@ static const z80_daisy_config c80_daisy_chain[] =
void c80_state::machine_start()
{
+ m_digits.resolve();
/* register for state saving */
save_item(NAME(m_keylatch));
save_item(NAME(m_digit));
diff --git a/src/mame/drivers/minicom.cpp b/src/mame/drivers/minicom.cpp
index fd7a9ffaa95..d8e69d9e479 100644
--- a/src/mame/drivers/minicom.cpp
+++ b/src/mame/drivers/minicom.cpp
@@ -50,6 +50,7 @@ public:
minicom_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
+ , m_digits(*this, "digit%u", 0U)
{ }
DECLARE_WRITE8_MEMBER(i87c52_p0_w);
@@ -67,10 +68,12 @@ private:
virtual void machine_start() override;
virtual void machine_reset() override;
required_device<cpu_device> m_maincpu;
+ output_finder<20> m_digits;
};
void minicom_state::machine_start()
{
+ m_digits.resolve();
// zerofill
memset(m_p, 0, 4);
m_digit_index = 0;
@@ -88,7 +91,7 @@ void minicom_state::machine_reset()
m_display_data = 0;
for (int i=0; i<20; i++)
- output().set_digit_value(i, 0);
+ m_digits[i] = 0;
}
READ8_MEMBER(minicom_state::i87c52_p1_r)
@@ -203,7 +206,7 @@ WRITE8_MEMBER(minicom_state::i87c52_p3_w)
if (BIT(changed,4) || BIT(changed,5))
{
- output().set_digit_value(m_digit_index, bitswap<16>(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF);
+ m_digits[m_digit_index] = bitswap<16>(m_display_data, 9, 1, 3, 11, 12, 4, 2, 10, 14, 6, 7, 5, 0, 15, 13, 8) & 0x3FFF;
}
m_p[3] = data;
}
diff --git a/src/mame/includes/c80.h b/src/mame/includes/c80.h
index 50674f20fa4..8f01e136c2f 100644
--- a/src/mame/includes/c80.h
+++ b/src/mame/includes/c80.h
@@ -19,13 +19,14 @@ class c80_state : public driver_device
{
public:
c80_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, Z80_TAG),
- m_pio1(*this, Z80PIO1_TAG),
- m_cassette(*this, "cassette"),
- m_row0(*this, "ROW0"),
- m_row1(*this, "ROW1"),
- m_row2(*this, "ROW2")
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, Z80_TAG)
+ , m_pio1(*this, Z80PIO1_TAG)
+ , m_cassette(*this, "cassette")
+ , m_row0(*this, "ROW0")
+ , m_row1(*this, "ROW1")
+ , m_row2(*this, "ROW2")
+ , m_digits(*this, "digit%u", 0U)
{ }
required_device<cpu_device> m_maincpu;
@@ -34,6 +35,7 @@ public:
required_ioport m_row0;
required_ioport m_row1;
required_ioport m_row2;
+ output_finder<9> m_digits;
virtual void machine_start() override;