mirror of
https://github.com/holub/mame
synced 2025-10-05 08:41:31 +03:00
Merge pull request #4864 from cam900/z80pio_args
z80pio.cpp : Simplify handlers, Reduce duplicates
This commit is contained in:
commit
783a1d3f9f
@ -61,10 +61,10 @@ void cpc_pds_device::device_reset()
|
||||
|
||||
READ8_MEMBER(cpc_pds_device::pio_r)
|
||||
{
|
||||
return m_pio->read(space,offset);
|
||||
return m_pio->read(offset);
|
||||
}
|
||||
|
||||
WRITE8_MEMBER(cpc_pds_device::pio_w)
|
||||
{
|
||||
m_pio->write(space,offset,data);
|
||||
m_pio->write(offset,data);
|
||||
}
|
||||
|
@ -52,10 +52,10 @@ void msx_cart_bm_012_device::device_add_mconfig(machine_config &config)
|
||||
TMPZ84C015(config, m_tmpz84c015af, XTAL(12'000'000)/2); /* 6 MHz */
|
||||
m_tmpz84c015af->set_addrmap(AS_PROGRAM, &msx_cart_bm_012_device::bm_012_memory_map);
|
||||
// PIO callbacks
|
||||
m_tmpz84c015af->in_pa_callback().set("bm012_pio", FUNC(z80pio_device::pa_r));
|
||||
m_tmpz84c015af->out_pa_callback().set("bm012_pio", FUNC(z80pio_device::pa_w));
|
||||
m_tmpz84c015af->in_pb_callback().set("bm012_pio", FUNC(z80pio_device::pb_r));
|
||||
m_tmpz84c015af->out_pb_callback().set("bm012_pio", FUNC(z80pio_device::pb_w));
|
||||
m_tmpz84c015af->in_pa_callback().set("bm012_pio", FUNC(z80pio_device::port_a_read));
|
||||
m_tmpz84c015af->out_pa_callback().set("bm012_pio", FUNC(z80pio_device::port_a_write));
|
||||
m_tmpz84c015af->in_pb_callback().set("bm012_pio", FUNC(z80pio_device::port_b_read));
|
||||
m_tmpz84c015af->out_pb_callback().set("bm012_pio", FUNC(z80pio_device::port_b_write));
|
||||
m_tmpz84c015af->out_brdy_callback().set("bm012_pio", FUNC(z80pio_device::strobe_b));
|
||||
// SIO callbacks
|
||||
m_tmpz84c015af->out_txda_callback().set("mdout", FUNC(midi_port_device::write_txd));
|
||||
@ -94,8 +94,8 @@ const tiny_rom_entry *msx_cart_bm_012_device::device_rom_region() const
|
||||
void msx_cart_bm_012_device::device_start()
|
||||
{
|
||||
// Install IO read/write handlers
|
||||
io_space().install_write_handler(0x70, 0x73, write8_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target()));
|
||||
io_space().install_read_handler(0x70, 0x73, read8_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target()));
|
||||
io_space().install_write_handler(0x70, 0x73, write8sm_delegate(FUNC(z80pio_device::write_alt), m_bm012_pio.target()));
|
||||
io_space().install_read_handler(0x70, 0x73, read8sm_delegate(FUNC(z80pio_device::read_alt), m_bm012_pio.target()));
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,10 +87,10 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( strobe_a ) { m_pio->strobe_a(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( strobe_b ) { m_pio->strobe_b(state); }
|
||||
|
||||
DECLARE_WRITE8_MEMBER( pa_w ) { m_pio->pa_w(space, offset, data, mem_mask); }
|
||||
DECLARE_READ8_MEMBER( pa_r ) { return m_pio->pa_r(space, offset, mem_mask); }
|
||||
DECLARE_WRITE8_MEMBER( pb_w ) { m_pio->pb_w(space, offset, data, mem_mask); }
|
||||
DECLARE_READ8_MEMBER( pb_r ) { return m_pio->pb_r(space, offset, mem_mask); }
|
||||
DECLARE_WRITE8_MEMBER( pa_w ) { m_pio->port_a_write(data); }
|
||||
DECLARE_READ8_MEMBER( pa_r ) { return m_pio->port_a_read(); }
|
||||
DECLARE_WRITE8_MEMBER( pb_w ) { m_pio->port_b_write(data); }
|
||||
DECLARE_READ8_MEMBER( pb_r ) { return m_pio->port_b_read(); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa0_w ) { m_pio->pa0_w(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa1_w ) { m_pio->pa1_w(state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa2_w ) { m_pio->pa2_w(state); }
|
||||
|
@ -186,7 +186,7 @@ void z80pio_device::z80daisy_irq_reti()
|
||||
// read - register read
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( z80pio_device::read )
|
||||
u8 z80pio_device::read(offs_t offset)
|
||||
{
|
||||
int index = BIT(offset, 0);
|
||||
return BIT(offset, 1) ? control_read() : data_read(index);
|
||||
@ -196,7 +196,7 @@ READ8_MEMBER( z80pio_device::read )
|
||||
// write - register write
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( z80pio_device::write )
|
||||
void z80pio_device::write(offs_t offset, u8 data)
|
||||
{
|
||||
int index = BIT(offset, 0);
|
||||
BIT(offset, 1) ? control_write(index, data) : data_write(index, data);
|
||||
@ -206,7 +206,7 @@ WRITE8_MEMBER( z80pio_device::write )
|
||||
// read_alt - register read
|
||||
//-------------------------------------------------
|
||||
|
||||
READ8_MEMBER( z80pio_device::read_alt )
|
||||
u8 z80pio_device::read_alt(offs_t offset)
|
||||
{
|
||||
int index = BIT(offset, 1);
|
||||
return BIT(offset, 0) ? control_read() : data_read(index);
|
||||
@ -216,7 +216,7 @@ READ8_MEMBER( z80pio_device::read_alt )
|
||||
// write_alt - register write
|
||||
//-------------------------------------------------
|
||||
|
||||
WRITE8_MEMBER( z80pio_device::write_alt )
|
||||
void z80pio_device::write_alt(offs_t offset, u8 data)
|
||||
{
|
||||
int index = BIT(offset, 1);
|
||||
BIT(offset, 0) ? control_write(index, data) : data_write(index, data);
|
||||
|
@ -97,10 +97,6 @@ public:
|
||||
uint8_t port_b_read() { return port_read(PORT_B); }
|
||||
void port_a_write(uint8_t data) { port_write(PORT_A, data); }
|
||||
void port_b_write(uint8_t data) { port_write(PORT_B, data); }
|
||||
DECLARE_WRITE8_MEMBER( pa_w ) { port_a_write(data); }
|
||||
DECLARE_READ8_MEMBER( pa_r ) { return port_a_read(); }
|
||||
DECLARE_WRITE8_MEMBER( pb_w ) { port_b_write(data); }
|
||||
DECLARE_READ8_MEMBER( pb_r ) { return port_b_read(); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa0_w ) { port_write(PORT_A, 0, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa1_w ) { port_write(PORT_A, 1, state); }
|
||||
DECLARE_WRITE_LINE_MEMBER( pa2_w ) { port_write(PORT_A, 2, state); }
|
||||
@ -119,12 +115,12 @@ public:
|
||||
DECLARE_WRITE_LINE_MEMBER( pb7_w ) { port_write(PORT_B, 7, state); }
|
||||
|
||||
// standard read/write, with C/D in bit 1, B/A in bit 0
|
||||
DECLARE_READ8_MEMBER( read );
|
||||
DECLARE_WRITE8_MEMBER( write );
|
||||
u8 read(offs_t offset);
|
||||
void write(offs_t offset, u8 data);
|
||||
|
||||
// alternate read/write, with C/D in bit 0, B/A in bit 1
|
||||
DECLARE_READ8_MEMBER( read_alt );
|
||||
DECLARE_WRITE8_MEMBER( write_alt );
|
||||
u8 read_alt(offs_t offset);
|
||||
void write_alt(offs_t offset, u8 data);
|
||||
|
||||
private:
|
||||
enum
|
||||
|
@ -76,11 +76,11 @@ void bbcbc_state::io_map(address_map &map)
|
||||
{
|
||||
map.global_mask(0xff);
|
||||
map(0x00, 0x7f).lrw8("z80pio_rw",
|
||||
[this](address_space &space, offs_t offset, u8 mem_mask) {
|
||||
return m_z80pio->read(space, offset >> 5, mem_mask);
|
||||
[this](offs_t offset) {
|
||||
return m_z80pio->read(offset >> 5);
|
||||
},
|
||||
[this](address_space &space, offs_t offset, u8 data, u8 mem_mask) {
|
||||
m_z80pio->write(space, offset >> 5, data, mem_mask);
|
||||
[this](offs_t offset, u8 data) {
|
||||
m_z80pio->write(offset >> 5, data);
|
||||
});
|
||||
map(0x80, 0x81).rw("tms9129", FUNC(tms9129_device::read), FUNC(tms9129_device::write));
|
||||
}
|
||||
|
@ -299,7 +299,7 @@ READ8_MEMBER(vsc_state::main_io_trampoline_r)
|
||||
if (~offset & 4)
|
||||
data &= m_ppi8255->read(offset & 3);
|
||||
if (~offset & 8)
|
||||
data &= m_z80pio->read(space, offset & 3);
|
||||
data &= m_z80pio->read(offset & 3);
|
||||
|
||||
return data;
|
||||
}
|
||||
@ -309,7 +309,7 @@ WRITE8_MEMBER(vsc_state::main_io_trampoline_w)
|
||||
if (~offset & 4)
|
||||
m_ppi8255->write(offset & 3, data);
|
||||
if (~offset & 8)
|
||||
m_z80pio->write(space, offset & 3, data);
|
||||
m_z80pio->write(offset & 3, data);
|
||||
}
|
||||
|
||||
void vsc_state::main_io(address_map &map)
|
||||
|
@ -106,8 +106,8 @@ void onyx_state::c8002_io(address_map &map)
|
||||
map(0xff30, 0xff37).lrw8("ctc1_rw", [this](offs_t offset) { return m_ctc[0]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[0]->write(offset >> 1, data); });
|
||||
map(0xff38, 0xff3f).lrw8("ctc2_rw", [this](offs_t offset) { return m_ctc[1]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[1]->write(offset >> 1, data); });
|
||||
map(0xff40, 0xff47).lrw8("ctc3_rw", [this](offs_t offset) { return m_ctc[2]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_ctc[2]->write(offset >> 1, data); });
|
||||
map(0xff50, 0xff57).lrw8("pio1_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio[0]->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio[0]->write(space, offset >> 1, data, mem_mask); });
|
||||
map(0xff58, 0xff5f).lrw8("pio2_rw", [this](address_space &space, offs_t offset, u8 mem_mask) { return m_pio[1]->read(space, offset >> 1, mem_mask); }, [this](address_space &space, offs_t offset, u8 data, u8 mem_mask) { m_pio[1]->write(space, offset >> 1, data, mem_mask); });
|
||||
map(0xff50, 0xff57).lrw8("pio1_rw", [this](offs_t offset) { return m_pio[0]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_pio[0]->write(offset >> 1, data); });
|
||||
map(0xff58, 0xff5f).lrw8("pio2_rw", [this](offs_t offset) { return m_pio[1]->read(offset >> 1); }, [this](offs_t offset, u8 data) { m_pio[1]->write(offset >> 1, data); });
|
||||
map(0xffb9, 0xffb9).w(FUNC(onyx_state::z8002_m1_w));
|
||||
}
|
||||
|
||||
|
@ -633,7 +633,7 @@ READ8_MEMBER( pasopia7_state::pasopia7_io_r )
|
||||
return m_ctc->read(io_port & 3);
|
||||
else
|
||||
if(io_port >= 0x30 && io_port <= 0x33)
|
||||
return m_pio->read(space, io_port & 3);
|
||||
return m_pio->read(io_port & 3);
|
||||
// else if(io_port == 0x3a) { SN1 }
|
||||
// else if(io_port == 0x3b) { SN2 }
|
||||
// else if(io_port == 0x3c) { bankswitch }
|
||||
@ -684,7 +684,7 @@ WRITE8_MEMBER( pasopia7_state::pasopia7_io_w )
|
||||
m_ctc->write(io_port & 3, data);
|
||||
else
|
||||
if(io_port >= 0x30 && io_port <= 0x33)
|
||||
m_pio->write(space, io_port & 3, data);
|
||||
m_pio->write(io_port & 3, data);
|
||||
else
|
||||
if(io_port == 0x3a)
|
||||
m_sn1->write(data);
|
||||
|
@ -65,21 +65,21 @@ private:
|
||||
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( sio_w ) { m_z80sio->cd_ba_w(N, data); }
|
||||
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio1_w ) { m_z80pio[0]->write(space, N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio2_w ) { m_z80pio[1]->write(space, N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio3_w ) { m_z80pio[2]->write(space, N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio4_w ) { m_z80pio[3]->write(space, N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio5_w ) { m_z80pio[4]->write(space, N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio1_w ) { m_z80pio[0]->write(N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio2_w ) { m_z80pio[1]->write(N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio3_w ) { m_z80pio[2]->write(N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio4_w ) { m_z80pio[3]->write(N, data); }
|
||||
template <unsigned N> DECLARE_WRITE8_MEMBER( pio5_w ) { m_z80pio[4]->write(N, data); }
|
||||
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( ctc_r ) { return m_z80ctc->read(N); }
|
||||
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( sio_r ) { return m_z80sio->cd_ba_r(N); }
|
||||
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio1_r ) { return m_z80pio[0]->read(space, N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio2_r ) { return m_z80pio[1]->read(space, N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio3_r ) { return m_z80pio[2]->read(space, N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio4_r ) { return m_z80pio[3]->read(space, N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio5_r ) { return m_z80pio[4]->read(space, N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio1_r ) { return m_z80pio[0]->read(N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio2_r ) { return m_z80pio[1]->read(N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio3_r ) { return m_z80pio[2]->read(N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio4_r ) { return m_z80pio[3]->read(N); }
|
||||
template <unsigned N> DECLARE_READ8_MEMBER( pio5_r ) { return m_z80pio[4]->read(N); }
|
||||
|
||||
/* PIO 1 */
|
||||
|
||||
|
@ -321,7 +321,7 @@ static const z80_daisy_config daisy_chain_intf[] =
|
||||
|
||||
void rc702_state::kbd_put(u8 data)
|
||||
{
|
||||
m_pio->pa_w(machine().dummy_space(), 0, data);
|
||||
m_pio->port_a_write(data);
|
||||
m_pio->strobe_a(0);
|
||||
m_pio->strobe_a(1);
|
||||
}
|
||||
|
@ -102,7 +102,7 @@ READ8_MEMBER( tiki100_state::iorq_r )
|
||||
break;
|
||||
|
||||
case 0x02: // PARS
|
||||
data = m_pio->read(space, offset & 0x03);
|
||||
data = m_pio->read(offset & 0x03);
|
||||
break;
|
||||
|
||||
case 0x04: // FLOP
|
||||
@ -141,7 +141,7 @@ WRITE8_MEMBER( tiki100_state::iorq_w )
|
||||
break;
|
||||
|
||||
case 0x02: // PARS
|
||||
m_pio->write(space, offset & 0x03, data);
|
||||
m_pio->write(offset & 0x03, data);
|
||||
break;
|
||||
|
||||
case 0x03: // VIPB
|
||||
|
@ -735,7 +735,7 @@ void trs80m2_state::trs80m2(machine_config &config)
|
||||
|
||||
// devices
|
||||
FD1791(config, m_fdc, 8_MHz_XTAL / 4);
|
||||
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::pa_w));
|
||||
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::port_a_write));
|
||||
m_fdc->drq_wr_callback().set(m_dmac, FUNC(z80dma_device::rdy_w));
|
||||
FLOPPY_CONNECTOR(config, FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
|
||||
@ -827,7 +827,7 @@ void trs80m16_state::trs80m16(machine_config &config)
|
||||
|
||||
// devices
|
||||
FD1791(config, m_fdc, 8_MHz_XTAL / 4);
|
||||
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::pa_w));
|
||||
m_fdc->intrq_wr_callback().set(m_pio, FUNC(z80pio_device::port_a_write));
|
||||
m_fdc->drq_wr_callback().set(m_dmac, FUNC(z80dma_device::rdy_w));
|
||||
FLOPPY_CONNECTOR(config, FD1791_TAG":0", trs80m2_floppies, "8dsdd", floppy_image_device::default_floppy_formats);
|
||||
FLOPPY_CONNECTOR(config, FD1791_TAG":1", trs80m2_floppies, nullptr, floppy_image_device::default_floppy_formats);
|
||||
|
Loading…
Reference in New Issue
Block a user