(nw) output finder for vd,zac_1,zac_2,zac_proto

This commit is contained in:
Robbbert 2018-04-04 09:56:25 +10:00
parent 5397a78d9c
commit 7d96346c6a
4 changed files with 36 additions and 38 deletions

View File

@ -31,6 +31,7 @@ public:
vd_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_digits(*this, "digit%u", 0U)
{ }
DECLARE_READ8_MEMBER(ack_r);
@ -42,16 +43,14 @@ public:
void vd(machine_config &config);
void vd_io(address_map &map);
void vd_map(address_map &map);
protected:
// devices
required_device<cpu_device> m_maincpu;
// driver_device overrides
virtual void machine_reset() override;
private:
uint8_t m_t_c;
uint8_t segment[5];
virtual void machine_reset() override;
virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
output_finder<60> m_digits;
};
@ -173,11 +172,11 @@ WRITE8_MEMBER( vd_state::col_w )
if (data != 0x3f)
{
data &= 7;
output().set_digit_value(data + 11, segment[0]);
output().set_digit_value(data + 21, segment[1]);
output().set_digit_value(data + 31, segment[2]);
output().set_digit_value(data + 41, segment[3]);
output().set_digit_value(data + 51, segment[4]);
m_digits[data + 11] = segment[0];
m_digits[data + 21] = segment[1];
m_digits[data + 31] = segment[2];
m_digits[data + 41] = segment[3];
m_digits[data + 51] = segment[4];
}
}

View File

@ -40,9 +40,10 @@ class zac_1_state : public genpin_class
{
public:
zac_1_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_p_ram(*this, "ram")
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_p_ram(*this, "ram")
, m_digits(*this, "digit%u", 0U)
{ }
DECLARE_READ8_MEMBER(ctrl_r);
@ -61,18 +62,15 @@ public:
void zac_1_data(address_map &map);
void zac_1_io(address_map &map);
void zac_1_map(address_map &map);
protected:
// devices
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_ram;
// driver_device overrides
virtual void machine_reset() override;
private:
uint8_t m_t_c;
uint8_t m_out_offs;
uint8_t m_input_line;
virtual void machine_reset() override;
virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_ram;
output_finder<78> m_digits;
};
@ -242,7 +240,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_1_state::zac_1_outtimer)
{
uint8_t display = (m_out_offs >> 3) & 7;
uint8_t digit = m_out_offs & 7;
output().set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
m_digits[display * 10 + digit] = patterns[m_p_ram[m_out_offs]&15];
}
else
if (m_out_offs == 0x4a) // outhole

View File

@ -22,6 +22,7 @@ public:
, m_maincpu(*this, "maincpu")
, m_p_ram(*this, "ram")
, m_row(*this, "ROW.%u", 0)
, m_digits(*this, "digit%u", 0U)
{ }
DECLARE_READ8_MEMBER(ctrl_r);
@ -30,25 +31,22 @@ public:
DECLARE_WRITE8_MEMBER(data_w);
DECLARE_READ_LINE_MEMBER(serial_r);
DECLARE_WRITE_LINE_MEMBER(serial_w);
uint8_t m_t_c;
uint8_t m_out_offs;
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_ram;
required_ioport_array<6> m_row;
TIMER_DEVICE_CALLBACK_MEMBER(zac_2_inttimer);
TIMER_DEVICE_CALLBACK_MEMBER(zac_2_outtimer);
void zac_2(machine_config &config);
void zac_2_data(address_map &map);
void zac_2_io(address_map &map);
void zac_2_map(address_map &map);
protected:
// devices
// driver_device overrides
virtual void machine_reset() override;
private:
uint8_t m_input_line;
uint8_t m_t_c;
uint8_t m_out_offs;
virtual void machine_reset() override;
virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_ram;
required_ioport_array<6> m_row;
output_finder<78> m_digits;
};
@ -207,7 +205,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(zac_2_state::zac_2_outtimer)
{
uint8_t display = (m_out_offs >> 3) & 7;
uint8_t digit = m_out_offs & 7;
output().set_digit_value(display * 10 + digit, patterns[m_p_ram[m_out_offs]&15]);
m_digits[display * 10 + digit] = patterns[m_p_ram[m_out_offs]&15];
}
}

View File

@ -31,6 +31,7 @@ public:
zac_proto_state(const machine_config &mconfig, device_type type, const char *tag)
: genpin_class(mconfig, type, tag)
, m_maincpu(*this, "maincpu")
, m_digits(*this, "digit%u", 0U)
{ }
DECLARE_WRITE8_MEMBER(out0_w);
@ -41,7 +42,9 @@ public:
void zac_proto_map(address_map &map);
private:
virtual void machine_reset() override;
virtual void machine_start() override { m_digits.resolve(); }
required_device<cpu_device> m_maincpu;
output_finder<11> m_digits;
};
@ -221,9 +224,9 @@ WRITE8_MEMBER( zac_proto_state::digit_w )
static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71 }; // 9368 (outputs 0-9,A-F)
static const uint8_t decimals[10] = { 0, 0, 0x80, 0, 0, 0x80, 0, 0, 0, 0 };
offset<<=1;
output().set_digit_value(offset, patterns[data&15] | decimals[offset]);
m_digits[offset] = patterns[data&15] | decimals[offset];
offset++;
output().set_digit_value(offset, patterns[data>>4] | decimals[offset]);
m_digits[offset] = patterns[data>>4] | decimals[offset];
}
WRITE8_MEMBER( zac_proto_state::sound_w )
@ -233,7 +236,7 @@ WRITE8_MEMBER( zac_proto_state::sound_w )
void zac_proto_state::machine_reset()
{
output().set_digit_value(10, 0x3f); // units shows zero all the time
m_digits[10] = 0x3f; // units shows zero all the time
}
MACHINE_CONFIG_START(zac_proto_state::zac_proto)