summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Robbbert <Robbbert@users.noreply.github.com>2018-04-03 20:32:32 +1000
committer Robbbert <Robbbert@users.noreply.github.com>2018-04-03 20:32:32 +1000
commit63026947dd4e1f581475a908469aa915f0b94746 (patch)
tree65561e4a4f65b2a076f570922b87c528f52e1c92
parentcb498414243a3cd977d9d3c69350ed88d696c5e8 (diff)
(nw) output finder for by6803,model1,st_mp200,videopkr
-rw-r--r--src/mame/drivers/by6803.cpp13
-rw-r--r--src/mame/drivers/model1.cpp4
-rw-r--r--src/mame/drivers/st_mp200.cpp13
-rw-r--r--src/mame/drivers/videopkr.cpp16
-rw-r--r--src/mame/includes/model1.h3
-rw-r--r--src/mame/machine/model1.cpp1
6 files changed, 31 insertions, 19 deletions
diff --git a/src/mame/drivers/by6803.cpp b/src/mame/drivers/by6803.cpp
index 7143cd34801..a427761af69 100644
--- a/src/mame/drivers/by6803.cpp
+++ b/src/mame/drivers/by6803.cpp
@@ -44,6 +44,7 @@ public:
, m_io_x2(*this, "X2")
, m_io_x3(*this, "X3")
, m_io_x4(*this, "X4")
+ , m_digits(*this, "digit%u", 0U)
{ }
DECLARE_DRIVER_INIT(by6803);
@@ -78,6 +79,7 @@ private:
//uint8_t m_digit;
uint8_t m_segment;
virtual void machine_reset() override;
+ virtual void machine_start() override { m_digits.resolve(); }
required_device<m6803_cpu_device> m_maincpu;
required_device<pia6821_device> m_pia0;
required_device<pia6821_device> m_pia1;
@@ -87,6 +89,7 @@ private:
required_ioport m_io_x2;
required_ioport m_io_x3;
required_ioport m_io_x4;
+ output_finder<40> m_digits;
};
@@ -229,19 +232,19 @@ WRITE8_MEMBER( by6803_state::pia0_a_w )
switch (m_pia0_a)
{
case 0x10: // wrong
- output().set_digit_value(m_digit, m_segment);
+ m_digits[m_digit] = m_segment;
break;
case 0x1d:
- output().set_digit_value(8+m_digit, m_segment);
+ m_digits[8+m_digit] = m_segment;
break;
case 0x1b:
- output().set_digit_value(16+m_digit, m_segment);
+ m_digits[16+m_digit] = m_segment;
break;
case 0x07:
- output().set_digit_value(24+m_digit, m_segment);
+ m_digits[24+m_digit] = m_segment;
break;
case 0x0f:
- output().set_digit_value(32+m_digit, m_segment);
+ m_digits[32+m_digit] m_segment;
break;
default:
break;
diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp
index e2a101227bf..39bc2d1b2f6 100644
--- a/src/mame/drivers/model1.cpp
+++ b/src/mame/drivers/model1.cpp
@@ -673,11 +673,11 @@ WRITE16_MEMBER(model1_state::io_w)
output().set_led_value(4, data & 0x40); // VIEW4
output().set_led_value(5, data & 0x80); // RACE LEADER
m_lamp_state = data;
- output().set_digit_value(1, data);
+ m_digits[1] = data;
return;
} else if (offset == 0x11) {
// drive board commands
- output().set_digit_value(0, data);
+ m_digits[0] = data;
return;
}
logerror("IOW: %02x %02x\n", offset, data);
diff --git a/src/mame/drivers/st_mp200.cpp b/src/mame/drivers/st_mp200.cpp
index cc74fb852e7..3ce08a92113 100644
--- a/src/mame/drivers/st_mp200.cpp
+++ b/src/mame/drivers/st_mp200.cpp
@@ -48,6 +48,7 @@ public:
, m_io_x2(*this, "X2")
, m_io_x3(*this, "X3")
, m_io_x4(*this, "X4")
+ , m_digits(*this, "digit%u", 0U)
{ }
DECLARE_DRIVER_INIT(st_mp200);
@@ -101,6 +102,7 @@ private:
required_ioport m_io_x2;
required_ioport m_io_x3;
required_ioport m_io_x4;
+ output_finder<47> m_digits;
};
@@ -465,11 +467,11 @@ WRITE8_MEMBER( st_mp200_state::u11_a_w )
if (BIT(data, 0) && (m_counter > 8))
{
static const uint8_t patterns[16] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0,0,0,0,0,0 }; // MC14543
- output().set_digit_value(m_digit, patterns[m_segment[0]]);
- output().set_digit_value(10+m_digit, patterns[m_segment[1]]);
- output().set_digit_value(20+m_digit, patterns[m_segment[2]]);
- output().set_digit_value(30+m_digit, patterns[m_segment[3]]);
- output().set_digit_value(40+m_digit, patterns[m_segment[4]]);
+ m_digits[m_digit] = patterns[m_segment[0]];
+ m_digits[10+m_digit] = patterns[m_segment[1]];
+ m_digits[20+m_digit] = patterns[m_segment[2]];
+ m_digits[30+m_digit] = patterns[m_segment[3]];
+ m_digits[40+m_digit] = patterns[m_segment[4]];
}
}
}
@@ -531,6 +533,7 @@ WRITE8_MEMBER( st_mp200_state::u11_b_w )
void st_mp200_state::machine_start()
{
+ m_digits.resolve();
}
void st_mp200_state::machine_reset()
diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp
index 25eeb0250a0..b64eebcd605 100644
--- a/src/mame/drivers/videopkr.cpp
+++ b/src/mame/drivers/videopkr.cpp
@@ -305,11 +305,13 @@ class videopkr_state : public driver_device
{
public:
videopkr_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_soundcpu(*this, "soundcpu"),
- m_dac(*this, "dac"),
- m_gfxdecode(*this, "gfxdecode") { }
+ : driver_device(mconfig, type, tag)
+ , m_maincpu(*this, "maincpu")
+ , m_soundcpu(*this, "soundcpu")
+ , m_dac(*this, "dac")
+ , m_gfxdecode(*this, "gfxdecode")
+ , m_digits(*this, "digit%u", 0U)
+ { }
uint8_t m_data_ram[0x100];
uint8_t m_video_ram[0x0400];
@@ -379,6 +381,7 @@ public:
required_device<cpu_device> m_soundcpu;
required_device<dac_byte_interface> m_dac;
required_device<gfxdecode_device> m_gfxdecode;
+ output_finder<28> m_digits;
void babypkr(machine_config &config);
void videodad(machine_config &config);
void videopkr(machine_config &config);
@@ -433,7 +436,7 @@ void videopkr_state::count_7dig(unsigned long data, uint8_t index)
for (i = 0; i < 7; i++)
{
- output().set_digit_value(index+i, dec_7seg((strn[6 - i] | 0x10) - 0x30));
+ m_digits[index+i] = dec_7seg((strn[6 - i] | 0x10) - 0x30);
}
}
@@ -1241,6 +1244,7 @@ GFXDECODE_END
void videopkr_state::machine_start()
{
+ m_digits.resolve();
m_vp_sound_p2 = 0xff; /* default P2 latch value */
m_sound_latch = 0xff; /* default sound data latch value */
m_p24_data = 0xff;
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index 4ea3866ae15..062fe7c876e 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -52,6 +52,7 @@ public:
, m_tiles(*this, "tile")
, m_analog_ports(*this, "AN.%u", 0)
, m_digital_ports(*this, "IN.%u", 0)
+ , m_digits(*this, "digit%u", 0U)
{
}
@@ -501,7 +502,7 @@ private:
uint16_t m_lamp_state;
optional_ioport_array<8> m_analog_ports;
required_ioport_array<3> m_digital_ports;
-
+ output_finder<2> m_digits;
};
diff --git a/src/mame/machine/model1.cpp b/src/mame/machine/model1.cpp
index f12e8a45e47..d5693f8d658 100644
--- a/src/mame/machine/model1.cpp
+++ b/src/mame/machine/model1.cpp
@@ -1934,6 +1934,7 @@ WRITE16_MEMBER(model1_state::model1_tgp_copro_ram_w)
MACHINE_START_MEMBER(model1_state,model1)
{
+ m_digits.resolve();
m_ram_data = std::make_unique<uint32_t[]>(0x10000);
m_io_command = 0;