diff options
| author | 2014-04-29 07:24:36 +0000 | |
|---|---|---|
| committer | 2014-04-29 07:24:36 +0000 | |
| commit | 181f87e14242ed6d845e780924ef0bec457d583d (patch) | |
| tree | 29916503554c4fdf68663adb62cf92c1dd07e39f /src/mess | |
| parent | bf9cc508b5164c313c91a0a82ad3182a13423cf4 (diff) | |
z80pio: converted to use devcb2. nw.
Diffstat (limited to 'src/mess')
63 files changed, 384 insertions, 1097 deletions
diff --git a/src/mess/drivers/a5105.c b/src/mess/drivers/a5105.c index acda0f65862..af16d91f305 100644 --- a/src/mess/drivers/a5105.c +++ b/src/mess/drivers/a5105.c @@ -552,17 +552,6 @@ static SLOT_INTERFACE_START( a5105_floppies ) SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) SLOT_INTERFACE_END -static Z80PIO_INTERFACE( a5105_pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - static const z80_daisy_config a5105_daisy_chain[] = { { "z80ctc" }, @@ -606,7 +595,8 @@ static MACHINE_CONFIG_START( a5105, a5105_state ) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg2)) MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_Z80PIO_ADD( "z80pio", XTAL_15MHz / 4, a5105_pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_15MHz / 4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) MCFG_CASSETTE_ADD( "cassette", default_cassette_interface ) diff --git a/src/mess/drivers/abc80.c b/src/mess/drivers/abc80.c index 79b3caeb0de..0722e79f36c 100644 --- a/src/mess/drivers/abc80.c +++ b/src/mess/drivers/abc80.c @@ -271,7 +271,7 @@ static const sn76477_interface csg_intf = //------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) +// Z80PIO //------------------------------------------------- READ8_MEMBER( abc80_state::pio_pa_r ) @@ -387,20 +387,8 @@ WRITE8_MEMBER( abc80_state::pio_pb_w ) } }; -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(abc80_state, pio_pa_r), /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(abc80_state, pio_pb_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(abc80_state, pio_pb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - - //------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) +// Z80 Daisy Chain //------------------------------------------------- static const z80_daisy_config abc80_daisy_chain[] = @@ -553,8 +541,14 @@ static MACHINE_CONFIG_START( abc80, abc80_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) // devices - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_11_9808MHz/2/2, pio_intf) + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_11_9808MHz/2/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(abc80_state, pio_pa_r)) + MCFG_Z80PIO_IN_PB_CB(READ8(abc80_state, pio_pb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(abc80_state, pio_pb_w)) + MCFG_CASSETTE_ADD("cassette", abc80_cassette_interface) + MCFG_DEVICE_ADD(ABC80_KEYBOARD_TAG, ABC80_KEYBOARD, 0) MCFG_ABC80_KEYBOARD_KEYDOWN_CALLBACK(WRITELINE(abc80_state, keydown_w)) MCFG_ABCBUS_SLOT_ADD(ABCBUS_TAG, abcbus_cards, "slow") diff --git a/src/mess/drivers/ac1.c b/src/mess/drivers/ac1.c index 9aa91ceff6d..a2f140d3d09 100644 --- a/src/mess/drivers/ac1.c +++ b/src/mess/drivers/ac1.c @@ -126,7 +126,11 @@ static MACHINE_CONFIG_START( ac1, ac1_state ) MCFG_CPU_PROGRAM_MAP(ac1_mem) MCFG_CPU_IO_MAP(ac1_io) - MCFG_Z80PIO_ADD( "z80pio", XTAL_8MHz / 4, ac1_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_8MHz / 4) + MCFG_Z80PIO_IN_PA_CB(READ8(ac1_state, ac1_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(ac1_state, ac1_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(ac1_state, ac1_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(ac1_state, ac1_port_b_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -141,7 +145,6 @@ static MACHINE_CONFIG_START( ac1, ac1_state ) MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") - MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) diff --git a/src/mess/drivers/ace.c b/src/mess/drivers/ace.c index 0a5e13042b9..d0647578e2d 100644 --- a/src/mess/drivers/ace.c +++ b/src/mess/drivers/ace.c @@ -607,7 +607,7 @@ WRITE8_MEMBER(ace_state::ald_w) } //------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) +// Z80PIO //------------------------------------------------- READ8_MEMBER( ace_state::pio_pa_r ) @@ -651,19 +651,6 @@ WRITE8_MEMBER( ace_state::pio_pa_w ) m_centronics->write_strobe(!BIT(data, 6)); }; -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_DRIVER_MEMBER(ace_state, pio_pa_r), - DEVCB_DRIVER_MEMBER(ace_state, pio_pa_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL -}; - - - //************************************************************************** // MACHINE INITIALIZATION //************************************************************************** @@ -745,9 +732,13 @@ static MACHINE_CONFIG_START( ace, ace_state ) 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") + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_6_5MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(ace_state, pio_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(ace_state, pio_pa_w)) + MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) // internal ram diff --git a/src/mess/drivers/altos5.c b/src/mess/drivers/altos5.c index cbb9b3af557..d32132d260b 100644 --- a/src/mess/drivers/altos5.c +++ b/src/mess/drivers/altos5.c @@ -277,18 +277,6 @@ WRITE_LINE_MEMBER( altos5_state::ctc_z1_w ) m_sio->txca_w(state); } -// system functions -static Z80PIO_INTERFACE( pio0_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_DRIVER_MEMBER(altos5_state, port08_r), /* read port A */ - DEVCB_DRIVER_MEMBER(altos5_state, port08_w), /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(altos5_state, port09_r), /* read port B */ - DEVCB_DRIVER_MEMBER(altos5_state, port09_w), /* write port B */ - DEVCB_NULL /* portB ready active callback */ -}; - /* d0: L = a HD is present d1: L = a 2nd hard drive is present @@ -349,18 +337,6 @@ WRITE8_MEMBER( altos5_state::port09_w ) setup_banks(2); } -// parallel port -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_NULL, /* read port A */ - DEVCB_NULL, /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* read port B */ - DEVCB_NULL, /* write port B */ - DEVCB_NULL /* portB ready active callback */ -}; - // serial printer and console#3 static Z80DART_INTERFACE( dart_intf ) { @@ -472,8 +448,17 @@ static MACHINE_CONFIG_START( altos5, altos5_state ) /* Devices */ MCFG_Z80DMA_ADD( "z80dma", XTAL_8MHz / 2, dma_intf) - MCFG_Z80PIO_ADD( "z80pio_0", XTAL_8MHz / 2, pio0_intf ) - MCFG_Z80PIO_ADD( "z80pio_1", XTAL_8MHz / 2, pio1_intf ) + + MCFG_DEVICE_ADD("z80pio_0", Z80PIO, XTAL_8MHz / 2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(altos5_state, port08_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(altos5_state, port08_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(altos5_state, port09_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(altos5_state, port09_w)) + + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL_8MHz / 2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80DART_ADD("z80dart", XTAL_8MHz / 2, dart_intf ) MCFG_Z80SIO0_ADD("z80sio", XTAL_8MHz / 2, sio_intf ) diff --git a/src/mess/drivers/attache.c b/src/mess/drivers/attache.c index 104ccf9588a..7888b1efed5 100644 --- a/src/mess/drivers/attache.c +++ b/src/mess/drivers/attache.c @@ -871,17 +871,6 @@ static const ay8910_interface ay8912_interface = DEVCB_NULL /* portB write */ }; -static const z80pio_interface pio_interface = -{ - DEVCB_NULL,//DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_DRIVER_MEMBER(attache_state,pio_portA_r), - DEVCB_DRIVER_MEMBER(attache_state,pio_portA_w), - DEVCB_NULL, // out_ardy_cb - DEVCB_DRIVER_MEMBER(attache_state,pio_portB_r), - DEVCB_DRIVER_MEMBER(attache_state,pio_portB_w), - DEVCB_NULL // out_brdy_cb -}; - static Z80SIO_INTERFACE( sio_interface ) { 0, 0, 0, 0, @@ -1008,7 +997,12 @@ static MACHINE_CONFIG_START( attache, attache_state ) MCFG_MSM5832_ADD("rtc",XTAL_32_768kHz) - MCFG_Z80PIO_ADD("pio",XTAL_8MHz / 26, pio_interface) + MCFG_DEVICE_ADD("pio", Z80PIO, XTAL_8MHz/26) + MCFG_Z80PIO_IN_PA_CB(READ8(attache_state, pio_portA_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(attache_state, pio_portA_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(attache_state, pio_portB_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(attache_state, pio_portB_w)) + MCFG_Z80SIO0_ADD("sio",XTAL_8MHz / 26, sio_interface) MCFG_DEVICE_ADD("ctc", Z80CTC, XTAL_8MHz / 4) diff --git a/src/mess/drivers/babbage.c b/src/mess/drivers/babbage.c index c43229977d5..bd5531c7554 100644 --- a/src/mess/drivers/babbage.c +++ b/src/mess/drivers/babbage.c @@ -165,17 +165,6 @@ WRITE8_MEMBER( babbage_state::pio1_b_w ) } } -static Z80PIO_INTERFACE( babbage_z80pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* int callback */ - DEVCB_NULL, /* port a read */ - DEVCB_NULL, /* port a write */ - DEVCB_NULL, /* ready a */ - DEVCB_NULL, /* port b read */ - DEVCB_DRIVER_MEMBER(babbage_state, pio1_b_w), /* port b write */ - DEVCB_NULL /* ready b */ -}; - READ8_MEMBER( babbage_state::pio2_a_r ) { m_maincpu->set_input_line(0, CLEAR_LINE); // release interrupt @@ -196,17 +185,6 @@ WRITE8_MEMBER( babbage_state::pio2_b_w ) output_set_digit_value(data, m_segment); } -static Z80PIO_INTERFACE( babbage_z80pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* int callback */ - DEVCB_DRIVER_MEMBER(babbage_state, pio2_a_r), /* port a read */ - DEVCB_NULL, /* port a write */ - DEVCB_NULL, /* ready a */ - DEVCB_NULL, /* port b read */ - DEVCB_DRIVER_MEMBER(babbage_state, pio2_b_w), /* port b write */ - DEVCB_NULL /* ready b */ -}; - static const z80_daisy_config babbage_daisy_chain[] = {// need to check the order { "z80pio_1" }, @@ -271,8 +249,14 @@ static MACHINE_CONFIG_START( babbage, babbage_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(babbage_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(babbage_state, ctc_z2_w)) - MCFG_Z80PIO_ADD( "z80pio_1", MAIN_CLOCK, babbage_z80pio1_intf ) - MCFG_Z80PIO_ADD( "z80pio_2", MAIN_CLOCK, babbage_z80pio2_intf ) + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, MAIN_CLOCK) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(babbage_state, pio1_b_w)) + + MCFG_DEVICE_ADD("z80pio_2", Z80PIO, MAIN_CLOCK) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(babbage_state, pio2_a_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(babbage_state, pio2_b_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard_timer", babbage_state, keyboard_callback, attotime::from_hz(30)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/bbcbc.c b/src/mess/drivers/bbcbc.c index 6847d679eee..1c0f65a9089 100644 --- a/src/mess/drivers/bbcbc.c +++ b/src/mess/drivers/bbcbc.c @@ -108,18 +108,6 @@ WRITE_LINE_MEMBER(bbcbc_state::tms_interrupt) m_maincpu->set_input_line(0, state ? ASSERT_LINE : CLEAR_LINE); } -/* TODO */ -static Z80PIO_INTERFACE( bbcbc_z80pio_intf ) -{ - DEVCB_NULL, /* int callback */ - DEVCB_NULL, /* port a read */ - DEVCB_NULL, /* port a write */ - DEVCB_NULL, /* ready a */ - DEVCB_NULL, /* port b read */ - DEVCB_NULL, /* port b write */ - DEVCB_NULL /* ready b */ -}; - static const z80_daisy_config bbcbc_daisy_chain[] = { { "z80pio" }, @@ -166,8 +154,7 @@ static MACHINE_CONFIG_START( bbcbc, bbcbc_state ) MCFG_CPU_IO_MAP( bbcbc_io) MCFG_CPU_CONFIG(bbcbc_daisy_chain) - - MCFG_Z80PIO_ADD( "z80pio", MAIN_CLOCK / 8, bbcbc_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, MAIN_CLOCK/8) MCFG_DEVICE_ADD( "tms9129", TMS9129, XTAL_10_738635MHz / 2 ) MCFG_TMS9928A_VRAM_SIZE(0x4000) diff --git a/src/mess/drivers/binbug.c b/src/mess/drivers/binbug.c index dd17de521fd..11aecf18053 100644 --- a/src/mess/drivers/binbug.c +++ b/src/mess/drivers/binbug.c @@ -509,17 +509,6 @@ WRITE8_MEMBER( dg680_state::port08_w ) m_protection[breg] = data; } -static Z80PIO_INTERFACE( z80pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), //IRQ - DEVCB_DRIVER_MEMBER(dg680_state, porta_r), // in port A - DEVCB_NULL, // out port A - DEVCB_NULL, // ready line port A - this activates to ask for kbd data but not known if actually used - DEVCB_DRIVER_MEMBER(dg680_state, portb_r), // in port B - DEVCB_DRIVER_MEMBER(dg680_state, portb_w), // out port B - DEVCB_NULL -}; - TIMER_DEVICE_CALLBACK_MEMBER(dg680_state::time_tick) { // ch0 is for the clock @@ -571,7 +560,13 @@ static MACHINE_CONFIG_START( dg680, dg680_state ) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg1)) - MCFG_Z80PIO_ADD( "z80pio", XTAL_8MHz / 4, z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_8MHz / 4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(dg680_state, porta_r)) + // OUT_ARDY - this activates to ask for kbd data but not known if actually used + MCFG_Z80PIO_IN_PB_CB(READ8(dg680_state, portb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(dg680_state, portb_w)) + MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc0", dg680_state, time_tick, attotime::from_hz(200)) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc3", dg680_state, uart_tick, attotime::from_hz(4800)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/bullet.c b/src/mess/drivers/bullet.c index 144e8b0d723..6af53fd7121 100644 --- a/src/mess/drivers/bullet.c +++ b/src/mess/drivers/bullet.c @@ -899,7 +899,7 @@ static Z80DMA_INTERFACE( bulletf_dma_intf ) //------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) +// Z80PIO //------------------------------------------------- DECLARE_WRITE_LINE_MEMBER( bullet_state::write_centronics_busy ) @@ -950,17 +950,6 @@ READ8_MEMBER( bullet_state::pio_pb_r ) return data; } -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(bullet_state, pio_pb_r), - DEVCB_NULL, - DEVCB_NULL -}; - WRITE8_MEMBER( bulletf_state::pio_pa_w ) { @@ -989,18 +978,6 @@ WRITE_LINE_MEMBER( bulletf_state::cstrb_w ) m_centronics->write_strobe(!state); } -static Z80PIO_INTERFACE( bulletf_pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_DEVICE_MEMBER("scsi_ctrl_in", input_buffer_device, read), - DEVCB_DRIVER_MEMBER(bulletf_state, pio_pa_w), - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(bulletf_state, cstrb_w) -}; - - //------------------------------------------------- // wd17xx_interface fdc_intf //------------------------------------------------- @@ -1192,7 +1169,12 @@ static MACHINE_CONFIG_START( bullet, bullet_state ) MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_16MHz/4, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_16MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_IN_PB_CB(READ8(bullet_state, pio_pb_r)) + MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/16) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(Z80DART_TAG, z80dart_device, dcda_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bullet_state, fdc_drq_w)) @@ -1251,7 +1233,14 @@ static MACHINE_CONFIG_START( bulletf, bulletf_state ) MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_16MHz/4, dart_intf) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_16MHz/4, dma_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_16MHz/4, bulletf_pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_16MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(DEVREAD8("scsi_ctrl_in", input_buffer_device, read)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(bulletf_state, pio_pa_w)) + MCFG_Z80PIO_OUT_ARDY_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(bulletf_state, cstrb_w)) + MCFG_MB8877x_ADD(MB8877_TAG, XTAL_16MHz/16) MCFG_WD_FDC_INTRQ_CALLBACK(DEVWRITELINE(Z80DART_TAG, z80dart_device, rib_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(bullet_state, fdc_drq_w)) diff --git a/src/mess/drivers/c80.c b/src/mess/drivers/c80.c index 4489c0abbfe..56f231105ed 100644 --- a/src/mess/drivers/c80.c +++ b/src/mess/drivers/c80.c @@ -224,28 +224,6 @@ WRITE_LINE_MEMBER( c80_state::pio1_brdy_w ) } } -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(c80_state, pio1_pa_r), /* port A read callback */ - DEVCB_DRIVER_MEMBER(c80_state, pio1_pa_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_DRIVER_MEMBER(c80_state, pio1_pb_w), /* port B write callback */ - DEVCB_DRIVER_LINE_MEMBER(c80_state, pio1_brdy_w) /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /* Z80 Daisy Chain */ static const z80_daisy_config c80_daisy_chain[] = @@ -288,8 +266,16 @@ static MACHINE_CONFIG_START( c80, c80_state ) MCFG_DEFAULT_LAYOUT( layout_c80 ) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO1_TAG, 2500000, pio1_intf) - MCFG_Z80PIO_ADD(Z80PIO2_TAG, 2500000, pio2_intf) + MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(c80_state, pio1_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(c80_state, pio1_pa_w)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(c80_state, pio1_pb_w)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(c80_state, pio1_brdy_w)) + + MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_CASSETTE_ADD("cassette", c80_cassette_interface) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") diff --git a/src/mess/drivers/chessmst.c b/src/mess/drivers/chessmst.c index 3826c175fd9..b4b7f8fe041 100644 --- a/src/mess/drivers/chessmst.c +++ b/src/mess/drivers/chessmst.c @@ -240,28 +240,6 @@ WRITE8_MEMBER( chessmst_state::pio2_port_b_w ) m_led_sel = (data & 0xff) | (m_led_sel & 0x300); } -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // callback when change interrupt status - DEVCB_NULL, // port A read callback - DEVCB_DRIVER_MEMBER(chessmst_state, pio1_port_a_w), // port A write callback - DEVCB_NULL, // portA ready active callback - DEVCB_NULL, // port B read callback - DEVCB_DRIVER_MEMBER(chessmst_state, pio1_port_b_w), // port B write callback - DEVCB_NULL // portB ready active callback -}; - -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_NULL, // callback when change interrupt status - DEVCB_DRIVER_MEMBER(chessmst_state, pio2_port_a_r), // port A read callback - DEVCB_NULL, // port A write callback - DEVCB_NULL, // portA ready active callback - DEVCB_NULL, // port B read callback - DEVCB_DRIVER_MEMBER(chessmst_state, pio2_port_b_w), // port B write callback - DEVCB_NULL // portB ready active callback -}; - static MACHINE_CONFIG_START( chessmst, chessmst_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) @@ -276,9 +254,15 @@ static MACHINE_CONFIG_START( chessmst, chessmst_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - /* Devices */ - MCFG_Z80PIO_ADD("z80pio1", XTAL_4MHz, pio1_intf) - MCFG_Z80PIO_ADD("z80pio2", XTAL_4MHz, pio2_intf) + /* devices */ + MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(chessmst_state, pio1_port_a_w)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(chessmst_state, pio1_port_b_w)) + + MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(chessmst_state, pio2_port_a_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(chessmst_state, pio2_port_b_w)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/czk80.c b/src/mess/drivers/czk80.c index 6f2f9903e43..dc981e5a6c9 100644 --- a/src/mess/drivers/czk80.c +++ b/src/mess/drivers/czk80.c @@ -174,17 +174,6 @@ static Z80DART_INTERFACE( dart_intf ) DEVCB_NULL }; -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // IRQ - DEVCB_NULL, // port A read - DEVCB_NULL, // port A write - DEVCB_NULL, - DEVCB_NULL, // port B read - DEVCB_NULL, // port B write - DEVCB_NULL -}; - /* after the first 4 bytes have been read from ROM, switch the ram back in */ TIMER_CALLBACK_MEMBER( czk80_state::czk80_reset) { @@ -242,7 +231,9 @@ static MACHINE_CONFIG_START( czk80, czk80_state ) MCFG_Z80CTC_ZC2_CB(WRITELINE(czk80_state, ctc_z2_w)) MCFG_Z80DART_ADD("z80dart", XTAL_16MHz / 4, dart_intf) - MCFG_Z80PIO_ADD( "z80pio", XTAL_16MHz / 4, pio_intf) + + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_16MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MACHINE_CONFIG_END diff --git a/src/mess/drivers/einstein.c b/src/mess/drivers/einstein.c index ddc91a85993..670c5894ab7 100644 --- a/src/mess/drivers/einstein.c +++ b/src/mess/drivers/einstein.c @@ -666,17 +666,6 @@ INPUT_PORTS_END MACHINE DRIVERS ***************************************************************************/ -static Z80PIO_INTERFACE( einstein_pio_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("centronics", centronics_device, write_strobe), - DEVCB_NULL -}; - static const ay8910_interface einstein_ay_interface = { AY8910_LEGACY_OUTPUT, @@ -737,7 +726,9 @@ static MACHINE_CONFIG_START( einstein, einstein_state ) driver. So we update at 50Hz and hope this is good enough. */ MCFG_TIMER_DRIVER_ADD_PERIODIC("keyboard", einstein_state, einstein_keyboard_timer_callback, attotime::from_hz(50)) - MCFG_Z80PIO_ADD(IC_I063, XTAL_X002 / 2, einstein_pio_intf) + MCFG_DEVICE_ADD(IC_I063, Z80PIO, XTAL_X002 / 2) + MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_OUT_PB_CB(DEVWRITELINE("centronics", centronics_device, write_strobe)) MCFG_DEVICE_ADD(IC_I058, Z80CTC, XTAL_X002 / 2) MCFG_Z80CTC_ZC0_CB(WRITELINE(einstein_state, einstein_serial_transmit_clock)) diff --git a/src/mess/drivers/fidelz80.c b/src/mess/drivers/fidelz80.c index 0f0ab1bb503..821ddae78f3 100644 --- a/src/mess/drivers/fidelz80.c +++ b/src/mess/drivers/fidelz80.c @@ -806,17 +806,6 @@ WRITE8_MEMBER( fidelz80_state::vsc_pio_portb_w ) m_speech->rst_w(BIT(data, 6)); } -static Z80PIO_INTERFACE( vsc_z80pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_pio_porta_r), /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_pio_portb_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(fidelz80_state, vsc_pio_portb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /****************************************************************************** I8041 MCU, for VBRC/7002 and bridgec3/7014 ******************************************************************************/ @@ -1321,7 +1310,10 @@ static MACHINE_CONFIG_START( vsc, fidelz80_state ) 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_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(fidelz80_state, vsc_pio_porta_r)) + MCFG_Z80PIO_IN_PB_CB(READ8(fidelz80_state, vsc_pio_portb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(fidelz80_state, vsc_pio_portb_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", fidelz80_state, nmi_timer, attotime::from_hz(600)) MCFG_TIMER_START_DELAY(attotime::from_hz(600)) diff --git a/src/mess/drivers/huebler.c b/src/mess/drivers/huebler.c index deb361ab7f7..f103c587d3b 100644 --- a/src/mess/drivers/huebler.c +++ b/src/mess/drivers/huebler.c @@ -251,30 +251,6 @@ WRITE_LINE_MEMBER(amu880_state::ctc_z2_w) /* cassette transmit/receive clock */ } -/* Z80-PIO Interface */ - -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /* Z80-SIO Interface */ TIMER_DEVICE_CALLBACK_MEMBER( amu880_state::tape_tick ) @@ -405,8 +381,12 @@ static MACHINE_CONFIG_START( amu880, amu880_state ) MCFG_Z80CTC_ZC1_CB(DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(amu880_state, ctc_z2_w)) - MCFG_Z80PIO_ADD(Z80PIO1_TAG, XTAL_10MHz/4, pio1_intf) - MCFG_Z80PIO_ADD(Z80PIO2_TAG, XTAL_10MHz/4, pio2_intf) + MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, XTAL_10MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, XTAL_10MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_10MHz/4, sio_intf) // U856 MCFG_CASSETTE_ADD("cassette", amu880_cassette_interface) diff --git a/src/mess/drivers/kaypro.c b/src/mess/drivers/kaypro.c index eaa6186e7a4..53fa0ee863e 100644 --- a/src/mess/drivers/kaypro.c +++ b/src/mess/drivers/kaypro.c @@ -229,8 +229,15 @@ static MACHINE_CONFIG_START( kayproii, kaypro_state ) MCFG_DEVICE_ADD("brg", COM8116, XTAL_5_0688MHz) // WD1943, SMC8116 - MCFG_Z80PIO_ADD( "z80pio_g", 2500000, kayproii_pio_g_intf ) - MCFG_Z80PIO_ADD( "z80pio_s", 2500000, kayproii_pio_s_intf ) + MCFG_DEVICE_ADD("z80pio_g", Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + + MCFG_DEVICE_ADD("z80pio_s", Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(kaypro_state, pio_system_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(kaypro_state, kayproii_pio_system_w)) + MCFG_Z80SIO_ADD( "z80sio", 4800, kaypro_sio_intf ) /* start at 300 baud */ MCFG_FD1793x_ADD("fdc", XTAL_20MHz / 20) @@ -246,7 +253,10 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( kaypro4, kayproii ) MCFG_DEVICE_REMOVE("z80pio_s") - MCFG_Z80PIO_ADD( "z80pio_s", 2500000, kaypro4_pio_s_intf ) + MCFG_DEVICE_ADD("z80pio_s", Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(kaypro_state, pio_system_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(kaypro_state, kaypro4_pio_system_w)) MACHINE_CONFIG_END static MACHINE_CONFIG_START( kaypro2x, kaypro_state ) diff --git a/src/mess/drivers/kc.c b/src/mess/drivers/kc.c index 43e04b1ac7e..d7f36013be2 100644 --- a/src/mess/drivers/kc.c +++ b/src/mess/drivers/kc.c @@ -87,17 +87,6 @@ extern SLOT_INTERFACE_START(kc85_exp) SLOT_INTERFACE_END -Z80PIO_INTERFACE( kc85_pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", 0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(kc_state, pio_porta_r), /* port A read callback */ - DEVCB_DRIVER_MEMBER(kc_state, pio_porta_w), /* port A write callback */ - DEVCB_DRIVER_LINE_MEMBER(kc_state, pio_ardy_cb), /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(kc_state, pio_portb_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(kc_state, pio_portb_w), /* port B write callback */ - DEVCB_DRIVER_LINE_MEMBER(kc_state, pio_brdy_cb) /* portB ready active callback */ -}; - static const cassette_interface kc_cassette_interface = { kc_cassette_formats, @@ -115,7 +104,14 @@ static MACHINE_CONFIG_START( kc85_3, kc_state ) MCFG_CPU_CONFIG(kc85_daisy_chain) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_Z80PIO_ADD( "z80pio", KC85_3_CLOCK, kc85_pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, KC85_3_CLOCK) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) + MCFG_Z80PIO_IN_PA_CB(READ8(kc_state, pio_porta_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(kc_state, pio_porta_w)) + MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(kc_state, pio_ardy_cb)) + MCFG_Z80PIO_IN_PB_CB(READ8(kc_state, pio_portb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(kc_state, pio_portb_w)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(kc_state, pio_brdy_cb)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, KC85_3_CLOCK) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", 0)) @@ -189,7 +185,14 @@ static MACHINE_CONFIG_START( kc85_4, kc85_4_state ) MCFG_CPU_CONFIG(kc85_daisy_chain) MCFG_QUANTUM_TIME(attotime::from_hz(60)) - MCFG_Z80PIO_ADD( "z80pio", KC85_4_CLOCK, kc85_pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, KC85_4_CLOCK) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", 0)) + MCFG_Z80PIO_IN_PA_CB(READ8(kc_state, pio_porta_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(kc_state, pio_porta_w)) + MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(kc_state, pio_ardy_cb)) + MCFG_Z80PIO_IN_PB_CB(READ8(kc_state, pio_portb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(kc_state, pio_portb_w)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(kc_state, pio_brdy_cb)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, KC85_4_CLOCK) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", 0)) diff --git a/src/mess/drivers/kramermc.c b/src/mess/drivers/kramermc.c index 4e9a8316e6a..925b03a77ad 100644 --- a/src/mess/drivers/kramermc.c +++ b/src/mess/drivers/kramermc.c @@ -110,7 +110,10 @@ static MACHINE_CONFIG_START( kramermc, kramermc_state ) MCFG_CPU_PROGRAM_MAP(kramermc_mem) MCFG_CPU_IO_MAP(kramermc_io) - MCFG_Z80PIO_ADD( "z80pio", 1500000, kramermc_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, 1500000) + MCFG_Z80PIO_IN_PA_CB(READ8(kramermc_state, kramermc_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(kramermc_state, kramermc_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(kramermc_state, kramermc_port_b_r)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mess/drivers/lc80.c b/src/mess/drivers/lc80.c index f7d60d9b49d..83764077526 100644 --- a/src/mess/drivers/lc80.c +++ b/src/mess/drivers/lc80.c @@ -220,17 +220,6 @@ WRITE8_MEMBER( lc80_state::pio1_pb_w ) update_display(); } -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_DRIVER_MEMBER(lc80_state, pio1_pa_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(lc80_state, pio1_pb_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(lc80_state, pio1_pb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - READ8_MEMBER( lc80_state::pio2_pb_r ) { /* @@ -265,17 +254,6 @@ READ8_MEMBER( lc80_state::pio2_pb_r ) return data; } -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(lc80_state, pio2_pb_r), /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - #if 0 /* Z80 Daisy Chain */ @@ -373,8 +351,15 @@ static MACHINE_CONFIG_START( lc80, lc80_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(lc80_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(lc80_state, ctc_z2_w)) - MCFG_Z80PIO_ADD(Z80PIO1_TAG, 900000, pio1_intf) - MCFG_Z80PIO_ADD(Z80PIO2_TAG, 900000, pio2_intf) + MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 900000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(lc80_state, pio1_pa_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(lc80_state, pio1_pb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(lc80_state, pio1_pb_w)) + + MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 900000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PB_CB(READ8(lc80_state, pio2_pb_r)) MCFG_CASSETTE_ADD("cassette", lc80_cassette_interface) @@ -404,8 +389,15 @@ static MACHINE_CONFIG_START( lc80_2, lc80_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(lc80_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(lc80_state, ctc_z2_w)) - MCFG_Z80PIO_ADD(Z80PIO1_TAG, 900000, pio1_intf) - MCFG_Z80PIO_ADD(Z80PIO2_TAG, 900000, pio2_intf) + MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, 900000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(lc80_state, pio1_pa_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(lc80_state, pio1_pb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(lc80_state, pio1_pb_w)) + + MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, 900000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PB_CB(READ8(lc80_state, pio2_pb_r)) MCFG_CASSETTE_ADD("cassette", lc80_cassette_interface) diff --git a/src/mess/drivers/llc.c b/src/mess/drivers/llc.c index 783f6d922bd..6396592e6d7 100644 --- a/src/mess/drivers/llc.c +++ b/src/mess/drivers/llc.c @@ -217,8 +217,14 @@ static MACHINE_CONFIG_START( llc1, llc_state ) MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") MCFG_DEFAULT_LAYOUT(layout_llc1) - MCFG_Z80PIO_ADD( "z80pio1", XTAL_3MHz, llc1_z80pio1_intf ) - MCFG_Z80PIO_ADD( "z80pio2", XTAL_3MHz, llc1_z80pio2_intf ) + MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL_3MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(llc_state, llc1_port1_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(llc_state, llc1_port1_a_w)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(llc_state, llc1_port1_b_w)) + + MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL_3MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(llc_state, llc1_port2_a_r)) + MCFG_Z80PIO_IN_PB_CB(READ8(llc_state, llc1_port2_b_r)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_3MHz) // timer 0 irq does digit display, and timer 3 irq does scan of the @@ -258,8 +264,13 @@ static MACHINE_CONFIG_START( llc2, llc_state ) MCFG_SOUND_ADD("speaker", SPEAKER_SOUND, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) - MCFG_Z80PIO_ADD( "z80pio1", XTAL_3MHz, llc2_z80pio1_intf ) - MCFG_Z80PIO_ADD( "z80pio2", XTAL_3MHz, llc2_z80pio2_intf ) + MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL_3MHz) + MCFG_Z80PIO_IN_PA_CB(DEVREAD8(K7659_KEYBOARD_TAG, k7659_keyboard_device, read)) + MCFG_Z80PIO_IN_PB_CB(READ8(llc_state, llc2_port1_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(llc_state, llc2_port1_b_w)) + + MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL_3MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(llc_state, llc2_port2_a_r)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_3MHz) diff --git a/src/mess/drivers/mbee.c b/src/mess/drivers/mbee.c index daa8cf051b9..a33b2d5fa86 100644 --- a/src/mess/drivers/mbee.c +++ b/src/mess/drivers/mbee.c @@ -739,7 +739,12 @@ static MACHINE_CONFIG_START( mbee, mbee_state ) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee ) - MCFG_Z80PIO_ADD( "z80pio", XTAL_12MHz / 6, mbee_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_12MHz / 6) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mbee_state, pio_port_a_w)) + MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(mbee_state, pio_ardy)) + MCFG_Z80PIO_IN_PB_CB(READ8(mbee_state, pio_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(mbee_state, pio_port_b_w)) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -783,7 +788,12 @@ static MACHINE_CONFIG_START( mbeeic, mbee_state ) MCFG_MACHINE_RESET_OVERRIDE(mbee_state, mbee ) - MCFG_Z80PIO_ADD( "z80pio", 3375000, mbee_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, 3375000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mbee_state, pio_port_a_w)) + MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(mbee_state, pio_ardy)) + MCFG_Z80PIO_IN_PB_CB(READ8(mbee_state, pio_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(mbee_state, pio_port_b_w)) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) diff --git a/src/mess/drivers/mc80.c b/src/mess/drivers/mc80.c index 933beb19e96..d0f85742e4f 100644 --- a/src/mess/drivers/mc80.c +++ b/src/mess/drivers/mc80.c @@ -178,8 +178,12 @@ static MACHINE_CONFIG_START( mc8020, mc80_state ) MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") - /* Devices */ - MCFG_Z80PIO_ADD( "z80pio", XTAL_2_4576MHz, mc8020_z80pio_intf ) + /* devices */ + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_2_4576MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(mc80_state, mc80_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mc80_state, mc80_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(mc80_state, mc80_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(mc80_state, mc80_port_b_w)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_2_4576MHz / 100) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) @@ -213,13 +217,23 @@ static MACHINE_CONFIG_START( mc8030, mc80_state ) MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") /* Devices */ - MCFG_Z80PIO_ADD( "zve_pio", XTAL_2_4576MHz, mc8030_zve_z80pio_intf ) + MCFG_DEVICE_ADD("zve_pio", Z80PIO, XTAL_2_4576MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(mc80_state, zve_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mc80_state, zve_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(mc80_state, zve_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(mc80_state, zve_port_b_w)) MCFG_DEVICE_ADD("zve_ctc", Z80CTC, XTAL_2_4576MHz) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) // ZC0, ZC1, ZC2 for user - MCFG_Z80PIO_ADD( "asp_pio", XTAL_2_4576MHz, mc8030_asp_z80pio_intf ) + MCFG_DEVICE_ADD("asp_pio", Z80PIO, XTAL_2_4576MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(mc80_state, asp_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mc80_state, asp_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(mc80_state, asp_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(mc80_state, asp_port_b_w)) MCFG_DEVICE_ADD("asp_ctc", Z80CTC, XTAL_2_4576MHz) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/mpf1.c b/src/mess/drivers/mpf1.c index 3240c1d45a0..8c5ad5d33a2 100644 --- a/src/mess/drivers/mpf1.c +++ b/src/mess/drivers/mpf1.c @@ -264,19 +264,6 @@ WRITE8_MEMBER( mpf1_state::ppi_pc_w ) m_cassette->output( BIT(data, 7)); } -/* Z80PIO Interface */ - -static Z80PIO_INTERFACE( mpf1_pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 Daisy Chain */ static const z80_daisy_config mpf1_daisy_chain[] = @@ -333,7 +320,8 @@ static MACHINE_CONFIG_START( mpf1, mpf1_state ) MCFG_CPU_CONFIG(mpf1_daisy_chain) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_3_579545MHz/2, mpf1_pio_intf) + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_3_579545MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_3_579545MHz/2) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -364,7 +352,8 @@ static MACHINE_CONFIG_START( mpf1b, mpf1_state ) MCFG_CPU_CONFIG(mpf1_daisy_chain) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_3_579545MHz/2, mpf1_pio_intf) + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_3_579545MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_3_579545MHz/2) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -401,7 +390,8 @@ static MACHINE_CONFIG_START( mpf1p, mpf1_state ) MCFG_DEFAULT_LAYOUT(layout_mpf1p) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_TAG, 2500000, mpf1_pio_intf) + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, 2500000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, 2500000) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/mz2000.c b/src/mess/drivers/mz2000.c index d76e399131c..24a44e9f05b 100644 --- a/src/mess/drivers/mz2000.c +++ b/src/mess/drivers/mz2000.c @@ -776,17 +776,6 @@ READ8_MEMBER(mz2000_state::mz2000_pio1_porta_r) return m_porta_latch; } -static Z80PIO_INTERFACE( mz2000_pio1_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_porta_r ), - DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_porta_w ), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mz2000_state, mz2000_pio1_portb_r ), - DEVCB_NULL, - DEVCB_NULL -}; - static const wd17xx_interface mz2000_mb8877a_interface = { DEVCB_NULL, @@ -842,7 +831,10 @@ static MACHINE_CONFIG_START( mz2000, mz2000_state ) MCFG_I8255_IN_PORTC_CB(READ8(mz2000_state, mz2000_portc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(mz2000_state, mz2000_portc_w)) - MCFG_Z80PIO_ADD( "z80pio_1", MASTER_CLOCK, mz2000_pio1_intf ) + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, MASTER_CLOCK) + MCFG_Z80PIO_IN_PA_CB(READ8(mz2000_state, mz2000_pio1_porta_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz2000_state, mz2000_pio1_porta_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(mz2000_state, mz2000_pio1_portb_r)) /* TODO: clocks aren't known */ MCFG_DEVICE_ADD("pit", PIT8253, 0) diff --git a/src/mess/drivers/mz2500.c b/src/mess/drivers/mz2500.c index 368274baf13..cd7800f92ab 100644 --- a/src/mess/drivers/mz2500.c +++ b/src/mess/drivers/mz2500.c @@ -1985,18 +1985,6 @@ READ8_MEMBER(mz2500_state::mz2500_pio1_portb_r) } #endif -static Z80PIO_INTERFACE( mz2500_pio1_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_r ), - DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_w ), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER( mz2500_state,mz2500_pio1_porta_r ), - DEVCB_NULL, - DEVCB_NULL -}; - - READ8_MEMBER(mz2500_state::opn_porta_r) { return m_ym_porta; @@ -2119,7 +2107,11 @@ static MACHINE_CONFIG_START( mz2500, mz2500_state ) MCFG_I8255_IN_PORTC_CB(READ8(mz2500_state, mz2500_portc_r)) MCFG_I8255_OUT_PORTC_CB(WRITE8(mz2500_state, mz2500_portc_w)) - MCFG_Z80PIO_ADD( "z80pio_1", 6000000, mz2500_pio1_intf ) + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, 6000000) + MCFG_Z80PIO_IN_PA_CB(READ8(mz2500_state, mz2500_pio1_porta_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz2500_state, mz2500_pio1_porta_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(mz2500_state, mz2500_pio1_porta_r)) + MCFG_Z80SIO0_ADD( "z80sio", 6000000, mz2500_sio_intf ) MCFG_DEVICE_ADD(RP5C15_TAG, RP5C15, XTAL_32_768kHz) diff --git a/src/mess/drivers/mz700.c b/src/mess/drivers/mz700.c index 07f250348b2..4e9bf52ddbe 100644 --- a/src/mess/drivers/mz700.c +++ b/src/mess/drivers/mz700.c @@ -406,7 +406,11 @@ static MACHINE_CONFIG_DERIVED( mz800, mz700 ) MCFG_DEVICE_MODIFY("pit8253") MCFG_PIT8253_CLK0(XTAL_17_73447MHz/16) - MCFG_Z80PIO_ADD("z80pio", XTAL_17_73447MHz/5, mz800_z80pio_config) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_17_73447MHz/5) + MCFG_Z80PIO_OUT_INT_CB(WRITELINE(mz_state, mz800_z80pio_irq)) + MCFG_Z80PIO_IN_PA_CB(READ8(mz_state, mz800_z80pio_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(mz_state, mz800_z80pio_port_a_w)) + MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) MCFG_CENTRONICS_ADD("centronics", centronics_printers, "printer") diff --git a/src/mess/drivers/nanos.c b/src/mess/drivers/nanos.c index 62821797a93..7df7ff526e4 100644 --- a/src/mess/drivers/nanos.c +++ b/src/mess/drivers/nanos.c @@ -120,30 +120,6 @@ WRITE_LINE_MEMBER( nanos_state::ctc_z2_w ) { } -/* Z80-PIO Interface */ - -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /* Z80-SIO Interface */ WRITE_LINE_MEMBER(nanos_state::z80daisy_interrupt) @@ -510,17 +486,6 @@ void nanos_state::machine_reset() machine().device<floppy_connector>("upd765:0")->get_device()->mon_w(false); } -static Z80PIO_INTERFACE( nanos_z80pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_a_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_b_r), - DEVCB_DRIVER_MEMBER(nanos_state,nanos_port_b_w), - DEVCB_NULL -}; - FLOPPY_FORMATS_MEMBER( nanos_state::floppy_formats ) FLOPPY_NANOS_FORMAT FLOPPY_FORMATS_END @@ -579,11 +544,20 @@ static MACHINE_CONFIG_START( nanos, nanos_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(nanos_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(WRITELINE(nanos_state, ctc_z2_w)) - MCFG_Z80PIO_ADD( "z80pio_0", XTAL_4MHz, pio1_intf) - MCFG_Z80PIO_ADD( "z80pio_1", XTAL_4MHz, pio2_intf) + MCFG_DEVICE_ADD("z80pio_0", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80SIO0_ADD( "z80sio_0", XTAL_4MHz, sio1_intf) MCFG_Z80SIO0_ADD( "z80sio_1", XTAL_4MHz, sio2_intf) - MCFG_Z80PIO_ADD( "z80pio", XTAL_4MHz, nanos_z80pio_intf ) + + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(nanos_state, nanos_port_a_r)) + MCFG_Z80PIO_IN_PB_CB(READ8(nanos_state, nanos_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(nanos_state, nanos_port_b_w)) + /* UPD765 */ MCFG_UPD765A_ADD("upd765", false, true) MCFG_FLOPPY_DRIVE_ADD("upd765:0", nanos_floppies, "525hd", nanos_state::floppy_formats) diff --git a/src/mess/drivers/nascom1.c b/src/mess/drivers/nascom1.c index b616eaa87f8..bca108ecd21 100644 --- a/src/mess/drivers/nascom1.c +++ b/src/mess/drivers/nascom1.c @@ -258,25 +258,12 @@ INPUT_PORTS_END * *************************************/ -static Z80PIO_INTERFACE( nascom1_z80pio_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - static MACHINE_CONFIG_START( nascom1, nascom1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz/8) MCFG_CPU_PROGRAM_MAP(nascom1_mem) MCFG_CPU_IO_MAP(nascom1_io) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -295,8 +282,7 @@ static MACHINE_CONFIG_START( nascom1, nascom1_state ) MCFG_AY51013_READ_SI_CB(READ8(nascom1_state, nascom1_hd6402_si)) MCFG_AY51013_WRITE_SO_CB(WRITE8(nascom1_state, nascom1_hd6402_so)) - - MCFG_Z80PIO_ADD( "z80pio", XTAL_16MHz/8, nascom1_z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_16MHz/8) /* devices */ MCFG_SNAPSHOT_ADD("snapshot", nascom1_state, nascom1, "nas", 0.5) diff --git a/src/mess/drivers/onyx.c b/src/mess/drivers/onyx.c index 567b1890648..794bf317aa8 100644 --- a/src/mess/drivers/onyx.c +++ b/src/mess/drivers/onyx.c @@ -115,45 +115,6 @@ static Z80DMA_INTERFACE( p8k_dma_intf ) DEVCB_DRIVER_MEMBER(onyx_state, io_write_byte) }; -/* Z80 PIO 0 */ - -static Z80PIO_INTERFACE( p8k_pio_0_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 1 */ - -static Z80PIO_INTERFACE( p8k_pio_1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 2 */ - -static Z80PIO_INTERFACE( p8k_pio_2_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_INPUT_PORT("DSW"), /* port a read */ - DEVCB_NULL, /* port a write */ - DEVCB_NULL, /* ready a */ - DEVCB_NULL, /* port b read */ - DEVCB_NULL, /* port b write */ - DEVCB_NULL /* ready b */ -}; - /* Z80 SIO 0 */ WRITE16_MEMBER( onyx_state::pk8_sio_0_serial_transmit ) @@ -242,45 +203,6 @@ ADDRESS_MAP_END #if 0 -/* Z80 PIO 0 */ - -static const z80pio_interface p8k_16_pio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 1 */ - -static const z80pio_interface p8k_16_pio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 2 */ - -static const z80pio_interface p8k_16_pio_2_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(onyx_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 SIO 0 */ WRITE16_MEMBER( onyx_state::pk8_16_sio_0_serial_transmit ) @@ -356,9 +278,9 @@ static MACHINE_CONFIG_START( c8002, onyx_state ) //MCFG_DEVICE_ADD("z80ctc_1", Z80CTC, XTAL_4MHz) //MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_16_sio_0_intf) //MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_16_sio_1_intf) - //MCFG_Z80PIO_ADD("z80pio_0", XTAL_4MHz, p8k_16_pio_0_intf ) - //MCFG_Z80PIO_ADD("z80pio_1", XTAL_4MHz, p8k_16_pio_1_intf ) - //MCFG_Z80PIO_ADD("z80pio_2", XTAL_4MHz, p8k_16_pio_2_intf ) + //MCFG_DEVICE_ADD("z80pio_0", Z80CTC, XTAL_4MHz) + //MCFG_DEVICE_ADD("z80pio_1", Z80CTC, XTAL_4MHz) + //MCFG_DEVICE_ADD("z80pio_2", Z80CTC, XTAL_4MHz) /* video hardware */ MCFG_DEVICE_ADD(TERMINAL_TAG, GENERIC_TERMINAL, 0) diff --git a/src/mess/drivers/p8k.c b/src/mess/drivers/p8k.c index 0b707f661e9..6cd2f900d58 100644 --- a/src/mess/drivers/p8k.c +++ b/src/mess/drivers/p8k.c @@ -276,45 +276,6 @@ static Z80DMA_INTERFACE( p8k_dma_intf ) DEVCB_DRIVER_MEMBER(p8k_state, io_write_byte) }; -/* Z80 PIO 0 */ - -static Z80PIO_INTERFACE( p8k_pio_0_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 1 */ - -static Z80PIO_INTERFACE( p8k_pio_1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 2 */ - -static Z80PIO_INTERFACE( p8k_pio_2_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_INPUT_PORT("DSW"), /* port a read */ - DEVCB_NULL, /* port a write */ - DEVCB_NULL, /* ready a */ - DEVCB_NULL, /* port b read */ - DEVCB_NULL, /* port b write */ - DEVCB_NULL /* ready b */ -}; - /* Z80 SIO 0 */ WRITE16_MEMBER( p8k_state::pk8_sio_0_serial_transmit ) @@ -609,45 +570,6 @@ WRITE_LINE_MEMBER( p8k_state::p8k_16_daisy_interrupt ) // this must be studied a little bit more :-) } -/* Z80 PIO 0 */ - -static const z80pio_interface p8k_16_pio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 1 */ - -static const z80pio_interface p8k_16_pio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -/* Z80 PIO 2 */ - -static const z80pio_interface p8k_16_pio_2_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_16_daisy_interrupt), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* Z80 SIO 0 */ WRITE16_MEMBER( p8k_state::pk8_16_sio_0_serial_transmit ) @@ -750,9 +672,17 @@ static MACHINE_CONFIG_START( p8k, p8k_state ) MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_sio_0_intf) /* 9.6kBaud default */ MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_sio_1_intf) /* 9.6kBaud default */ - MCFG_Z80PIO_ADD("z80pio_0", 1229000, p8k_pio_0_intf) - MCFG_Z80PIO_ADD("z80pio_1", 1229000, p8k_pio_1_intf) - MCFG_Z80PIO_ADD("z80pio_2", 1229000, p8k_pio_2_intf) + + MCFG_DEVICE_ADD("z80pio_0", Z80PIO, 1229000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, 1229000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD("z80pio_2", Z80PIO, 1229000) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(IOPORT("DSW")) + MCFG_I8272A_ADD("i8272", true) MCFG_UPD765_DRQ_CALLBACK(DEVWRITELINE("z80dma", z80dma_device, rdy_w)) MCFG_FLOPPY_DRIVE_ADD("i8272:0", p8k_floppies, "525hd", floppy_image_device::default_floppy_formats) @@ -787,9 +717,15 @@ static MACHINE_CONFIG_START( p8k_16, p8k_state ) MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_16_sio_0_intf) MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_16_sio_1_intf) - MCFG_Z80PIO_ADD("z80pio_0", XTAL_4MHz, p8k_16_pio_0_intf ) - MCFG_Z80PIO_ADD("z80pio_1", XTAL_4MHz, p8k_16_pio_1_intf ) - MCFG_Z80PIO_ADD("z80pio_2", XTAL_4MHz, p8k_16_pio_2_intf ) + + MCFG_DEVICE_ADD("z80pio_0", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(WRITELINE(p8k_state, p8k_16_daisy_interrupt)) + + MCFG_DEVICE_ADD("z80pio_1", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(WRITELINE(p8k_state, p8k_16_daisy_interrupt)) + + MCFG_DEVICE_ADD("z80pio_2", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(WRITELINE(p8k_state, p8k_16_daisy_interrupt)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/pasopia.c b/src/mess/drivers/pasopia.c index 89ad5114cde..b9b7ca2e94a 100644 --- a/src/mess/drivers/pasopia.c +++ b/src/mess/drivers/pasopia.c @@ -253,17 +253,6 @@ WRITE8_MEMBER( pasopia_state::mux_w ) m_mux_data = data; } -static Z80PIO_INTERFACE( z80pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), //IRQ - DEVCB_DRIVER_MEMBER(pasopia_state, mux_r), // in port A - DEVCB_DRIVER_MEMBER(pasopia_state, mux_w), // out port A - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pasopia_state, keyb_r), // in port B - DEVCB_NULL, // out port B - DEVCB_NULL -}; - static MC6845_INTERFACE( mc6845_intf ) { false, /* show border area */ @@ -357,7 +346,11 @@ static MACHINE_CONFIG_START( pasopia, pasopia_state ) MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg2)) MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_Z80PIO_ADD( "z80pio", XTAL_4MHz, z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(pasopia_state, mux_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(pasopia_state, mux_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(pasopia_state, keyb_r)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/pasopia7.c b/src/mess/drivers/pasopia7.c index 1b8f221a577..c2631be19d8 100644 --- a/src/mess/drivers/pasopia7.c +++ b/src/mess/drivers/pasopia7.c @@ -778,17 +778,6 @@ WRITE8_MEMBER( pasopia7_state::mux_w ) m_mux_data = data; } -static Z80PIO_INTERFACE( z80pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), //doesn't work? - DEVCB_DRIVER_MEMBER(pasopia7_state, mux_r), - DEVCB_DRIVER_MEMBER(pasopia7_state, mux_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(pasopia7_state, keyb_r), - DEVCB_NULL, - DEVCB_NULL -}; - static const z80_daisy_config p7_daisy[] = { { "z80ctc" }, @@ -967,7 +956,11 @@ static MACHINE_CONFIG_START( p7_base, pasopia7_state ) MCFG_Z80CTC_ZC1_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg2)) // beep interface MCFG_Z80CTC_ZC2_CB(DEVWRITELINE("z80ctc", z80ctc_device, trg3)) - MCFG_Z80PIO_ADD( "z80pio", XTAL_4MHz, z80pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(pasopia7_state, mux_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(pasopia7_state, mux_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(pasopia7_state, keyb_r)) MCFG_DEVICE_ADD("ppi8255_0", I8255, 0) MCFG_I8255_IN_PORTA_CB(READ8(pasopia7_state, unk_r)) diff --git a/src/mess/drivers/pcm.c b/src/mess/drivers/pcm.c index f02c6d0997e..818342d4617 100644 --- a/src/mess/drivers/pcm.c +++ b/src/mess/drivers/pcm.c @@ -231,28 +231,6 @@ static const z80_daisy_config pcm_daisy_chain[] = { NULL } }; -static Z80PIO_INTERFACE( pio_u_intf ) // all pins go to expansion socket -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_NULL, /* read port A */ - DEVCB_NULL, /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* read port B */ - DEVCB_NULL, /* write port B */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio_s_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_DEVICE_MEMBER(K7659_KEYBOARD_TAG, k7659_keyboard_device, read), /* read port A */ - DEVCB_NULL, /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(pcm_state, pcm_85_r), /* read port B */ - DEVCB_DRIVER_MEMBER(pcm_state, pcm_85_w), /* write port B */ - DEVCB_NULL /* portB ready active callback */ -}; - static Z80SIO_INTERFACE( sio_intf ) { 0, 0, 0, 0, @@ -325,8 +303,16 @@ static MACHINE_CONFIG_START( pcm, pcm_state ) /* Devices */ MCFG_K7659_KEYBOARD_ADD() MCFG_CASSETTE_ADD( "cassette", default_cassette_interface ) - MCFG_Z80PIO_ADD( "z80pio_u", XTAL_10MHz /4, pio_u_intf ) - MCFG_Z80PIO_ADD( "z80pio_s", XTAL_10MHz /4, pio_s_intf ) + + MCFG_DEVICE_ADD("z80pio_u", Z80PIO, XTAL_10MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD("z80pio_s", Z80PIO, XTAL_10MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(DEVREAD8(K7659_KEYBOARD_TAG, k7659_keyboard_device, read)) + MCFG_Z80PIO_IN_PB_CB(READ8(pcm_state, pcm_85_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(pcm_state, pcm_85_w)) + MCFG_Z80SIO0_ADD( "z80sio", 4800, sio_intf ) // clocks come from the system ctc MCFG_DEVICE_ADD("z80ctc_u", Z80CTC, XTAL_10MHz /4) diff --git a/src/mess/drivers/poly880.c b/src/mess/drivers/poly880.c index 59c51faf982..69f66424099 100644 --- a/src/mess/drivers/poly880.c +++ b/src/mess/drivers/poly880.c @@ -218,28 +218,6 @@ WRITE8_MEMBER( poly880_state::pio1_pb_w ) m_cassette->output( BIT(data, 2) ? +1.0 : -1.0); } -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_DRIVER_MEMBER(poly880_state, pio1_pa_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(poly880_state, pio1_pb_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(poly880_state, pio1_pb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio2_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - #if 0 /* Z80 Daisy Chain */ @@ -288,8 +266,14 @@ static MACHINE_CONFIG_START( poly880, poly880_state ) MCFG_Z80CTC_ZC1_CB(WRITELINE(poly880_state, ctc_z1_w)) MCFG_Z80CTC_ZC2_CB(DEVWRITELINE(Z80CTC_TAG, z80ctc_device, trg3)) - MCFG_Z80PIO_ADD(Z80PIO1_TAG, XTAL_7_3728MHz/16, pio1_intf) - MCFG_Z80PIO_ADD(Z80PIO2_TAG, XTAL_7_3728MHz/16, pio2_intf) + MCFG_DEVICE_ADD(Z80PIO1_TAG, Z80PIO, XTAL_7_3728MHz/16) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(poly880_state, pio1_pa_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(poly880_state, pio1_pb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(poly880_state, pio1_pb_w)) + + MCFG_DEVICE_ADD(Z80PIO2_TAG, Z80PIO, XTAL_7_3728MHz/16) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_CASSETTE_ADD("cassette", poly880_cassette_interface) diff --git a/src/mess/drivers/rt1715.c b/src/mess/drivers/rt1715.c index f6f7783c738..248cb5651e4 100644 --- a/src/mess/drivers/rt1715.c +++ b/src/mess/drivers/rt1715.c @@ -286,28 +286,6 @@ static Z80SIO_INTERFACE( rt1715_sio_intf ) DEVCB_NULL }; -static const z80pio_interface rt1715_pio_data_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - -static const z80pio_interface rt1715_pio_control_intf = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - /* priority unknown */ static const z80_daisy_config rt1715_daisy_chain[] = { @@ -350,8 +328,8 @@ static MACHINE_CONFIG_START( rt1715, rt1715_state ) MCFG_Z80SIO0_ADD("a29", XTAL_10MHz/4 /* ? */, rt1715_sio_intf) /* floppy */ - MCFG_Z80PIO_ADD("a71", XTAL_10MHz/4 /* ? */, rt1715_pio_data_intf) - MCFG_Z80PIO_ADD("a72", XTAL_10MHz/4 /* ? */, rt1715_pio_control_intf) + MCFG_DEVICE_ADD("a71", Z80PIO, XTAL_10MHz/4 /* ? */) + MCFG_DEVICE_ADD("a72", Z80PIO, XTAL_10MHz/4 /* ? */) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/sc1.c b/src/mess/drivers/sc1.c index 503a24b17ab..23676b9f822 100644 --- a/src/mess/drivers/sc1.c +++ b/src/mess/drivers/sc1.c @@ -168,18 +168,6 @@ static INPUT_PORTS_START( sc1 ) INPUT_PORTS_END -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_DRIVER_MEMBER(sc1_state, pio_port_a_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(sc1_state, pio_port_b_r), /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - - static MACHINE_CONFIG_START( sc1, sc1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) @@ -190,7 +178,9 @@ static MACHINE_CONFIG_START( sc1, sc1_state ) MCFG_DEFAULT_LAYOUT(layout_sc1) /* devices */ - MCFG_Z80PIO_ADD("z80pio", XTAL_4MHz, pio_intf) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(sc1_state, pio_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(sc1_state, pio_port_b_r)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mess/drivers/sc2.c b/src/mess/drivers/sc2.c index ad842b2bfc5..74d610ebea5 100644 --- a/src/mess/drivers/sc2.c +++ b/src/mess/drivers/sc2.c @@ -195,17 +195,6 @@ WRITE8_MEMBER( sc2_state::pio_port_b_w ) m_kp_matrix = data; }; -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(sc2_state, pio_port_a_r), /* port A read callback */ - DEVCB_DRIVER_MEMBER(sc2_state, pio_port_a_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(sc2_state, pio_port_b_r), /* port B read callback */ - DEVCB_DRIVER_MEMBER(sc2_state, pio_port_b_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - static MACHINE_CONFIG_START( sc2, sc2_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",Z80, XTAL_4MHz) @@ -217,7 +206,11 @@ static MACHINE_CONFIG_START( sc2, sc2_state ) MCFG_DEFAULT_LAYOUT(layout_sc2) /* devices */ - MCFG_Z80PIO_ADD("z80pio", XTAL_4MHz, pio_intf) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_4MHz) + MCFG_Z80PIO_IN_PA_CB(READ8(sc2_state, pio_port_a_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(sc2_state, pio_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(sc2_state, pio_port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(sc2_state, pio_port_b_w)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO( "mono" ) diff --git a/src/mess/drivers/super6.c b/src/mess/drivers/super6.c index fc1e814378c..535777cf6e7 100644 --- a/src/mess/drivers/super6.c +++ b/src/mess/drivers/super6.c @@ -422,23 +422,6 @@ static Z80DMA_INTERFACE( dma_intf ) DEVCB_DRIVER_MEMBER(super6_state, io_write_byte), }; - -//------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) -//------------------------------------------------- - -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - //------------------------------------------------- // COM8116_INTERFACE( brg_intf ) //------------------------------------------------- @@ -552,7 +535,10 @@ static MACHINE_CONFIG_START( super6, super6_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", super6_state, ctc_tick, attotime::from_hz(XTAL_24MHz/16)) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_24MHz/6, dma_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_24MHz/4, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_24MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_WD2793x_ADD(WD2793_TAG, 1000000) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(super6_state, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(super6_state, fdc_drq_w)) diff --git a/src/mess/drivers/super80.c b/src/mess/drivers/super80.c index d6c4fad53fe..15749d5d74a 100644 --- a/src/mess/drivers/super80.c +++ b/src/mess/drivers/super80.c @@ -732,7 +732,10 @@ static MACHINE_CONFIG_START( super80, super80_state ) MCFG_CPU_IO_MAP(super80_io) MCFG_CPU_CONFIG(super80_daisy_chain) - MCFG_Z80PIO_ADD( "z80pio", MASTER_CLOCK/6, super80_pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, MASTER_CLOCK/6) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(super80_state, pio_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(super80_state,pio_port_b_r)) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(48.8) @@ -807,7 +810,10 @@ static MACHINE_CONFIG_START( super80v, super80_state ) MCFG_CPU_IO_MAP(super80v_io) MCFG_CPU_CONFIG(super80_daisy_chain) - MCFG_Z80PIO_ADD( "z80pio", MASTER_CLOCK/6, super80_pio_intf ) + MCFG_DEVICE_ADD("z80pio", Z80PIO, MASTER_CLOCK/6) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(super80_state, pio_port_a_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(super80_state,pio_port_b_r)) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c index 3af36db8f92..21f24b0bb91 100644 --- a/src/mess/drivers/superslave.c +++ b/src/mess/drivers/superslave.c @@ -324,22 +324,6 @@ static Z80DART_INTERFACE( dart1_intf ) }; -//------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) -//------------------------------------------------- - -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - - 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,7 +389,9 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) // devices MCFG_PIC8259_ADD(AM9519_TAG, INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0), VCC, NULL) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_8MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_Z80DART_ADD(Z80DART_0_TAG, XTAL_8MHz/2, dart0_intf) diff --git a/src/mess/drivers/tiki100.c b/src/mess/drivers/tiki100.c index 7e2be4e1008..8265090ab68 100644 --- a/src/mess/drivers/tiki100.c +++ b/src/mess/drivers/tiki100.c @@ -558,17 +558,6 @@ WRITE8_MEMBER( tiki100_state::pio_pb_w ) m_cassette->output(BIT(data, 6) ? -1 : 1); } -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), - 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(tiki100_state, pio_pb_r), - DEVCB_DRIVER_MEMBER(tiki100_state, pio_pb_w), - DEVCB_NULL -}; - /* Z80-CTC Interface */ TIMER_DEVICE_CALLBACK_MEMBER(tiki100_state::ctc_tick) @@ -710,7 +699,13 @@ static MACHINE_CONFIG_START( tiki100, tiki100_state ) /* devices */ MCFG_Z80DART_ADD(Z80DART_TAG, XTAL_8MHz/4, dart_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/4, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_8MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(DEVREAD8("cent_data_in", input_buffer_device, read)) + MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_IN_PB_CB(READ8(tiki100_state, pio_pb_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(tiki100_state, pio_pb_w)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_8MHz/4) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index db921e49484..3bfec0d6a9b 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -540,7 +540,7 @@ static Z80DMA_INTERFACE( dma_intf ) //------------------------------------------------- -// Z80PIO_INTERFACE( pio_intf ) +// Z80PIO //------------------------------------------------- WRITE_LINE_MEMBER( trs80m2_state::write_centronics_busy ) @@ -624,18 +624,6 @@ WRITE_LINE_MEMBER( trs80m2_state::strobe_w ) m_centronics->write_strobe(!state); } -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), // interrupt callback - DEVCB_DRIVER_MEMBER(trs80m2_state, pio_pa_r), // port A read callback - DEVCB_DRIVER_MEMBER(trs80m2_state, pio_pa_w), // port A write callback - DEVCB_NULL, // port A ready callback - DEVCB_NULL, // port B read callback - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), // port B write callback - DEVCB_DRIVER_LINE_MEMBER(trs80m2_state, strobe_w) // port B ready callback -}; - - //------------------------------------------------- // Z80SIO_INTERFACE( sio_intf ) //------------------------------------------------- @@ -806,7 +794,14 @@ static MACHINE_CONFIG_START( trs80m2, trs80m2_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2)) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_8MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(trs80m2_state, pio_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(trs80m2_state, pio_pa_w)) + MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(trs80m2_state, strobe_w)) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf) MCFG_CENTRONICS_ADD(CENTRONICS_TAG, centronics_printers, "printer") @@ -877,7 +872,14 @@ static MACHINE_CONFIG_START( trs80m16, trs80m16_state ) MCFG_TIMER_DRIVER_ADD_PERIODIC("ctc", trs80m2_state, ctc_tick, attotime::from_hz(XTAL_8MHz/2/2)) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_8MHz/2, dma_intf) - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf) + + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_8MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(trs80m2_state, pio_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(trs80m2_state, pio_pa_w)) + MCFG_Z80PIO_OUT_PB_CB(DEVWRITE8("cent_data_out", output_latch_device, write)) + MCFG_Z80PIO_OUT_BRDY_CB(WRITELINE(trs80m2_state, strobe_w)) + MCFG_Z80SIO0_ADD(Z80SIO_TAG, XTAL_8MHz/2, sio_intf) MCFG_PIC8259_ADD(AM9519A_TAG, INPUTLINE(M68000_TAG, M68K_IRQ_5), VCC, NULL ) diff --git a/src/mess/drivers/vcs80.c b/src/mess/drivers/vcs80.c index e47aa287b80..c2c4adcab4b 100644 --- a/src/mess/drivers/vcs80.c +++ b/src/mess/drivers/vcs80.c @@ -180,17 +180,6 @@ WRITE8_MEMBER( vcs80_state::pio_pb_w ) output_set_digit_value(8 - digit, led_data); } -static Z80PIO_INTERFACE( pio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(vcs80_state, pio_pa_r), /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_DRIVER_MEMBER(vcs80_state, pio_pb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /* Z80 Daisy Chain */ static const z80_daisy_config vcs80_daisy_chain[] = @@ -227,7 +216,10 @@ static MACHINE_CONFIG_START( vcs80, vcs80_state ) MCFG_DEFAULT_LAYOUT( layout_vcs80 ) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_5MHz/2, pio_intf) + MCFG_DEVICE_ADD(Z80PIO_TAG, Z80PIO, XTAL_5MHz/2) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(vcs80_state, pio_pa_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(vcs80_state, pio_pb_w)) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c index e3fc72f0b2b..fdd4e3bf5b4 100644 --- a/src/mess/drivers/xerox820.c +++ b/src/mess/drivers/xerox820.c @@ -322,39 +322,6 @@ READ8_MEMBER( xerox820_state::kbpio_pb_r ) return m_keydata; }; -static Z80PIO_INTERFACE( xerox820_kbpio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pa_r), /* port A read callback */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pa_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pb_r), /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( xerox820ii_kbpio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pa_r), /* port A read callback */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pa_w), /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_DRIVER_MEMBER(xerox820_state, kbpio_pb_r), /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( gppio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_NULL, /* port A read callback */ - DEVCB_NULL, /* port A write callback */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* port B read callback */ - DEVCB_NULL, /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - WRITE8_MEMBER( xerox820ii_state::rdpio_pb_w ) { /* @@ -381,17 +348,6 @@ WRITE_LINE_MEMBER( xerox820ii_state::rdpio_pardy_w ) // TODO } -static Z80PIO_INTERFACE( rdpio_intf ) -{ - DEVCB_CPU_INPUT_LINE(Z80_TAG, INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DEVICE_MEMBER("sasi_data_in", input_buffer_device, read), /* port A read callback */ - DEVCB_DEVICE_MEMBER("sasi_data_out", output_latch_device, write), /* port A write callback */ - DEVCB_DRIVER_LINE_MEMBER(xerox820ii_state, rdpio_pardy_w), /* portA ready active callback */ - DEVCB_DEVICE_MEMBER("sasi_ctrl_in", input_buffer_device, read), /* port B read callback */ - DEVCB_DRIVER_MEMBER(xerox820ii_state, rdpio_pb_w), /* port B write callback */ - DEVCB_NULL /* portB ready active callback */ -}; - /* Z80 SIO */ static Z80SIO_INTERFACE( sio_intf ) @@ -655,8 +611,14 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state ) MCFG_PALETTE_ADD_BLACK_AND_WHITE("palette") /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_KB_TAG, XTAL_20MHz/8, xerox820_kbpio_intf) - MCFG_Z80PIO_ADD(Z80PIO_GP_TAG, XTAL_20MHz/8, gppio_intf) + MCFG_DEVICE_ADD(Z80PIO_KB_TAG, Z80PIO, XTAL_20MHz/8) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(xerox820_state, kbpio_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(xerox820_state, kbpio_pa_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(xerox820_state, kbpio_pb_r)) + + MCFG_DEVICE_ADD(Z80PIO_GP_TAG, Z80PIO, XTAL_20MHz/8) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_20MHz/8) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) @@ -721,9 +683,22 @@ static MACHINE_CONFIG_START( xerox820ii, xerox820ii_state ) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) /* devices */ - MCFG_Z80PIO_ADD(Z80PIO_KB_TAG, XTAL_16MHz/4, xerox820ii_kbpio_intf) - MCFG_Z80PIO_ADD(Z80PIO_GP_TAG, XTAL_16MHz/4, gppio_intf) - MCFG_Z80PIO_ADD(Z80PIO_RD_TAG, XTAL_20MHz/8, rdpio_intf) + MCFG_DEVICE_ADD(Z80PIO_KB_TAG, Z80PIO, XTAL_16MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(READ8(xerox820_state, kbpio_pa_r)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(xerox820_state, kbpio_pa_w)) + MCFG_Z80PIO_IN_PB_CB(READ8(xerox820_state, kbpio_pb_r)) + + MCFG_DEVICE_ADD(Z80PIO_GP_TAG, Z80PIO, XTAL_16MHz/4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + + MCFG_DEVICE_ADD(Z80PIO_RD_TAG, Z80PIO, XTAL_20MHz/8) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) + MCFG_Z80PIO_IN_PA_CB(DEVREAD8("sasi_data_in", input_buffer_device, read)) + MCFG_Z80PIO_OUT_PA_CB(DEVWRITE8("sasi_data_out", output_latch_device, write)) + MCFG_Z80PIO_OUT_ARDY_CB(WRITELINE(xerox820ii_state, rdpio_pardy_w)) + MCFG_Z80PIO_IN_PB_CB(DEVREAD8("sasi_ctrl_in", input_buffer_device, read)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(xerox820ii_state, rdpio_pb_w)) MCFG_DEVICE_ADD(Z80CTC_TAG, Z80CTC, XTAL_16MHz/4) MCFG_Z80CTC_INTR_CB(INPUTLINE(Z80_TAG, INPUT_LINE_IRQ0)) diff --git a/src/mess/drivers/z1013.c b/src/mess/drivers/z1013.c index 24dc2dfd89e..1e794e1aa5b 100644 --- a/src/mess/drivers/z1013.c +++ b/src/mess/drivers/z1013.c @@ -69,9 +69,9 @@ public: required_device<cpu_device> m_maincpu; required_device<cassette_image_device> m_cass; DECLARE_WRITE8_MEMBER(z1013_keyboard_w); - DECLARE_READ8_MEMBER(z1013_port_b_r); - DECLARE_WRITE8_MEMBER(z1013_port_b_w); - DECLARE_READ8_MEMBER(z1013k7659_port_b_r); + DECLARE_READ8_MEMBER(port_b_r); + DECLARE_WRITE8_MEMBER(port_b_w); + DECLARE_READ8_MEMBER(k7659_port_b_r); required_shared_ptr<UINT8> m_p_videoram; const UINT8 *m_p_chargen; UINT8 m_keyboard_line; @@ -270,7 +270,7 @@ WRITE8_MEMBER( z1013_state::z1013_keyboard_w ) m_keyboard_line = data; } -READ8_MEMBER( z1013_state::z1013_port_b_r ) +READ8_MEMBER( z1013_state::port_b_r ) { char kbdrow[6]; sprintf(kbdrow,"X%d", m_keyboard_line & 7); @@ -287,39 +287,17 @@ READ8_MEMBER( z1013_state::z1013_port_b_r ) return data; } -WRITE8_MEMBER( z1013_state::z1013_port_b_w ) +WRITE8_MEMBER( z1013_state::port_b_w ) { m_keyboard_part = BIT(data, 4); // for z1013a2 only m_cass->output(BIT(data, 7) ? -1.0 : +1.0); } -const z80pio_interface z1013_z80pio_intf = -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(z1013_state, z1013_port_b_r), - DEVCB_DRIVER_MEMBER(z1013_state, z1013_port_b_w), - DEVCB_NULL -}; - -READ8_MEMBER( z1013_state::z1013k7659_port_b_r ) +READ8_MEMBER( z1013_state::k7659_port_b_r ) { return 0xff; } -const z80pio_interface z1013k7659_z80pio_intf = -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(z1013_state, z1013k7659_port_b_r), - DEVCB_NULL, - DEVCB_NULL -}; - SNAPSHOT_LOAD_MEMBER( z1013_state, z1013 ) { /* header layout @@ -400,7 +378,6 @@ static MACHINE_CONFIG_START( z1013, z1013_state ) MCFG_CPU_PROGRAM_MAP(z1013_mem) MCFG_CPU_IO_MAP(z1013_io) - /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_REFRESH_RATE(50) @@ -418,15 +395,19 @@ static MACHINE_CONFIG_START( z1013, z1013_state ) MCFG_SOUND_WAVE_ADD(WAVE_TAG, "cassette") MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) - /* Devices */ - MCFG_Z80PIO_ADD( "z80pio", XTAL_1MHz, z1013_z80pio_intf ) + /* devices */ + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_1MHz) + MCFG_Z80PIO_IN_PB_CB(READ8(z1013_state, port_b_r)) + MCFG_Z80PIO_OUT_PB_CB(WRITE8(z1013_state, port_b_w)) + MCFG_CASSETTE_ADD( "cassette", z1013_cassette_interface ) MCFG_SNAPSHOT_ADD("snapshot", z1013_state, z1013, "z80", 0) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( z1013k76, z1013 ) MCFG_DEVICE_REMOVE("z80pio") - MCFG_Z80PIO_ADD("z80pio", XTAL_1MHz, z1013k7659_z80pio_intf) + MCFG_DEVICE_ADD("z80pio", Z80PIO, XTAL_1MHz) + MCFG_Z80PIO_IN_PB_CB(READ8(z1013_state, k7659_port_b_r)) MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mess/drivers/z9001.c b/src/mess/drivers/z9001.c index 80b3c0e33cb..40b8d92aa58 100644 --- a/src/mess/drivers/z9001.c +++ b/src/mess/drivers/z9001.c @@ -101,28 +101,6 @@ static const z80_daisy_config z9001_daisy_chain[] = { NULL } }; -static Z80PIO_INTERFACE( pio1_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_NULL, /* read port A */ - DEVCB_DRIVER_MEMBER(z9001_state, port88_w), /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* read port B - user expansion */ - DEVCB_NULL, /* write port B - user expansion */ - DEVCB_NULL /* portB ready active callback */ -}; - -static Z80PIO_INTERFACE( pio2_intf ) // keyboard PIO -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), // interrupt callback - DEVCB_NULL, /* read port A */ - DEVCB_NULL, /* write port A */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, /* read port B */ - DEVCB_NULL, /* write port B */ - DEVCB_NULL /* portB ready active callback */ -}; - //Bits0,1 not connected; 2,3,4,5 go to a connector; 6 goes to 'graphics' LED; 7 goes to speaker. WRITE8_MEMBER( z9001_state::port88_w ) { @@ -253,8 +231,13 @@ static MACHINE_CONFIG_START( z9001, z9001_state ) MCFG_DEVICE_ADD(KEYBOARD_TAG, GENERIC_KEYBOARD, 0) MCFG_GENERIC_KEYBOARD_CB(WRITE8(z9001_state, kbd_put)) MCFG_TIMER_DRIVER_ADD_PERIODIC("z9001_timer", z9001_state, timer_callback, attotime::from_msec(10)) - MCFG_Z80PIO_ADD( "z80pio1", XTAL_9_8304MHz / 4, pio1_intf ) - MCFG_Z80PIO_ADD( "z80pio2", XTAL_9_8304MHz / 4, pio2_intf ) + + MCFG_DEVICE_ADD("z80pio1", Z80PIO, XTAL_9_8304MHz / 4) + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80PIO_OUT_PA_CB(WRITE8(z9001_state, port88_w)) + + MCFG_DEVICE_ADD("z80pio2", Z80PIO, XTAL_9_8304MHz / 4) // keyboard PIO + MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80ctc", Z80CTC, XTAL_9_8304MHz / 4) MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mess/includes/ac1.h b/src/mess/includes/ac1.h index 714287377a6..3d8b7b729bd 100644 --- a/src/mess/includes/ac1.h +++ b/src/mess/includes/ac1.h @@ -35,10 +35,6 @@ public: required_device<palette_device> m_palette; }; - -/*----------- defined in machine/ac1.c -----------*/ -extern const z80pio_interface ac1_z80pio_intf; - /*----------- defined in video/ac1.c -----------*/ extern const gfx_layout ac1_charlayout; diff --git a/src/mess/includes/kaypro.h b/src/mess/includes/kaypro.h index a3c0b7062e9..166c5b5af4b 100644 --- a/src/mess/includes/kaypro.h +++ b/src/mess/includes/kaypro.h @@ -114,9 +114,6 @@ INPUT_PORTS_EXTERN( kay_kbd ); /*----------- defined in machine/kaypro.c -----------*/ -extern const z80pio_interface kayproii_pio_g_intf; -extern const z80pio_interface kayproii_pio_s_intf; -extern const z80pio_interface kaypro4_pio_s_intf; extern const z80sio_interface kaypro_sio_intf; /*----------- defined in video/kaypro.c -----------*/ diff --git a/src/mess/includes/kramermc.h b/src/mess/includes/kramermc.h index abde8e8a8a1..a3a460a7678 100644 --- a/src/mess/includes/kramermc.h +++ b/src/mess/includes/kramermc.h @@ -31,11 +31,6 @@ public: required_device<palette_device> m_palette; }; - -/*----------- defined in machine/kramermc.c -----------*/ - -extern const z80pio_interface kramermc_z80pio_intf; - /*----------- defined in video/kramermc.c -----------*/ extern const gfx_layout kramermc_charlayout; diff --git a/src/mess/includes/llc.h b/src/mess/includes/llc.h index de5516ba0fb..a7027da5310 100644 --- a/src/mess/includes/llc.h +++ b/src/mess/includes/llc.h @@ -59,11 +59,4 @@ public: optional_device<ram_device> m_ram; }; - -/*----------- defined in machine/llc.c -----------*/ -extern const z80pio_interface llc1_z80pio1_intf; -extern const z80pio_interface llc1_z80pio2_intf; -extern const z80pio_interface llc2_z80pio1_intf; -extern const z80pio_interface llc2_z80pio2_intf; - #endif diff --git a/src/mess/includes/mbee.h b/src/mess/includes/mbee.h index 46af60b62c0..039d8925d88 100644 --- a/src/mess/includes/mbee.h +++ b/src/mess/includes/mbee.h @@ -224,10 +224,6 @@ public: }; -/*----------- defined in machine/mbee.c -----------*/ - -extern const z80pio_interface mbee_z80pio_intf; - /*----------- defined in video/mbee.c -----------*/ MC6845_UPDATE_ROW( mbee_update_row ); diff --git a/src/mess/includes/mc80.h b/src/mess/includes/mc80.h index 66c74a41a7b..43c5654df1b 100644 --- a/src/mess/includes/mc80.h +++ b/src/mess/includes/mc80.h @@ -56,18 +56,9 @@ public: /*----------- defined in machine/mc80.c -----------*/ /*****************************************************************************/ -/* Implementation for MC80.2x */ -/*****************************************************************************/ - -extern const z80pio_interface mc8020_z80pio_intf; - -/*****************************************************************************/ /* Implementation for MC80.3x */ /*****************************************************************************/ - -extern const z80pio_interface mc8030_zve_z80pio_intf; -extern const z80pio_interface mc8030_asp_z80pio_intf; extern const z80dart_interface mc8030_asp_z80sio_intf; #endif /* MC80_H_ */ diff --git a/src/mess/includes/mz700.h b/src/mess/includes/mz700.h index 6d2e3fc4fc2..be759e48023 100644 --- a/src/mess/includes/mz700.h +++ b/src/mess/includes/mz700.h @@ -117,9 +117,4 @@ public: required_device<palette_device> m_palette; }; - -/*----------- defined in machine/mz700.c -----------*/ - -extern const z80pio_interface mz800_z80pio_config; - #endif /* MZ700_H_ */ diff --git a/src/mess/includes/super80.h b/src/mess/includes/super80.h index ac18d1d6633..e5344e627a3 100644 --- a/src/mess/includes/super80.h +++ b/src/mess/includes/super80.h @@ -123,7 +123,3 @@ private: /*----------- defined in video/super80.c -----------*/ MC6845_UPDATE_ROW( super80v_update_row ); - -/*----------- defined in machine/super80.c -----------*/ - -extern const z80pio_interface super80_pio_intf; diff --git a/src/mess/machine/ac1.c b/src/mess/machine/ac1.c index 9f0cc450353..b3ced599c92 100644 --- a/src/mess/machine/ac1.c +++ b/src/mess/machine/ac1.c @@ -96,17 +96,6 @@ WRITE8_MEMBER(ac1_state::ac1_port_b_w) m_cassette->output((data & 0x40) ? -1.0 : +1.0); } -Z80PIO_INTERFACE( ac1_z80pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(ac1_state,ac1_port_a_r), - DEVCB_DRIVER_MEMBER(ac1_state,ac1_port_a_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(ac1_state,ac1_port_b_r), - DEVCB_DRIVER_MEMBER(ac1_state,ac1_port_b_w), - DEVCB_NULL -}; - /* Driver initialization */ DRIVER_INIT_MEMBER(ac1_state,ac1) { diff --git a/src/mess/machine/kaypro.c b/src/mess/machine/kaypro.c index 72d4b8e4def..83ee20bbba9 100644 --- a/src/mess/machine/kaypro.c +++ b/src/mess/machine/kaypro.c @@ -80,39 +80,6 @@ WRITE8_MEMBER( kaypro_state::kaypro4_pio_system_w ) m_floppy->ss_w(BIT(data, 2)); } -const z80pio_interface kayproii_pio_g_intf = -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL /* portB ready active callback */ -}; - -const z80pio_interface kayproii_pio_s_intf = -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_DRIVER_MEMBER(kaypro_state, pio_system_r), /* read printer status */ - DEVCB_DRIVER_MEMBER(kaypro_state, kayproii_pio_system_w), /* activate various internal devices */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL /* portB ready active callback */ -}; - -const z80pio_interface kaypro4_pio_s_intf = -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_DRIVER_MEMBER(kaypro_state, pio_system_r), /* read printer status */ - DEVCB_DRIVER_MEMBER(kaypro_state, kaypro4_pio_system_w), /* activate various internal devices */ - DEVCB_NULL, /* portA ready active callback */ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL /* portB ready active callback */ -}; - /*********************************************************** KAYPRO2X SYSTEM PORT @@ -166,7 +133,6 @@ WRITE8_MEMBER( kaypro_state::kaypro2x_system_port_w ) } - /*********************************************************************** SIO diff --git a/src/mess/machine/kramermc.c b/src/mess/machine/kramermc.c index eeab9a5a5d0..9aeb2cfd8e8 100644 --- a/src/mess/machine/kramermc.c +++ b/src/mess/machine/kramermc.c @@ -29,17 +29,6 @@ WRITE8_MEMBER(kramermc_state::kramermc_port_a_w) m_key_row = ((data >> 1) & 0x07); } -Z80PIO_INTERFACE( kramermc_z80pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(kramermc_state,kramermc_port_a_r), - DEVCB_DRIVER_MEMBER(kramermc_state,kramermc_port_a_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(kramermc_state,kramermc_port_b_r), - DEVCB_NULL, - DEVCB_NULL -}; - /* Driver initialization */ DRIVER_INIT_MEMBER(kramermc_state,kramermc) { diff --git a/src/mess/machine/llc.c b/src/mess/machine/llc.c index 5f8b19e7e7f..8860e79958c 100644 --- a/src/mess/machine/llc.c +++ b/src/mess/machine/llc.c @@ -88,28 +88,6 @@ WRITE8_MEMBER(llc_state::llc1_port1_b_w) } } -Z80PIO_INTERFACE( llc1_z80pio1_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(llc_state, llc1_port1_a_r), - DEVCB_DRIVER_MEMBER(llc_state, llc1_port1_a_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(llc_state, llc1_port1_b_w), - DEVCB_NULL -}; - -Z80PIO_INTERFACE( llc1_z80pio2_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(llc_state, llc1_port2_a_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(llc_state, llc1_port2_b_r), - DEVCB_NULL, - DEVCB_NULL -}; - DRIVER_INIT_MEMBER(llc_state,llc1) { } @@ -194,29 +172,7 @@ WRITE8_MEMBER(llc_state::llc2_port1_b_w) m_rv = BIT(data, 5); } -Z80PIO_INTERFACE( llc2_z80pio1_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DEVICE_MEMBER(K7659_KEYBOARD_TAG, k7659_keyboard_device, read), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(llc_state, llc2_port1_b_r), - DEVCB_DRIVER_MEMBER(llc_state, llc2_port1_b_w), - DEVCB_NULL -}; - READ8_MEMBER(llc_state::llc2_port2_a_r) { return 0; // bit 2 low or hangs on ^Z^X^C sequence } - -Z80PIO_INTERFACE( llc2_z80pio2_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(llc_state, llc2_port2_a_r), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; diff --git a/src/mess/machine/mbee.c b/src/mess/machine/mbee.c index 4154029aa06..37db51cb20b 100644 --- a/src/mess/machine/mbee.c +++ b/src/mess/machine/mbee.c @@ -80,20 +80,9 @@ READ8_MEMBER( mbee_state::pio_port_b_r ) return data; }; -const z80pio_interface mbee_z80pio_intf = -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mbee_state, pio_port_a_w), - DEVCB_DRIVER_LINE_MEMBER(mbee_state, pio_ardy), - DEVCB_DRIVER_MEMBER(mbee_state, pio_port_b_r), - DEVCB_DRIVER_MEMBER(mbee_state, pio_port_b_w), - DEVCB_NULL -}; - /************************************************************************************* - Floppy DIsk + Floppy Disk The callback is quite simple, no interrupts are used. If either IRQ or DRQ activate, they set bit 7 of inport 0x48. diff --git a/src/mess/machine/mc80.c b/src/mess/machine/mc80.c index f7177838e1a..ea6110ee639 100644 --- a/src/mess/machine/mc80.c +++ b/src/mess/machine/mc80.c @@ -54,17 +54,6 @@ WRITE8_MEMBER( mc80_state::mc80_port_b_w ) { } -Z80PIO_INTERFACE( mc8020_z80pio_intf ) -{ - DEVCB_NULL, /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_a_r), - DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_a_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_b_r), - DEVCB_DRIVER_MEMBER(mc80_state, mc80_port_b_w), - DEVCB_NULL -}; - /*****************************************************************************/ /* Implementation for MC80.3x */ /*****************************************************************************/ @@ -124,17 +113,6 @@ WRITE8_MEMBER( mc80_state::zve_port_b_w ) { } -Z80PIO_INTERFACE( mc8030_zve_z80pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_r), - DEVCB_DRIVER_MEMBER(mc80_state, zve_port_a_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mc80_state, zve_port_b_r), - DEVCB_DRIVER_MEMBER(mc80_state, zve_port_b_w), - DEVCB_NULL -}; - READ8_MEMBER( mc80_state::asp_port_a_r ) { return 0xff; @@ -153,17 +131,6 @@ WRITE8_MEMBER( mc80_state::asp_port_b_w ) { } -Z80PIO_INTERFACE( mc8030_asp_z80pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), /* callback when change interrupt status */ - DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_r), - DEVCB_DRIVER_MEMBER(mc80_state, asp_port_a_w), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(mc80_state, asp_port_b_r), - DEVCB_DRIVER_MEMBER(mc80_state, asp_port_b_w), - DEVCB_NULL -}; - // SIO CH A in = keyboard; out = beeper; CH B = IFSS (??) Z80SIO_INTERFACE( mc8030_asp_z80sio_intf ) { diff --git a/src/mess/machine/mz700.c b/src/mess/machine/mz700.c index 2ad240a1dda..910dde5d03f 100644 --- a/src/mess/machine/mz700.c +++ b/src/mess/machine/mz700.c @@ -523,20 +523,6 @@ WRITE8_MEMBER(mz_state::mz800_z80pio_port_a_w) m_centronics->write_strobe(BIT(data, 7)); } -const z80pio_interface mz800_z80pio_config = -{ - DEVCB_DRIVER_LINE_MEMBER(mz_state,mz800_z80pio_irq), - DEVCB_DRIVER_MEMBER(mz_state,mz800_z80pio_port_a_r), - DEVCB_DRIVER_MEMBER(mz_state,mz800_z80pio_port_a_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_MEMBER("cent_data_out", output_latch_device, write), - DEVCB_NULL, -}; - - - - /* port CE */ READ8_MEMBER(mz_state::mz800_crtc_r) { diff --git a/src/mess/machine/super80.c b/src/mess/machine/super80.c index 93de4b5832a..4e86f09a1d9 100644 --- a/src/mess/machine/super80.c +++ b/src/mess/machine/super80.c @@ -27,18 +27,6 @@ READ8_MEMBER( super80_state::pio_port_b_r ) return data; }; -Z80PIO_INTERFACE( super80_pio_intf ) -{ - DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_IRQ0), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(super80_state, pio_port_a_w), - DEVCB_NULL, /* portA ready active callback (not used in super80) */ - DEVCB_DRIVER_MEMBER(super80_state,pio_port_b_r), - DEVCB_NULL, - DEVCB_NULL /* portB ready active callback (not used in super80) */ -}; - - /**************************** CASSETTE ROUTINES *****************************************************************/ void super80_state::super80_cassette_motor( UINT8 data ) |
