diff options
| author | 2014-04-17 05:49:48 +0000 | |
|---|---|---|
| committer | 2014-04-17 05:49:48 +0000 | |
| commit | a2bdecb0716607331febcb702563e78c40ba2f62 (patch) | |
| tree | 82d192231d376fcb7f88512bb7c30629f775d2d8 /src/mess/drivers | |
| parent | 7030ff593e2dc3d071b0f1df7d3d9085516cf414 (diff) | |
converted i8255 to devcb2. nw.
p.s. I tested several games/systems and I triple checked the diff to be sure I did not
make any copy and paste mistake in the 195 files touched by this, but let me know
if any system suddenly stops working!
Diffstat (limited to 'src/mess/drivers')
80 files changed, 868 insertions, 1158 deletions
diff --git a/src/mess/drivers/ace.c b/src/mess/drivers/ace.c index 7aa33072eef..0a5e13042b9 100644 --- a/src/mess/drivers/ace.c +++ b/src/mess/drivers/ace.c @@ -560,7 +560,7 @@ static const ay8910_interface psg_intf = //------------------------------------------------- -// I8255A_INTERFACE( ppi_intf ) +// I8255A interface //------------------------------------------------- READ8_MEMBER(ace_state::sby_r) @@ -606,17 +606,6 @@ WRITE8_MEMBER(ace_state::ald_w) } } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(ace_state,sby_r), - DEVCB_DRIVER_MEMBER(ace_state,ald_w), - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // Z80PIO_INTERFACE( pio_intf ) //------------------------------------------------- @@ -751,7 +740,11 @@ static MACHINE_CONFIG_START( ace, ace_state ) // devices MCFG_CASSETTE_ADD("cassette", ace_cassette_interface) MCFG_SNAPSHOT_ADD("snapshot", ace_state, ace, "ace", 1) - MCFG_I8255A_ADD(I8255_TAG, ppi_intf) + + MCFG_DEVICE_ADD(I8255_TAG, I8255A, 0) + MCFG_I8255_IN_PORTB_CB(READ8(ace_state, sby_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(ace_state, ald_w)) + MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_6_5MHz/2, pio_intf) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") diff --git a/src/mess/drivers/amico2k.c b/src/mess/drivers/amico2k.c index b63190afda8..b1a81e59d3e 100644 --- a/src/mess/drivers/amico2k.c +++ b/src/mess/drivers/amico2k.c @@ -195,16 +195,6 @@ WRITE8_MEMBER( amico2k_state::ppi_pb_w ) m_ls145_p = (data >> 1) & 0x0f; } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(amico2k_state, ppi_pa_r), // Port A read - DEVCB_DRIVER_MEMBER(amico2k_state, ppi_pa_w), // Port A write - DEVCB_DRIVER_MEMBER(amico2k_state, ppi_pb_r), // Port B read - DEVCB_DRIVER_MEMBER(amico2k_state, ppi_pb_w), // Port B write - DEVCB_NULL, // Port C read - DEVCB_NULL // Port C write -}; - void amico2k_state::machine_start() { m_led_refresh_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(amico2k_state::led_refresh),this)); @@ -222,7 +212,11 @@ static MACHINE_CONFIG_START( amico2k, amico2k_state ) /* video hardware */ MCFG_DEFAULT_LAYOUT( layout_amico2k ) - MCFG_I8255_ADD("i8255", ppi_intf) + MCFG_DEVICE_ADD("i8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amico2k_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amico2k_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amico2k_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(amico2k_state, ppi_pb_w)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c index cbfe321dc01..0cbab6eb7b6 100644 --- a/src/mess/drivers/amstrad.c +++ b/src/mess/drivers/amstrad.c @@ -119,20 +119,6 @@ Some bugs left : #define SYSTEM_GX4000 2 -/* ----------------------------- - - amstrad_ppi8255_interface - - -----------------------------*/ -static I8255_INTERFACE( amstrad_ppi8255_interface ) -{ - DEVCB_DRIVER_MEMBER(amstrad_state,amstrad_ppi_porta_r), /* port A read */ - DEVCB_DRIVER_MEMBER(amstrad_state,amstrad_ppi_porta_w), /* port A write */ - DEVCB_DRIVER_MEMBER(amstrad_state,amstrad_ppi_portb_r), /* port B read */ - DEVCB_NULL, /* port B write */ - DEVCB_NULL, /* port C read */ - DEVCB_DRIVER_MEMBER(amstrad_state,amstrad_ppi_portc_w) /* port C write */ -}; - - /* Memory is banked in 16k blocks. However, the multiface pages the memory in 8k blocks! The ROM can be paged into bank 0 and bank 3. */ @@ -869,7 +855,11 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state ) MCFG_MACHINE_START_OVERRIDE(amstrad_state, amstrad ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, amstrad ) - MCFG_I8255_ADD( "ppi8255", amstrad_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amstrad_state, amstrad_ppi_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amstrad_state, amstrad_ppi_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amstrad_state, amstrad_ppi_portb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(amstrad_state, amstrad_ppi_portc_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -950,7 +940,11 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state ) MCFG_MACHINE_START_OVERRIDE(amstrad_state, plus ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, plus ) - MCFG_I8255_ADD( "ppi8255", amstrad_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amstrad_state, amstrad_ppi_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amstrad_state, amstrad_ppi_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amstrad_state, amstrad_ppi_portb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(amstrad_state, amstrad_ppi_portc_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -1015,7 +1009,11 @@ static MACHINE_CONFIG_START( gx4000, amstrad_state ) MCFG_MACHINE_START_OVERRIDE(amstrad_state, gx4000 ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, gx4000 ) - MCFG_I8255_ADD( "ppi8255", amstrad_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amstrad_state, amstrad_ppi_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amstrad_state, amstrad_ppi_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amstrad_state, amstrad_ppi_portb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(amstrad_state, amstrad_ppi_portc_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/amust.c b/src/mess/drivers/amust.c index 03df68e319c..3be6c0502df 100644 --- a/src/mess/drivers/amust.c +++ b/src/mess/drivers/amust.c @@ -241,16 +241,6 @@ WRITE8_MEMBER( amust_state::port06_w ) m_port06 = data; } -static I8255_INTERFACE( ppi1_intf ) -{ - DEVCB_DRIVER_MEMBER(amust_state, port04_r), // Port A read - DEVCB_DRIVER_MEMBER(amust_state, port04_w), // Port A write - DEVCB_DRIVER_MEMBER(amust_state, port05_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(amust_state, port06_r), // Port C read - DEVCB_DRIVER_MEMBER(amust_state, port06_w), // Port C write -}; - READ8_MEMBER( amust_state::port08_r ) { return m_port08; @@ -301,16 +291,6 @@ WRITE8_MEMBER( amust_state::port0a_w ) } } -static I8255_INTERFACE( ppi2_intf ) -{ - DEVCB_DRIVER_MEMBER(amust_state, port08_r), // Port A read - DEVCB_DRIVER_MEMBER(amust_state, port08_w), // Port A write - DEVCB_DRIVER_MEMBER(amust_state, port09_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(amust_state, port0a_r), // Port C read - DEVCB_DRIVER_MEMBER(amust_state, port0a_w), // Port C write -}; - WRITE8_MEMBER( amust_state::port0d_w ) { UINT16 video_address = m_port08 | ((m_port0a & 7) << 8); @@ -458,8 +438,20 @@ static MACHINE_CONFIG_START( amust, amust_state ) //MCFG_RS232_DSR_HANDLER(DEVWRITELINE("uart8251", i8251_device, write_dsr)) MCFG_DEVICE_ADD("pit", PIT8253, 0) - MCFG_I8255A_ADD("ppi1", ppi1_intf) - MCFG_I8255A_ADD("ppi2", ppi2_intf) + + MCFG_DEVICE_ADD("ppi1", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amust_state, port04_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amust_state, port04_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amust_state, port05_r)) + MCFG_I8255_IN_PORTC_CB(READ8(amust_state, port06_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(amust_state, port06_w)) + + MCFG_DEVICE_ADD("ppi2", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(amust_state, port08_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(amust_state, port08_w)) + MCFG_I8255_IN_PORTB_CB(READ8(amust_state, port09_r)) + MCFG_I8255_IN_PORTC_CB(READ8(amust_state, port0a_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(amust_state, port0a_w)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/apogee.c b/src/mess/drivers/apogee.c index 0327c493e18..949ec99a07e 100644 --- a/src/mess/drivers/apogee.c +++ b/src/mess/drivers/apogee.c @@ -213,11 +213,15 @@ static MACHINE_CONFIG_START( apogee, apogee_state ) MCFG_PIT8253_CLK2(XTAL_16MHz/9) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(apogee_state,pit8253_out2_changed)) - MCFG_I8255_ADD( "ppi8255_1", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) - //MCFG_I8255_ADD( "ppi8255_2", apogee_ppi8255_interface_2 ) + //MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) - MCFG_I8275_ADD ( "i8275", apogee_i8275_interface) + MCFG_I8275_ADD("i8275", apogee_i8275_interface) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update) diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index 46e23d2316f..478317fb576 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -175,16 +175,6 @@ WRITE8_MEMBER( apricot_state::i8255_portc_w ) // schematic page 294 says pc6 outputs to centronics pin 15, which is unused } -static const i8255_interface apricot_i8255a_intf = -{ - DEVCB_DEVICE_MEMBER("cent_data_in", input_buffer_device, read), - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(apricot_state, i8255_portb_w), - DEVCB_DRIVER_MEMBER(apricot_state, i8255_portc_r), - DEVCB_DRIVER_MEMBER(apricot_state, i8255_portc_w) -}; - WRITE_LINE_MEMBER( apricot_state::timer_out1 ) { // receive clock via timer 1 @@ -400,7 +390,13 @@ static MACHINE_CONFIG_START( apricot, apricot_state ) MCFG_RAM_EXTRA_OPTIONS("384k,512k") // with 1 or 2 128k expansion boards // devices - MCFG_I8255A_ADD("ic17", apricot_i8255a_intf) + MCFG_DEVICE_ADD("ic17", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8("cent_data_in", input_buffer_device, read)) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(apricot_state, i8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(apricot_state, i8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(apricot_state, i8255_portc_w)) + MCFG_PIC8259_ADD("ic31", INPUTLINE("ic91", 0), VCC, NULL) MCFG_DEVICE_ADD("ic16", PIT8253, 0) diff --git a/src/mess/drivers/atom.c b/src/mess/drivers/atom.c index 8b031ed9e3c..8fa11338149 100644 --- a/src/mess/drivers/atom.c +++ b/src/mess/drivers/atom.c @@ -423,7 +423,7 @@ INPUT_PORTS_END ***************************************************************************/ /*------------------------------------------------- - I8255_INTERFACE( ppi_intf ) + I8255 interface -------------------------------------------------*/ WRITE8_MEMBER( atom_state::ppi_pa_w ) @@ -553,16 +553,6 @@ WRITE8_MEMBER( atom_state::ppi_pc_w ) m_vdg->css_w(BIT(data, 3)); } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(atom_state, ppi_pa_w), - DEVCB_DRIVER_MEMBER(atom_state, ppi_pb_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(atom_state, ppi_pc_r), - DEVCB_DRIVER_MEMBER(atom_state, ppi_pc_w) -}; - /*------------------------------------------------- i8271_interface fdc_intf -------------------------------------------------*/ @@ -828,7 +818,12 @@ static MACHINE_CONFIG_START( atom, atom_state ) MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe)) MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(SY6502_TAG, m6502_device, irq_line)) - MCFG_I8255_ADD(INS8255_TAG, ppi_intf) + MCFG_DEVICE_ADD(INS8255_TAG, I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(atom_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(atom_state, ppi_pb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w)) + MCFG_I8271_ADD(I8271_TAG, fdc_intf) MCFG_I8271_IRQ_CALLBACK(WRITELINE(atom_state, atom_8271_interrupt_callback)) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(atom_floppy_interface) @@ -911,7 +906,11 @@ static MACHINE_CONFIG_START( atombb, atom_state ) MCFG_VIA6522_CA2_HANDLER(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe)) MCFG_VIA6522_IRQ_HANDLER(DEVWRITELINE(SY6502_TAG, m6502_device, irq_line)) - MCFG_I8255_ADD(INS8255_TAG, ppi_intf) + MCFG_DEVICE_ADD(INS8255_TAG, I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(atom_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(atom_state, ppi_pb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(atom_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(atom_state, ppi_pc_w)) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE(R6522_TAG, via6522_device, write_ca1)) diff --git a/src/mess/drivers/b2m.c b/src/mess/drivers/b2m.c index eb157b29b63..93b6fbdcc72 100644 --- a/src/mess/drivers/b2m.c +++ b/src/mess/drivers/b2m.c @@ -208,11 +208,19 @@ static MACHINE_CONFIG_START( b2m, b2m_state ) MCFG_PIT8253_CLK2(2000000) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pit8253", pit8253_device, write_clk0)) - MCFG_I8255_ADD( "ppi8255_1", b2m_ppi8255_interface_1 ) - - MCFG_I8255_ADD( "ppi8255_2", b2m_ppi8255_interface_2 ) - - MCFG_I8255_ADD( "ppi8255_3", b2m_ppi8255_interface_3 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(b2m_state, b2m_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(b2m_state, b2m_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(b2m_state, b2m_8255_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(b2m_state, b2m_8255_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTC_CB(WRITE8(b2m_state, b2m_ext_8255_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_3", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(b2m_state, b2m_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(b2m_state, b2m_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(b2m_state, b2m_romdisk_portc_w)) MCFG_PIC8259_ADD( "pic8259", WRITELINE(b2m_state,b2m_pic_set_int_line), VCC, NULL ) diff --git a/src/mess/drivers/basic52.c b/src/mess/drivers/basic52.c index e31e9c1e00f..f14e1254076 100644 --- a/src/mess/drivers/basic52.c +++ b/src/mess/drivers/basic52.c @@ -112,16 +112,6 @@ WRITE8_MEMBER( basic52_state::kbd_put ) m_term_data = data; } -static I8255_INTERFACE( ppi8255_intf ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - static MACHINE_CONFIG_START( basic31, basic52_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8031, XTAL_11_0592MHz) @@ -133,7 +123,7 @@ static MACHINE_CONFIG_START( basic31, basic52_state ) MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) MCFG_GENERIC_TERMINAL_KEYBOARD_CB(WRITE8(basic52_state, kbd_put)) - MCFG_I8255_ADD("ppi8255", ppi8255_intf ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( basic52, basic31 ) diff --git a/src/mess/drivers/bw2.c b/src/mess/drivers/bw2.c index 5d0ca64b2ba..94df7cfd420 100644 --- a/src/mess/drivers/bw2.c +++ b/src/mess/drivers/bw2.c @@ -393,7 +393,7 @@ WRITE_LINE_MEMBER( bw2_state::write_centronics_busy ) } //------------------------------------------------- -// I8255A_INTERFACE( ppi_intf ) +// I8255A interface //------------------------------------------------- WRITE8_MEMBER( bw2_state::ppi_pa_w ) @@ -499,17 +499,6 @@ READ8_MEMBER( bw2_state::ppi_pc_r ) return data; } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(bw2_state, ppi_pa_w), - DEVCB_DRIVER_MEMBER(bw2_state, ppi_pb_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(bw2_state, ppi_pc_r), - DEVCB_DRIVER_MEMBER(bw2_state, ppi_pc_w), -}; - - //------------------------------------------------- // pit8253_config pit_intf //------------------------------------------------- @@ -619,7 +608,12 @@ static MACHINE_CONFIG_START( bw2, bw2_state ) MCFG_PIT8253_CLK2(0) // Floppy /MTRON MCFG_PIT8253_OUT2_HANDLER(WRITELINE(bw2_state, mtron_w)) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(bw2_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(bw2_state, ppi_pb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(bw2_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(bw2_state, ppi_pc_w)) + MCFG_MSM6255_ADD(MSM6255_TAG, XTAL_16MHz, 0, SCREEN_TAG, lcdc_map) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") diff --git a/src/mess/drivers/compis.c b/src/mess/drivers/compis.c index 236da449794..0ece6895de2 100644 --- a/src/mess/drivers/compis.c +++ b/src/mess/drivers/compis.c @@ -508,7 +508,7 @@ WRITE_LINE_MEMBER( compis_state::tmr5_w ) } //------------------------------------------------- -// I8255A_INTERFACE( ppi_intf ) +// I8255A interface //------------------------------------------------- WRITE_LINE_MEMBER(compis_state::write_centronics_busy) @@ -585,17 +585,6 @@ WRITE8_MEMBER( compis_state::ppi_pc_w ) m_isbx0->opt0_w(BIT(data, 7)); } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_DRIVER_MEMBER(compis_state, ppi_pb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(compis_state, ppi_pc_w) -}; - - //------------------------------------------------- // I8274_INTERFACE( mpsc_intf ) //------------------------------------------------- @@ -723,7 +712,10 @@ static MACHINE_CONFIG_START( compis, compis_state ) MCFG_PIT8253_CLK2(XTAL_16MHz/8) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(compis_state, tmr5_w)) - MCFG_I8255_ADD(I8255_TAG, ppi_intf ) + MCFG_DEVICE_ADD(I8255_TAG, I8255, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTB_CB(READ8(compis_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(compis_state, ppi_pc_w)) MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(COMPIS_KEYBOARD_TAG, compis_keyboard_device, si_w)) diff --git a/src/mess/drivers/dai.c b/src/mess/drivers/dai.c index e4e9df29e16..d521583e2fa 100644 --- a/src/mess/drivers/dai.c +++ b/src/mess/drivers/dai.c @@ -210,7 +210,7 @@ static MACHINE_CONFIG_START( dai, dai_state ) MCFG_PIT8253_CLK2(2000000) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("custom", dai_sound_device, set_input_ch2)) - MCFG_I8255_ADD( "ppi8255", dai_ppi82555_intf ) + MCFG_DEVICE_ADD("i8255", I8255, 0) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/elwro800.c b/src/mess/drivers/elwro800.c index ffd5d8e411a..9611e5f00c0 100644 --- a/src/mess/drivers/elwro800.c +++ b/src/mess/drivers/elwro800.c @@ -199,16 +199,6 @@ WRITE8_MEMBER(elwro800_state::i8255_port_c_w) m_centronics->write_strobe((data >> 7) & 0x01); } -static I8255_INTERFACE(elwro800jr_ppi8255_interface) -{ - DEVCB_INPUT_PORT("JOY"), - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_in", input_buffer_device, read), - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_DRIVER_MEMBER(elwro800_state,i8255_port_c_r), - DEVCB_DRIVER_MEMBER(elwro800_state,i8255_port_c_w) -}; - /************************************* * * I/O reads and writes @@ -583,7 +573,13 @@ static MACHINE_CONFIG_START( elwro800, elwro800_state ) MCFG_VIDEO_START_OVERRIDE(elwro800_state, spectrum ) MCFG_UPD765A_ADD("upd765", true, true) - MCFG_I8255A_ADD( "ppi8255", elwro800jr_ppi8255_interface) + + MCFG_DEVICE_ADD("ppi8255", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("JOY")) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("cent_data_in", input_buffer_device, read)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTC_CB(READ8(elwro800_state, i8255_port_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(elwro800_state, i8255_port_c_w)) /* printer */ MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") diff --git a/src/mess/drivers/fidelz80.c b/src/mess/drivers/fidelz80.c index 025fbd9becd..0f0ab1bb503 100644 --- a/src/mess/drivers/fidelz80.c +++ b/src/mess/drivers/fidelz80.c @@ -697,26 +697,6 @@ WRITE8_MEMBER( fidelz80_state::vcc_porta_w ) update_display(); } -static I8255_INTERFACE( cc10_ppi8255_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fidelz80_state, cc10_porta_w), - DEVCB_INPUT_PORT("LEVEL"), - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portb_w), - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portc_r), - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portc_w) -}; - -static I8255_INTERFACE( vcc_ppi8255_intf ) -{ - DEVCB_NULL, // only bit 6 is readable (and only sometimes) and I'm not emulating the language latch unless needed - DEVCB_DRIVER_MEMBER(fidelz80_state, vcc_porta_w), // display segments and s14001a lines - DEVCB_DRIVER_MEMBER(fidelz80_state, vcc_portb_r), // bit 7 is readable and is the done line from the s14001a - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portb_w), // display digits and led dots - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portc_r), // bits 0,1,2,3 are readable, have to do with input - DEVCB_DRIVER_MEMBER(fidelz80_state, fidelz80_portc_w), // bits 4,5,6,7 are writable, have to do with input -}; - /****************************************************************************** I8255 Device, for VSC ******************************************************************************/ @@ -776,16 +756,6 @@ WRITE8_MEMBER( fidelz80_state::vsc_portc_w ) m_kp_matrix = (m_kp_matrix & 0x300) | data; } -static I8255_INTERFACE( vsc_ppi8255_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_porta_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_portb_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_portc_w) -}; - /****************************************************************************** PIO Device, for VSC ******************************************************************************/ @@ -1299,7 +1269,12 @@ static MACHINE_CONFIG_START( cc10, fidelz80_state ) MCFG_DEFAULT_LAYOUT(layout_fidelz80) /* other hardware */ - MCFG_I8255_ADD("ppi8255", cc10_ppi8255_intf) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, cc10_porta_w)) + MCFG_I8255_IN_PORTB_CB(IOPORT("LEVEL")) + MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, fidelz80_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, fidelz80_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, fidelz80_portc_w)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO( "mono" ) @@ -1318,7 +1293,13 @@ static MACHINE_CONFIG_START( vcc, fidelz80_state ) MCFG_DEFAULT_LAYOUT(layout_fidelz80) /* other hardware */ - MCFG_I8255_ADD("ppi8255", vcc_ppi8255_intf) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + // Port A Read - NULL : only bit 6 is readable (and only sometimes) and I'm not emulating the language latch unless needed + MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vcc_porta_w)) // display segments and s14001a lines + MCFG_I8255_IN_PORTB_CB(READ8(fidelz80_state, vcc_portb_r)) // bit 7 is readable and is the done line from the s14001a + MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, fidelz80_portb_w)) // display digits and led dots + MCFG_I8255_IN_PORTC_CB(READ8(fidelz80_state, fidelz80_portc_r)) // bits 0,1,2,3 are readable, have to do with input + MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, fidelz80_portc_w)) // bits 4,5,6,7 are writable, have to do with input /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1335,7 +1316,11 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state ) MCFG_DEFAULT_LAYOUT(layout_vsc) /* other hardware */ - MCFG_I8255_ADD("ppi8255", vsc_ppi8255_intf) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(fidelz80_state, vsc_porta_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(fidelz80_state, vsc_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(fidelz80_state, vsc_portb_w)) + MCFG_Z80PIO_ADD("z80pio", XTAL_4MHz, vsc_z80pio_intf) MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", fidelz80_state, nmi_timer, attotime::from_hz(600)) diff --git a/src/mess/drivers/fk1.c b/src/mess/drivers/fk1.c index 44fabb17a95..83cad2cf731 100644 --- a/src/mess/drivers/fk1.c +++ b/src/mess/drivers/fk1.c @@ -114,16 +114,6 @@ READ8_MEMBER( fk1_state::fk1_ppi_1_c_r ) return 0; } -static I8255_INTERFACE( fk1_ppi8255_interface_1 ) -{ - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_a_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_a_w), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_b_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_b_w), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_c_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_1_c_w) -}; - /* Port A: Writing data to disk @@ -167,16 +157,6 @@ READ8_MEMBER( fk1_state::fk1_ppi_2_c_r ) return 0; } -static I8255_INTERFACE( fk1_ppi8255_interface_2 ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_2_a_w), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_2_b_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_2_c_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_2_c_w) -}; - /* @@ -235,16 +215,6 @@ READ8_MEMBER( fk1_state::fk1_ppi_3_c_r ) return 0; } -static I8255_INTERFACE( fk1_ppi8255_interface_3 ) -{ - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_a_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_a_w), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_b_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_b_w), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_c_r), - DEVCB_DRIVER_MEMBER(fk1_state, fk1_ppi_3_c_w) -}; - WRITE_LINE_MEMBER( fk1_state::fk1_pit_out0 ) { // System time @@ -458,9 +428,27 @@ static MACHINE_CONFIG_START( fk1, fk1_state ) MCFG_PIT8253_CLK2(0) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(fk1_state, fk1_pit_out2)) - MCFG_I8255_ADD( "ppi8255_1", fk1_ppi8255_interface_1 ) - MCFG_I8255_ADD( "ppi8255_2", fk1_ppi8255_interface_2 ) - MCFG_I8255_ADD( "ppi8255_3", fk1_ppi8255_interface_3 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(fk1_state, fk1_ppi_1_a_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(fk1_state, fk1_ppi_1_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(fk1_state, fk1_ppi_1_b_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(fk1_state, fk1_ppi_1_b_w)) + MCFG_I8255_IN_PORTC_CB(READ8(fk1_state, fk1_ppi_1_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(fk1_state, fk1_ppi_1_c_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(fk1_state, fk1_ppi_2_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(fk1_state, fk1_ppi_2_b_r)) + MCFG_I8255_IN_PORTC_CB(READ8(fk1_state, fk1_ppi_2_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(fk1_state, fk1_ppi_2_c_w)) + + MCFG_DEVICE_ADD("ppi8255_3", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(fk1_state, fk1_ppi_3_a_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(fk1_state, fk1_ppi_3_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(fk1_state, fk1_ppi_3_b_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(fk1_state, fk1_ppi_3_b_w)) + MCFG_I8255_IN_PORTC_CB(READ8(fk1_state, fk1_ppi_3_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(fk1_state, fk1_ppi_3_c_w)) /* uart */ MCFG_DEVICE_ADD("uart", I8251, 0) diff --git a/src/mess/drivers/ibmpcjr.c b/src/mess/drivers/ibmpcjr.c index 0ebf6bad196..0a2d143562c 100644 --- a/src/mess/drivers/ibmpcjr.c +++ b/src/mess/drivers/ibmpcjr.c @@ -357,16 +357,6 @@ READ8_MEMBER(pcjr_state::pcjr_ppi_portc_r) return data; } -I8255_INTERFACE( pcjr_ppi8255_interface ) -{ - DEVCB_CONSTANT(0xff), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pcjr_state,pcjr_ppi_portb_w), - DEVCB_DRIVER_MEMBER(pcjr_state,pcjr_ppi_portc_r), - DEVCB_NULL -}; - WRITE8_MEMBER(pcjr_state::pcjr_fdc_dor_w) { logerror("fdc: dor = %02x\n", data); @@ -637,7 +627,10 @@ static MACHINE_CONFIG_START( ibmpcjr, pcjr_state) MCFG_PIC8259_ADD( "pic8259", WRITELINE(pcjr_state, pic8259_set_int_line), VCC, NULL ) - MCFG_I8255_ADD( "ppi8255", pcjr_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(CONSTANT(0xff)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pcjr_state, pcjr_ppi_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pcjr_state, pcjr_ppi_portc_r)) MCFG_INS8250_ADD( "ins8250", pcjr_com_interface, XTAL_1_8432MHz ) diff --git a/src/mess/drivers/iq151.c b/src/mess/drivers/iq151.c index de91ea35994..6cde446a209 100644 --- a/src/mess/drivers/iq151.c +++ b/src/mess/drivers/iq151.c @@ -375,16 +375,6 @@ UINT32 iq151_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, c return 0; } -static I8255_INTERFACE( iq151_ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(iq151_state, keyboard_row_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(iq151_state, keyboard_column_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(iq151_state, ppi_portc_r), - DEVCB_DRIVER_MEMBER(iq151_state, ppi_portc_w) -}; - static const cassette_interface iq151_cassette_interface = { cassette_default_formats, @@ -434,7 +424,11 @@ static MACHINE_CONFIG_START( iq151, iq151_state ) MCFG_PIC8259_ADD("pic8259", WRITELINE(iq151_state, pic_set_int_line), VCC, NULL) - MCFG_I8255_ADD("ppi8255", iq151_ppi8255_intf) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(iq151_state, keyboard_row_r)) + MCFG_I8255_IN_PORTB_CB(READ8(iq151_state, keyboard_column_r)) + MCFG_I8255_IN_PORTC_CB(READ8(iq151_state, ppi_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(iq151_state, ppi_portc_w)) MCFG_CASSETTE_ADD( "cassette", iq151_cassette_interface ) MCFG_TIMER_DRIVER_ADD_PERIODIC("cassette_timer", iq151_state, cassette_timer, attotime::from_hz(2000)) diff --git a/src/mess/drivers/irisha.c b/src/mess/drivers/irisha.c index c4d4d0eb828..302cf56b87a 100644 --- a/src/mess/drivers/irisha.c +++ b/src/mess/drivers/irisha.c @@ -287,17 +287,6 @@ WRITE8_MEMBER(irisha_state::irisha_8255_portc_w) update_speaker(); } -static I8255A_INTERFACE( irisha_ppi8255_interface ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(irisha_state, irisha_8255_porta_w), - DEVCB_DRIVER_MEMBER(irisha_state, irisha_8255_portb_r), - DEVCB_DRIVER_MEMBER(irisha_state, irisha_8255_portb_w), - DEVCB_DRIVER_MEMBER(irisha_state, irisha_8255_portc_r), - DEVCB_DRIVER_MEMBER(irisha_state, irisha_8255_portc_w), -}; - - /************************************************* i8259 @@ -427,7 +416,13 @@ static MACHINE_CONFIG_START( irisha, irisha_state ) MCFG_PIT8253_CLK2(XTAL_16MHz / 9) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(irisha_state, speaker_w)) - MCFG_I8255_ADD( "ppi8255", irisha_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(irisha_state, irisha_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(irisha_state, irisha_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(irisha_state, irisha_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(irisha_state, irisha_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(irisha_state, irisha_8255_portc_w)) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(irisha_state,irisha_pic_set_int_line), VCC, NULL ) MACHINE_CONFIG_END diff --git a/src/mess/drivers/isbc.c b/src/mess/drivers/isbc.c index 2225230783b..85abbc9809f 100644 --- a/src/mess/drivers/isbc.c +++ b/src/mess/drivers/isbc.c @@ -159,16 +159,6 @@ WRITE_LINE_MEMBER( isbc_state::isbc86_tmr2_w ) m_uart8251->write_txc(state); } -static const i8255_interface isbc86_ppi_interface = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - READ8_MEMBER( isbc_state::get_slave_ack ) { if (offset == 7) @@ -191,16 +181,6 @@ WRITE_LINE_MEMBER( isbc_state::write_centronics_ack ) m_pic_1->ir7_w(1); } -static const i8255_interface isbc286_ppi_interface = -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_DEVICE_MEMBER("cent_status_in", input_buffer_device, read), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(isbc_state, ppi_c_w), -}; - WRITE8_MEMBER( isbc_state::ppi_c_w ) { m_centronics->write_strobe(data & 1); @@ -252,7 +232,7 @@ static MACHINE_CONFIG_START( isbc86, isbc_state ) MCFG_PIT8253_CLK2(XTAL_22_1184MHz/18) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(isbc_state, isbc86_tmr2_w)) - MCFG_I8255A_ADD("ppi", isbc86_ppi_interface) + MCFG_DEVICE_ADD("ppi", I8255A, 0) MCFG_DEVICE_ADD("uart8251", I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) @@ -282,7 +262,7 @@ static MACHINE_CONFIG_START( rpc86, isbc_state ) MCFG_PIT8253_CLK2(XTAL_22_1184MHz/18) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(isbc_state, isbc86_tmr2_w)) - MCFG_I8255A_ADD("ppi", isbc86_ppi_interface) + MCFG_DEVICE_ADD("ppi", I8255A, 0) MCFG_DEVICE_ADD("uart8251", I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE("rs232", rs232_port_device, write_txd)) @@ -317,7 +297,10 @@ static MACHINE_CONFIG_START( isbc286, isbc_state ) MCFG_PIT8253_CLK2(XTAL_22_1184MHz/18) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(isbc_state, isbc286_tmr2_w)) - MCFG_I8255A_ADD("ppi", isbc286_ppi_interface) + MCFG_DEVICE_ADD("ppi", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(isbc_state, ppi_c_w)) MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(isbc_state, write_centronics_ack)) diff --git a/src/mess/drivers/lviv.c b/src/mess/drivers/lviv.c index 29a1ec5f2a8..1c5584fb976 100644 --- a/src/mess/drivers/lviv.c +++ b/src/mess/drivers/lviv.c @@ -433,10 +433,21 @@ static MACHINE_CONFIG_START( lviv, lviv_state ) MCFG_CPU_IO_MAP(io_map) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - - MCFG_I8255_ADD( "ppi8255_0", lviv_ppi8255_interface_0 ) - - MCFG_I8255_ADD( "ppi8255_1", lviv_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(lviv_state, lviv_ppi_0_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(lviv_state, lviv_ppi_0_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(lviv_state, lviv_ppi_0_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(lviv_state, lviv_ppi_0_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(lviv_state, lviv_ppi_0_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(lviv_state, lviv_ppi_0_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(lviv_state, lviv_ppi_1_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(lviv_state, lviv_ppi_1_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(lviv_state, lviv_ppi_1_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(lviv_state, lviv_ppi_1_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(lviv_state, lviv_ppi_1_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(lviv_state, lviv_ppi_1_portc_w)) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -451,7 +462,6 @@ static MACHINE_CONFIG_START( lviv, lviv_state ) MCFG_PALETTE_ADD("palette", sizeof (lviv_palette) / 3) MCFG_PALETTE_INIT_OWNER(lviv_state, lviv) - /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") diff --git a/src/mess/drivers/m20.c b/src/mess/drivers/m20.c index 0a02bb230d6..7f675e38a90 100644 --- a/src/mess/drivers/m20.c +++ b/src/mess/drivers/m20.c @@ -847,16 +847,6 @@ static MC6845_INTERFACE( mc6845_intf ) NULL /* update address callback */ }; -static I8255A_INTERFACE( ppi_interface ) -{ - DEVCB_NULL, // port A read - DEVCB_NULL, // port A write - DEVCB_NULL, // port B read - DEVCB_NULL, // port B write - DEVCB_NULL, // port C read - DEVCB_NULL // port C write -}; - WRITE_LINE_MEMBER(m20_state::kbd_rxrdy_int) { m_i8259->ir4_w(state); @@ -934,7 +924,8 @@ static MACHINE_CONFIG_START( m20, m20_state ) MCFG_FLOPPY_DRIVE_ADD("fd1797:0", m20_floppies, "5dd", m20_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fd1797:1", m20_floppies, "5dd", m20_state::floppy_formats) MCFG_MC6845_ADD("crtc", MC6845, "screen", PIXEL_CLOCK/8, mc6845_intf) /* hand tuned to get ~50 fps */ - MCFG_I8255A_ADD("ppi8255", ppi_interface) + + MCFG_DEVICE_ADD("ppi8255", I8255A, 0) MCFG_DEVICE_ADD("i8251_1", I8251, 0) MCFG_I8251_TXD_HANDLER(WRITELINE(m20_state, kbd_tx)) diff --git a/src/mess/drivers/m5.c b/src/mess/drivers/m5.c index c7f3fb67a93..a07dce78415 100644 --- a/src/mess/drivers/m5.c +++ b/src/mess/drivers/m5.c @@ -451,7 +451,7 @@ static TMS9928A_INTERFACE(m5_tms9928a_interface) //------------------------------------------------- -// I8255_INTERFACE( ppi_intf ) +// I8255 Interface //------------------------------------------------- READ8_MEMBER( m5_state::ppi_pa_r ) @@ -537,17 +537,6 @@ WRITE8_MEMBER( m5_state::ppi_pc_w ) m_obfa = BIT(data, 7); } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(m5_state, ppi_pa_r), - DEVCB_DRIVER_MEMBER(m5_state, ppi_pa_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(m5_state, ppi_pb_w), - DEVCB_DRIVER_MEMBER(m5_state, ppi_pc_r), - DEVCB_DRIVER_MEMBER(m5_state, ppi_pc_w) -}; - - //------------------------------------------------- // upd765_interface fdc_intf //------------------------------------------------- @@ -646,7 +635,14 @@ static MACHINE_CONFIG_START( m5, m5_state ) MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) MCFG_CASSETTE_ADD("cassette", cassette_intf) - MCFG_I8255_ADD(I8255A_TAG, ppi_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(m5_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(m5_state, ppi_pa_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(m5_state, ppi_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(m5_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(m5_state, ppi_pc_w)) + MCFG_UPD765A_ADD(UPD765_TAG, true, true) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE(Z80_FD5_TAG, INPUT_LINE_IRQ0)) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", m5_floppies, "525dd", m5_state::floppy_formats) diff --git a/src/mess/drivers/mbc200.c b/src/mess/drivers/mbc200.c index 950cf72d37e..3d29a1c33c5 100644 --- a/src/mess/drivers/mbc200.c +++ b/src/mess/drivers/mbc200.c @@ -187,17 +187,6 @@ UINT32 mbc200_state::screen_update_mbc200(screen_device &screen, bitmap_ind16 &b return 0; } -static I8255_INTERFACE( mbc200_ppi8255_interface_1 ) -{ - DEVCB_NULL, /* port A read */ - DEVCB_NULL, /* port A write */ - DEVCB_NULL, /* port B read */ - DEVCB_NULL, /* port B write */ - DEVCB_NULL, /* port C read */ - DEVCB_NULL /* port C write */ -}; - - WRITE8_MEMBER( mbc200_state::porta_w ) { machine().scheduler().synchronize(); // force resync @@ -206,17 +195,6 @@ WRITE8_MEMBER( mbc200_state::porta_w ) m_hs_bit &= ~0x80; } -static I8255_INTERFACE( mbc200_ppi8255_interface_2 ) -{ - DEVCB_NULL, /* port A read */ - DEVCB_DRIVER_MEMBER(mbc200_state,porta_w), /* port A write */ - DEVCB_NULL, /* port B read */ - DEVCB_NULL, /* port B write */ - DEVCB_NULL, /* port C read */ - DEVCB_NULL /* port C write */ -}; - - static const wd17xx_interface mbc200_mb8876_interface = { DEVCB_NULL, @@ -277,8 +255,12 @@ static MACHINE_CONFIG_START( mbc200, mbc200_state ) MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_8MHz / 4, mbc200_crtc) // HD46505SP - MCFG_I8255_ADD("ppi8255_1", mbc200_ppi8255_interface_1) // i8255AC-5 - MCFG_I8255_ADD("ppi8255_2", mbc200_ppi8255_interface_2) // i8255AC-5 + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mbc200_state, porta_w)) + MCFG_DEVICE_ADD("i8251_1", I8251, 0) // INS8251N MCFG_DEVICE_ADD("i8251_2", I8251, 0) // INS8251A MCFG_MB8876_ADD("fdc",mbc200_mb8876_interface) // MB8876A diff --git a/src/mess/drivers/mbc55x.c b/src/mess/drivers/mbc55x.c index 0d1ccfe1312..61c1574eeca 100644 --- a/src/mess/drivers/mbc55x.c +++ b/src/mess/drivers/mbc55x.c @@ -246,7 +246,6 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) // MCFG_SCREEN_SIZE(650, 260) // MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 249) - MCFG_RAM_ADD(RAM_TAG) MCFG_RAM_DEFAULT_SIZE("128K") MCFG_RAM_EXTRA_OPTIONS("128K,192K,256K,320K,384K,448K,512K,576K,640K") @@ -269,7 +268,15 @@ static MACHINE_CONFIG_START( mbc55x, mbc55x_state ) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(mbc55x_state, pit8253_t2)) MCFG_PIC8259_ADD( PIC8259_TAG, INPUTLINE(MAINCPU_TAG, INPUT_LINE_IRQ0), VCC, NULL ) - MCFG_I8255_ADD( PPI8255_TAG, mbc55x_ppi8255_interface ) + + MCFG_DEVICE_ADD(PPI8255_TAG, I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mbc55x_state, mbc55x_ppi_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mbc55x_state, mbc55x_ppi_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mbc55x_state, mbc55x_ppi_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mbc55x_state, mbc55x_ppi_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(mbc55x_state, mbc55x_ppi_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mbc55x_state, mbc55x_ppi_portc_w)) + MCFG_MC6845_ADD(VID_MC6845_NAME, MC6845, SCREEN_TAG, XTAL_14_31818MHz/8, mb55x_mc6845_intf) /* Backing storage */ diff --git a/src/mess/drivers/mc1502.c b/src/mess/drivers/mc1502.c index e04c63d6f38..85287eb9d0c 100644 --- a/src/mess/drivers/mc1502.c +++ b/src/mess/drivers/mc1502.c @@ -157,26 +157,6 @@ WRITE8_MEMBER(mc1502_state::mc1502_kppi_portc_w) // DBG_LOG(2,"mc1502_kppi_portc_w",("( %02X -> %04X )\n", data, m_kbd.mask)); } -I8255_INTERFACE( mc1502_ppi8255_interface_1 ) -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_ppi_portb_w), - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_ppi_portc_r), - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_ppi_portc_w) -}; - -I8255_INTERFACE( mc1502_ppi8255_interface_2 ) -{ - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_kppi_porta_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_kppi_portb_w), - DEVCB_DEVICE_MEMBER("cent_status_in", input_buffer_device, read), - DEVCB_DRIVER_MEMBER(mc1502_state,mc1502_kppi_portc_w) -}; - WRITE_LINE_MEMBER(mc1502_state::mc1502_i8251_syndet) { if (!BIT(m_ppi_portc,3)) @@ -285,8 +265,17 @@ static MACHINE_CONFIG_START( mc1502, mc1502_state ) MCFG_PIC8259_ADD( "pic8259", INPUTLINE("maincpu", 0), VCC, NULL ) - MCFG_I8255_ADD( "ppi8255n1", mc1502_ppi8255_interface_1 ) - MCFG_I8255_ADD( "ppi8255n2", mc1502_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255n1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mc1502_state, mc1502_ppi_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(mc1502_state, mc1502_ppi_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mc1502_state, mc1502_ppi_portc_w)) + + MCFG_DEVICE_ADD("ppi8255n2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mc1502_state, mc1502_kppi_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mc1502_state, mc1502_kppi_portb_w)) + MCFG_I8255_IN_PORTC_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mc1502_state, mc1502_kppi_portc_w)) MCFG_DEVICE_ADD( "upd8251", I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE("irps", rs232_port_device, write_txd)) diff --git a/src/mess/drivers/mikro80.c b/src/mess/drivers/mikro80.c index 68b600914b4..ab7a60e7df9 100644 --- a/src/mess/drivers/mikro80.c +++ b/src/mess/drivers/mikro80.c @@ -173,7 +173,10 @@ static MACHINE_CONFIG_START( mikro80, mikro80_state ) MCFG_CPU_PROGRAM_MAP(mikro80_mem) MCFG_CPU_IO_MAP(mikro80_io) - MCFG_I8255_ADD( "ppi8255", mikro80_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mikro80_state, mikro80_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mikro80_state, mikro80_8255_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(mikro80_state, mikro80_8255_portc_r)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/mikrosha.c b/src/mess/drivers/mikrosha.c index f28550e679a..3f7a6c83d41 100644 --- a/src/mess/drivers/mikrosha.c +++ b/src/mess/drivers/mikrosha.c @@ -181,11 +181,16 @@ static MACHINE_CONFIG_START( mikrosha, mikrosha_state ) MCFG_MACHINE_RESET_OVERRIDE(mikrosha_state, radio86 ) - MCFG_I8255_ADD( "ppi8255_1", mikrosha_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) - MCFG_I8255_ADD( "ppi8255_2", mikrosha_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, mikrosha_8255_font_page_w)) - MCFG_I8275_ADD ( "i8275", mikrosha_i8275_interface) + MCFG_I8275_ADD("i8275", mikrosha_i8275_interface) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(0) diff --git a/src/mess/drivers/mpf1.c b/src/mess/drivers/mpf1.c index 365a3bfd153..1ab1c8d0ffe 100644 --- a/src/mess/drivers/mpf1.c +++ b/src/mess/drivers/mpf1.c @@ -264,16 +264,6 @@ WRITE8_MEMBER( mpf1_state::ppi_pc_w ) m_cassette->output( BIT(data, 7)); } -static I8255A_INTERFACE( ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(mpf1_state, ppi_pa_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mpf1_state, ppi_pb_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mpf1_state, ppi_pc_w), -}; - /* Z80CTC Interface */ static Z80CTC_INTERFACE( mpf1_ctc_intf ) @@ -355,7 +345,12 @@ static MACHINE_CONFIG_START( mpf1, mpf1_state ) /* devices */ MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_3_579545MHz/2, mpf1_pio_intf) MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_3_579545MHz/2, mpf1_ctc_intf) - MCFG_I8255A_ADD(I8255A_TAG, ppi8255_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mpf1_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mpf1_state, ppi_pb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mpf1_state, ppi_pc_w)) + MCFG_CASSETTE_ADD("cassette", mpf1_cassette_interface) /* video hardware */ @@ -379,7 +374,12 @@ static MACHINE_CONFIG_START( mpf1b, mpf1_state ) /* devices */ MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_3_579545MHz/2, mpf1_pio_intf) MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_3_579545MHz/2, mpf1_ctc_intf) - MCFG_I8255A_ADD(I8255A_TAG, ppi8255_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mpf1_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mpf1_state, ppi_pb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mpf1_state, ppi_pc_w)) + MCFG_CASSETTE_ADD("cassette", mpf1_cassette_interface) /* video hardware */ @@ -409,7 +409,12 @@ static MACHINE_CONFIG_START( mpf1p, mpf1_state ) /* devices */ MCFG_Z80PIO_ADD(Z80PIO_TAG, 2500000, mpf1_pio_intf) MCFG_Z80CTC_ADD(Z80CTC_TAG, 2500000, mpf1_ctc_intf) - MCFG_I8255A_ADD(I8255A_TAG, ppi8255_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mpf1_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mpf1_state, ppi_pb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mpf1_state, ppi_pc_w)) + MCFG_CASSETTE_ADD("cassette", mpf1_cassette_interface) /* sound hardware */ diff --git a/src/mess/drivers/ms0515.c b/src/mess/drivers/ms0515.c index 0317a9e7797..8d68ccf7526 100644 --- a/src/mess/drivers/ms0515.c +++ b/src/mess/drivers/ms0515.c @@ -237,15 +237,6 @@ WRITE8_MEMBER(ms0515_state::ms0515_portc_w) { m_sysreg = data; } -I8255A_INTERFACE( ms0515_ppi8255_interface_1 ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(ms0515_state,ms0515_portc_w) -}; static MACHINE_CONFIG_START( ms0515, ms0515_state ) /* basic machine hardware */ @@ -269,8 +260,10 @@ static MACHINE_CONFIG_START( ms0515, ms0515_state ) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(ms0515_state, ms0515) - MCFG_I8255_ADD( "ppi8255_1", ms0515_ppi8255_interface_1 ) - //MCFG_I8255_ADD( "ppi8255_2", ms0515_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTC_CB(WRITE8(ms0515_state, ms0515_portc_w)) + + //MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/msx.c b/src/mess/drivers/msx.c index c224dca1c7e..a076d585c72 100644 --- a/src/mess/drivers/msx.c +++ b/src/mess/drivers/msx.c @@ -1093,7 +1093,10 @@ static MACHINE_CONFIG_START( msx, msx_state ) MCFG_MACHINE_START_OVERRIDE(msx_state, msx ) MCFG_MACHINE_RESET_OVERRIDE(msx_state, msx ) - MCFG_I8255_ADD( "ppi8255", msx_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(msx_state, msx_ppi_port_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(msx_state, msx_ppi_port_b_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(msx_state, msx_ppi_port_c_w)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") @@ -1178,7 +1181,10 @@ static MACHINE_CONFIG_START( msx2, msx_state ) MCFG_MACHINE_START_OVERRIDE(msx_state, msx2 ) MCFG_MACHINE_RESET_OVERRIDE(msx_state, msx2 ) - MCFG_I8255_ADD( "ppi8255", msx_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(msx_state, msx_ppi_port_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(msx_state, msx_ppi_port_b_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(msx_state, msx_ppi_port_c_w)) /* video hardware */ MCFG_V9938_ADD("v9938", "screen", 0x20000) @@ -1248,7 +1254,10 @@ static MACHINE_CONFIG_START( msx2p, msx_state ) MCFG_MACHINE_START_OVERRIDE(msx_state, msx2 ) MCFG_MACHINE_RESET_OVERRIDE(msx_state, msx2 ) - MCFG_I8255_ADD( "ppi8255", msx_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(msx_state, msx_ppi_port_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(msx_state, msx_ppi_port_b_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(msx_state, msx_ppi_port_c_w)) /* video hardware */ MCFG_V9958_ADD("v9958", "screen", 0x20000) diff --git a/src/mess/drivers/multi8.c b/src/mess/drivers/multi8.c index f8cbaf630fb..28f5ec2b586 100644 --- a/src/mess/drivers/multi8.c +++ b/src/mess/drivers/multi8.c @@ -619,16 +619,6 @@ WRITE8_MEMBER( multi8_state::portc_w ) } -static I8255_INTERFACE( ppi8255_intf_0 ) -{ - DEVCB_DRIVER_MEMBER(multi8_state, porta_r), /* Port A read */ - DEVCB_NULL, /* Port B read */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(multi8_state, portb_w), /* Port B write */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(multi8_state, portc_w) /* Port C write */ -}; - WRITE8_MEMBER( multi8_state::ym2203_porta_w ) { m_beeper->set_state((data & 0x08)); @@ -665,7 +655,6 @@ static MACHINE_CONFIG_START( multi8, multi8_state ) MCFG_CPU_PROGRAM_MAP(multi8_mem) MCFG_CPU_IO_MAP(multi8_io) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(60) @@ -690,7 +679,11 @@ static MACHINE_CONFIG_START( multi8, multi8_state ) /* Devices */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", multi8_state, keyboard_callback, attotime::from_hz(240/32)) MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_3_579545MHz/2, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_I8255_ADD( "ppi8255_0", ppi8255_intf_0 ) + + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(multi8_state, porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(multi8_state, portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(multi8_state, portc_w)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/mycom.c b/src/mess/drivers/mycom.c index e490cb7c91a..f73dab885df 100644 --- a/src/mess/drivers/mycom.c +++ b/src/mess/drivers/mycom.c @@ -439,36 +439,6 @@ WRITE8_MEMBER(mycom_state::mycom_rtc_w) m_rtc->cs_w(BIT(data, 7)); } -static I8255_INTERFACE( ppi8255_intf_0 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_04_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_05_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_06_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_06_w) /* Port C write */ -}; - -static I8255_INTERFACE( ppi8255_intf_1 ) -{ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_08_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(mycom_state, mycom_0a_w) /* Port C write */ -}; - -static I8255_INTERFACE( ppi8255_intf_2 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DEVICE_MEMBER("rtc", msm5832_device, data_r), /* Port B read */ - DEVCB_DEVICE_MEMBER("rtc", msm5832_device, data_w), /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(mycom_state,mycom_rtc_w) /* Port C write */ -}; - static const UINT8 mycom_keyval[] = { 0, 0x1b,0x1b,0x7c,0x7c,0x18,0x18,0x0f,0x0f,0x09,0x09,0x1c,0x1c,0x30,0x00,0x50,0x70,0x3b,0x2b, 0x00,0x00,0x31,0x21,0x51,0x71,0x41,0x61,0x5a,0x7a,0x17,0x17,0x2d,0x3d,0x40,0x60,0x3a,0x2a, @@ -552,9 +522,20 @@ static MACHINE_CONFIG_START( mycom, mycom_state ) MCFG_CPU_PROGRAM_MAP(mycom_map) MCFG_CPU_IO_MAP(mycom_io) - MCFG_I8255_ADD( "ppi8255_0", ppi8255_intf_0 ) - MCFG_I8255_ADD( "ppi8255_1", ppi8255_intf_1 ) - MCFG_I8255_ADD( "ppi8255_2", ppi8255_intf_2 ) + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mycom_state, mycom_04_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mycom_state, mycom_05_r)) + MCFG_I8255_IN_PORTC_CB(READ8(mycom_state, mycom_06_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mycom_state, mycom_06_w)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mycom_state, mycom_08_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mycom_state, mycom_0a_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("rtc", msm5832_device, data_r)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("rtc", msm5832_device, data_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mycom_state, mycom_rtc_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/mz2000.c b/src/mess/drivers/mz2000.c index dbb7265127c..d76e399131c 100644 --- a/src/mess/drivers/mz2000.c +++ b/src/mess/drivers/mz2000.c @@ -740,16 +740,6 @@ WRITE8_MEMBER(mz2000_state::mz2000_portc_w) m_old_portc = data; } -static I8255_INTERFACE( ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_porta_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portb_r), /* Port B read */ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portb_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(mz2000_state,mz2000_portc_w) /* Port C write */ -}; - WRITE8_MEMBER(mz2000_state::mz2000_pio1_porta_w) { m_tvram_enable = ((data & 0xc0) == 0xc0); @@ -844,8 +834,14 @@ static MACHINE_CONFIG_START( mz2000, mz2000_state ) MCFG_CPU_PROGRAM_MAP(mz2000_map) MCFG_CPU_IO_MAP(mz2000_io) + MCFG_DEVICE_ADD("i8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mz2000_state, mz2000_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mz2000_state, mz2000_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mz2000_state, mz2000_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mz2000_state, mz2000_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(mz2000_state, mz2000_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mz2000_state, mz2000_portc_w)) - MCFG_I8255_ADD( "i8255_0", ppi8255_intf ) MCFG_Z80PIO_ADD( "z80pio_1", MASTER_CLOCK, mz2000_pio1_intf ) /* TODO: clocks aren't known */ diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c index 75669834be4..368274baf13 100644 --- a/src/mess/drivers/mz2500.c +++ b/src/mess/drivers/mz2500.c @@ -1939,16 +1939,6 @@ WRITE8_MEMBER(mz2500_state::mz2500_portc_w) logerror("PPI PORTC W %02x\n",data & ~0x0f); } -static I8255_INTERFACE( ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_porta_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portb_r), /* Port B read */ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portb_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(mz2500_state,mz2500_portc_w) /* Port C write */ -}; - WRITE8_MEMBER(mz2500_state::mz2500_pio1_porta_w) { // printf("%02x\n",data); @@ -2121,10 +2111,17 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state ) MCFG_CPU_IO_MAP(mz2500_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", mz2500_state, mz2500_vbl) + MCFG_DEVICE_ADD("i8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(mz2500_state, mz2500_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mz2500_state, mz2500_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mz2500_state, mz2500_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mz2500_state, mz2500_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(mz2500_state, mz2500_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mz2500_state, mz2500_portc_w)) - MCFG_I8255_ADD( "i8255_0", ppi8255_intf ) MCFG_Z80PIO_ADD( "z80pio_1", 6000000, mz2500_pio1_intf ) MCFG_Z80SIO0_ADD( "z80sio", 6000000, mz2500_sio_intf ) + MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz) MCFG_RP5C15_OUT_ALARM_CB(WRITELINE(mz2500_state, mz2500_rtc_alarm_irq)) diff --git a/src/mess/drivers/mz3500.c b/src/mess/drivers/mz3500.c index a9635cdd920..112e3f10cbb 100644 --- a/src/mess/drivers/mz3500.c +++ b/src/mess/drivers/mz3500.c @@ -648,17 +648,6 @@ WRITE8_MEMBER(mz3500_state::mz3500_pc_w) } -static I8255A_INTERFACE( i8255_intf ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_DRIVER_MEMBER(mz3500_state,mz3500_pa_w), /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_DRIVER_MEMBER(mz3500_state,mz3500_pb_w), /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(mz3500_state,mz3500_pc_w), /* Port C write */ -}; - - static INPUT_PORTS_START( mz3500 ) PORT_START("DSW") PORT_DIPNAME( 0x01, 0x00, "SYSA" ) @@ -825,7 +814,10 @@ static MACHINE_CONFIG_START( mz3500, mz3500_state ) MCFG_QUANTUM_PERFECT_CPU("master") - MCFG_I8255A_ADD( "i8255", i8255_intf ) + MCFG_DEVICE_ADD("i8255", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mz3500_state, mz3500_pa_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(mz3500_state, mz3500_pb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mz3500_state, mz3500_pc_w)) MCFG_UPD765A_ADD("upd765a", true, true) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("master", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/mz700.c b/src/mess/drivers/mz700.c index 05248c74997..07f250348b2 100644 --- a/src/mess/drivers/mz700.c +++ b/src/mess/drivers/mz700.c @@ -365,7 +365,11 @@ static MACHINE_CONFIG_START( mz700, mz_state ) MCFG_PIT8253_CLK2(0) MCFG_PIT8253_OUT2_HANDLER(WRITELINE(mz_state, pit_irq_2)) - MCFG_I8255_ADD("ppi8255", mz700_ppi8255_interface) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mz_state, pio_port_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mz_state, pio_port_b_r)) + MCFG_I8255_IN_PORTC_CB(READ8(mz_state, pio_port_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mz_state, pio_port_c_w)) MCFG_DEVICE_ADD("ls145", TTL74145, 0) diff --git a/src/mess/drivers/mz80.c b/src/mess/drivers/mz80.c index b6dc56a39dc..ccea2b63518 100644 --- a/src/mess/drivers/mz80.c +++ b/src/mess/drivers/mz80.c @@ -302,7 +302,11 @@ static MACHINE_CONFIG_START( mz80k, mz80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* Devices */ - MCFG_I8255_ADD( "ppi8255", mz80k_8255_int ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(mz80_state, mz80k_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(mz80_state, mz80k_8255_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(mz80_state, mz80k_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(mz80_state, mz80k_8255_portc_w)) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_8MHz/4) diff --git a/src/mess/drivers/orion.c b/src/mess/drivers/orion.c index a4d40f9f10b..f86813762cc 100644 --- a/src/mess/drivers/orion.c +++ b/src/mess/drivers/orion.c @@ -99,9 +99,16 @@ static MACHINE_CONFIG_START( orion128, orion_state ) MCFG_MACHINE_START_OVERRIDE(orion_state, orion128 ) MCFG_MACHINE_RESET_OVERRIDE(orion_state, orion128 ) - MCFG_I8255A_ADD( "ppi8255_1", orion128_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(orion_state, orion_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(orion_state, orion_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(orion_state, orion_romdisk_portc_w)) - MCFG_I8255A_ADD( "ppi8255_2", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -144,7 +151,11 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( orion128ms, orion128 ) MCFG_DEVICE_REMOVE("ppi8255_2") - MCFG_I8255A_ADD( "ppi8255_2", rk7007_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, rk7007_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) MACHINE_CONFIG_END static const ay8910_interface orionz80_ay_interface = @@ -163,9 +174,16 @@ static MACHINE_CONFIG_START( orionz80, orion_state ) MCFG_MACHINE_START_OVERRIDE(orion_state, orionz80 ) MCFG_MACHINE_RESET_OVERRIDE(orion_state, orionz80 ) - MCFG_I8255A_ADD( "ppi8255_1", orion128_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(orion_state, orion_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(orion_state, orion_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(orion_state, orion_romdisk_portc_w)) - MCFG_I8255A_ADD( "ppi8255_2", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -216,7 +234,11 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( orionz80ms, orionz80 ) MCFG_DEVICE_REMOVE("ppi8255_2") - MCFG_I8255A_ADD( "ppi8255_2", rk7007_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, rk7007_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) MACHINE_CONFIG_END static MACHINE_CONFIG_START( orionpro, orion_state ) @@ -226,9 +248,16 @@ static MACHINE_CONFIG_START( orionpro, orion_state ) MCFG_MACHINE_RESET_OVERRIDE(orion_state, orionpro ) - MCFG_I8255A_ADD( "ppi8255_1", orion128_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(orion_state, orion_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(orion_state, orion_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(orion_state, orion_romdisk_portc_w)) - MCFG_I8255A_ADD( "ppi8255_2", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/partner.c b/src/mess/drivers/partner.c index 2fbeedc7fde..0380fb3c06b 100644 --- a/src/mess/drivers/partner.c +++ b/src/mess/drivers/partner.c @@ -196,9 +196,13 @@ static MACHINE_CONFIG_START( partner, partner_state ) MCFG_MACHINE_START_OVERRIDE(partner_state, partner ) MCFG_MACHINE_RESET_OVERRIDE(partner_state, partner ) - MCFG_I8255_ADD( "ppi8255_1", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) - MCFG_I8275_ADD ( "i8275", partner_i8275_interface) + MCFG_I8275_ADD("i8275", partner_i8275_interface) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update) diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index f7bce7bbcc0..627df08d59a 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -935,17 +935,6 @@ WRITE8_MEMBER( pasogo_state::ppi_portb_w ) } -static I8255A_INTERFACE( ppi8255_interface ) -{ - DEVCB_DRIVER_MEMBER(pasogo_state, ppi_porta_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pasogo_state, ppi_portb_w), - DEVCB_DRIVER_MEMBER(pasogo_state, ppi_portc_r), - DEVCB_NULL -}; - - WRITE_LINE_MEMBER(pasogo_state::pasogo_pic8259_set_int_line) { m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); @@ -971,7 +960,10 @@ static MACHINE_CONFIG_START( pasogo, pasogo_state ) MCFG_I8237_ADD( "dma8237", XTAL_14_31818MHz/3, dma8237_config ) - MCFG_I8255_ADD( "ppi8255", ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pasogo_state, ppi_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pasogo_state, ppi_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pasogo_state, ppi_portc_r)) MCFG_SCREEN_ADD("screen", LCD) MCFG_SCREEN_REFRESH_RATE(60) diff --git a/src/mess/drivers/pasopia.c b/src/mess/drivers/pasopia.c index 8939c975f81..82fbd7522b2 100644 --- a/src/mess/drivers/pasopia.c +++ b/src/mess/drivers/pasopia.c @@ -176,16 +176,6 @@ READ8_MEMBER( pasopia_state::vram_latch_r ) return m_p_vram[m_vram_addr]; } -static I8255A_INTERFACE( ppi8255_intf_0 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_DRIVER_MEMBER(pasopia_state, vram_addr_lo_w), /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_DRIVER_MEMBER(pasopia_state, vram_latch_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(pasopia_state, vram_latch_r), /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - READ8_MEMBER( pasopia_state::portb_1_r ) { /* @@ -224,31 +214,11 @@ WRITE8_MEMBER( pasopia_state::screen_mode_w ) printf("Screen Mode=%02x\n",data); } -static I8255A_INTERFACE( ppi8255_intf_1 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_DRIVER_MEMBER(pasopia_state, screen_mode_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(pasopia_state, portb_1_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(pasopia_state, vram_addr_hi_w) /* Port C write */ -}; - READ8_MEMBER( pasopia_state::rombank_r ) { return (m_ram_bank) ? 4 : 0; } -static I8255A_INTERFACE( ppi8255_intf_2 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_DRIVER_MEMBER(pasopia_state, rombank_r), /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - static Z80CTC_INTERFACE( ctc_intf ) { DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt handler @@ -375,9 +345,20 @@ static MACHINE_CONFIG_START( pasopia, pasopia_state ) /* Devices */ MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL_4MHz/4, mc6845_intf) /* unknown clock, hand tuned to get ~60 fps */ - MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf_0 ) - MCFG_I8255A_ADD( "ppi8255_1", ppi8255_intf_1 ) - MCFG_I8255A_ADD( "ppi8255_2", ppi8255_intf_2 ) + + MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pasopia_state, vram_addr_lo_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pasopia_state, vram_latch_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pasopia_state, vram_latch_r)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pasopia_state, screen_mode_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pasopia_state, portb_1_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pasopia_state, vram_addr_hi_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255A, 0) + MCFG_I8255_IN_PORTC_CB(READ8(pasopia_state, rombank_r)) + MCFG_Z80CTC_ADD( "z80ctc", XTAL_4MHz, ctc_intf ) MCFG_Z80PIO_ADD( "z80pio", XTAL_4MHz, z80pio_intf ) MACHINE_CONFIG_END diff --git a/src/mess/drivers/pasopia7.c b/src/mess/drivers/pasopia7.c index d5bcd3b90d5..169009d38e0 100644 --- a/src/mess/drivers/pasopia7.c +++ b/src/mess/drivers/pasopia7.c @@ -912,36 +912,6 @@ READ8_MEMBER( pasopia7_state::nmi_portb_r ) return 0xf9 | m_nmi_trap | m_nmi_reset; } -static I8255_INTERFACE( ppi8255_intf_0 ) -{ - DEVCB_DRIVER_MEMBER(pasopia7_state, unk_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, screen_mode_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(pasopia7_state, crtc_portb_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - -static I8255_INTERFACE( ppi8255_intf_1 ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, plane_reg_w), /* Port A write */ - DEVCB_NULL, /* Port B read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, video_attr_w), /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, video_misc_w) /* Port C write */ -}; - -static I8255_INTERFACE( ppi8255_intf_2 ) -{ - DEVCB_DRIVER_MEMBER(pasopia7_state, nmi_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, nmi_mask_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(pasopia7_state, nmi_portb_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_DRIVER_MEMBER(pasopia7_state, nmi_reg_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(pasopia7_state, nmi_reg_w) /* Port C write */ -}; - void pasopia7_state::machine_reset() { UINT8 *bios = memregion("maincpu")->base(); @@ -1002,9 +972,24 @@ static MACHINE_CONFIG_START( p7_base, pasopia7_state ) /* Devices */ MCFG_Z80CTC_ADD( "z80ctc", XTAL_4MHz, z80ctc_intf ) MCFG_Z80PIO_ADD( "z80pio", XTAL_4MHz, z80pio_intf ) - MCFG_I8255_ADD( "ppi8255_0", ppi8255_intf_0 ) - MCFG_I8255_ADD( "ppi8255_1", ppi8255_intf_1 ) - MCFG_I8255_ADD( "ppi8255_2", ppi8255_intf_2 ) + + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pasopia7_state, unk_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pasopia7_state, screen_mode_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pasopia7_state, crtc_portb_r)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pasopia7_state, plane_reg_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pasopia7_state, video_attr_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pasopia7_state, video_misc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pasopia7_state, nmi_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pasopia7_state, nmi_mask_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pasopia7_state, nmi_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pasopia7_state, nmi_reg_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pasopia7_state, nmi_reg_w)) + MCFG_UPD765A_ADD("fdc", true, true) MCFG_FLOPPY_DRIVE_ADD("fdc:0", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD("fdc:1", pasopia7_floppies, "525hd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/drivers/pc100.c b/src/mess/drivers/pc100.c index 164d69a6df1..5227d99152d 100644 --- a/src/mess/drivers/pc100.c +++ b/src/mess/drivers/pc100.c @@ -394,17 +394,6 @@ READ8_MEMBER( pc100_state::rtc_portc_r ) return m_rtc_portc; } -static I8255A_INTERFACE( pc100_ppi8255_interface_1 ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc100_state, rtc_porta_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc100_state, rtc_portc_r), - DEVCB_DRIVER_MEMBER(pc100_state, rtc_portc_w) -}; - - WRITE8_MEMBER( pc100_state::lower_mask_w ) { m_crtc.mask = (m_crtc.mask & 0xff00) | data; @@ -421,16 +410,6 @@ WRITE8_MEMBER( pc100_state::crtc_bank_w ) m_bank_r = (data & 0x30) >> 4; } -static I8255A_INTERFACE( pc100_ppi8255_interface_2 ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc100_state, lower_mask_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc100_state, upper_mask_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc100_state, crtc_bank_w) -}; - IRQ_CALLBACK_MEMBER(pc100_state::pc100_irq_callback) { return device.machine().device<pic8259_device>( "pic8259" )->acknowledge(); @@ -514,9 +493,19 @@ static MACHINE_CONFIG_START( pc100, pc100_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("100hz", pc100_state, pc100_100hz_irq, attotime::from_hz(MASTER_CLOCK/100)) MCFG_TIMER_DRIVER_ADD_PERIODIC("50hz", pc100_state, pc100_50hz_irq, attotime::from_hz(MASTER_CLOCK/50)) MCFG_TIMER_DRIVER_ADD_PERIODIC("10hz", pc100_state, pc100_10hz_irq, attotime::from_hz(MASTER_CLOCK/10)) - MCFG_I8255_ADD( "ppi8255_1", pc100_ppi8255_interface_1 ) - MCFG_I8255_ADD( "ppi8255_2", pc100_ppi8255_interface_2 ) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pc100_state, rtc_porta_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pc100_state, rtc_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc100_state, rtc_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pc100_state, lower_mask_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pc100_state, upper_mask_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc100_state, crtc_bank_w)) + MCFG_PIC8259_ADD( "pic8259", WRITELINE(pc100_state, pc100_set_int_line), GND, NULL ) + MCFG_UPD765A_ADD("upd765", true, true) MCFG_DEVICE_ADD("rtc", MSM58321, XTAL_32_768kHz) diff --git a/src/mess/drivers/pc6001.c b/src/mess/drivers/pc6001.c index 6537f161e8b..21549a89541 100644 --- a/src/mess/drivers/pc6001.c +++ b/src/mess/drivers/pc6001.c @@ -1910,16 +1910,6 @@ READ8_MEMBER(pc6001_state::pc6001_8255_portc_r) -static I8255_INTERFACE( pc6001_ppi8255_interface ) -{ - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_porta_r), - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_porta_w), - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portb_r), - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portb_w), - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portc_r), - DEVCB_DRIVER_MEMBER(pc6001_state,pc6001_8255_portc_w) -}; - static const ay8910_interface pc6001_ay_interface = { AY8910_LEGACY_OUTPUT, @@ -2332,7 +2322,14 @@ static MACHINE_CONFIG_START( pc6001, pc6001_state ) MCFG_PALETTE_ADD("palette", 16+4) MCFG_PALETTE_INIT_OWNER(pc6001_state, pc6001) - MCFG_I8255_ADD( "ppi8255", pc6001_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc6001_state, pc6001_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pc6001_state, pc6001_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pc6001_state, pc6001_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pc6001_state, pc6001_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pc6001_state, pc6001_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc6001_state, pc6001_8255_portc_w)) + /* uart */ MCFG_DEVICE_ADD("uart", I8251, 0) diff --git a/src/mess/drivers/pc8001.c b/src/mess/drivers/pc8001.c index 378e87679d3..32cf37d694a 100644 --- a/src/mess/drivers/pc8001.c +++ b/src/mess/drivers/pc8001.c @@ -399,18 +399,6 @@ UPD3301_DRAW_CHARACTER_MEMBER( pc8001_state::pc8001_display_pixels ) } } -/* 8255 Interface */ - -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* 8257 Interface */ WRITE_LINE_MEMBER( pc8001_state::hrq_w ) @@ -534,7 +522,7 @@ static MACHINE_CONFIG_START( pc8001, pc8001_state ) /* devices */ MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) MCFG_DEVICE_ADD(I8257_TAG, I8257, 4000000) MCFG_I8257_OUT_HRQ_CB(WRITELINE(pc8001_state, hrq_w)) @@ -590,7 +578,7 @@ static MACHINE_CONFIG_START( pc8001mk2, pc8001mk2_state ) /* devices */ MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) MCFG_DEVICE_ADD(I8257_TAG, I8257, 4000000) MCFG_I8257_OUT_HRQ_CB(WRITELINE(pc8001_state, hrq_w)) diff --git a/src/mess/drivers/pc8401a.c b/src/mess/drivers/pc8401a.c index 15799c5ff12..3a3c1663be3 100644 --- a/src/mess/drivers/pc8401a.c +++ b/src/mess/drivers/pc8401a.c @@ -559,16 +559,6 @@ WRITE8_MEMBER( pc8401a_state::ppi_pc_w ) */ } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pc8401a_state, ppi_pc_r), - DEVCB_DRIVER_MEMBER(pc8401a_state, ppi_pc_w) -}; - /* Machine Drivers */ static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) @@ -582,7 +572,10 @@ static MACHINE_CONFIG_START( pc8401a, pc8401a_state ) /* devices */ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTC_CB(READ8(pc8401a_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc8401a_state, ppi_pc_w)) MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) @@ -623,7 +616,10 @@ static MACHINE_CONFIG_START( pc8500, pc8500_state ) /* devices */ MCFG_UPD1990A_ADD(UPD1990A_TAG, XTAL_32_768kHz, NULL, NULL) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTC_CB(READ8(pc8401a_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc8401a_state, ppi_pc_w)) MCFG_DEVICE_ADD(I8251_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) diff --git a/src/mess/drivers/pc8801.c b/src/mess/drivers/pc8801.c index 1bcd9d3b7f9..985abe4f43d 100644 --- a/src/mess/drivers/pc8801.c +++ b/src/mess/drivers/pc8801.c @@ -1849,16 +1849,6 @@ WRITE8_MEMBER(pc8801_state::cpu_8255_c_w) } -static I8255A_INTERFACE( master_fdd_intf ) -{ - DEVCB_DEVICE_MEMBER("d8255_slave", i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_DEVICE_MEMBER("d8255_slave", i8255_device, pa_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_r), // Port C read - DEVCB_DRIVER_MEMBER(pc8801_state,cpu_8255_c_w) // Port C write -}; - READ8_MEMBER(pc8801_state::fdc_8255_c_r) { // machine().scheduler().synchronize(); // force resync @@ -1873,17 +1863,6 @@ WRITE8_MEMBER(pc8801_state::fdc_8255_c_w) m_i8255_1_pc = data; } -static I8255A_INTERFACE( slave_fdd_intf ) -{ - DEVCB_DEVICE_MEMBER("d8255_master", i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_DEVICE_MEMBER("d8255_master", i8255_device, pa_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_r), // Port C read - DEVCB_DRIVER_MEMBER(pc8801_state,fdc_8255_c_w) // Port C write -}; - - static ADDRESS_MAP_START( pc8801fdc_mem, AS_PROGRAM, 8, pc8801_state ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x4000, 0x7fff) AM_RAM @@ -2639,9 +2618,17 @@ static MACHINE_CONFIG_START( pc8801, pc8801_state ) //MCFG_QUANTUM_TIME(attotime::from_hz(300000)) MCFG_QUANTUM_PERFECT_CPU("maincpu") - - MCFG_I8255_ADD( "d8255_master", master_fdd_intf ) - MCFG_I8255_ADD( "d8255_slave", slave_fdd_intf ) + MCFG_DEVICE_ADD("d8255_master", I8255, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8("d8255_slave", i8255_device, pb_r)) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("d8255_slave", i8255_device, pa_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc8801_state, cpu_8255_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc8801_state, cpu_8255_c_w)) + + MCFG_DEVICE_ADD("d8255_slave", I8255, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8("d8255_master", i8255_device, pb_r)) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("d8255_master", i8255_device, pa_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc8801_state, fdc_8255_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc8801_state, fdc_8255_c_w)) MCFG_UPD765A_ADD("upd765", true, true) MCFG_UPD765_INTRQ_CALLBACK(INPUTLINE("fdccpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c index 79c93e8ea9d..65217c83cbd 100644 --- a/src/mess/drivers/pc88va.c +++ b/src/mess/drivers/pc88va.c @@ -1580,16 +1580,6 @@ WRITE8_MEMBER(pc88va_state::cpu_8255_c_w) m_i8255_0_pc = data; } -static I8255A_INTERFACE( master_fdd_intf ) -{ - DEVCB_DEVICE_MEMBER("d8255_2s", i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_DEVICE_MEMBER("d8255_2s", i8255_device, pa_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(pc88va_state,cpu_8255_c_r), // Port C read - DEVCB_DRIVER_MEMBER(pc88va_state,cpu_8255_c_w) // Port C write -}; - READ8_MEMBER(pc88va_state::fdc_8255_c_r) { return m_i8255_0_pc >> 4; @@ -1600,16 +1590,6 @@ WRITE8_MEMBER(pc88va_state::fdc_8255_c_w) m_i8255_1_pc = data; } -static I8255A_INTERFACE( slave_fdd_intf ) -{ - DEVCB_DEVICE_MEMBER("d8255_2", i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_DEVICE_MEMBER("d8255_2", i8255_device, pa_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_DRIVER_MEMBER(pc88va_state,fdc_8255_c_r), // Port C read - DEVCB_DRIVER_MEMBER(pc88va_state,fdc_8255_c_w) // Port C write -}; - READ8_MEMBER(pc88va_state::r232_ctrl_porta_r) { UINT8 sw5, sw4, sw3, sw2,speed_sw; @@ -1652,16 +1632,6 @@ WRITE8_MEMBER(pc88va_state::r232_ctrl_portc_w) // ... } -static I8255_INTERFACE( r232c_ctrl_intf ) -{ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_porta_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portb_r), /* Port B read */ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portb_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(pc88va_state,r232_ctrl_portc_w) /* Port C write */ -}; - IRQ_CALLBACK_MEMBER(pc88va_state::pc88va_irq_callback) { return machine().device<pic8259_device>( "pic8259_master" )->acknowledge(); @@ -1854,10 +1824,25 @@ static MACHINE_CONFIG_START( pc88va, pc88va_state ) // MCFG_PALETTE_INIT_OWNER(pc88va_state, pc8801 ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", pc88va ) - MCFG_I8255_ADD( "d8255_2", master_fdd_intf ) - MCFG_I8255_ADD( "d8255_3", r232c_ctrl_intf ) - - MCFG_I8255_ADD( "d8255_2s", slave_fdd_intf ) + MCFG_DEVICE_ADD("d8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8("d8255_2s", i8255_device, pb_r)) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("d8255_2s", i8255_device, pa_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc88va_state, cpu_8255_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc88va_state, cpu_8255_c_w)) + + MCFG_DEVICE_ADD("d8255_3", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc88va_state, r232_ctrl_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pc88va_state, r232_ctrl_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pc88va_state, r232_ctrl_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pc88va_state, r232_ctrl_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pc88va_state, r232_ctrl_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc88va_state, r232_ctrl_portc_w)) + + MCFG_DEVICE_ADD("d8255_2s", I8255, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8("d8255_2", i8255_device, pb_r)) + MCFG_I8255_IN_PORTB_CB(DEVREAD8("d8255_2", i8255_device, pa_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc88va_state, fdc_8255_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc88va_state, fdc_8255_c_w)) MCFG_PIC8259_ADD( "pic8259_master", WRITELINE(pc88va_state, pc88va_pic_irq), VCC, READ8(pc88va_state,get_slave_ack) ) diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index 87da9ccab03..32da63e5b72 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -3183,27 +3183,6 @@ READ8_MEMBER(pc9801_state::ppi_sys_portc_r) return 0xa0; // 0x80 cpu triple fault reset flag? } -static I8255A_INTERFACE( ppi_system_intf ) -{ - DEVCB_INPUT_PORT("DSW2"), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_INPUT_PORT("DSW1"), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_sys_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_sys_portc_w) /* Port C write */ -}; - -/* TODO: check this one */ -static I8255A_INTERFACE( ppi_printer_intf ) -{ - DEVCB_NULL, /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_INPUT_PORT("DSW5"), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - READ8_MEMBER(pc9801_state::ppi_fdd_porta_r) { return 0xff; @@ -3224,16 +3203,6 @@ WRITE8_MEMBER(pc9801_state::ppi_fdd_portc_w) //upd765_data_w(machine().device("upd765_2dd"),space, 0,data); } -static I8255A_INTERFACE( ppi_fdd_intf ) -{ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_porta_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portb_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_fdd_portc_w) /* Port C write */ -}; - READ8_MEMBER(pc9801_state::ppi_mouse_porta_r) { UINT8 res; @@ -3278,16 +3247,6 @@ WRITE8_MEMBER(pc9801_state::ppi_mouse_portc_w) m_mouse.control = data; } -static I8255A_INTERFACE( ppi_mouse_intf ) -{ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_mouse_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_mouse_porta_w), /* Port A write */ - DEVCB_INPUT_PORT("DSW3"), /* Port B read */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_mouse_portb_w), /* Port B write */ - DEVCB_INPUT_PORT("DSW4"), /* Port C read */ - DEVCB_DRIVER_MEMBER(pc9801_state,ppi_mouse_portc_w) /* Port C write */ -}; - /**************************************** * * UPD765 interface @@ -3579,7 +3538,13 @@ static MACHINE_CONFIG_FRAGMENT( pc9801_keyboard ) MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( pc9801_mouse ) - MCFG_I8255_ADD( "ppi8255_mouse", ppi_mouse_intf ) + MCFG_DEVICE_ADD("ppi8255_mouse", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc9801_state, ppi_mouse_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pc9801_state, ppi_mouse_porta_w)) + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW3")) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pc9801_state, ppi_mouse_portb_w)) + MCFG_I8255_IN_PORTC_CB(IOPORT("DSW4")) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_mouse_portc_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("mouse_timer", pc9801_state, mouse_irq_cb, attotime::from_hz(120)) MACHINE_CONFIG_END @@ -3633,9 +3598,23 @@ static MACHINE_CONFIG_START( pc9801, pc9801_state ) MCFG_I8237_ADD("i8237", 5000000, dmac_intf) // unknown clock MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(pc9801_state,get_slave_ack) ) MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w - MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) - MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) - MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) + + MCFG_DEVICE_ADD("ppi8255_sys", I8255, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2")) + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW1")) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_sys_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_sys_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_prn", I8255, 0) + /* TODO: check this one */ + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW5")) + + MCFG_DEVICE_ADD("ppi8255_fdd", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc9801_state, ppi_fdd_porta_r)) + MCFG_I8255_IN_PORTB_CB(READ8(pc9801_state, ppi_fdd_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_fdd_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_fdd_portc_w)) + MCFG_FRAGMENT_ADD(pc9801_keyboard) MCFG_FRAGMENT_ADD(pc9801_mouse) MCFG_FRAGMENT_ADD(pc9801_cbus) @@ -3719,9 +3698,23 @@ static MACHINE_CONFIG_START( pc9801rs, pc9801_state ) MCFG_I8237_ADD("i8237", MAIN_CLOCK_X1*8, pc9801rs_dmac_intf) // unknown clock MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(pc9801_state,get_slave_ack) ) MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w - MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) - MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) - MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) + + MCFG_DEVICE_ADD("ppi8255_sys", I8255, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2")) + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW1")) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_sys_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_sys_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_prn", I8255, 0) + /* TODO: check this one */ + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW5")) + + MCFG_DEVICE_ADD("ppi8255_fdd", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc9801_state, ppi_fdd_porta_r)) + MCFG_I8255_IN_PORTB_CB(READ8(pc9801_state, ppi_fdd_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_fdd_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_fdd_portc_w)) + MCFG_FRAGMENT_ADD(pc9801_keyboard) MCFG_FRAGMENT_ADD(pc9801_mouse) MCFG_FRAGMENT_ADD(pc9801_ide) @@ -3811,9 +3804,23 @@ static MACHINE_CONFIG_START( pc9821, pc9801_state ) MCFG_I8237_ADD("i8237", 16000000, pc9801rs_dmac_intf) // unknown clock MCFG_PIC8259_ADD( "pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(pc9801_state,get_slave_ack) ) MCFG_PIC8259_ADD( "pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL ) // TODO: Check ir7_w - MCFG_I8255_ADD( "ppi8255_sys", ppi_system_intf ) - MCFG_I8255_ADD( "ppi8255_prn", ppi_printer_intf ) - MCFG_I8255_ADD( "ppi8255_fdd", ppi_fdd_intf ) + + MCFG_DEVICE_ADD("ppi8255_sys", I8255, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("DSW2")) + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW1")) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_sys_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_sys_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_prn", I8255, 0) + /* TODO: check this one */ + MCFG_I8255_IN_PORTB_CB(IOPORT("DSW5")) + + MCFG_DEVICE_ADD("ppi8255_fdd", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pc9801_state, ppi_fdd_porta_r)) + MCFG_I8255_IN_PORTB_CB(READ8(pc9801_state, ppi_fdd_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(pc9801_state, ppi_fdd_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pc9801_state, ppi_fdd_portc_w)) + MCFG_FRAGMENT_ADD(pc9801_keyboard) MCFG_FRAGMENT_ADD(pc9801_mouse) MCFG_FRAGMENT_ADD(pc9801_ide) diff --git a/src/mess/drivers/pk8000.c b/src/mess/drivers/pk8000.c index c27fcc8334b..9800cfdb936 100644 --- a/src/mess/drivers/pk8000.c +++ b/src/mess/drivers/pk8000.c @@ -161,26 +161,6 @@ WRITE8_MEMBER(pk8000_state::pk8000_80_portc_w) m_cassette->output((BIT(data, 6)) ? +1.0 : 0.0); } -static I8255_INTERFACE( pk8000_ppi8255_interface_1 ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_porta_w), - DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pk8000_state,pk8000_80_portc_w) -}; - -static I8255_INTERFACE( pk8000_ppi8255_interface_2 ) -{ - DEVCB_DRIVER_MEMBER(pk8000_base_state,pk8000_84_porta_r), - DEVCB_DRIVER_MEMBER(pk8000_base_state,pk8000_84_porta_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pk8000_base_state,pk8000_84_portc_w) -}; - READ8_MEMBER(pk8000_state::pk8000_joy_1_r) { UINT8 retVal = (m_cassette->input() > 0.0038 ? 0x80 : 0); @@ -381,7 +361,6 @@ static MACHINE_CONFIG_START( pk8000, pk8000_state ) MCFG_CPU_IO_MAP(pk8000_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pk8000_state, pk8000_interrupt) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -394,8 +373,15 @@ static MACHINE_CONFIG_START( pk8000, pk8000_state ) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(pk8000_base_state, pk8000) - MCFG_I8255_ADD( "ppi8255_1", pk8000_ppi8255_interface_1 ) - MCFG_I8255_ADD( "ppi8255_2", pk8000_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pk8000_state, pk8000_80_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pk8000_state, pk8000_80_portb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pk8000_state, pk8000_80_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pk8000_base_state, pk8000_84_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pk8000_base_state, pk8000_84_porta_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pk8000_base_state,pk8000_84_portc_w)) /* audio hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/pk8020.c b/src/mess/drivers/pk8020.c index dabab42bfde..04a216d9d4d 100644 --- a/src/mess/drivers/pk8020.c +++ b/src/mess/drivers/pk8020.c @@ -206,7 +206,6 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state ) MCFG_CPU_IO_MAP(pk8020_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", pk8020_state, pk8020_interrupt) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -220,10 +219,16 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state ) MCFG_PALETTE_ADD("palette", 16) MCFG_PALETTE_INIT_OWNER(pk8020_state, pk8020) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pk8020_state, pk8020_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pk8020_state, pk8020_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pk8020_state, pk8020_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pk8020_state, pk8020_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pk8020_state, pk8020_2_portc_w)) - MCFG_I8255_ADD( "ppi8255_1", pk8020_ppi8255_interface_1 ) - MCFG_I8255_ADD( "ppi8255_2", pk8020_ppi8255_interface_2 ) - MCFG_I8255_ADD( "ppi8255_3", pk8020_ppi8255_interface_3 ) + MCFG_DEVICE_ADD("ppi8255_3", I8255, 0) MCFG_DEVICE_ADD("pit8253", PIT8253, 0) MCFG_PIT8253_CLK0(XTAL_20MHz / 10) @@ -233,11 +238,11 @@ static MACHINE_CONFIG_START( pk8020, pk8020_state ) MCFG_PIT8253_CLK2((XTAL_20MHz / 8) / 164) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pic8259", pic8259_device, ir5_w)) - MCFG_PIC8259_ADD( "pic8259", WRITELINE(pk8020_state,pk8020_pic_set_int_line), VCC, NULL ) - MCFG_DEVICE_ADD( "rs232", I8251, 0) - MCFG_DEVICE_ADD( "lan", I8251, 0) + MCFG_PIC8259_ADD("pic8259", WRITELINE(pk8020_state,pk8020_pic_set_int_line), VCC, NULL) + MCFG_DEVICE_ADD("rs232", I8251, 0) + MCFG_DEVICE_ADD("lan", I8251, 0) - MCFG_FD1793_ADD( "wd1793", pk8020_wd17xx_interface ) + MCFG_FD1793_ADD("wd1793", pk8020_wd17xx_interface) /* audio hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/pmd85.c b/src/mess/drivers/pmd85.c index 4ec4369270b..ef630b43cc1 100644 --- a/src/mess/drivers/pmd85.c +++ b/src/mess/drivers/pmd85.c @@ -608,13 +608,37 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pmd851, pmd85 ) - MCFG_I8255_ADD( "ppi8255_0", pmd85_ppi8255_interface[0] ) - - MCFG_I8255_ADD( "ppi8255_1", pmd85_ppi8255_interface[1] ) - - MCFG_I8255_ADD( "ppi8255_2", pmd85_ppi8255_interface[2] ) - - MCFG_I8255_ADD( "ppi8255_3", pmd85_ppi8255_interface[3] ) + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_0_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_0_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_0_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_0_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_0_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_0_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_1_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_1_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_1_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_1_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_1_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_1_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_2_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_2_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_2_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_2_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_2_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_2_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_3", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_3_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_3_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_3_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_3_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_3_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_3_portc_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pmd852a, pmd851 ) @@ -631,12 +655,29 @@ static MACHINE_CONFIG_DERIVED( alfa, pmd85 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(alfa_mem) - MCFG_I8255_ADD( "ppi8255_0", alfa_ppi8255_interface[0] ) - - MCFG_I8255_ADD( "ppi8255_1", alfa_ppi8255_interface[1] ) - - MCFG_I8255_ADD( "ppi8255_2", alfa_ppi8255_interface[1] ) - + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_0_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_0_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_0_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_0_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_0_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_0_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_1_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_1_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_1_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_1_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_1_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_1_portc_w)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_2_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_2_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, pmd85_ppi_2_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_2_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, pmd85_ppi_2_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, pmd85_ppi_2_portc_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mato, pmd85 ) @@ -644,7 +685,13 @@ static MACHINE_CONFIG_DERIVED( mato, pmd85 ) MCFG_CPU_PROGRAM_MAP(mato_mem) MCFG_CPU_IO_MAP(mato_io_map) - MCFG_I8255_ADD( "ppi8255_0", mato_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pmd85_state, pmd85_ppi_0_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pmd85_state, pmd85_ppi_0_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pmd85_state, mato_ppi_0_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pmd85_state, pmd85_ppi_0_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pmd85_state, mato_ppi_0_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pmd85_state, mato_ppi_0_portc_w)) /* no uart */ MCFG_DEVICE_REMOVE( "uart" ) diff --git a/src/mess/drivers/poisk1.c b/src/mess/drivers/poisk1.c index 5a07c355357..12210e79f41 100644 --- a/src/mess/drivers/poisk1.c +++ b/src/mess/drivers/poisk1.c @@ -119,26 +119,6 @@ WRITE8_MEMBER(p1_state::p1_ppi2_portb_w) p1_speaker_set_spkrdata( data & 0x02 ); } -I8255_INTERFACE( p1_ppi8255_interface_1 ) -{ -/*60H*/ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi_porta_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi_porta_w), -/*69H*/ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi_portb_r), - DEVCB_NULL, -/*6AH*/ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi_portc_r), - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi_portc_w) -}; - -I8255_INTERFACE( p1_ppi8255_interface_2 ) -{ -/*68H*/ DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi2_porta_w), -/*61H*/ DEVCB_NULL, - DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi2_portb_w), -/*62H*/ DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, p1_state, p1_ppi2_portc_r), - DEVCB_NULL -}; - READ8_MEMBER(p1_state::p1_ppi_r) { // DBG_LOG(1,"p1ppi",("R %.2x\n", 0x60+offset)); @@ -273,8 +253,17 @@ static MACHINE_CONFIG_START( poisk1, p1_state ) MCFG_PIC8259_ADD( "pic8259", INPUTLINE(":maincpu", 0), VCC, NULL ) - MCFG_I8255A_ADD( "ppi8255n1", p1_ppi8255_interface_1 ) - MCFG_I8255A_ADD( "ppi8255n2", p1_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255n1", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(p1_state, p1_ppi_porta_r)) /*60H*/ + MCFG_I8255_OUT_PORTA_CB(WRITE8(p1_state, p1_ppi_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(p1_state, p1_ppi_portb_r)) /*69H*/ + MCFG_I8255_IN_PORTC_CB(READ8(p1_state, p1_ppi_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(p1_state, p1_ppi_portc_w)) /*6AH*/ + + MCFG_DEVICE_ADD("ppi8255n2", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(p1_state, p1_ppi2_porta_w)) /*68H*/ + MCFG_I8255_OUT_PORTB_CB(WRITE8(p1_state, p1_ppi2_portb_w)) /*61H*/ + MCFG_I8255_IN_PORTC_CB(READ8(p1_state, p1_ppi2_portc_r)) /*62H*/ MCFG_DEVICE_ADD("isa", ISA8, 0) MCFG_ISA8_CPU(":maincpu") diff --git a/src/mess/drivers/portfoli.c b/src/mess/drivers/portfoli.c index 852e8fdf151..9062b3765cc 100644 --- a/src/mess/drivers/portfoli.c +++ b/src/mess/drivers/portfoli.c @@ -702,21 +702,6 @@ GFXDECODE_END //************************************************************************** //------------------------------------------------- -// I8255_INTERFACE( ppi_intf ) -//------------------------------------------------- - -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, // Port A read - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // Port A write - DEVCB_NULL, // Port B read - DEVCB_DEVICE_MEMBER("cent_ctrl_out", output_latch_device, write), // Port B write - DEVCB_DEVICE_MEMBER("cent_status_in", input_buffer_device, read), // Port C read - DEVCB_NULL // Port C write -}; - - -//------------------------------------------------- // ins8250_interface i8250_intf //------------------------------------------------- @@ -862,7 +847,10 @@ static MACHINE_CONFIG_START( portfolio, portfolio_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* devices */ - MCFG_I8255A_ADD(M82C55A_TAG, ppi_intf) + MCFG_DEVICE_ADD(M82C55A_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_ctrl_out", output_latch_device, write)) + MCFG_I8255_IN_PORTC_CB(DEVREAD8("cent_status_in", input_buffer_device, read)) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_ACK_HANDLER(DEVWRITELINE("cent_status_in", input_buffer_device, write_bit5)) diff --git a/src/mess/drivers/pp01.c b/src/mess/drivers/pp01.c index 39e2a210c71..06f10ce7492 100644 --- a/src/mess/drivers/pp01.c +++ b/src/mess/drivers/pp01.c @@ -232,7 +232,13 @@ static MACHINE_CONFIG_START( pp01, pp01_state ) MCFG_PIT8253_CLK2(2000000) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("pit8253", pit8253_device, write_clk0)) - MCFG_I8255A_ADD( "ppi8255", pp01_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(pp01_state, pp01_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pp01_state, pp01_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(pp01_state, pp01_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pp01_state, pp01_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pp01_state, pp01_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pp01_state, pp01_8255_portc_w)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/pulsar.c b/src/mess/drivers/pulsar.c index 9acc5b0341c..67202352fa3 100644 --- a/src/mess/drivers/pulsar.c +++ b/src/mess/drivers/pulsar.c @@ -175,16 +175,6 @@ READ8_MEMBER( pulsar_state::ppi_pc_r ) return m_rtc->data_r(space, 0); } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, // Port A read - DEVCB_DRIVER_MEMBER(pulsar_state, ppi_pa_w), // Port A write - DEVCB_NULL, // Port B read - DEVCB_DRIVER_MEMBER(pulsar_state, ppi_pb_w), // Port B write - DEVCB_DRIVER_MEMBER(pulsar_state, ppi_pc_r), // Port C read - DEVCB_DRIVER_MEMBER(pulsar_state, ppi_pc_w), // Port C write -}; - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 ) DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 ) @@ -257,7 +247,12 @@ static MACHINE_CONFIG_START( pulsar, pulsar_state ) MCFG_MACHINE_RESET_OVERRIDE(pulsar_state, pulsar) /* Devices */ - MCFG_I8255_ADD( "ppi", ppi_intf ) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(pulsar_state, ppi_pa_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(pulsar_state, ppi_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(pulsar_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(pulsar_state, ppi_pc_w)) + MCFG_MSM5832_ADD("rtc", XTAL_32_768kHz) MCFG_Z80DART_ADD("z80dart", XTAL_4MHz, dart_intf ) diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 0d0915726cb..1465bff4f7e 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -426,19 +426,6 @@ static I8237_INTERFACE( qx10_dma8237_2_interface ) }; /* - 8255 -*/ -static I8255_INTERFACE(qx10_i8255_interface) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* MC146818 */ @@ -845,10 +832,11 @@ static MACHINE_CONFIG_START( qx10, qx10_state ) MCFG_PIC8259_ADD("pic8259_master", INPUTLINE("maincpu", 0), VCC, READ8(qx10_state, get_slave_ack)) MCFG_PIC8259_ADD("pic8259_slave", DEVWRITELINE("pic8259_master", pic8259_device, ir7_w), GND, NULL) MCFG_UPD7201_ADD("upd7201", MAIN_CLK/4, qx10_upd7201_interface) - MCFG_I8255_ADD("i8255", qx10_i8255_interface) MCFG_I8237_ADD("8237dma_1", MAIN_CLK/4, qx10_dma8237_1_interface) MCFG_I8237_ADD("8237dma_2", MAIN_CLK/4, qx10_dma8237_2_interface) + MCFG_DEVICE_ADD("i8255", I8255, 0) + MCFG_DEVICE_ADD("upd7220", UPD7220, MAIN_CLK/6) // unk clock MCFG_DEVICE_ADDRESS_MAP(AS_0, upd7220_map) MCFG_UPD7220_DISPLAY_PIXELS_CALLBACK_OWNER(qx10_state, hgdc_display_pixels) diff --git a/src/mess/drivers/radio86.c b/src/mess/drivers/radio86.c index b6d95e8736c..9b44a76ac1a 100644 --- a/src/mess/drivers/radio86.c +++ b/src/mess/drivers/radio86.c @@ -354,9 +354,14 @@ static MACHINE_CONFIG_START( radio86, radio86_state ) MCFG_CPU_IO_MAP(radio86_io) MCFG_MACHINE_RESET_OVERRIDE(radio86_state, radio86 ) - MCFG_I8255_ADD( "ppi8255_1", radio86_ppi8255_interface_1 ) + MCFG_DEVICE_ADD("ppi8255_1", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, radio86_8255_portc_r2)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) + + MCFG_I8275_ADD("i8275", radio86_i8275_interface) - MCFG_I8275_ADD ( "i8275", radio86_i8275_interface) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_UPDATE_DEVICE("i8275", i8275_device, screen_update) @@ -394,7 +399,10 @@ static MACHINE_CONFIG_DERIVED( radiorom, radio86 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(radio86rom_mem) - MCFG_I8255_ADD( "ppi8255_2", radio86_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, radio86_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_romdisk_portc_w)) MCFG_CARTSLOT_ADD("cart") MCFG_CARTSLOT_EXTENSION_LIST("bin,rom") @@ -406,7 +414,10 @@ static MACHINE_CONFIG_DERIVED( radioram, radio86 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(radio86ram_mem) - MCFG_I8255_ADD( "ppi8255_2", radio86_ppi8255_interface_2 ) + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(radio86_state, radio86_romdisk_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(radio86_state, radio86_romdisk_portb_w)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_romdisk_portc_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( rk7007, radio86 ) @@ -414,7 +425,11 @@ static MACHINE_CONFIG_DERIVED( rk7007, radio86 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(rk7007_io) - MCFG_I8255_ADD( "ms7007", rk7007_ppi8255_interface ) + MCFG_DEVICE_ADD("ms7007", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, rk7007_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( rk700716, radio16 ) @@ -422,7 +437,11 @@ static MACHINE_CONFIG_DERIVED( rk700716, radio16 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(rk7007_io) - MCFG_I8255_ADD( "ms7007", rk7007_ppi8255_interface ) + MCFG_DEVICE_ADD("ms7007", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(radio86_state, radio86_8255_porta_w2)) + MCFG_I8255_IN_PORTB_CB(READ8(radio86_state, radio86_8255_portb_r2)) + MCFG_I8255_IN_PORTC_CB(READ8(radio86_state, rk7007_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(radio86_state, radio86_8255_portc_w2)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mikron2, radio86 ) diff --git a/src/mess/drivers/sage2.c b/src/mess/drivers/sage2.c index 0e21d5b9c7b..231b1e96536 100644 --- a/src/mess/drivers/sage2.c +++ b/src/mess/drivers/sage2.c @@ -183,7 +183,7 @@ INPUT_PORTS_END //************************************************************************** //------------------------------------------------- -// I8255A_INTERFACE( ppi0_intf ) +// I8255A INTERFACE( ppi0_intf ) //------------------------------------------------- /* @@ -201,7 +201,7 @@ INPUT_PORTS_END //------------------------------------------------- -// I8255A_INTERFACE( ppi0_intf ) +// I8255A INTERFACE( ppi0_intf ) //------------------------------------------------- WRITE8_MEMBER( sage2_state::ppi0_pc_w ) @@ -246,19 +246,9 @@ WRITE8_MEMBER( sage2_state::ppi0_pc_w ) if(BIT(data, 7)) m_fdc->reset(); } -static I8255A_INTERFACE( ppi0_intf ) -{ - DEVCB_INPUT_PORT("J7"), - DEVCB_NULL, - DEVCB_INPUT_PORT("J6"), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(sage2_state, ppi0_pc_w) -}; - //------------------------------------------------- -// I8255A_INTERFACE( ppi1_intf ) +// I8255A INTERFACE( ppi1_intf ) //------------------------------------------------- WRITE_LINE_MEMBER(sage2_state::write_centronics_ack) @@ -373,17 +363,6 @@ WRITE8_MEMBER( sage2_state::ppi1_pc_w ) } } -static I8255A_INTERFACE( ppi1_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_DRIVER_MEMBER(sage2_state, ppi1_pb_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(sage2_state, ppi1_pc_w) -}; - - WRITE_LINE_MEMBER( sage2_state::br1_w ) { m_usart0->write_txc(state); @@ -464,8 +443,16 @@ static MACHINE_CONFIG_START( sage2, sage2_state ) // devices MCFG_PIC8259_ADD(I8259_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_1), VCC, NULL) - MCFG_I8255A_ADD(I8255A_0_TAG, ppi0_intf) - MCFG_I8255A_ADD(I8255A_1_TAG, ppi1_intf) + + MCFG_DEVICE_ADD(I8255A_0_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(IOPORT("J7")) + MCFG_I8255_IN_PORTB_CB(IOPORT("J6")) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sage2_state, ppi0_pc_w)) + + MCFG_DEVICE_ADD(I8255A_1_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTB_CB(READ8(sage2_state, ppi1_pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sage2_state, ppi1_pc_w)) MCFG_DEVICE_ADD(I8253_0_TAG, PIT8253, 0) MCFG_PIT8253_CLK0(0) // from U75 OUT0 diff --git a/src/mess/drivers/savia84.c b/src/mess/drivers/savia84.c index d1552ab61c0..295e2b64f8f 100644 --- a/src/mess/drivers/savia84.c +++ b/src/mess/drivers/savia84.c @@ -168,17 +168,6 @@ READ8_MEMBER( savia84_state::savia84_8255_portc_r ) // IN FA - read keyboard return 0xff; } - -I8255A_INTERFACE( savia84_ppi8255_interface ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(savia84_state, savia84_8255_porta_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(savia84_state, savia84_8255_portb_w), - DEVCB_DRIVER_MEMBER(savia84_state, savia84_8255_portc_r), - DEVCB_DRIVER_MEMBER(savia84_state, savia84_8255_portc_w) -}; - static MACHINE_CONFIG_START( savia84, savia84_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz / 2) @@ -189,7 +178,12 @@ static MACHINE_CONFIG_START( savia84, savia84_state ) MCFG_DEFAULT_LAYOUT(layout_savia84) /* Devices */ - MCFG_I8255_ADD( "ppi8255", savia84_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(savia84_state, savia84_8255_porta_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(savia84_state, savia84_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(savia84_state, savia84_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(savia84_state, savia84_8255_portc_w)) + MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/sbrain.c b/src/mess/drivers/sbrain.c index ca24d33fa1d..f0956d533aa 100644 --- a/src/mess/drivers/sbrain.c +++ b/src/mess/drivers/sbrain.c @@ -266,16 +266,6 @@ static SLOT_INTERFACE_START( sbrain_floppies ) SLOT_INTERFACE( "525dd", FLOPPY_525_DD ) SLOT_INTERFACE_END -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pa_r), // Port A read - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pa_w), // Port A write - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pb_r), // Port B read - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pb_w), // Port B write - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pc_r), // Port C read - DEVCB_DRIVER_MEMBER(sbrain_state, ppi_pc_w), // Port C write -}; - MACHINE_RESET_MEMBER( sbrain_state, sbrain ) { m_beep->set_frequency(800); @@ -349,7 +339,13 @@ static MACHINE_CONFIG_START( sbrain, sbrain_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* Devices */ - MCFG_I8255_ADD("ppi", ppi_intf) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sbrain_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(sbrain_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(sbrain_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(sbrain_state, ppi_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(sbrain_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sbrain_state, ppi_pc_w)) MCFG_DEVICE_ADD("uart0", I8251, 0) diff --git a/src/mess/drivers/sg1000.c b/src/mess/drivers/sg1000.c index 9a821d1d754..db3cc2d6af5 100644 --- a/src/mess/drivers/sg1000.c +++ b/src/mess/drivers/sg1000.c @@ -470,7 +470,7 @@ static TMS9928A_INTERFACE(sg1000_tms9918a_interface) }; /*------------------------------------------------- - I8255_INTERFACE( sc3000_ppi_intf ) + I8255 INTERFACE -------------------------------------------------*/ READ8_MEMBER( sc3000_state::ppi_pa_r ) @@ -545,16 +545,6 @@ WRITE8_MEMBER( sc3000_state::ppi_pc_w ) /* TODO printer */ } -I8255_INTERFACE( sc3000_ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(sc3000_state, ppi_pa_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_DRIVER_MEMBER(sc3000_state, ppi_pb_r), // Port B read - DEVCB_NULL, // Port B write - DEVCB_NULL, // Port C read - DEVCB_DRIVER_MEMBER(sc3000_state, ppi_pc_w), // Port C write -}; - /*------------------------------------------------- cassette_interface sc3000_cassette_interface -------------------------------------------------*/ @@ -569,7 +559,7 @@ const cassette_interface sc3000_cassette_interface = }; /*------------------------------------------------- - I8255_INTERFACE( sf7000_ppi_intf ) + I8255 INTERFACE -------------------------------------------------*/ WRITE_LINE_MEMBER( sf7000_state::write_centronics_busy ) @@ -640,16 +630,6 @@ WRITE8_MEMBER( sf7000_state::ppi_pc_w ) m_centronics->write_strobe(BIT(data, 7)); } -static I8255_INTERFACE( sf7000_ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(sf7000_state, ppi_pa_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_NULL, // Port B read - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // Port B write - DEVCB_NULL, // Port C read - DEVCB_DRIVER_MEMBER(sf7000_state, ppi_pc_w) // Port C write -}; - /*------------------------------------------------- upd765_interface sf7000_upd765_interface -------------------------------------------------*/ @@ -827,8 +807,13 @@ static MACHINE_CONFIG_START( sc3000, sc3000_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ - MCFG_I8255_ADD(UPD9255_TAG, sc3000_ppi_intf) + MCFG_DEVICE_ADD(UPD9255_TAG, I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sc3000_state, ppi_pa_r)) + MCFG_I8255_IN_PORTB_CB(READ8(sc3000_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sc3000_state, ppi_pc_w)) + // MCFG_PRINTER_ADD("sp400") /* serial printer */ + MCFG_CASSETTE_ADD("cassette", sc3000_cassette_interface) /* cartridge */ @@ -864,8 +849,15 @@ static MACHINE_CONFIG_START( sf7000, sf7000_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) /* devices */ - MCFG_I8255_ADD(UPD9255_0_TAG, sc3000_ppi_intf) - MCFG_I8255_ADD(UPD9255_1_TAG, sf7000_ppi_intf) + MCFG_DEVICE_ADD(UPD9255_0_TAG, I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sc3000_state, ppi_pa_r)) + MCFG_I8255_IN_PORTB_CB(READ8(sc3000_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sc3000_state, ppi_pc_w)) + + MCFG_DEVICE_ADD(UPD9255_1_TAG, I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sf7000_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sf7000_state, ppi_pc_w)) MCFG_DEVICE_ADD(UPD8251_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) diff --git a/src/mess/drivers/sm1800.c b/src/mess/drivers/sm1800.c index c058ff85f0a..afb8f86c62a 100644 --- a/src/mess/drivers/sm1800.c +++ b/src/mess/drivers/sm1800.c @@ -135,16 +135,6 @@ READ8_MEMBER( sm1800_state::sm1800_8255_portc_r ) return 0; } -I8255A_INTERFACE( sm1800_ppi8255_interface ) -{ - DEVCB_DRIVER_MEMBER(sm1800_state, sm1800_8255_porta_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(sm1800_state, sm1800_8255_portb_w), - DEVCB_DRIVER_MEMBER(sm1800_state, sm1800_8255_portc_r), - DEVCB_DRIVER_MEMBER(sm1800_state, sm1800_8255_portc_w) -}; - PALETTE_INIT_MEMBER(sm1800_state, sm1800) { palette.set_pen_color(0, rgb_t::black); // black @@ -192,8 +182,14 @@ static MACHINE_CONFIG_START( sm1800, sm1800_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", sm1800) /* Devices */ - MCFG_I8255_ADD ("i8255", sm1800_ppi8255_interface ) + MCFG_DEVICE_ADD("i8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sm1800_state, sm1800_8255_porta_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(sm1800_state, sm1800_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(sm1800_state, sm1800_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sm1800_state, sm1800_8255_portc_w)) + MCFG_I8275_ADD ("i8275", sm1800_i8275_interface) + MCFG_DEVICE_ADD("i8251", I8251, 0) MACHINE_CONFIG_END diff --git a/src/mess/drivers/softbox.c b/src/mess/drivers/softbox.c index ff4640f1c6d..324a8e3b5f1 100644 --- a/src/mess/drivers/softbox.c +++ b/src/mess/drivers/softbox.c @@ -173,7 +173,7 @@ INPUT_PORTS_END //************************************************************************** //------------------------------------------------- -// I8255A_INTERFACE( ppi0_intf ) +// I8255A 0 Interface //------------------------------------------------- READ8_MEMBER( softbox_state::ppi0_pa_r ) @@ -186,19 +186,8 @@ WRITE8_MEMBER( softbox_state::ppi0_pb_w ) m_ieee->dio_w(data ^ 0xff); } -static I8255A_INTERFACE( ppi0_intf ) -{ - DEVCB_DRIVER_MEMBER(softbox_state, ppi0_pa_r), - DEVCB_NULL, // Port A write - DEVCB_NULL, // Port B read - DEVCB_DRIVER_MEMBER(softbox_state, ppi0_pb_w), - DEVCB_INPUT_PORT("SW1"), // Port C read - DEVCB_NULL // Port C write -}; - - //------------------------------------------------- -// I8255A_INTERFACE( ppi1_intf ) +// I8255A 1 Interface //------------------------------------------------- READ8_MEMBER( softbox_state::ppi1_pa_r ) @@ -307,17 +296,6 @@ WRITE8_MEMBER( softbox_state::ppi1_pc_w ) output_set_led_value(LED_READY, !BIT(data, 2)); } -static I8255A_INTERFACE( ppi1_intf ) -{ - DEVCB_DRIVER_MEMBER(softbox_state, ppi1_pa_r), - DEVCB_NULL, // Port A write - DEVCB_NULL, // Port B read - DEVCB_DRIVER_MEMBER(softbox_state, ppi1_pb_w), - DEVCB_DRIVER_MEMBER(softbox_state, ppi1_pc_r), - DEVCB_DRIVER_MEMBER(softbox_state, ppi1_pc_w) -}; - - static DEVICE_INPUT_DEFAULTS_START( terminal ) DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 ) DEVICE_INPUT_DEFAULTS( "RS232_RXBAUD", 0xff, RS232_BAUD_9600 ) @@ -405,8 +383,16 @@ static MACHINE_CONFIG_START( softbox, softbox_state ) MCFG_RS232_DSR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_dsr)) MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("terminal", terminal) - MCFG_I8255A_ADD(I8255_0_TAG, ppi0_intf) - MCFG_I8255A_ADD(I8255_1_TAG, ppi1_intf) + MCFG_DEVICE_ADD(I8255_0_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(softbox_state, ppi0_pa_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(softbox_state, ppi0_pb_w)) + MCFG_I8255_IN_PORTC_CB(IOPORT("SW1")) + + MCFG_DEVICE_ADD(I8255_1_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(softbox_state, ppi1_pa_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(softbox_state, ppi1_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(softbox_state, ppi1_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(softbox_state, ppi1_pc_w)) MCFG_DEVICE_ADD(COM8116_TAG, COM8116, XTAL_5_0688MHz) MCFG_COM8116_FR_HANDLER(DEVWRITELINE(I8251_TAG, i8251_device, write_rxc)) diff --git a/src/mess/drivers/special.c b/src/mess/drivers/special.c index 519df57da92..05d0f459f55 100644 --- a/src/mess/drivers/special.c +++ b/src/mess/drivers/special.c @@ -386,7 +386,14 @@ static MACHINE_CONFIG_START( special, special_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* Devices */ - MCFG_I8255_ADD( "ppi8255", specialist_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(special_state, specialist_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(special_state, specialist_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(special_state, specialist_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(special_state, specialist_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(special_state, specialist_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(special_state, specialist_8255_portc_w)) + MCFG_CASSETTE_ADD( "cassette", special_cassette_interface ) MCFG_SOFTWARE_LIST_ADD("cass_list","special_cass") MACHINE_CONFIG_END @@ -405,7 +412,13 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( specialm, special ) MCFG_DEVICE_REMOVE("ppi8255") - MCFG_I8255_ADD( "ppi8255", specimx_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(special_state, specialist_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(special_state, specialist_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(special_state, specimx_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(special_state, specialist_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(special_state, specialist_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(special_state, specialist_8255_portc_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( specimx, special ) @@ -438,7 +451,14 @@ static MACHINE_CONFIG_DERIVED( specimx, special ) MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("custom", specimx_sound_device, set_input_ch2)) MCFG_DEVICE_REMOVE("ppi8255") - MCFG_I8255_ADD( "ppi8255", specimx_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(special_state, specialist_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(special_state, specialist_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(special_state, specimx_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(special_state, specialist_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(special_state, specialist_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(special_state, specialist_8255_portc_w)) + MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(special_state, fdc_drq)) MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats) @@ -480,7 +500,15 @@ static MACHINE_CONFIG_START( erik, special_state ) /* Devices */ MCFG_CASSETTE_ADD( "cassette", special_cassette_interface ) - MCFG_I8255_ADD( "ppi8255", specialist_ppi8255_interface ) + + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(special_state, specialist_8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(special_state, specialist_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(special_state, specialist_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(special_state, specialist_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(special_state, specialist_8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(special_state, specialist_8255_portc_w)) + MCFG_FD1793x_ADD("fd1793", XTAL_8MHz / 8) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(special_state, fdc_drq)) MCFG_FLOPPY_DRIVE_ADD("fd0", specimx_floppies, "525qd", special_state::specimx_floppy_formats) diff --git a/src/mess/drivers/sv8000.c b/src/mess/drivers/sv8000.c index 672f883e9e8..23e3f18ed26 100644 --- a/src/mess/drivers/sv8000.c +++ b/src/mess/drivers/sv8000.c @@ -272,17 +272,6 @@ WRITE8_MEMBER( sv8000_state::i8255_portc_w ) } -static I8255_INTERFACE( sv8000_i8255_interface ) -{ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_porta_r), /* port A read */ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_porta_w), /* port A write */ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_portb_r), /* port B read */ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_portb_w), /* port B write */ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_portc_r), /* port C read */ - DEVCB_DRIVER_MEMBER(sv8000_state, i8255_portc_w) /* port C write */ -}; - - READ8_MEMBER( sv8000_state::ay_port_a_r ) { UINT8 data = 0xFF; @@ -422,7 +411,13 @@ static MACHINE_CONFIG_START( sv8000, sv8000_state ) MCFG_CPU_IO_MAP(sv8000_io) MCFG_CPU_VBLANK_INT_DRIVER("screen", sv8000_state, irq0_line_hold) - MCFG_I8255_ADD( "i8255", sv8000_i8255_interface ) + MCFG_DEVICE_ADD("i8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(sv8000_state, i8255_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(sv8000_state, i8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(sv8000_state, i8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(sv8000_state, i8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(sv8000_state, i8255_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(sv8000_state, i8255_portc_w)) /* video hardware */ // S68047P - Unknown whether the internal or an external character rom is used diff --git a/src/mess/drivers/svi318.c b/src/mess/drivers/svi318.c index 501f87495b4..089500d585a 100644 --- a/src/mess/drivers/svi318.c +++ b/src/mess/drivers/svi318.c @@ -315,7 +315,10 @@ static MACHINE_CONFIG_START( svi318, svi318_state ) MCFG_MACHINE_START_OVERRIDE(svi318_state, svi318_pal ) MCFG_MACHINE_RESET_OVERRIDE(svi318_state, svi318 ) - MCFG_I8255_ADD( "ppi8255", svi318_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(svi318_state, svi318_ppi_port_a_r)) + MCFG_I8255_IN_PORTB_CB(READ8(svi318_state, svi318_ppi_port_b_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(svi318_state, svi318_ppi_port_c_w)) MCFG_INS8250_ADD( "ins8250_0", svi318_ins8250_interface[0], 1000000 ) MCFG_INS8250_ADD( "ins8250_1", svi318_ins8250_interface[1], 3072000 ) @@ -431,7 +434,10 @@ static MACHINE_CONFIG_START( svi328_806, svi318_state ) MCFG_MACHINE_START_OVERRIDE(svi318_state, svi318_pal ) MCFG_MACHINE_RESET_OVERRIDE(svi318_state, svi328_806 ) - MCFG_I8255A_ADD( "ppi8255", svi318_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(svi318_state, svi318_ppi_port_a_r)) + MCFG_I8255_IN_PORTB_CB(READ8(svi318_state, svi318_ppi_port_b_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(svi318_state, svi318_ppi_port_c_w)) MCFG_INS8250_ADD( "ins8250_0", svi318_ins8250_interface[0], 1000000 ) MCFG_INS8250_ADD( "ins8250_1", svi318_ins8250_interface[1], 3072000 ) diff --git a/src/mess/drivers/tandy2k.c b/src/mess/drivers/tandy2k.c index 84ad7b5c5ec..67a13f06074 100644 --- a/src/mess/drivers/tandy2k.c +++ b/src/mess/drivers/tandy2k.c @@ -636,15 +636,6 @@ WRITE8_MEMBER( tandy2k_state::ppi_pc_w ) m_centronics->write_strobe(BIT(data, 7)); } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_NULL, // Port A read - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // Port A write - DEVCB_DRIVER_MEMBER(tandy2k_state, ppi_pb_r), // Port B write - DEVCB_NULL, // Port B write - DEVCB_NULL, // Port C read - DEVCB_DRIVER_MEMBER(tandy2k_state, ppi_pc_w) // Port C write -}; // Intel 8259 Interfaces @@ -805,7 +796,10 @@ static MACHINE_CONFIG_START( tandy2k, tandy2k_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTB_CB(READ8(tandy2k_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(tandy2k_state, ppi_pc_w)) MCFG_DEVICE_ADD(I8251A_TAG, I8251, 0) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd)) diff --git a/src/mess/drivers/tk80.c b/src/mess/drivers/tk80.c index 599151ed19a..c6a6a2b1035 100644 --- a/src/mess/drivers/tk80.c +++ b/src/mess/drivers/tk80.c @@ -116,19 +116,19 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(tk80_io, AS_IO, 8, tk80_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) ADDRESS_MAP_END static ADDRESS_MAP_START(mikrolab_io, AS_IO, 8, tk80_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) ADDRESS_MAP_END static ADDRESS_MAP_START(nd80z_io, AS_IO, 8, tk80_state) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x03) - AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) + AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255", i8255_device, read, write) ADDRESS_MAP_END /* Input ports */ @@ -247,37 +247,6 @@ WRITE8_MEMBER( tk80_state::mikrolab_serial_w ) m_ppi_portc = data; } -static I8255_INTERFACE( ppi_intf_0 ) -{ - DEVCB_DRIVER_MEMBER(tk80_state, key_matrix_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(tk80_state, serial_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(tk80_state, serial_w) /* Port C write */ -}; - -static I8255_INTERFACE( ppi_intf_1 ) -{ - DEVCB_DRIVER_MEMBER(tk80_state, key_matrix_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(tk80_state, serial_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(tk80_state, mikrolab_serial_w) /* Port C write */ -}; - -static I8255_INTERFACE( ppi_intf_2 ) -{ - DEVCB_DRIVER_MEMBER(tk80_state, nd80z_key_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(tk80_state, serial_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_DRIVER_MEMBER(tk80_state, mikrolab_serial_w) /* Port C write */ -}; - - static MACHINE_CONFIG_START( tk80, tk80_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_1MHz) // 18.432 / 9 @@ -288,25 +257,36 @@ static MACHINE_CONFIG_START( tk80, tk80_state ) MCFG_DEFAULT_LAYOUT(layout_tk80) /* Devices */ - MCFG_I8255_ADD( "ppi8255_0", ppi_intf_0 ) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(tk80_state, key_matrix_r)) + MCFG_I8255_IN_PORTB_CB(READ8(tk80_state, serial_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(tk80_state, serial_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( mikrolab, tk80 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(tk85_mem) MCFG_CPU_IO_MAP(mikrolab_io) + /* Devices */ - MCFG_DEVICE_REMOVE("ppi8255_0") - MCFG_I8255_ADD( "ppi8255_1", ppi_intf_1 ) + MCFG_DEVICE_REMOVE("ppi8255") + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(tk80_state, key_matrix_r)) + MCFG_I8255_IN_PORTB_CB(READ8(tk80_state, serial_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(tk80_state, mikrolab_serial_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( nd80z, tk80 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(tk85_mem) MCFG_CPU_IO_MAP(nd80z_io) + /* Devices */ - MCFG_DEVICE_REMOVE("ppi8255_0") - MCFG_I8255_ADD( "ppi8255_2", ppi_intf_2 ) + MCFG_DEVICE_REMOVE("ppi8255") + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(tk80_state, nd80z_key_r)) + MCFG_I8255_IN_PORTB_CB(READ8(tk80_state, serial_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(tk80_state, mikrolab_serial_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( tk85, tk80 ) diff --git a/src/mess/drivers/tk80bs.c b/src/mess/drivers/tk80bs.c index e67028913ea..df1a81c7713 100644 --- a/src/mess/drivers/tk80bs.c +++ b/src/mess/drivers/tk80bs.c @@ -143,16 +143,6 @@ READ8_MEMBER( tk80bs_state::port_b_r ) return 0; } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(tk80bs_state, port_a_r), /* Port A read */ - DEVCB_NULL, /* Port A write */ - DEVCB_DRIVER_MEMBER(tk80bs_state, port_b_r), /* Port B read */ - DEVCB_NULL, /* Port B write */ - DEVCB_NULL, /* Port C read */ - DEVCB_NULL /* Port C write */ -}; - WRITE8_MEMBER( tk80bs_state::kbd_put ) { data &= 0x7f; @@ -195,7 +185,10 @@ static MACHINE_CONFIG_START( tk80bs, tk80bs_state ) MCFG_GFXDECODE_ADD("gfxdecode", "palette", tk80bs) /* Devices */ - MCFG_I8255_ADD( "ppi", ppi_intf) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(tk80bs_state, port_a_r)) + MCFG_I8255_IN_PORTB_CB(READ8(tk80bs_state, port_b_r)) + MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(WRITE8(tk80bs_state, kbd_put)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/unior.c b/src/mess/drivers/unior.c index d66f3579d3a..05d65c6ecfb 100644 --- a/src/mess/drivers/unior.c +++ b/src/mess/drivers/unior.c @@ -320,17 +320,6 @@ WRITE8_MEMBER( unior_state::ppi0_b_w ) { } -// ports a & c connect to an external slot -static I8255A_INTERFACE( ppi0_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(unior_state, ppi0_b_r), - DEVCB_DRIVER_MEMBER(unior_state, ppi0_b_w), - DEVCB_NULL, - DEVCB_NULL, -}; - READ8_MEMBER( unior_state::ppi1_a_r ) { return m_4c; @@ -366,19 +355,6 @@ WRITE8_MEMBER( unior_state::ppi1_c_w ) m_pit->write_gate2(BIT(data, 4)); } -// ports a & b are for the keyboard -// port c operates various control lines for mostly unknown purposes -static I8255A_INTERFACE( ppi1_intf ) -{ - DEVCB_DRIVER_MEMBER(unior_state, ppi1_a_r), - DEVCB_DRIVER_MEMBER(unior_state, ppi1_a_w), - DEVCB_DRIVER_MEMBER(unior_state, ppi1_b_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(unior_state, ppi1_c_r), - DEVCB_DRIVER_MEMBER(unior_state, ppi1_c_w), -}; - - /************************************************* i8257 @@ -449,8 +425,19 @@ static MACHINE_CONFIG_START( unior, unior_state ) MCFG_PIT8253_CLK2(XTAL_16MHz / 9 / 64) // unknown frequency MCFG_PIT8253_OUT2_HANDLER(DEVWRITELINE("speaker", speaker_sound_device, level_w)) - MCFG_I8255_ADD( "ppi0", ppi0_intf ) - MCFG_I8255_ADD( "ppi1", ppi1_intf ) + MCFG_DEVICE_ADD("ppi0", I8255, 0) + // ports a & c connect to an external slot + MCFG_I8255_IN_PORTB_CB(READ8(unior_state, ppi0_b_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(unior_state, ppi0_b_w)) + + MCFG_DEVICE_ADD("ppi1", I8255, 0) + // ports a & b are for the keyboard + // port c operates various control lines for mostly unknown purposes + MCFG_I8255_IN_PORTA_CB(READ8(unior_state, ppi1_a_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(unior_state, ppi1_a_w)) + MCFG_I8255_IN_PORTB_CB(READ8(unior_state, ppi1_b_r)) + MCFG_I8255_IN_PORTC_CB(READ8(unior_state, ppi1_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(unior_state, ppi1_c_w)) MCFG_DEVICE_ADD("dma", I8257, XTAL_20MHz / 9) // unknown clock MCFG_I8257_OUT_HRQ_CB(INPUTLINE("maincpu", I8085_HALT)) diff --git a/src/mess/drivers/ut88.c b/src/mess/drivers/ut88.c index 9394fe98529..bc4d97616c4 100644 --- a/src/mess/drivers/ut88.c +++ b/src/mess/drivers/ut88.c @@ -213,7 +213,11 @@ static MACHINE_CONFIG_START( ut88, ut88_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* Devices */ - MCFG_I8255A_ADD( "ppi8255", ut88_ppi8255_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(ut88_state, ut88_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(ut88_state, ut88_8255_portb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(ut88_state, ut88_8255_portc_r)) + MCFG_CASSETTE_ADD( "cassette", ut88_cassette_interface ) MCFG_SOFTWARE_LIST_ADD("cass_list","ut88") MACHINE_CONFIG_END diff --git a/src/mess/drivers/v1050.c b/src/mess/drivers/v1050.c index 79d839844a1..2d96226a70e 100644 --- a/src/mess/drivers/v1050.c +++ b/src/mess/drivers/v1050.c @@ -650,32 +650,12 @@ WRITE8_MEMBER(v1050_state::disp_ppi_pc_w) m_ppi_6502->pc4_w(BIT(data, 7)); } -static I8255A_INTERFACE( disp_ppi_intf ) -{ - DEVCB_DEVICE_MEMBER(I8255A_M6502_TAG, i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_NULL, // Port B read - DEVCB_NULL, // Port B write - DEVCB_NULL, // Port C read - DEVCB_DRIVER_MEMBER(v1050_state,disp_ppi_pc_w) // Port C write -}; - WRITE8_MEMBER(v1050_state::m6502_ppi_pc_w) { m_ppi_disp->pc2_w(BIT(data, 7)); m_ppi_disp->pc4_w(BIT(data, 6)); } -static I8255A_INTERFACE( m6502_ppi_intf ) -{ - DEVCB_DEVICE_MEMBER(I8255A_DISP_TAG, i8255_device, pb_r), // Port A read - DEVCB_NULL, // Port A write - DEVCB_NULL, // Port B read - DEVCB_NULL, // Port B write - DEVCB_NULL, // Port C read - DEVCB_DRIVER_MEMBER(v1050_state,m6502_ppi_pc_w) // Port C write -}; - // Miscellanous 8255A Interface WRITE8_MEMBER( v1050_state::misc_ppi_pa_w ) @@ -809,16 +789,6 @@ WRITE8_MEMBER( v1050_state::misc_ppi_pc_w ) set_baud_sel((data >> 2) & 0x03); } -static I8255A_INTERFACE( misc_ppi_intf ) -{ - DEVCB_NULL, // Port A read - DEVCB_DRIVER_MEMBER(v1050_state, misc_ppi_pa_w), // Port A write - DEVCB_NULL, // Port B read - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // Port B write - DEVCB_DRIVER_MEMBER(v1050_state,misc_ppi_pc_r), // Port C read - DEVCB_DRIVER_MEMBER(v1050_state, misc_ppi_pc_w) // Port C write -}; - // Real Time Clock 8255A Interface WRITE8_MEMBER( v1050_state::rtc_ppi_pb_w ) @@ -897,16 +867,6 @@ WRITE8_MEMBER( v1050_state::rtc_ppi_pc_w ) m_rtc->cs2_w(BIT(data, 7)); } -static I8255A_INTERFACE( rtc_ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(v1050_state, rtc_ppi_pa_r), - DEVCB_DRIVER_MEMBER(v1050_state, rtc_ppi_pa_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(v1050_state, rtc_ppi_pb_w), - DEVCB_DRIVER_MEMBER(v1050_state, rtc_ppi_pc_r), - DEVCB_DRIVER_MEMBER(v1050_state, rtc_ppi_pc_w) -}; - // Keyboard 8251A Interface WRITE_LINE_MEMBER(v1050_state::write_keyboard_clock) @@ -1094,10 +1054,26 @@ static MACHINE_CONFIG_START( v1050, v1050_state ) MCFG_MSM58321_D3_HANDLER(WRITELINE(v1050_state, rtc_ppi_pa_3_w)) MCFG_MSM58321_BUSY_HANDLER(WRITELINE(v1050_state, rtc_ppi_pc_3_w)) - MCFG_I8255A_ADD(I8255A_DISP_TAG, disp_ppi_intf) - MCFG_I8255A_ADD(I8255A_MISC_TAG, misc_ppi_intf) - MCFG_I8255A_ADD(I8255A_RTC_TAG, rtc_ppi_intf) - MCFG_I8255A_ADD(I8255A_M6502_TAG, m6502_ppi_intf) + MCFG_DEVICE_ADD(I8255A_DISP_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8(I8255A_M6502_TAG, i8255_device, pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(v1050_state, disp_ppi_pc_w)) + + MCFG_DEVICE_ADD(I8255A_MISC_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(v1050_state, misc_ppi_pa_w)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_IN_PORTC_CB(READ8(v1050_state,misc_ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(v1050_state,misc_ppi_pc_w)) + + MCFG_DEVICE_ADD(I8255A_RTC_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(v1050_state, rtc_ppi_pa_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(v1050_state, rtc_ppi_pa_w)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(v1050_state, rtc_ppi_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(v1050_state, rtc_ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(v1050_state, rtc_ppi_pc_w)) + + MCFG_DEVICE_ADD(I8255A_M6502_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(DEVREAD8(I8255A_DISP_TAG, i8255_device, pb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(v1050_state, m6502_ppi_pc_w)) MCFG_DEVICE_ADD(I8251A_KB_TAG, I8251, 0/*XTAL_16MHz/8,*/) MCFG_I8251_TXD_HANDLER(DEVWRITELINE(V1050_KEYBOARD_TAG, v1050_keyboard_device, si_w)) diff --git a/src/mess/drivers/vector06.c b/src/mess/drivers/vector06.c index fdf41a9104a..642ecb1e2e3 100644 --- a/src/mess/drivers/vector06.c +++ b/src/mess/drivers/vector06.c @@ -185,9 +185,19 @@ static MACHINE_CONFIG_START( vector06, vector06_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) /* Devices */ - MCFG_I8255_ADD("ppi8255", vector06_ppi8255_interface) - MCFG_I8255_ADD("ppi8255_2", vector06_ppi8255_2_interface) + MCFG_DEVICE_ADD("ppi8255", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(vector06_state, vector06_8255_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(vector06_state, vector06_8255_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(vector06_state, vector06_8255_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(vector06_state, vector06_8255_portc_r)) + + MCFG_DEVICE_ADD("ppi8255_2", I8255, 0) + MCFG_I8255_OUT_PORTA_CB(WRITE8(vector06_state, vector06_romdisk_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(vector06_state, vector06_romdisk_portb_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(vector06_state, vector06_romdisk_portc_w)) + MCFG_CASSETTE_ADD("cassette", vector_cassette_interface) + MCFG_FD1793_ADD("wd1793", vector06_wd17xx_interface) MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(vector_floppy_interface) diff --git a/src/mess/drivers/votrpss.c b/src/mess/drivers/votrpss.c index 42dab20ba68..7d8e141ec84 100644 --- a/src/mess/drivers/votrpss.c +++ b/src/mess/drivers/votrpss.c @@ -236,16 +236,6 @@ WRITE8_MEMBER( votrpss_state::ppi_pc_w ) m_portc = data; } -static I8255_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pa_r), // Port A read - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pa_w), // Port A write - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pb_r), // Port B read - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pb_w), // Port B write - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pc_r), // Port C read - DEVCB_DRIVER_MEMBER(votrpss_state, ppi_pc_w), // Port C write -}; - static const ay8910_interface ay8910_intf = { AY8910_LEGACY_OUTPUT, // flags @@ -307,7 +297,14 @@ static MACHINE_CONFIG_START( votrpss, votrpss_state ) MCFG_PIT8253_CLK1(XTAL_8MHz / 256) /* Timer 1: Pitch */ MCFG_PIT8253_CLK2(XTAL_8MHz / 4096) /* Timer 2: Volume */ - MCFG_I8255_ADD("ppi", ppi_intf) + MCFG_DEVICE_ADD("ppi", I8255, 0) + MCFG_I8255_IN_PORTA_CB(READ8(votrpss_state, ppi_pa_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(votrpss_state, ppi_pa_w)) + MCFG_I8255_IN_PORTB_CB(READ8(votrpss_state, ppi_pb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(votrpss_state, ppi_pb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(votrpss_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(votrpss_state, ppi_pc_w)) + MCFG_TIMER_DRIVER_ADD_PERIODIC("irq_timer", votrpss_state, irq_timer, attotime::from_msec(10)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index 66ff6d034c2..96b87e48331 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -753,7 +753,7 @@ IRQ_CALLBACK_MEMBER( wangpc_state::wangpc_irq_callback ) //------------------------------------------------- -// I8255A_INTERFACE( ppi_intf ) +// I8255A INTERFACE //------------------------------------------------- READ8_MEMBER( wangpc_state::ppi_pa_r ) @@ -870,17 +870,6 @@ WRITE8_MEMBER( wangpc_state::ppi_pc_w ) m_centronics->write_init(BIT(data, 2)); } -static I8255A_INTERFACE( ppi_intf ) -{ - DEVCB_DRIVER_MEMBER(wangpc_state, ppi_pa_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(wangpc_state, ppi_pb_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(wangpc_state, ppi_pc_r), - DEVCB_DRIVER_MEMBER(wangpc_state, ppi_pc_w) -}; - - WRITE_LINE_MEMBER( wangpc_state::pit2_w ) { if (state) @@ -1119,8 +1108,14 @@ static MACHINE_CONFIG_START( wangpc, wangpc_state ) // devices MCFG_AM9517A_ADD(AM9517A_TAG, 4000000, dmac_intf) + MCFG_PIC8259_ADD(I8259A_TAG, INPUTLINE(I8086_TAG, INPUT_LINE_IRQ0), VCC, NULL) - MCFG_I8255A_ADD(I8255A_TAG, ppi_intf) + + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(wangpc_state, ppi_pa_r)) + MCFG_I8255_IN_PORTB_CB(READ8(wangpc_state, ppi_pb_r)) + MCFG_I8255_IN_PORTC_CB(READ8(wangpc_state, ppi_pc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(wangpc_state, ppi_pc_w)) MCFG_DEVICE_ADD(I8253_TAG, PIT8253, 0) MCFG_PIT8253_CLK0(500000) diff --git a/src/mess/drivers/x1.c b/src/mess/drivers/x1.c index 810820f8d3f..8c45bf3cf67 100644 --- a/src/mess/drivers/x1.c +++ b/src/mess/drivers/x1.c @@ -1870,16 +1870,6 @@ WRITE8_MEMBER( x1_state::x1_portc_w ) m_cassette->output(BIT(data, 0) ? +1.0 : -1.0); } -static I8255A_INTERFACE( ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(x1_state, x1_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_porta_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portb_r), /* Port B read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portb_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portc_w) /* Port C write */ -}; - static MC6845_INTERFACE( mc6845_intf ) { true, /* show border area */ @@ -2570,7 +2560,13 @@ static MACHINE_CONFIG_START( x1, x1_state ) MCFG_DEVICE_ADD("x1kb", X1_KEYBOARD, 0) - MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf ) + MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(x1_state, x1_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(x1_state, x1_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(x1_state, x1_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(x1_state, x1_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(x1_state, x1_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(x1_state, x1_portc_w)) MCFG_MACHINE_START_OVERRIDE(x1_state,x1) MCFG_MACHINE_RESET_OVERRIDE(x1_state,x1) diff --git a/src/mess/drivers/x1twin.c b/src/mess/drivers/x1twin.c index b6d8d540fca..eae89011c1f 100644 --- a/src/mess/drivers/x1twin.c +++ b/src/mess/drivers/x1twin.c @@ -79,16 +79,6 @@ static const wd17xx_interface x1_mb8877a_interface = {FLOPPY_0, FLOPPY_1, FLOPPY_2, FLOPPY_3} }; -static I8255A_INTERFACE( ppi8255_intf ) -{ - DEVCB_DRIVER_MEMBER(x1_state, x1_porta_r), /* Port A read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_porta_w), /* Port A write */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portb_r), /* Port B read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portb_w), /* Port B write */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portc_r), /* Port C read */ - DEVCB_DRIVER_MEMBER(x1_state, x1_portc_w) /* Port C write */ -}; - static MC6845_INTERFACE( mc6845_intf ) { false, /* show border area*/ @@ -526,7 +516,13 @@ static MACHINE_CONFIG_START( x1twin, x1twin_state ) MCFG_DEVICE_ADD("x1kb", X1_KEYBOARD, 0) - MCFG_I8255A_ADD( "ppi8255_0", ppi8255_intf ) + MCFG_DEVICE_ADD("ppi8255_0", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(x1_state, x1_porta_r)) + MCFG_I8255_OUT_PORTA_CB(WRITE8(x1_state, x1_porta_w)) + MCFG_I8255_IN_PORTB_CB(READ8(x1_state, x1_portb_r)) + MCFG_I8255_OUT_PORTB_CB(WRITE8(x1_state, x1_portb_w)) + MCFG_I8255_IN_PORTC_CB(READ8(x1_state, x1_portc_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(x1_state, x1_portc_w)) MCFG_MACHINE_START_OVERRIDE(x1twin_state,x1) MCFG_MACHINE_RESET_OVERRIDE(x1twin_state,x1) diff --git a/src/mess/drivers/x68k.c b/src/mess/drivers/x68k.c index c32848fce20..8d27d367a39 100644 --- a/src/mess/drivers/x68k.c +++ b/src/mess/drivers/x68k.c @@ -1325,16 +1325,6 @@ WRITE_LINE_MEMBER( x68k_state::mfp_tbo_w ) m_mfpdev->clock_w(state); } -static I8255A_INTERFACE( ppi_interface ) -{ - DEVCB_DRIVER_MEMBER(x68k_state,ppi_port_a_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(x68k_state,ppi_port_b_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(x68k_state,ppi_port_c_r), - DEVCB_DRIVER_MEMBER(x68k_state,ppi_port_c_w) -}; - static const hd63450_interface dmac_interface = { "maincpu", // CPU - 68000 @@ -1803,7 +1793,11 @@ static MACHINE_CONFIG_FRAGMENT( x68000_base ) MCFG_RS232_PORT_ADD("keyboard", keyboard, "x68k") MCFG_RS232_RXD_HANDLER(DEVWRITELINE(MC68901_TAG, mc68901_device, write_rx)) - MCFG_I8255A_ADD( "ppi8255", ppi_interface ) + MCFG_DEVICE_ADD("ppi8255", I8255A, 0) + MCFG_I8255_IN_PORTA_CB(READ8(x68k_state, ppi_port_a_r)) + MCFG_I8255_IN_PORTB_CB(READ8(x68k_state, ppi_port_b_r)) + MCFG_I8255_IN_PORTC_CB(READ8(x68k_state, ppi_port_c_r)) + MCFG_I8255_OUT_PORTC_CB(WRITE8(x68k_state, ppi_port_c_w)) MCFG_DEVICE_ADD( "hd63450", HD63450, 0 ) MCFG_DEVICE_CONFIG(dmac_interface) diff --git a/src/mess/drivers/xor100.c b/src/mess/drivers/xor100.c index f21246eaecc..956fc294557 100644 --- a/src/mess/drivers/xor100.c +++ b/src/mess/drivers/xor100.c @@ -411,16 +411,6 @@ READ8_MEMBER(xor100_state::i8255_pc_r) return data; } -static I8255A_INTERFACE( printer_8255_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(CENTRONICS_TAG, centronics_device, write_strobe), - DEVCB_DRIVER_MEMBER(xor100_state, i8255_pc_r), - DEVCB_NULL -}; - /* Z80-CTC Interface */ WRITE_LINE_MEMBER( xor100_state::ctc_z0_w ) @@ -548,7 +538,11 @@ static MACHINE_CONFIG_START( xor100, xor100_state ) MCFG_COM8116_FR_HANDLER(WRITELINE(xor100_state, com5016_fr_w)) MCFG_COM8116_FT_HANDLER(WRITELINE(xor100_state, com5016_ft_w)) - MCFG_I8255A_ADD(I8255A_TAG, printer_8255_intf) + MCFG_DEVICE_ADD(I8255A_TAG, I8255A, 0) + MCFG_I8255_OUT_PORTA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_I8255_OUT_PORTB_CB(DEVWRITELINE(CENTRONICS_TAG, centronics_device, write_strobe)) + MCFG_I8255_IN_PORTC_CB(READ8(xor100_state, i8255_pc_r)) + MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf) MCFG_FD1795x_ADD(WD1795_TAG, XTAL_8MHz/4) MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":0", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats) |
