summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2014-04-29 07:24:36 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2014-04-29 07:24:36 +0000
commit181f87e14242ed6d845e780924ef0bec457d583d (patch)
tree29916503554c4fdf68663adb62cf92c1dd07e39f /src/mess
parentbf9cc508b5164c313c91a0a82ad3182a13423cf4 (diff)
z80pio: converted to use devcb2. nw.
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/a5105.c14
-rw-r--r--src/mess/drivers/abc80.c24
-rw-r--r--src/mess/drivers/ac1.c7
-rw-r--r--src/mess/drivers/ace.c23
-rw-r--r--src/mess/drivers/altos5.c37
-rw-r--r--src/mess/drivers/attache.c18
-rw-r--r--src/mess/drivers/babbage.c32
-rw-r--r--src/mess/drivers/bbcbc.c15
-rw-r--r--src/mess/drivers/binbug.c19
-rw-r--r--src/mess/drivers/bullet.c41
-rw-r--r--src/mess/drivers/c80.c34
-rw-r--r--src/mess/drivers/chessmst.c34
-rw-r--r--src/mess/drivers/czk80.c15
-rw-r--r--src/mess/drivers/einstein.c15
-rw-r--r--src/mess/drivers/fidelz80.c16
-rw-r--r--src/mess/drivers/huebler.c32
-rw-r--r--src/mess/drivers/kaypro.c16
-rw-r--r--src/mess/drivers/kc.c29
-rw-r--r--src/mess/drivers/kramermc.c5
-rw-r--r--src/mess/drivers/lc80.c44
-rw-r--r--src/mess/drivers/llc.c19
-rw-r--r--src/mess/drivers/mbee.c14
-rw-r--r--src/mess/drivers/mc80.c22
-rw-r--r--src/mess/drivers/mpf1.c22
-rw-r--r--src/mess/drivers/mz2000.c16
-rw-r--r--src/mess/drivers/mz2500.c18
-rw-r--r--src/mess/drivers/mz700.c6
-rw-r--r--src/mess/drivers/nanos.c50
-rw-r--r--src/mess/drivers/nascom1.c16
-rw-r--r--src/mess/drivers/onyx.c84
-rw-r--r--src/mess/drivers/p8k.c104
-rw-r--r--src/mess/drivers/pasopia.c17
-rw-r--r--src/mess/drivers/pasopia7.c17
-rw-r--r--src/mess/drivers/pcm.c34
-rw-r--r--src/mess/drivers/poly880.c32
-rw-r--r--src/mess/drivers/rt1715.c26
-rw-r--r--src/mess/drivers/sc1.c16
-rw-r--r--src/mess/drivers/sc2.c17
-rw-r--r--src/mess/drivers/super6.c22
-rw-r--r--src/mess/drivers/super80.c10
-rw-r--r--src/mess/drivers/superslave.c20
-rw-r--r--src/mess/drivers/tiki100.c19
-rw-r--r--src/mess/drivers/trs80m2.c32
-rw-r--r--src/mess/drivers/vcs80.c16
-rw-r--r--src/mess/drivers/xerox820.c73
-rw-r--r--src/mess/drivers/z1013.c45
-rw-r--r--src/mess/drivers/z9001.c31
-rw-r--r--src/mess/includes/ac1.h4
-rw-r--r--src/mess/includes/kaypro.h3
-rw-r--r--src/mess/includes/kramermc.h5
-rw-r--r--src/mess/includes/llc.h7
-rw-r--r--src/mess/includes/mbee.h4
-rw-r--r--src/mess/includes/mc80.h9
-rw-r--r--src/mess/includes/mz700.h5
-rw-r--r--src/mess/includes/super80.h4
-rw-r--r--src/mess/machine/ac1.c11
-rw-r--r--src/mess/machine/kaypro.c34
-rw-r--r--src/mess/machine/kramermc.c11
-rw-r--r--src/mess/machine/llc.c44
-rw-r--r--src/mess/machine/mbee.c13
-rw-r--r--src/mess/machine/mc80.c33
-rw-r--r--src/mess/machine/mz700.c14
-rw-r--r--src/mess/machine/super80.c12
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 )