mirror of
https://github.com/holub/mame
synced 2025-05-29 17:13:05 +03:00
(nw) output finder for eacc,instruct,mk2,mkit09,sc1,sdk85,sdk86
This commit is contained in:
parent
0ec48c3f40
commit
25bddc881b
@ -59,10 +59,11 @@ class eacc_state : public driver_device
|
||||
{
|
||||
public:
|
||||
eacc_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag),
|
||||
m_maincpu(*this, "maincpu"),
|
||||
m_pia(*this, "pia"),
|
||||
m_p_nvram(*this, "nvram")
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_pia(*this, "pia")
|
||||
, m_p_nvram(*this, "nvram")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_READ_LINE_MEMBER( eacc_cb1_r );
|
||||
@ -72,19 +73,21 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( eacc_cb2_w );
|
||||
DECLARE_WRITE8_MEMBER( eacc_digit_w );
|
||||
DECLARE_WRITE8_MEMBER( eacc_segment_w );
|
||||
bool m_cb1;
|
||||
bool m_cb2;
|
||||
bool m_nmi;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_shared_ptr<uint8_t> m_p_nvram;
|
||||
virtual void machine_reset() override;
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(eacc_cb1);
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(eacc_nmi);
|
||||
void eacc(machine_config &config);
|
||||
void eacc_mem(address_map &map);
|
||||
private:
|
||||
uint8_t m_digit;
|
||||
bool m_cb1;
|
||||
bool m_cb2;
|
||||
bool m_nmi;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_shared_ptr<uint8_t> m_p_nvram;
|
||||
output_finder<7> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -221,7 +224,7 @@ WRITE8_MEMBER( eacc_state::eacc_segment_w )
|
||||
{
|
||||
for (i = 3; i < 7; i++)
|
||||
if (BIT(m_digit, i))
|
||||
output().set_digit_value(i, bitswap<8>(data, 7, 0, 1, 4, 5, 6, 2, 3));
|
||||
m_digits[i] = bitswap<8>(data, 7, 0, 1, 4, 5, 6, 2, 3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -63,6 +63,7 @@ public:
|
||||
, m_p_smiram(*this, "smiram")
|
||||
, m_p_extram(*this, "extram")
|
||||
, m_cass(*this, "cassette")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(port_r);
|
||||
@ -83,6 +84,7 @@ public:
|
||||
void mem_map(address_map &map);
|
||||
private:
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
uint16_t m_lar;
|
||||
uint8_t m_digit;
|
||||
bool m_valid_digit;
|
||||
@ -93,6 +95,7 @@ private:
|
||||
required_shared_ptr<uint8_t> m_p_smiram;
|
||||
required_shared_ptr<uint8_t> m_p_extram;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
output_finder<129> m_digits;
|
||||
};
|
||||
|
||||
// flag led
|
||||
@ -127,7 +130,7 @@ WRITE8_MEMBER( instruct_state::portf8_w )
|
||||
WRITE8_MEMBER( instruct_state::portf9_w )
|
||||
{
|
||||
if (m_valid_digit)
|
||||
output().set_digit_value(m_digit, data);
|
||||
m_digits[m_digit] = data;
|
||||
m_valid_digit = false;
|
||||
}
|
||||
|
||||
|
@ -68,20 +68,23 @@ public:
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_speaker(*this, "speaker")
|
||||
, m_miot(*this, "miot")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<mos6530_device> m_miot;
|
||||
DECLARE_READ8_MEMBER(mk2_read_a);
|
||||
DECLARE_WRITE8_MEMBER(mk2_write_a);
|
||||
DECLARE_READ8_MEMBER(mk2_read_b);
|
||||
DECLARE_WRITE8_MEMBER(mk2_write_b);
|
||||
uint8_t m_led[5];
|
||||
virtual void machine_start() override;
|
||||
TIMER_DEVICE_CALLBACK_MEMBER(update_leds);
|
||||
void mk2(machine_config &config);
|
||||
void mk2_mem(address_map &map);
|
||||
private:
|
||||
uint8_t m_led[5];
|
||||
virtual void machine_start() override;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
required_device<mos6530_device> m_miot;
|
||||
output_finder<6> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -126,7 +129,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mk2_state::update_leds)
|
||||
int i;
|
||||
|
||||
for (i=0; i<4; i++)
|
||||
output().set_digit_value(i, m_led[i]);
|
||||
m_digits[i] = m_led[i];
|
||||
|
||||
output().set_led_value(0, BIT(m_led[4], 3));
|
||||
output().set_led_value(1, BIT(m_led[4], 5));
|
||||
@ -138,6 +141,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(mk2_state::update_leds)
|
||||
|
||||
void mk2_state::machine_start()
|
||||
{
|
||||
m_digits.resolve();
|
||||
}
|
||||
|
||||
READ8_MEMBER( mk2_state::mk2_read_a )
|
||||
|
@ -49,6 +49,7 @@ public:
|
||||
, m_pia(*this, "pia")
|
||||
, m_cass(*this, "cassette")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_READ8_MEMBER(pa_r);
|
||||
@ -64,9 +65,11 @@ public:
|
||||
private:
|
||||
uint8_t m_keydata;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<pia6821_device> m_pia;
|
||||
required_device<cassette_image_device> m_cass;
|
||||
required_device<cpu_device> m_maincpu;
|
||||
output_finder<10> m_digits;
|
||||
};
|
||||
|
||||
|
||||
@ -175,7 +178,8 @@ WRITE8_MEMBER( mkit09_state::pa_w )
|
||||
data ^= 0xff;
|
||||
if (m_keydata > 3)
|
||||
{
|
||||
output().set_digit_value(m_keydata, bitswap<8>(data, 7, 0, 5, 6, 4, 2, 1, 3));
|
||||
if (m_keydata < 10)
|
||||
m_digits[m_keydata] = bitswap<8>(data, 7, 0, 5, 6, 4, 2, 1, 3);
|
||||
m_keydata = 0;
|
||||
}
|
||||
|
||||
|
@ -2,37 +2,15 @@
|
||||
// copyright-holders:Sandro Ronco
|
||||
/***************************************************************************
|
||||
|
||||
Schachcomputer SC1
|
||||
Schachcomputer SC1
|
||||
|
||||
12/05/2009 Skeleton driver.
|
||||
2009-05-12 Skeleton driver.
|
||||
|
||||
ToDo:
|
||||
- speaker
|
||||
- LEDs
|
||||
- 7seg sometimes flashes
|
||||
|
||||
Port 80-83 could be a device
|
||||
|
||||
This happens at the start:
|
||||
'maincpu' (04EF): unmapped i/o memory write to 0081 = 0F & FF
|
||||
'maincpu' (04F3): unmapped i/o memory write to 0083 = CF & FF
|
||||
'maincpu' (04F7): unmapped i/o memory write to 0083 = BB & FF
|
||||
'maincpu' (04FB): unmapped i/o memory write to 0082 = 01 & FF
|
||||
'maincpu' (0523): unmapped i/o memory write to 00FC = 02 & FF **
|
||||
'maincpu' (0523): unmapped i/o memory write to 00FC = 04 & FF **
|
||||
|
||||
** These two happen for a while (making a tone from a speaker?)
|
||||
|
||||
Then:
|
||||
'maincpu' (0523): unmapped i/o memory write to 00FC = 00 & FF
|
||||
'maincpu' (0075): unmapped i/o memory write to 0080 = 02 & FF
|
||||
'maincpu' (0523): unmapped i/o memory write to 00FC = 20 & FF
|
||||
|
||||
Then this happens continuously:
|
||||
Port 80 out - 00, 02, FF
|
||||
Port FC out - 00, 01, 02, 04, 08, 10, 20, 40, 80 (selecting rows?)
|
||||
Port 80 in - upper byte = 20 thru 26
|
||||
Port 82 in - upper byte = 0 thru 7
|
||||
|
||||
****************************************************************************/
|
||||
|
||||
@ -52,19 +30,22 @@ public:
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_speaker(*this, "speaker")
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
|
||||
DECLARE_WRITE8_MEMBER( matrix_w );
|
||||
DECLARE_WRITE8_MEMBER( pio_port_a_w );
|
||||
DECLARE_READ8_MEMBER( pio_port_b_r );
|
||||
|
||||
uint8_t m_matrix;
|
||||
void sc1(machine_config &config);
|
||||
void sc1_io(address_map &map);
|
||||
void sc1_mem(address_map &map);
|
||||
private:
|
||||
uint8_t m_matrix;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<speaker_sound_device> m_speaker;
|
||||
output_finder<4> m_digits;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
@ -75,16 +56,16 @@ public:
|
||||
|
||||
WRITE8_MEMBER( sc1_state::pio_port_a_w )
|
||||
{
|
||||
uint8_t digit = bitswap<8>( data,3,4,6,0,1,2,7,5 );
|
||||
uint8_t digit = bitswap<8>( data,3,4,6,0,1,2,7,5 ) & 0x7f;
|
||||
|
||||
if (m_matrix & 0x04)
|
||||
output().set_digit_value(3, digit & 0x7f);
|
||||
m_digits[3] = digit;
|
||||
if (m_matrix & 0x08)
|
||||
output().set_digit_value(2, digit & 0x7f);
|
||||
m_digits[2] = digit;
|
||||
if (m_matrix & 0x10)
|
||||
output().set_digit_value(1, digit & 0x7f);
|
||||
m_digits[1] = digit;
|
||||
if (m_matrix & 0x20)
|
||||
output().set_digit_value(0, digit & 0x7f);
|
||||
m_digits[0] = digit;
|
||||
}
|
||||
|
||||
|
||||
|
@ -52,23 +52,22 @@ public:
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_keyboard(*this, "X%u", 0)
|
||||
, m_digits(*this, "digit%u", 0U)
|
||||
{ }
|
||||
|
||||
DECLARE_WRITE8_MEMBER(scanlines_w);
|
||||
DECLARE_WRITE8_MEMBER(digit_w);
|
||||
DECLARE_READ8_MEMBER(kbd_r);
|
||||
|
||||
void sdk85(machine_config &config);
|
||||
|
||||
void sdk85_io(address_map &map);
|
||||
void sdk85_mem(address_map &map);
|
||||
protected:
|
||||
virtual void machine_reset() override;
|
||||
|
||||
private:
|
||||
u8 m_digit;
|
||||
virtual void machine_reset() override;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_ioport_array<3> m_keyboard;
|
||||
output_finder<6> m_digits;
|
||||
};
|
||||
|
||||
void sdk85_state::machine_reset()
|
||||
@ -138,7 +137,7 @@ WRITE8_MEMBER( sdk85_state::scanlines_w )
|
||||
WRITE8_MEMBER( sdk85_state::digit_w )
|
||||
{
|
||||
if (m_digit < 6)
|
||||
output().set_digit_value(m_digit, bitswap<8>(data, 3, 2, 1, 0, 7, 6, 5, 4)^0xff);
|
||||
m_digits[m_digit] = bitswap<8>(~data, 3, 2, 1, 0, 7, 6, 5, 4);
|
||||
}
|
||||
|
||||
READ8_MEMBER( sdk85_state::kbd_r )
|
||||
|
@ -45,6 +45,7 @@ public:
|
||||
sdk86_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(scanlines_w);
|
||||
@ -56,7 +57,9 @@ public:
|
||||
void sdk86_mem(address_map &map);
|
||||
private:
|
||||
uint8_t m_digit;
|
||||
virtual void machine_start() override { m_digits.resolve(); }
|
||||
required_device<cpu_device> m_maincpu;
|
||||
output_finder<8> m_digits;
|
||||
};
|
||||
|
||||
void sdk86_state::sdk86_mem(address_map &map)
|
||||
@ -116,7 +119,7 @@ WRITE8_MEMBER( sdk86_state::scanlines_w )
|
||||
WRITE8_MEMBER( sdk86_state::digit_w )
|
||||
{
|
||||
if (m_digit < 8)
|
||||
output().set_digit_value(m_digit, data);
|
||||
m_digits[m_digit] = data;
|
||||
}
|
||||
|
||||
READ8_MEMBER( sdk86_state::kbd_r )
|
||||
|
Loading…
Reference in New Issue
Block a user