mirror of
https://github.com/holub/mame
synced 2025-05-29 17:13:05 +03:00
(nw) output finder for atari_s1,atari_s2,dauphin,rotation,h8,dagz80
This commit is contained in:
parent
109691ca5c
commit
cb49841424
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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 )
|
||||
|
@ -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];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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 )
|
||||
|
Loading…
Reference in New Issue
Block a user