mirror of
https://github.com/holub/mame
synced 2025-04-21 07:52:35 +03:00
6821pia: Add port line write handlers (nw)
This commit is contained in:
parent
fd0d4bf93b
commit
8ca5b0051d
@ -910,6 +910,23 @@ void pia6821_device::write_porta(uint8_t data)
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write_porta_line
|
||||
//-------------------------------------------------
|
||||
|
||||
void pia6821_device::write_porta_line(int line, bool state)
|
||||
{
|
||||
if (!m_in_a_pushed)
|
||||
m_port_a_z_mask = 0xff;
|
||||
|
||||
uint8_t mask = 1 << line;
|
||||
if (state)
|
||||
set_a_input(m_in_a | mask, m_port_a_z_mask & ~mask);
|
||||
else
|
||||
set_a_input(m_in_a & ~mask, m_port_a_z_mask & ~mask);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// a_output
|
||||
//-------------------------------------------------
|
||||
@ -1022,6 +1039,21 @@ void pia6821_device::write_portb(uint8_t data)
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// write_portb_line
|
||||
//-------------------------------------------------
|
||||
|
||||
void pia6821_device::write_portb_line(int line, bool state)
|
||||
{
|
||||
uint8_t mask = 1 << line;
|
||||
|
||||
if (state)
|
||||
write_portb(m_in_b | mask);
|
||||
else
|
||||
write_portb(m_in_b & ~mask);
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// b_output
|
||||
//-------------------------------------------------
|
||||
|
@ -65,9 +65,19 @@ public:
|
||||
|
||||
DECLARE_WRITE8_MEMBER( porta_w ) { write_porta(data); }
|
||||
void write_porta(uint8_t data);
|
||||
void write_porta_line(int line, bool state);
|
||||
void set_a_input(uint8_t data, uint8_t z_mask);
|
||||
uint8_t a_output();
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( pa0_w ) { write_porta_line(0, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa1_w ) { write_porta_line(1, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa2_w ) { write_porta_line(2, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa3_w ) { write_porta_line(3, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa4_w ) { write_porta_line(4, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa5_w ) { write_porta_line(5, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa6_w ) { write_porta_line(6, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa7_w ) { write_porta_line(7, state); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( ca1_w );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( ca2_w );
|
||||
@ -76,8 +86,18 @@ public:
|
||||
|
||||
DECLARE_WRITE8_MEMBER( portb_w ) { write_portb(data); }
|
||||
void write_portb(uint8_t data);
|
||||
void write_portb_line(int line, bool state);
|
||||
uint8_t b_output();
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( pb0_w ) { write_portb_line(0, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb1_w ) { write_portb_line(1, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb2_w ) { write_portb_line(2, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb3_w ) { write_portb_line(3, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb4_w ) { write_portb_line(4, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb5_w ) { write_portb_line(5, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb6_w ) { write_portb_line(6, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pb7_w ) { write_portb_line(7, state); }
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( cb1_w );
|
||||
|
||||
DECLARE_WRITE_LINE_MEMBER( cb2_w );
|
||||
|
Loading…
Reference in New Issue
Block a user