(nw) output finder for atari_s1,atari_s2,dauphin,rotation,h8,dagz80

This commit is contained in:
Robbbert 2018-04-03 18:54:00 +10:00
parent 109691ca5c
commit cb49841424
6 changed files with 33 additions and 17 deletions

View File

@ -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<cpu_device> m_maincpu;
required_shared_ptr<uint8_t> m_p_ram;
required_device<dac_4bit_r2r_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];
}
}

View File

@ -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<cpu_device> m_maincpu;
required_device<dac_4bit_binary_weighted_device> m_dac;
required_device<dac_3bit_binary_weighted_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];
}
}

View File

@ -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<cpu_device> m_maincpu;
required_device<speaker_sound_device> m_speaker;
required_device<cassette_image_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 )

View File

@ -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<cpu_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];
}
}

View File

@ -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<cpu_device> m_maincpu;
required_device<i8251_device> m_uart;
required_device<cassette_image_device> m_cass;
required_device<beep_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)

View File

@ -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 )