summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame
diff options
context:
space:
mode:
author Fabio Priuli <etabeta78@users.noreply.github.com>2012-05-14 15:19:40 +0000
committer Fabio Priuli <etabeta78@users.noreply.github.com>2012-05-14 15:19:40 +0000
commitb356181d69b2a44b5a4dd4a1b8480c5966e2fc77 (patch)
treea1231c65edb2371c33a79f5263f8e0e5281e1c08 /src/mame
parent43a1938f2b6a670a0a5b8ba09d7d2931a55e4f31 (diff)
updating MAME drivers to use modern i8255 implementation instead of the legacy one, part 2 [Fabio Priuli]
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/igs009.c2
-rw-r--r--src/mame/drivers/igs017.c116
-rw-r--r--src/mame/drivers/imolagp.c18
-rw-r--r--src/mame/drivers/iqblock.c21
-rw-r--r--src/mame/drivers/kingdrby.c87
-rw-r--r--src/mame/drivers/kungfur.c45
-rw-r--r--src/mame/drivers/lordgun.c86
-rw-r--r--src/mame/drivers/lucky74.c89
-rw-r--r--src/mame/drivers/merit.c111
-rw-r--r--src/mame/drivers/meritm.c41
-rw-r--r--src/mame/drivers/pcxt.c44
-rw-r--r--src/mame/drivers/pipeline.c66
-rw-r--r--src/mame/drivers/rgum.c21
-rw-r--r--src/mame/drivers/sfkick.c22
-rw-r--r--src/mame/drivers/skylncr.c44
-rw-r--r--src/mame/drivers/slotcarn.c66
-rw-r--r--src/mame/drivers/sms.c47
-rw-r--r--src/mame/drivers/statriv2.c30
-rw-r--r--src/mame/drivers/subsino.c2
-rw-r--r--src/mame/drivers/taxidriv.c109
-rw-r--r--src/mame/drivers/tcl.c40
-rw-r--r--src/mame/drivers/tx1.c39
-rw-r--r--src/mame/drivers/vroulet.c45
23 files changed, 595 insertions, 596 deletions
diff --git a/src/mame/drivers/igs009.c b/src/mame/drivers/igs009.c
index ddc635520a3..c3d29c78140 100644
--- a/src/mame/drivers/igs009.c
+++ b/src/mame/drivers/igs009.c
@@ -17,7 +17,7 @@ NVRAM : Battery for main RAM
#include "emu.h"
#include "cpu/z180/z180.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/2413intf.h"
#include "sound/okim6295.h"
#include "machine/nvram.h"
diff --git a/src/mame/drivers/igs017.c b/src/mame/drivers/igs017.c
index 498d2e307f9..4c4f1ce0cd8 100644
--- a/src/mame/drivers/igs017.c
+++ b/src/mame/drivers/igs017.c
@@ -44,7 +44,7 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z180/z180.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/2413intf.h"
#include "sound/okim6295.h"
@@ -1302,7 +1302,7 @@ static ADDRESS_MAP_START( iqblocka_io, AS_IO, 8, igs017_state )
// AM_RANGE(0x200a, 0x200a) AM_WRITENOP
- AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD_LEGACY("ppi8255", ppi8255_r)
+ AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
@@ -1424,7 +1424,7 @@ static ADDRESS_MAP_START( mgcs, AS_PROGRAM, 16, igs017_state )
AM_RANGE( 0x49c002, 0x49c003 ) AM_READ(mgcs_magic_r )
AM_RANGE( 0xa02000, 0xa02fff ) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
AM_RANGE( 0xa03000, 0xa037ff ) AM_RAM_WRITE(mgcs_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff )
+ AM_RANGE( 0xa04020, 0xa04027 ) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
AM_RANGE( 0xa04024, 0xa04025 ) AM_WRITE(video_disable_lsb_w )
AM_RANGE( 0xa04028, 0xa04029 ) AM_WRITE(irq2_enable_w )
AM_RANGE( 0xa0402a, 0xa0402b ) AM_WRITE(irq1_enable_w )
@@ -1521,7 +1521,7 @@ static ADDRESS_MAP_START( sdmg2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x1f0000, 0x1fffff) AM_RAM
AM_RANGE(0x202000, 0x202fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
AM_RANGE(0x203000, 0x2037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0x204020, 0x204027) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff )
+ AM_RANGE(0x204020, 0x204027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
AM_RANGE(0x204024, 0x204025) AM_WRITE(video_disable_lsb_w )
AM_RANGE(0x204028, 0x204029) AM_WRITE(irq2_enable_w )
AM_RANGE(0x20402a, 0x20402b) AM_WRITE(irq1_enable_w )
@@ -1643,7 +1643,7 @@ static ADDRESS_MAP_START( mgdha_map, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0xa02000, 0xa02fff) AM_READWRITE(spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
AM_RANGE(0xa03000, 0xa037ff) AM_RAM_WRITE(sdmg2_paletteram_w ) AM_SHARE("paletteram")
// AM_RANGE(0xa04014, 0xa04015) // written with FF at boot
- AM_RANGE(0xa04020, 0xa04027) AM_DEVREAD8_LEGACY("ppi8255", ppi8255_r, 0x00ff )
+ AM_RANGE(0xa04020, 0xa04027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
AM_RANGE(0xa04024, 0xa04025) AM_WRITE(video_disable_lsb_w )
AM_RANGE(0xa04028, 0xa04029) AM_WRITE(irq2_enable_w )
AM_RANGE(0xa0402a, 0xa0402b) AM_WRITE(irq1_enable_w )
@@ -1735,7 +1735,7 @@ static ADDRESS_MAP_START( tjsb_io, AS_IO, 8, igs017_state )
// AM_RANGE(0x200a, 0x200a) AM_WRITENOP
- AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD_LEGACY("ppi8255", ppi8255_r)
+ AM_RANGE( 0x2010, 0x2013 ) AM_DEVREAD("ppi8255", i8255_device, read)
AM_RANGE( 0x2012, 0x2012 ) AM_WRITE(video_disable_w )
AM_RANGE( 0x2014, 0x2014 ) AM_WRITE(nmi_enable_w )
@@ -1819,7 +1819,7 @@ static ADDRESS_MAP_START( lhzb2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x910002, 0x910003) AM_READ( lhzb2_magic_r )
AM_RANGE(0xb02000, 0xb02fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
AM_RANGE(0xb03000, 0xb037ff) AM_RAM_WRITE( lhzb2a_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0xb04020, 0xb04027) AM_DEVREAD8_LEGACY( "ppi8255", ppi8255_r, 0x00ff )
+ AM_RANGE(0xb04020, 0xb04027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
AM_RANGE(0xb04024, 0xb04025) AM_WRITE( video_disable_lsb_w )
AM_RANGE(0xb04028, 0xb04029) AM_WRITE( irq2_enable_w )
AM_RANGE(0xb0402a, 0xb0402b) AM_WRITE( irq1_enable_w )
@@ -2032,7 +2032,7 @@ static ADDRESS_MAP_START( slqz2, AS_PROGRAM, 16, igs017_state )
AM_RANGE(0x602002, 0x602003) AM_READ( slqz2_magic_r )
AM_RANGE(0x902000, 0x902fff) AM_READWRITE( spriteram_lsb_r, spriteram_lsb_w ) AM_SHARE("spriteram")
AM_RANGE(0x903000, 0x9037ff) AM_RAM_WRITE( slqz2_paletteram_w ) AM_SHARE("paletteram")
- AM_RANGE(0x904020, 0x904027) AM_DEVREAD8_LEGACY( "ppi8255", ppi8255_r, 0x00ff )
+ AM_RANGE(0x904020, 0x904027) AM_DEVREAD8("ppi8255", i8255_device, read, 0x00ff)
AM_RANGE(0x904024, 0x904025) AM_WRITE( video_disable_lsb_w )
AM_RANGE(0x904028, 0x904029) AM_WRITE( irq2_enable_w )
AM_RANGE(0x90402a, 0x90402b) AM_WRITE( irq1_enable_w )
@@ -3018,17 +3018,17 @@ static TIMER_DEVICE_CALLBACK( irqblocka_interrupt )
// Dips are read through the 8255
-static const ppi8255_interface iqblocka_ppi8255_intf =
-{
- DEVCB_INPUT_PORT("DSW1"), // Port A read
- DEVCB_INPUT_PORT("DSW2"), // Port B read
- DEVCB_INPUT_PORT("DSW3"), // Port C read
-
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
+static I8255A_INTERFACE( iqblocka_ppi8255_intf )
+{
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("DSW2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("DSW3"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
+
static MACHINE_RESET( iqblocka )
{
igs017_state *state = machine.driver_data<igs017_state>();
@@ -3043,7 +3043,7 @@ static MACHINE_CONFIG_START( iqblocka, igs017_state )
MCFG_CPU_IO_MAP(iqblocka_io)
MCFG_TIMER_ADD_SCANLINE("scantimer", irqblocka_interrupt, "screen", 0, 1)
- MCFG_PPI8255_ADD( "ppi8255", iqblocka_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", iqblocka_ppi8255_intf )
MCFG_MACHINE_RESET(iqblocka)
@@ -3096,15 +3096,14 @@ static MACHINE_RESET( mgcs )
memset(state->m_igs_magic, 0, sizeof(state->m_igs_magic));
}
-static const ppi8255_interface mgcs_ppi8255_intf =
+static I8255A_INTERFACE( mgcs_ppi8255_intf )
{
- DEVCB_INPUT_PORT("COINS"), // Port A read
- DEVCB_HANDLER(mgcs_keys_r), // Port B read
- DEVCB_NULL, // Port C read (see code at 1C83A)
-
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
+ DEVCB_INPUT_PORT("COINS"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_HANDLER(mgcs_keys_r), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
};
static MACHINE_CONFIG_START( mgcs, igs017_state )
@@ -3114,7 +3113,7 @@ static MACHINE_CONFIG_START( mgcs, igs017_state )
MCFG_MACHINE_RESET(mgcs)
- MCFG_PPI8255_ADD( "ppi8255", mgcs_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", mgcs_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3139,16 +3138,14 @@ MACHINE_CONFIG_END
// lhzb2
-
-static const ppi8255_interface lhzb2_ppi8255_intf =
-{
- DEVCB_INPUT_PORT("COINS"), // Port A read
- DEVCB_INPUT_PORT("DSW1"), // Port B read
- DEVCB_INPUT_PORT("DSW2"), // Port C read
-
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
+static I8255A_INTERFACE( lhzb2_ppi8255_intf )
+{
+ DEVCB_INPUT_PORT("COINS"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("DSW1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("DSW2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
static MACHINE_CONFIG_START( lhzb2, igs017_state )
@@ -3158,7 +3155,7 @@ static MACHINE_CONFIG_START( lhzb2, igs017_state )
MCFG_MACHINE_RESET(mgcs)
- MCFG_PPI8255_ADD( "ppi8255", lhzb2_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", lhzb2_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3198,7 +3195,7 @@ static MACHINE_CONFIG_START( lhzb2a, igs017_state )
MCFG_MACHINE_RESET(lhzb2a)
-// MCFG_PPI8255_ADD( "ppi8255", sdmg2_ppi8255_intf )
+// MCFG_I8255A_ADD( "ppi8255", sdmg2_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3231,7 +3228,7 @@ static MACHINE_CONFIG_START( slqz2, igs017_state )
MCFG_MACHINE_RESET(mgcs)
- MCFG_PPI8255_ADD( "ppi8255", lhzb2_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", lhzb2_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3256,16 +3253,14 @@ MACHINE_CONFIG_END
// sdmg2
-
-static const ppi8255_interface sdmg2_ppi8255_intf =
-{
- DEVCB_INPUT_PORT("DSW1"), // Port A read
- DEVCB_INPUT_PORT("DSW2"), // Port B read
- DEVCB_NULL, // Port C read
-
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
+static I8255A_INTERFACE( sdmg2_ppi8255_intf )
+{
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("DSW2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
};
static MACHINE_CONFIG_START( sdmg2, igs017_state )
@@ -3275,7 +3270,7 @@ static MACHINE_CONFIG_START( sdmg2, igs017_state )
MCFG_MACHINE_RESET(mgcs)
- MCFG_PPI8255_ADD( "ppi8255", sdmg2_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", sdmg2_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3312,15 +3307,14 @@ static TIMER_DEVICE_CALLBACK( mgdh_interrupt )
device_set_input_line(state->m_maincpu, 3, HOLD_LINE); // lev 3 instead of 2
}
-static const ppi8255_interface mgdh_ppi8255_intf =
+static I8255A_INTERFACE( mgdh_ppi8255_intf )
{
- DEVCB_INPUT_PORT("DSW1"), // Port A read
- DEVCB_NULL, // Port B read
- DEVCB_NULL, // Port C read
-
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
};
static MACHINE_CONFIG_START( mgdha, igs017_state )
@@ -3330,7 +3324,7 @@ static MACHINE_CONFIG_START( mgdha, igs017_state )
MCFG_MACHINE_RESET(mgcs)
- MCFG_PPI8255_ADD( "ppi8255", mgdh_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", mgdh_ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3361,7 +3355,7 @@ static MACHINE_CONFIG_START( tjsb, igs017_state )
MCFG_CPU_IO_MAP(tjsb_io)
MCFG_TIMER_ADD_SCANLINE("scantimer", irqblocka_interrupt, "screen", 0, 1)
- MCFG_PPI8255_ADD( "ppi8255", iqblocka_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", iqblocka_ppi8255_intf )
MCFG_MACHINE_RESET(iqblocka)
diff --git a/src/mame/drivers/imolagp.c b/src/mame/drivers/imolagp.c
index 0ce9f43786b..06e538df846 100644
--- a/src/mame/drivers/imolagp.c
+++ b/src/mame/drivers/imolagp.c
@@ -75,7 +75,7 @@ Known issues:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
@@ -503,14 +503,14 @@ static INTERRUPT_GEN( vblank_irq )
} /* master_interrupt */
-static const ppi8255_interface ppi8255_intf =
+static I8255A_INTERFACE( ppi8255_intf )
{
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL, /* Port C write */
};
@@ -569,7 +569,7 @@ static MACHINE_CONFIG_START( imolagp, imolagp_state )
MCFG_MACHINE_START(imolagp)
MCFG_MACHINE_RESET(imolagp)
- MCFG_PPI8255_ADD( "ppi8255", ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE(60)
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index 1c00afaa917..3918d684c93 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -52,7 +52,7 @@ Grndtour:
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/z180/z180.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "includes/iqblock.h"
#include "sound/2413intf.h"
@@ -113,14 +113,14 @@ static WRITE8_DEVICE_HANDLER( port_C_w )
/* bit 7 could be a second coin counter, but coin 2 doesn't seem to work... */
}
-static const ppi8255_interface ppi8255_intf =
+static I8255A_INTERFACE( ppi8255_intf )
{
- DEVCB_INPUT_PORT("P1"), /* Port A read */
- DEVCB_INPUT_PORT("P2"), /* Port B read */
- DEVCB_INPUT_PORT("EXTRA"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(port_C_w) /* Port C write */
+ DEVCB_INPUT_PORT("P1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("P2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("EXTRA"), /* Port C read */
+ DEVCB_HANDLER(port_C_w) /* Port C write */
};
@@ -136,8 +136,7 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 8, iqblock_state )
AM_RANGE(0x6000, 0x603f) AM_WRITE(iqblock_fgscroll_w)
AM_RANGE(0x6800, 0x69ff) AM_WRITE(iqblock_fgvideoram_w) /* initialized up to 6fff... bug or larger tilemap? */
AM_RANGE(0x7000, 0x7fff) AM_WRITE(iqblock_bgvideoram_w)
- AM_RANGE(0x5080, 0x5083) AM_DEVWRITE_LEGACY("ppi8255", ppi8255_w)
- AM_RANGE(0x5080, 0x5083) AM_DEVREAD_LEGACY("ppi8255", ppi8255_r)
+ AM_RANGE(0x5080, 0x5083) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0")
AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1")
AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE_LEGACY("ymsnd", ym2413_w) // UM3567_data_port_0_w
@@ -279,7 +278,7 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_CPU_IO_MAP(main_portmap)
MCFG_TIMER_ADD_SCANLINE("scantimer", iqblock_irq, "screen", 0, 1)
- MCFG_PPI8255_ADD( "ppi8255", ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/kingdrby.c b/src/mame/drivers/kingdrby.c
index aef06cf7dde..c8abb773930 100644
--- a/src/mame/drivers/kingdrby.c
+++ b/src/mame/drivers/kingdrby.c
@@ -66,7 +66,7 @@ sg1_b.e1 4096 0x92ef3c13 D2732D
#include "emu.h"
#include "cpu/z80/z80.h"
#include "video/mc6845.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
#include "sound/okim6295.h"
#include "sound/2203intf.h"
@@ -402,8 +402,8 @@ static ADDRESS_MAP_START( slave_map, AS_PROGRAM, 8, kingdrby_state )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom, tested for the post check
AM_RANGE(0x4000, 0x43ff) AM_RAM AM_SHARE("nvram") //backup ram
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* I/O Ports */
- AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* I/O Ports */
+ AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */
+ AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w)
@@ -422,8 +422,8 @@ static ADDRESS_MAP_START( slave_1986_map, AS_PROGRAM, 8, kingdrby_state )
AM_RANGE(0x0000, 0x2fff) AM_ROM
AM_RANGE(0x3000, 0x3fff) AM_ROM //sound rom tested for the post check
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("nvram") //backup ram
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* I/O Ports */
-// AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* I/O Ports */
+ AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* I/O Ports */
+// AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* I/O Ports */
AM_RANGE(0x7000, 0x73ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x7400, 0x74ff) AM_RAM AM_SHARE("spriteram")
AM_RANGE(0x7600, 0x7600) AM_DEVWRITE("crtc", mc6845_device, address_w)
@@ -473,27 +473,26 @@ ADDRESS_MAP_END
*
*************************************/
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
/* A & B as input, C (all) as output */
- {
- DEVCB_HANDLER(hopper_io_r), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(hopper_io_w) /* Port C write */
- },
+ DEVCB_HANDLER(hopper_io_r), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(hopper_io_w) /* Port C write */
+};
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
/* B & C (lower) as input, A & C (upper) as output */
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_HANDLER(key_matrix_r),/* Port B read */
- DEVCB_HANDLER(input_mux_r), /* Port C read */
- DEVCB_HANDLER(sound_cmd_w), /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(outport2_w) /* Port C write */
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(sound_cmd_w), /* Port A write */
+ DEVCB_HANDLER(key_matrix_r), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_HANDLER(input_mux_r), /* Port C read */
+ DEVCB_HANDLER(outport2_w) /* Port C write */
};
static WRITE8_DEVICE_HANDLER( outportb_w )
@@ -502,29 +501,29 @@ static WRITE8_DEVICE_HANDLER( outportb_w )
}
-static const ppi8255_interface ppi8255_1986_intf[2] =
+static I8255A_INTERFACE( ppi8255_1986_0_intf )
{
/* C as input, (all) as output */
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_INPUT_PORT("IN0"), /* Port B read */
- DEVCB_INPUT_PORT("IN1"), /* Port C read */
- DEVCB_HANDLER(sound_cmd_w), /* Port A write */
- DEVCB_HANDLER(outportb_w), /* Port B write */
- DEVCB_NULL /* Port C write */
- },
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(sound_cmd_w), /* Port A write */
+ DEVCB_INPUT_PORT("IN0"), /* Port B read */
+ DEVCB_HANDLER(outportb_w), /* Port B write */
+ DEVCB_INPUT_PORT("IN1"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+static I8255A_INTERFACE( ppi8255_1986_1_intf )
+{
/* actually unused */
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL, /* Port C write */
};
+
/*************************************
*
* Input Port Definitions
@@ -1030,8 +1029,8 @@ static MACHINE_CONFIG_START( kingdrby, kingdrby_state )
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_GFXDECODE(kingdrby)
MCFG_PALETTE_LENGTH(0x200)
@@ -1062,8 +1061,10 @@ static MACHINE_CONFIG_DERIVED( kingdrbb, kingdrby )
MCFG_PALETTE_INIT(kingdrbb)
- MCFG_PPI8255_RECONFIG( "ppi8255_0", ppi8255_1986_intf[0] )
- MCFG_PPI8255_RECONFIG( "ppi8255_1", ppi8255_1986_intf[1] )
+ MCFG_DEVICE_REMOVE("ppi8255_0")
+ MCFG_DEVICE_REMOVE("ppi8255_1")
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_1986_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1986_1_intf )
MACHINE_CONFIG_END
static MACHINE_CONFIG_DERIVED( cowrace, kingdrbb )
diff --git a/src/mame/drivers/kungfur.c b/src/mame/drivers/kungfur.c
index a12a7971dfe..90d2705c3d4 100644
--- a/src/mame/drivers/kungfur.c
+++ b/src/mame/drivers/kungfur.c
@@ -57,7 +57,7 @@ mae(forward), migi(right), ushiro(back), hidari(left)
#include "emu.h"
#include "cpu/m6809/m6809.h"
#include "sound/msm5205.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "kungfur.lh"
@@ -215,8 +215,8 @@ static ADDRESS_MAP_START( kungfur_map, AS_PROGRAM, 8, kungfur_state )
AM_RANGE(0x0000, 0x07ff) AM_RAM
AM_RANGE(0x4000, 0x4000) AM_DEVWRITE_LEGACY("adpcm1", kungfur_adpcm1_w)
AM_RANGE(0x4004, 0x4004) AM_DEVWRITE_LEGACY("adpcm2", kungfur_adpcm2_w)
- AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0x400c, 0x400f) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x4008, 0x400b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0x400c, 0x400f) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xc000, 0xffff) AM_ROM
ADDRESS_MAP_END
@@ -259,28 +259,29 @@ INPUT_PORTS_END
***************************************************************************/
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
// $4008 - always $83 (PPI mode 0, ports B & lower C as input)
- {
- DEVCB_NULL,
- DEVCB_INPUT_PORT("IN0"),
- DEVCB_INPUT_PORT("IN1"),
- DEVCB_HANDLER(kungfur_output_w),
- DEVCB_NULL,
- DEVCB_HANDLER(kungfur_control_w)
- },
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(kungfur_output_w), /* Port A write */
+ DEVCB_INPUT_PORT("IN0"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN1"), /* Port C read */
+ DEVCB_HANDLER(kungfur_control_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
// $400c - always $80 (PPI mode 0, all ports as output)
- {
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_HANDLER(kungfur_latch1_w),
- DEVCB_HANDLER(kungfur_latch2_w),
- DEVCB_HANDLER(kungfur_latch3_w)
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(kungfur_latch1_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(kungfur_latch2_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(kungfur_latch3_w) /* Port C write */
};
+
static const msm5205_interface msm5205_config_1 =
{
kfr_adpcm1_int,
@@ -318,8 +319,8 @@ static MACHINE_CONFIG_START( kungfur, kungfur_state )
MCFG_CPU_PROGRAM_MAP(kungfur_map)
MCFG_CPU_PERIODIC_INT(kungfur_irq, 975) // close approximation
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_MACHINE_START(kungfur)
MCFG_MACHINE_RESET(kungfur)
diff --git a/src/mame/drivers/lordgun.c b/src/mame/drivers/lordgun.c
index 8395e4d97d5..289c4b366ed 100644
--- a/src/mame/drivers/lordgun.c
+++ b/src/mame/drivers/lordgun.c
@@ -41,7 +41,7 @@ Notes:
#include "emu.h"
#include "cpu/m68000/m68000.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/eeprom.h"
#include "sound/3812intf.h"
#include "sound/okim6295.h"
@@ -288,8 +288,8 @@ static ADDRESS_MAP_START( lordgun_map, AS_PROGRAM, 16, lordgun_state )
AM_RANGE(0x503c00, 0x503c01) AM_READ(lordgun_gun_0_y_r)
AM_RANGE(0x503e00, 0x503e01) AM_READ(lordgun_gun_1_y_r)
AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w)
- AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w, 0x00ff)
- AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w, 0x00ff)
+ AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
+ AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff)
AM_RANGE(0x50a900, 0x50a9ff) AM_RAM // protection
ADDRESS_MAP_END
@@ -316,8 +316,8 @@ static ADDRESS_MAP_START( aliencha_map, AS_PROGRAM, 16, lordgun_state )
AM_RANGE(0x502e00, 0x502e01) AM_WRITEONLY AM_SHARE("scroll_y.3")
AM_RANGE(0x503000, 0x503001) AM_WRITE(lordgun_priority_w)
AM_RANGE(0x504000, 0x504001) AM_WRITE(lordgun_soundlatch_w)
- AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w, 0x00ff)
- AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w, 0x00ff)
+ AM_RANGE(0x506000, 0x506007) AM_DEVREADWRITE8("ppi8255_0", i8255_device, read, write, 0x00ff)
+ AM_RANGE(0x508000, 0x508007) AM_DEVREADWRITE8("ppi8255_1", i8255_device, read, write, 0x00ff)
AM_RANGE(0x50b900, 0x50b9ff) AM_RAM // protection
ADDRESS_MAP_END
@@ -606,47 +606,47 @@ INPUT_PORTS_END
***************************************************************************/
-static const ppi8255_interface lordgun_ppi8255_intf[2] =
+static I8255A_INTERFACE( lordgun_ppi8255_0_intf )
{
- {
- DEVCB_INPUT_PORT("DIP"), // Port A read
- DEVCB_NULL, // Port B read
- DEVCB_INPUT_PORT("SERVICE"), // Port C read
- DEVCB_HANDLER(fake_w), // Port A write
- DEVCB_HANDLER(lordgun_eeprom_w),// Port B write
- DEVCB_HANDLER(fake2_w) // Port C write
- },
- {
- DEVCB_INPUT_PORT("START1"), // Port A read
- DEVCB_INPUT_PORT("START2"), // Port B read
- DEVCB_INPUT_PORT("COIN"), // Port C read
- DEVCB_HANDLER(fake_w), // Port A write
- DEVCB_HANDLER(fake_w), // Port B write
- DEVCB_HANDLER(fake_w) // Port C write
- }
+ DEVCB_INPUT_PORT("DIP"), /* Port A read */
+ DEVCB_HANDLER(fake_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(lordgun_eeprom_w), /* Port B write */
+ DEVCB_INPUT_PORT("SERVICE"), /* Port C read */
+ DEVCB_HANDLER(fake2_w) /* Port C write */
};
+static I8255A_INTERFACE( lordgun_ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("START1"), /* Port A read */
+ DEVCB_HANDLER(fake_w), /* Port A write */
+ DEVCB_INPUT_PORT("START2"), /* Port B read */
+ DEVCB_HANDLER(fake_w), /* Port B write */
+ DEVCB_INPUT_PORT("COIN"), /* Port C read */
+ DEVCB_HANDLER(fake_w) /* Port C write */
+};
-static const ppi8255_interface aliencha_ppi8255_intf[2] =
+static I8255A_INTERFACE( aliencha_ppi8255_0_intf )
{
- {
- DEVCB_HANDLER(aliencha_dip_r), // Port A read
- DEVCB_NULL, // Port B read
- DEVCB_INPUT_PORT("SERVICE"), // Port C read
- DEVCB_HANDLER(fake2_w), // Port A write
- DEVCB_HANDLER(aliencha_eeprom_w), // Port B write
- DEVCB_HANDLER(aliencha_dip_w) // Port C write
- },
- {
- DEVCB_INPUT_PORT("P1"), // Port A read
- DEVCB_INPUT_PORT("P2"), // Port B read
- DEVCB_INPUT_PORT("COIN"), // Port C read
- DEVCB_HANDLER(fake_w), // Port A write
- DEVCB_HANDLER(fake_w), // Port B write
- DEVCB_HANDLER(fake_w) // Port C write
- }
+ DEVCB_HANDLER(aliencha_dip_r), /* Port A read */
+ DEVCB_HANDLER(fake2_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(aliencha_eeprom_w), /* Port B write */
+ DEVCB_INPUT_PORT("SERVICE"), /* Port C read */
+ DEVCB_HANDLER(aliencha_dip_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( aliencha_ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("P1"), /* Port A read */
+ DEVCB_HANDLER(fake_w), /* Port A write */
+ DEVCB_INPUT_PORT("P2"), /* Port B read */
+ DEVCB_HANDLER(fake_w), /* Port B write */
+ DEVCB_INPUT_PORT("COIN"), /* Port C read */
+ DEVCB_HANDLER(fake_w) /* Port C write */
};
+
static void soundirq(device_t *device, int state)
{
cputag_set_input_line(device->machine(), "soundcpu", INPUT_LINE_IRQ0, state);
@@ -666,8 +666,8 @@ static MACHINE_CONFIG_START( lordgun, lordgun_state )
MCFG_CPU_PROGRAM_MAP(lordgun_soundmem_map)
MCFG_CPU_IO_MAP(lordgun_soundio_map)
- MCFG_PPI8255_ADD( "ppi8255_0", lordgun_ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", lordgun_ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", lordgun_ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", lordgun_ppi8255_1_intf )
MCFG_EEPROM_93C46_ADD("eeprom")
@@ -709,8 +709,8 @@ static MACHINE_CONFIG_START( aliencha, lordgun_state )
MCFG_CPU_PROGRAM_MAP(lordgun_soundmem_map)
MCFG_CPU_IO_MAP(aliencha_soundio_map)
- MCFG_PPI8255_ADD( "ppi8255_0", aliencha_ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", aliencha_ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", aliencha_ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", aliencha_ppi8255_1_intf )
MCFG_EEPROM_93C46_ADD("eeprom")
diff --git a/src/mame/drivers/lucky74.c b/src/mame/drivers/lucky74.c
index a01160a575e..562546514b2 100644
--- a/src/mame/drivers/lucky74.c
+++ b/src/mame/drivers/lucky74.c
@@ -671,7 +671,7 @@
#include "sound/ay8910.h"
#include "sound/sn76496.h"
#include "sound/msm5205.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/nvram.h"
#include "lucky74.lh"
#include "includes/lucky74.h"
@@ -809,11 +809,11 @@ static ADDRESS_MAP_START( lucky74_map, AS_PROGRAM, 8, lucky74_state )
AM_RANGE(0xd800, 0xdfff) AM_RAM_WRITE(lucky74_fg_colorram_w) AM_SHARE("fg_colorram") /* VRAM1-2 */
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(lucky74_bg_videoram_w) AM_SHARE("bg_videoram") /* VRAM2-1 */
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(lucky74_bg_colorram_w) AM_SHARE("bg_colorram") /* VRAM2-2 */
- AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports 0 & 1 */
- AM_RANGE(0xf080, 0xf083) AM_DEVREADWRITE_LEGACY("ppi8255_2", ppi8255_r, ppi8255_w) /* DSW 1, 2 & 3 */
- AM_RANGE(0xf0c0, 0xf0c3) AM_DEVREADWRITE_LEGACY("ppi8255_3", ppi8255_r, ppi8255_w) /* DSW 4 */
+ AM_RANGE(0xf000, 0xf003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports 0 & 1 */
+ AM_RANGE(0xf080, 0xf083) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* DSW 1, 2 & 3 */
+ AM_RANGE(0xf0c0, 0xf0c3) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* DSW 4 */
AM_RANGE(0xf100, 0xf100) AM_DEVWRITE_LEGACY("sn1", sn76496_w) /* SN76489 #1 */
- AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports 2 & 4 */
+ AM_RANGE(0xf200, 0xf203) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports 2 & 4 */
AM_RANGE(0xf300, 0xf300) AM_DEVWRITE_LEGACY("sn2", sn76496_w) /* SN76489 #2 */
AM_RANGE(0xf400, 0xf400) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w) /* YM2149 control */
AM_RANGE(0xf500, 0xf500) AM_DEVWRITE_LEGACY("sn3", sn76496_w) /* SN76489 #3 */
@@ -1162,40 +1162,45 @@ static void lucky74_adpcm_int(device_t *device)
Since MAME doesn't support it yet, I replaced both 82C255
with 4x 8255...
*/
-static const ppi8255_interface ppi8255_intf[4] =
+
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- { /* A & B set as input */
- DEVCB_INPUT_PORT("IN0"), /* Port A read, IN0 */
- DEVCB_INPUT_PORT("IN1"), /* Port B read, IN1 */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C writes: 0x00 after reset, 0xff during game, and 0xfd when tap F2 for percentage and run count */
- },
- { /* A & C set as input */
- DEVCB_INPUT_PORT("IN2"), /* Port A read, IN2 */
- DEVCB_NULL, /* Port B read */
- DEVCB_INPUT_PORT("IN4"), /* Port C read, IN4 */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- { /* A, B & C set as input */
- DEVCB_INPUT_PORT("DSW1"), /* Port A read, DSW1 */
- DEVCB_INPUT_PORT("DSW2"), /* Port B read, DSW2 */
- DEVCB_INPUT_PORT("DSW3"), /* Port C read, DSW3 */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- { /* A set as input */
- DEVCB_INPUT_PORT("DSW4"), /* Port A read, DSW4 */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_HANDLER(lamps_a_w), /* Port B write, LAMPSA */
- DEVCB_HANDLER(lamps_b_w) /* Port C write, LAMPSB */
- }
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write: 0x00 after reset, 0xff during game, and 0xfd when tap F2 for percentage and run count */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("IN2"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN4"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_2_intf )
+{
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("DSW2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("DSW3"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_3_intf )
+{
+ DEVCB_INPUT_PORT("DSW4"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(lamps_a_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(lamps_b_w) /* Port C write */
};
@@ -1237,10 +1242,10 @@ static MACHINE_CONFIG_START( lucky74, lucky74_state )
MCFG_SOUND_START(lucky74)
/* 2x 82c255 (4x 8255) */
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
- MCFG_PPI8255_ADD( "ppi8255_2", ppi8255_intf[2] )
- MCFG_PPI8255_ADD( "ppi8255_3", ppi8255_intf[3] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
+ MCFG_I8255A_ADD( "ppi8255_2", ppi8255_2_intf )
+ MCFG_I8255A_ADD( "ppi8255_3", ppi8255_3_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/merit.c b/src/mame/drivers/merit.c
index 415e765d096..1f0214f37b5 100644
--- a/src/mame/drivers/merit.c
+++ b/src/mame/drivers/merit.c
@@ -40,7 +40,7 @@ Notes: it's important that "user1" is 0xa0000 bytes with empty space filled
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
#include "video/mc6845.h"
#include "machine/nvram.h"
@@ -357,8 +357,8 @@ CUSTOM_INPUT_MEMBER(merit_state::rndbit_r)
static ADDRESS_MAP_START( pitboss_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x5fff) AM_ROM
AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -373,8 +373,8 @@ static ADDRESS_MAP_START( casino5_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x6000, 0x6fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x7000, 0x7000) AM_WRITE(casino5_bank_w)
AM_RANGE(0x7001, 0x7fff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -385,8 +385,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( bigappg_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -397,8 +397,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( dodge_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -417,8 +417,8 @@ static ADDRESS_MAP_START( trvwhiz_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x5400, 0x54ff) AM_WRITE(low_offset_w)
AM_RANGE(0x5800, 0x58ff) AM_WRITE(med_offset_w)
AM_RANGE(0x6000, 0x67ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xa000, 0xa003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc000, 0xc003) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_MIRROR(0x05f0) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -435,8 +435,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( phrcraze_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc00c, 0xc00f) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
+ AM_RANGE(0xc00c, 0xc00f) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
@@ -456,8 +456,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( tictac_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
@@ -477,8 +477,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( trvwhziv_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xa000, 0xbfff) AM_RAM
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
@@ -493,8 +493,8 @@ static ADDRESS_MAP_START( dtrvwz5_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0xb000, 0xb0ff) AM_ROM /* protection? code jumps here */
- AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_MIRROR(0x1df0) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xce00, 0xceff) AM_READWRITE(questions_r, high_offset_w)
AM_RANGE(0xd600, 0xd6ff) AM_WRITE(low_offset_w)
AM_RANGE(0xda00, 0xdaff) AM_WRITE(med_offset_w)
@@ -509,8 +509,8 @@ static ADDRESS_MAP_START( couple_map, AS_PROGRAM, 8, merit_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0x8000, 0x9fff) AM_ROMBANK("bank1")
AM_RANGE(0xa000, 0xbfff) AM_RAM AM_SHARE("backup_ram")
- AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xc004, 0xc007) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xc008, 0xc00b) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("crtc", mc6845_device, address_w)
AM_RANGE(0xe001, 0xe001) AM_DEVWRITE("crtc", mc6845_device, register_w)
AM_RANGE(0xe800, 0xefff) AM_RAM AM_SHARE("raattr")
@@ -1158,46 +1158,37 @@ static INPUT_PORTS_START( couplep )
INPUT_PORTS_END
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- {
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- {
- DEVCB_INPUT_PORT("DSW"), /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_HANDLER(led1_w), /* Port B write */
- DEVCB_HANDLER(misc_w) /* Port C write */
- }
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
-static const ppi8255_interface ppi8255_couple_intf[2] =
+static I8255A_INTERFACE( ppi8255_1_intf )
{
- {
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- {
- DEVCB_INPUT_PORT("DSW"), /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_HANDLER(led1_w), /* Port B write */
- DEVCB_HANDLER(misc_couple_w) /* Port C write */
- }
+ DEVCB_INPUT_PORT("DSW"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(led1_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(misc_w) /* Port C write */
};
+static I8255A_INTERFACE( couple_ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("DSW"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(led1_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(misc_couple_w)/* Port C write */
+};
+
+
static const ay8910_interface merit_ay8912_interface =
{
AY8910_LEGACY_OUTPUT,
@@ -1226,8 +1217,8 @@ static MACHINE_CONFIG_START( pitboss, merit_state )
MCFG_CPU_PROGRAM_MAP(pitboss_map)
MCFG_CPU_IO_MAP(trvwhiz_io_map)
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_MACHINE_START(merit)
/* video hardware */
@@ -1315,10 +1306,8 @@ static MACHINE_CONFIG_DERIVED( couple, pitboss )
MCFG_CPU_PROGRAM_MAP(couple_map)
MCFG_CPU_IO_MAP(tictac_io_map)
- MCFG_DEVICE_MODIFY("ppi8255_0")
- MCFG_DEVICE_CONFIG( ppi8255_couple_intf[0])
- MCFG_DEVICE_MODIFY("ppi8255_1")
- MCFG_DEVICE_CONFIG( ppi8255_couple_intf[1])
+ MCFG_DEVICE_REMOVE("ppi8255_1")
+ MCFG_I8255A_ADD( "ppi8255_1", couple_ppi8255_1_intf )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/meritm.c b/src/mame/drivers/meritm.c
index c908d94d5ad..75cc7c109d2 100644
--- a/src/mame/drivers/meritm.c
+++ b/src/mame/drivers/meritm.c
@@ -104,7 +104,7 @@ Not all regional versions are available for each Megatouch series
#include "cpu/z80/z80daisy.h"
#include "sound/ay8910.h"
#include "video/v9938.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/z80pio.h"
#include "machine/pc16552d.h"
#include "machine/microtch.h"
@@ -591,7 +591,7 @@ static ADDRESS_MAP_START( meritm_crt250_io_map, AS_IO, 8, meritm_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_LEGACY("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE_LEGACY("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x80, 0x80) AM_DEVREAD_LEGACY("aysnd", ay8910_r)
@@ -603,7 +603,7 @@ static ADDRESS_MAP_START( meritm_crt250_crt258_io_map, AS_IO, 8, meritm_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_LEGACY("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE_LEGACY("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x60, 0x67) AM_READWRITE_LEGACY(pc16552d_0_r,pc16552d_0_w)
@@ -624,7 +624,7 @@ static ADDRESS_MAP_START( meritm_io_map, AS_IO, 8, meritm_state )
AM_RANGE(0x01, 0x01) AM_WRITE(watchdog_reset_w)
AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("v9938_0", v9938_device, read, write)
AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("v9938_1", v9938_device, read, write)
- AM_RANGE(0x30, 0x33) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x30, 0x33) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x40, 0x43) AM_DEVREADWRITE_LEGACY("z80pio_0", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x50, 0x53) AM_DEVREADWRITE_LEGACY("z80pio_1", z80pio_cd_ba_r, z80pio_cd_ba_w)
AM_RANGE(0x60, 0x67) AM_READWRITE_LEGACY(pc16552d_0_r,pc16552d_0_w)
@@ -772,24 +772,24 @@ static WRITE8_DEVICE_HANDLER(meritm_crt250_port_b_w)
output_set_value("P1 CANCEL LAMP", !BIT(data,6));
}
-static const ppi8255_interface crt260_ppi8255_intf =
+static I8255A_INTERFACE( crt260_ppi8255_intf )
{
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_HANDLER(meritm_8255_port_c_r), /* Port C read */
- DEVCB_NULL, /* Port A write (used) */
- DEVCB_NULL, /* Port B write (used LMP x DRIVE) */
- DEVCB_NULL /* Port C write */
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_HANDLER(meritm_8255_port_c_r),/* Port C read */
+ DEVCB_NULL /* Port C write */
};
-static const ppi8255_interface crt250_ppi8255_intf =
+static I8255A_INTERFACE( crt250_ppi8255_intf )
{
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_HANDLER(meritm_8255_port_c_r), /* Port C read */
- DEVCB_NULL, /* Port A write (used) */
- DEVCB_HANDLER(meritm_crt250_port_b_w), /* Port B write (used LMP x DRIVE) */
- DEVCB_NULL /* Port C write */
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(meritm_crt250_port_b_w),/* Port B write (used LMP x DRIVE) */
+ DEVCB_HANDLER(meritm_8255_port_c_r),/* Port C read */
+ DEVCB_NULL /* Port C write */
};
/*************************************
@@ -1062,7 +1062,7 @@ static MACHINE_CONFIG_START( meritm_crt250, meritm_state )
MCFG_MACHINE_START(meritm_crt250)
- MCFG_PPI8255_ADD( "ppi8255", crt250_ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", crt250_ppi8255_intf )
MCFG_Z80PIO_ADD( "z80pio_0", SYSTEM_CLK/6, meritm_audio_pio_intf )
MCFG_Z80PIO_ADD( "z80pio_1", SYSTEM_CLK/6, meritm_io_pio_intf )
@@ -1119,7 +1119,8 @@ static MACHINE_CONFIG_DERIVED( meritm_crt260, meritm_crt250 )
MCFG_CPU_PROGRAM_MAP(meritm_map)
MCFG_CPU_IO_MAP(meritm_io_map)
- MCFG_PPI8255_RECONFIG( "ppi8255", crt260_ppi8255_intf )
+ MCFG_DEVICE_REMOVE("ppi8255")
+ MCFG_I8255A_ADD( "ppi8255", crt260_ppi8255_intf )
MCFG_WATCHDOG_TIME_INIT(attotime::from_msec(1200)) // DS1232, TD connected to VCC
MCFG_MACHINE_START(meritm_crt260)
diff --git a/src/mame/drivers/pcxt.c b/src/mame/drivers/pcxt.c
index 80669c8be39..1254b756c83 100644
--- a/src/mame/drivers/pcxt.c
+++ b/src/mame/drivers/pcxt.c
@@ -57,7 +57,7 @@ the main program is 9th October 1990.
#include "emu.h"
#include "cpu/i86/i86.h"
#include "machine/pit8253.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/8237dma.h"
#include "machine/pic8259.h"
#include "machine/mc146818.h"
@@ -340,27 +340,27 @@ static WRITE8_DEVICE_HANDLER( sys_reset_w )
cputag_set_input_line(device->machine(), "maincpu", INPUT_LINE_RESET, PULSE_LINE);
}
+static I8255A_INTERFACE( ppi8255_0_intf )
+{
+ DEVCB_HANDLER(port_a_r), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_HANDLER(port_b_r), /* Port B read */
+ DEVCB_HANDLER(port_b_w), /* Port B write */
+ DEVCB_HANDLER(port_c_r), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
-static const ppi8255_interface filetto_ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_1_intf )
{
- {
- DEVCB_HANDLER(port_a_r), /* Port A read */
- DEVCB_HANDLER(port_b_r), /* Port B read */
- DEVCB_HANDLER(port_c_r), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_HANDLER(port_b_w), /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_HANDLER(wss_1_w), /* Port A write */
- DEVCB_HANDLER(wss_2_w), /* Port B write */
- DEVCB_HANDLER(sys_reset_w) /* Port C write */
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(wss_1_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(wss_2_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(sys_reset_w) /* Port C write */
};
+
/*Floppy Disk Controller 765 device*/
/*Currently we only emulate it at a point that the BIOS will pass the checks*/
@@ -547,8 +547,8 @@ static ADDRESS_MAP_START( pcxt_io_common, AS_IO, 8, pcxt_state )
AM_RANGE(0x0000, 0x000f) AM_DEVREADWRITE_LEGACY("dma8237_1", i8237_r, i8237_w ) //8237 DMA Controller
AM_RANGE(0x0020, 0x002f) AM_DEVREADWRITE_LEGACY("pic8259_1", pic8259_r, pic8259_w ) //8259 Interrupt control
AM_RANGE(0x0040, 0x0043) AM_DEVREADWRITE_LEGACY("pit8253", pit8253_r, pit8253_w) //8253 PIT
- AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) //PPI 8255
- AM_RANGE(0x0064, 0x0066) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) //PPI 8255
+ AM_RANGE(0x0060, 0x0063) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) //PPI 8255
+ AM_RANGE(0x0064, 0x0066) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) //PPI 8255
AM_RANGE(0x0070, 0x007f) AM_DEVREADWRITE("rtc", mc146818_device, read, write)
AM_RANGE(0x0080, 0x0087) AM_READWRITE(dma_page_select_r,dma_page_select_w)
AM_RANGE(0x00a0, 0x00af) AM_DEVREADWRITE_LEGACY("pic8259_2", pic8259_r, pic8259_w )
@@ -727,8 +727,8 @@ static MACHINE_CONFIG_START( filetto, pcxt_state )
MCFG_PIT8253_ADD( "pit8253", pc_pit8253_config )
- MCFG_PPI8255_ADD( "ppi8255_0", filetto_ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", filetto_ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_I8237_ADD( "dma8237_1", XTAL_14_31818MHz/3, dma8237_1_config )
diff --git a/src/mame/drivers/pipeline.c b/src/mame/drivers/pipeline.c
index e35f64602cb..9a671db5359 100644
--- a/src/mame/drivers/pipeline.c
+++ b/src/mame/drivers/pipeline.c
@@ -67,7 +67,7 @@ Stephh's notes (based on the games Z80 code and some tests) :
#include "cpu/z80/z80.h"
#include "machine/z80ctc.h"
#include "sound/2203intf.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "cpu/z80/z80daisy.h"
#include "cpu/m6805/m6805.h"
@@ -193,8 +193,8 @@ static ADDRESS_MAP_START( cpu0_mem, AS_PROGRAM, 8, pipeline_state )
AM_RANGE(0x8000, 0x87ff) AM_RAM
AM_RANGE(0x8800, 0x97ff) AM_RAM_WRITE(vram1_w) AM_SHARE("vram1")
AM_RANGE(0x9800, 0xa7ff) AM_RAM_WRITE(vram2_w) AM_SHARE("vram2")
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xb830, 0xb830) AM_NOP
AM_RANGE(0xb840, 0xb840) AM_NOP
ADDRESS_MAP_END
@@ -202,7 +202,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( cpu1_mem, AS_PROGRAM, 8, pipeline_state )
AM_RANGE(0x0000, 0x7fff) AM_ROM
AM_RANGE(0xc000, 0xc7ff) AM_RAM
- AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE_LEGACY("ppi8255_2", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xe000, 0xe003) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write)
ADDRESS_MAP_END
static ADDRESS_MAP_START( sound_port, AS_IO, 8, pipeline_state )
@@ -326,32 +326,34 @@ static const z80_daisy_config daisy_chain_sound[] =
{ NULL }
};
-static const ppi8255_interface ppi8255_intf[3] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- {
- DEVCB_INPUT_PORT("P1"), /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */ /* related to sound/music : check code at 0x1c0a */
- DEVCB_HANDLER(vidctrl_w) /* Port C write */
- },
- {
- DEVCB_INPUT_PORT("DSW1"), /* Port A read */
- DEVCB_INPUT_PORT("DSW2"), /* Port B read */
- DEVCB_HANDLER(protection_r), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(protection_w) /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- }
+ DEVCB_INPUT_PORT("P1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */ // related to sound/music : check code at 0x1c0a
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(vidctrl_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("DSW2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_HANDLER(protection_r), /* Port C read */
+ DEVCB_HANDLER(protection_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_2_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
};
static const ym2203_interface ym2203_config =
@@ -400,9 +402,9 @@ static MACHINE_CONFIG_START( pipeline, pipeline_state )
MCFG_Z80CTC_ADD( "ctc", 7372800/2 /* same as "audiocpu" */, ctc_intf )
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
- MCFG_PPI8255_ADD( "ppi8255_2", ppi8255_intf[2] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
+ MCFG_I8255A_ADD( "ppi8255_2", ppi8255_2_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/rgum.c b/src/mame/drivers/rgum.c
index 3023a2d01f8..a41236e4585 100644
--- a/src/mame/drivers/rgum.c
+++ b/src/mame/drivers/rgum.c
@@ -15,7 +15,7 @@ The ppi at 3000-3003 seems to be a dual port communication thing with the z80.
#include "cpu/z80/z80.h"
#include "cpu/m6502/m6502.h"
#include "video/mc6845.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
@@ -73,7 +73,7 @@ static ADDRESS_MAP_START( rgum_map, AS_PROGRAM, 8, rgum_state )
AM_RANGE(0x2801, 0x2801) AM_READNOP //read but value discarded?
AM_RANGE(0x2803, 0x2803) AM_READNOP
- AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("vram")
AM_RANGE(0x5000, 0x57ff) AM_RAM AM_SHARE("cram")
@@ -242,16 +242,17 @@ static const mc6845_interface mc6845_intf =
NULL /* update address callback */
};
-static const ppi8255_interface ppi8255_intf =
+static I8255A_INTERFACE( ppi8255_intf )
{
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
+
static const ay8910_interface ay8910_config =
{
AY8910_LEGACY_OUTPUT,
@@ -278,7 +279,7 @@ static MACHINE_CONFIG_START( rgum, rgum_state )
MCFG_MC6845_ADD("crtc", MC6845, 24000000/16, mc6845_intf) /* unknown clock & type, hand tuned to get ~50 fps (?) */
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
MCFG_GFXDECODE(rgum)
MCFG_PALETTE_LENGTH(0x100)
diff --git a/src/mame/drivers/sfkick.c b/src/mame/drivers/sfkick.c
index e919a7d93e5..8991fad78a8 100644
--- a/src/mame/drivers/sfkick.c
+++ b/src/mame/drivers/sfkick.c
@@ -54,7 +54,7 @@ YM2203C
#include "emu.h"
#include "cpu/z80/z80.h"
#include "video/v9938.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/2203intf.h"
@@ -334,7 +334,7 @@ static ADDRESS_MAP_START( sfkick_io_map, AS_IO, 8, sfkick_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE( 0xa0, 0xa7) AM_WRITE(soundlatch_byte_w )
AM_RANGE( 0x98, 0x9b) AM_DEVREADWRITE( "v9938", v9938_device, read, write)
- AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE( 0xa8, 0xab) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE( 0xb4, 0xb5) AM_RAM /* loopback ? req by sfkicka (MSX Bios leftover)*/
ADDRESS_MAP_END
@@ -355,17 +355,17 @@ static WRITE8_DEVICE_HANDLER ( ppi_port_c_w )
state->m_input_mux=data;
}
-static const ppi8255_interface ppi8255_intf =
+static I8255A_INTERFACE( ppi8255_intf )
{
- DEVCB_NULL,
- DEVCB_HANDLER(ppi_port_b_r),
- DEVCB_NULL,
- DEVCB_HANDLER(ppi_port_a_w),
- DEVCB_NULL,
- DEVCB_HANDLER(ppi_port_c_w)
-
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(ppi_port_a_w), /* Port A write */
+ DEVCB_HANDLER(ppi_port_b_r), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(ppi_port_c_w) /* Port C write */
};
+
static INPUT_PORTS_START( sfkick )
PORT_START("IN0")
PORT_BIT( 0x3f, IP_ACTIVE_LOW, IPT_UNUSED ) /* unused ? */
@@ -494,7 +494,7 @@ static MACHINE_CONFIG_START( sfkick, sfkick_state )
MCFG_PALETTE_LENGTH(512)
- MCFG_PPI8255_ADD( "ppi8255", ppi8255_intf )
+ MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
MCFG_MACHINE_RESET(sfkick)
diff --git a/src/mame/drivers/skylncr.c b/src/mame/drivers/skylncr.c
index 8f577b93394..8c4d0037f07 100644
--- a/src/mame/drivers/skylncr.c
+++ b/src/mame/drivers/skylncr.c
@@ -35,7 +35,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/nvram.h"
@@ -420,8 +420,8 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( io_map_skylncr, AS_IO, 8, skylncr_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x03) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */
+ AM_RANGE(0x00, 0x03) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
AM_RANGE(0x20, 0x20) AM_WRITE(skylncr_coin_w )
@@ -657,24 +657,24 @@ INPUT_PORTS_END
* PPI 8255 (x2) Interface *
**************************************/
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- { /* A, B & C set as input */
- DEVCB_INPUT_PORT("IN1"), /* Port A read */
- DEVCB_INPUT_PORT("IN2"), /* Port B read */
- DEVCB_INPUT_PORT("DSW1"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- { /* A, B & C set as input */
- DEVCB_INPUT_PORT("DSW2"), /* Port A read */
- DEVCB_INPUT_PORT("IN3"), /* Port B read */
- DEVCB_INPUT_PORT("IN4"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- }
+ DEVCB_INPUT_PORT("IN1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN2"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("DSW1"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("DSW2"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN3"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN4"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
@@ -716,8 +716,8 @@ static MACHINE_CONFIG_START( skylncr, skylncr_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* 1x M5M82C255, or 2x PPI8255 */
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/slotcarn.c b/src/mame/drivers/slotcarn.c
index 0d7f77195e1..6b759312707 100644
--- a/src/mame/drivers/slotcarn.c
+++ b/src/mame/drivers/slotcarn.c
@@ -17,7 +17,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "video/mc6845.h"
#define MASTER_CLOCK (XTAL_10MHz)
@@ -192,9 +192,9 @@ static ADDRESS_MAP_START( slotcarn_map, AS_PROGRAM, 8, slotcarn_state )
AM_RANGE(0xb000, 0xb000) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_w)
AM_RANGE(0xb100, 0xb100) AM_DEVREADWRITE_LEGACY("aysnd", ay8910_r, ay8910_data_w)
- AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w) /* Input Ports */
- AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w) /* Input Ports */
- AM_RANGE(0xbc00, 0xbc03) AM_DEVREADWRITE_LEGACY("ppi8255_2", ppi8255_r, ppi8255_w) /* Input/Output Ports */
+ AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */
+ AM_RANGE(0xba00, 0xba03) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */
+ AM_RANGE(0xbc00, 0xbc03) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */
AM_RANGE(0xc000, 0xc000) AM_READ_PORT("DSW3")
AM_RANGE(0xc400, 0xc400) AM_READ_PORT("DSW4")
@@ -550,32 +550,34 @@ static MACHINE_START(merit)
* PPI 8255 (x3) Interfaces *
***************************************/
-static const ppi8255_interface scarn_ppi8255_intf[3] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- { /* A, B & C set as input */
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- { /* A set as input */
- DEVCB_INPUT_PORT("DSW1"), /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- { /* A & B set as input */
- DEVCB_INPUT_PORT("IN3"), /* Port A read */
- DEVCB_INPUT_PORT("IN4"), /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- }
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("DSW1"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_2_intf )
+{
+ DEVCB_INPUT_PORT("IN3"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN4"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL /* Port C write */
};
@@ -606,9 +608,9 @@ static MACHINE_CONFIG_START( slotcarn, slotcarn_state )
MCFG_CPU_IO_MAP(spielbud_io_map)
/* 3x 8255 */
- MCFG_PPI8255_ADD( "ppi8255_0", scarn_ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", scarn_ppi8255_intf[1] )
- MCFG_PPI8255_ADD( "ppi8255_2", scarn_ppi8255_intf[2] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
+ MCFG_I8255A_ADD( "ppi8255_2", ppi8255_2_intf )
MCFG_MACHINE_START(merit)
diff --git a/src/mame/drivers/sms.c b/src/mame/drivers/sms.c
index 7312bf54a24..cab5c3b3a85 100644
--- a/src/mame/drivers/sms.c
+++ b/src/mame/drivers/sms.c
@@ -216,7 +216,7 @@ U145 1Brown PAL14H4CN
#include "cpu/i86/i86.h"
#include "cpu/z80/z80.h"
#include "sound/ay8910.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/nvram.h"
@@ -408,26 +408,27 @@ static WRITE8_DEVICE_HANDLER(ppi0_b_w)
coin_lockout_w(device->machine(), 1, BIT(data,4));
}
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_HANDLER(ppi0_c_r), /* Port C read */
- DEVCB_HANDLER(ppi0_a_w), /* Port A write */
- DEVCB_HANDLER(ppi0_b_w), /* Port B write */
- DEVCB_NULL /* Port C write */
- },
- {
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_NULL /* Port C write */
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(ppi0_a_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(ppi0_b_w), /* Port B write */
+ DEVCB_HANDLER(ppi0_c_r), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
+};
+
+
/*************************************
*
* Video
@@ -497,7 +498,7 @@ static PALETTE_INIT( sms )
static ADDRESS_MAP_START( sms_map, AS_PROGRAM, 8, smsmfg_state )
AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
- AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x00800, 0x00803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x01000, 0x01007) AM_WRITE(video_w)
AM_RANGE(0x01800, 0x01803) AM_READWRITE(link_r, link_w)
AM_RANGE(0x04000, 0x07fff) AM_ROMBANK("bank1")
@@ -509,7 +510,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sureshot_map, AS_PROGRAM, 8, smsmfg_state )
AM_RANGE(0x00000, 0x007ff) AM_RAM AM_SHARE("nvram")
AM_RANGE(0x02000, 0x02007) AM_WRITE(video_w)
- AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x03000, 0x03003) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
AM_RANGE(0x03800, 0x03803) AM_READWRITE(link_r, link_w)
AM_RANGE(0x08000, 0x0ffff) AM_ROM
AM_RANGE(0xf8000, 0xfffff) AM_ROM // mirror for vectors
@@ -518,7 +519,7 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, smsmfg_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x2000, 0x27ff) AM_RAM
- AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x3100, 0x3103) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0x3381, 0x3382) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w)
AM_RANGE(0x3400, 0x3400) AM_READ(z80_8088_r)
AM_RANGE(0x3500, 0x3501) AM_READWRITE(p03_r, p03_w)
@@ -564,8 +565,8 @@ static MACHINE_CONFIG_START( sms, smsmfg_state )
MCFG_MACHINE_START(sms)
MCFG_MACHINE_RESET(sms)
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
MCFG_NVRAM_ADD_0FILL("nvram")
diff --git a/src/mame/drivers/statriv2.c b/src/mame/drivers/statriv2.c
index 635124a1767..c73ced440da 100644
--- a/src/mame/drivers/statriv2.c
+++ b/src/mame/drivers/statriv2.c
@@ -71,7 +71,7 @@ quaquiz2 - no inputs, needs NVRAM
#include "emu.h"
#include "cpu/i8085/i8085.h"
#include "sound/ay8910.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "video/tms9927.h"
#include "machine/nvram.h"
@@ -270,22 +270,20 @@ static WRITE8_DEVICE_HANDLER( ppi_portc_hi_w )
*
*************************************/
-static const ppi8255_interface ppi8255_intf =
+static I8255A_INTERFACE( ppi8255_intf )
{
-/* PPI 8255 group A & B set to Mode 0.
- Port A, B and lower 4 bits of C set as Input.
- High 4 bits of C set as Output
-*/
- DEVCB_INPUT_PORT("IN0"), /* Port A read */
- DEVCB_INPUT_PORT("IN1"), /* Port B read */
- DEVCB_INPUT_PORT("IN2"), /* Port C read (Lower Nibble as Input) */
- DEVCB_NULL, /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(ppi_portc_hi_w) /* Port C write (High nibble as Output) */
+ /* PPI 8255 group A & B set to Mode 0.
+ Port A, B and lower 4 bits of C set as Input.
+ High 4 bits of C set as Output */
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_HANDLER(ppi_portc_hi_w) /* Port C write */
};
-
/*************************************
*
* Address maps
@@ -300,7 +298,7 @@ static ADDRESS_MAP_START( statriv2_map, AS_PROGRAM, 8, statriv2_state )
ADDRESS_MAP_END
static ADDRESS_MAP_START( statriv2_io_map, AS_IO, 8, statriv2_state )
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE_LEGACY("ppi", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x28, 0x2b) AM_READ(question_data_r) AM_WRITEONLY AM_SHARE("question_offset")
AM_RANGE(0xb0, 0xb1) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w)
AM_RANGE(0xb1, 0xb1) AM_DEVREAD_LEGACY("aysnd", ay8910_r)
@@ -310,7 +308,7 @@ ADDRESS_MAP_END
#ifdef UNUSED_CODE
static ADDRESS_MAP_START( statusbj_io, AS_IO, 8, statriv2_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x20, 0x23) AM_DEVREADWRITE_LEGACY("ppi", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x20, 0x23) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0xb0, 0xb1) AM_DEVWRITE_LEGACY("aysnd", ay8910_address_data_w)
AM_RANGE(0xb1, 0xb1) AM_DEVREAD_LEGACY("aysnd", ay8910_r)
AM_RANGE(0xc0, 0xcf) AM_DEVREADWRITE_LEGACY("tms", tms9927_r, tms9927_w)
@@ -602,7 +600,7 @@ static MACHINE_CONFIG_START( statriv2, statriv2_state )
MCFG_NVRAM_ADD_0FILL("nvram")
/* 1x 8255 */
- MCFG_PPI8255_ADD("ppi", ppi8255_intf)
+ MCFG_I8255A_ADD( "ppi8255", ppi8255_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/subsino.c b/src/mame/drivers/subsino.c
index 95ee82ee7fc..1422d6dc9d8 100644
--- a/src/mame/drivers/subsino.c
+++ b/src/mame/drivers/subsino.c
@@ -212,7 +212,7 @@
#include "emu.h"
#include "cpu/z180/z180.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "machine/subsino.h"
#include "sound/okim6295.h"
#include "sound/2413intf.h"
diff --git a/src/mame/drivers/taxidriv.c b/src/mame/drivers/taxidriv.c
index 3561e719b27..a23c56f59d3 100644
--- a/src/mame/drivers/taxidriv.c
+++ b/src/mame/drivers/taxidriv.c
@@ -11,7 +11,7 @@ OTHER: 5 * M5L8255AP
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "includes/taxidriv.h"
#include "sound/ay8910.h"
@@ -105,49 +105,54 @@ static WRITE8_DEVICE_HANDLER( p8910_0b_w )
state->m_s4 = data & 1;
}
+static I8255A_INTERFACE( ppi8255_0_intf )
+{
+ DEVCB_HANDLER(p0a_r), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(p0b_w), /* Port B write */
+ DEVCB_HANDLER(p0c_r), /* Port C read */
+ DEVCB_HANDLER(p0c_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(p1a_w), /* Port A write */
+ DEVCB_HANDLER(p1b_r), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_HANDLER(p1c_r), /* Port C read */
+ DEVCB_HANDLER(p1c_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_2_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(p2a_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(p2b_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(p2c_w) /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_3_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(p3a_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(p3b_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(p3c_w) /* Port C write */
+};
-static const ppi8255_interface ppi8255_intf[5] =
+static I8255A_INTERFACE( ppi8255_4_intf )
{
- {
- DEVCB_HANDLER(p0a_r), /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_HANDLER(p0c_r), /* Port C read */
- DEVCB_NULL, /* Port A write */
- DEVCB_HANDLER(p0b_w), /* Port B write */
- DEVCB_HANDLER(p0c_w) /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_HANDLER(p1b_r), /* Port B read */
- DEVCB_HANDLER(p1c_r), /* Port C read */
- DEVCB_HANDLER(p1a_w), /* Port A write */
- DEVCB_NULL, /* Port B write */
- DEVCB_HANDLER(p1c_w) /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_HANDLER(p2a_w), /* Port A write */
- DEVCB_HANDLER(p2b_w), /* Port B write */
- DEVCB_HANDLER(p2c_w) /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_HANDLER(p3a_w), /* Port A write */
- DEVCB_HANDLER(p3b_w), /* Port B write */
- DEVCB_HANDLER(p3c_w) /* Port C write */
- },
- {
- DEVCB_NULL, /* Port A read */
- DEVCB_NULL, /* Port B read */
- DEVCB_NULL, /* Port C read */
- DEVCB_HANDLER(p4a_w), /* Port A write */
- DEVCB_HANDLER(p4b_w), /* Port B write */
- DEVCB_HANDLER(p4c_w) /* Port C write */
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(p4a_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(p4b_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(p4c_w) /* Port C write */
};
@@ -166,10 +171,10 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, taxidriv_state )
AM_RANGE(0xe400, 0xebff) AM_WRITEONLY AM_SHARE("vram2") /* bg1 tilemap */
AM_RANGE(0xec00, 0xefff) AM_WRITEONLY AM_SHARE("vram0") /* fg tilemap */
AM_RANGE(0xf000, 0xf3ff) AM_WRITEONLY AM_SHARE("vram3") /* bg2 tilemap */
- AM_RANGE(0xf400, 0xf403) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0xf480, 0xf483) AM_DEVREADWRITE_LEGACY("ppi8255_2", ppi8255_r, ppi8255_w) /* "sprite1" placement */
- AM_RANGE(0xf500, 0xf503) AM_DEVREADWRITE_LEGACY("ppi8255_3", ppi8255_r, ppi8255_w) /* "sprite2" placement */
- AM_RANGE(0xf580, 0xf583) AM_DEVREADWRITE_LEGACY("ppi8255_4", ppi8255_r, ppi8255_w) /* "sprite3" placement */
+ AM_RANGE(0xf400, 0xf403) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0xf480, 0xf483) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* "sprite1" placement */
+ AM_RANGE(0xf500, 0xf503) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* "sprite2" placement */
+ AM_RANGE(0xf580, 0xf583) AM_DEVREADWRITE("ppi8255_4", i8255_device, read, write) /* "sprite3" placement */
//AM_RANGE(0xf780, 0xf781) AM_WRITEONLY /* more scroll registers? */
AM_RANGE(0xf782, 0xf787) AM_WRITEONLY AM_SHARE("scroll") /* bg scroll (three copies always identical) */
AM_RANGE(0xf800, 0xffff) AM_RAM
@@ -179,7 +184,7 @@ static ADDRESS_MAP_START( cpu2_map, AS_PROGRAM, 8, taxidriv_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x6000, 0x67ff) AM_RAM
AM_RANGE(0x8000, 0x87ff) AM_RAM
- AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0xa000, 0xa003) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
AM_RANGE(0xe000, 0xe000) AM_READ_PORT("DSW0")
AM_RANGE(0xe001, 0xe001) AM_READ_PORT("DSW1")
AM_RANGE(0xe002, 0xe002) AM_READ_PORT("DSW2")
@@ -389,11 +394,11 @@ static MACHINE_CONFIG_START( taxidriv, taxidriv_state )
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper */
/* synchronization of the CPUs */
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
- MCFG_PPI8255_ADD( "ppi8255_2", ppi8255_intf[2] )
- MCFG_PPI8255_ADD( "ppi8255_3", ppi8255_intf[3] )
- MCFG_PPI8255_ADD( "ppi8255_4", ppi8255_intf[4] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
+ MCFG_I8255A_ADD( "ppi8255_2", ppi8255_2_intf )
+ MCFG_I8255A_ADD( "ppi8255_3", ppi8255_3_intf )
+ MCFG_I8255A_ADD( "ppi8255_4", ppi8255_4_intf )
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/tcl.c b/src/mame/drivers/tcl.c
index 4bc5dc9efa7..67695a09d8a 100644
--- a/src/mame/drivers/tcl.c
+++ b/src/mame/drivers/tcl.c
@@ -42,7 +42,7 @@ Notes:
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
@@ -100,24 +100,24 @@ static GFXDECODE_START( tcl )
GFXDECODE_ENTRY( "gfx2", 0, charlayout2, 0, 16 ) /* wrong */
GFXDECODE_END
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- {
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL
- },
- {
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL
- }
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL, /* Port C write */
+};
+
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_NULL, /* Port C write */
};
@@ -140,8 +140,8 @@ static MACHINE_CONFIG_START( tcl, tcl_state )
MCFG_VIDEO_START(tcl)
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
diff --git a/src/mame/drivers/tx1.c b/src/mame/drivers/tx1.c
index e0be5af9c9d..b277964078b 100644
--- a/src/mame/drivers/tx1.c
+++ b/src/mame/drivers/tx1.c
@@ -41,7 +41,7 @@
#include "emu.h"
#include "cpu/z80/z80.h"
#include "cpu/i86/i86.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
#include "rendlay.h"
#include "includes/tx1.h"
@@ -467,25 +467,24 @@ READ8_MEMBER(tx1_state::bbjr_analog_r)
*************************************/
/* Buggy Boy uses an 8255 PPI instead of YM2149 ports for inputs! */
-static const ppi8255_interface buggyboy_ppi8255_intf =
+static I8255A_INTERFACE( buggyboy_ppi8255_intf )
{
- DEVCB_INPUT_PORT("PPI_PORTA"),
- DEVCB_NULL,
- DEVCB_INPUT_PORT("PPI_PORTC"),
- DEVCB_NULL,
- DEVCB_HANDLER(bb_coin_cnt_w),
- DEVCB_NULL,
+ DEVCB_INPUT_PORT("PPI_PORTA"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(bb_coin_cnt_w), /* Port B write */
+ DEVCB_INPUT_PORT("PPI_PORTC"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
-
-static const ppi8255_interface tx1_ppi8255_intf =
+static I8255A_INTERFACE( tx1_ppi8255_intf )
{
- DEVCB_HANDLER(tx1_ppi_porta_r),
- DEVCB_HANDLER(tx1_ppi_portb_r),
- DEVCB_INPUT_PORT("PPI_PORTC"),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_HANDLER(tx1_coin_cnt_w)
+ DEVCB_HANDLER(tx1_ppi_porta_r), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_HANDLER(tx1_ppi_portb_r), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("PPI_PORTC"), /* Port C read */
+ DEVCB_HANDLER(tx1_coin_cnt_w) /* Port C write */
};
@@ -530,7 +529,7 @@ static ADDRESS_MAP_START( tx1_sound_prg, AS_PROGRAM, 8, tx1_state )
AM_RANGE(0x0000, 0x1fff) AM_ROM
AM_RANGE(0x3000, 0x37ff) AM_RAM AM_MIRROR(0x800) AM_SHARE("z80_ram")
AM_RANGE(0x4000, 0x4000) AM_WRITE(z80_intreq_w)
- AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x5000, 0x5003) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x6000, 0x6003) AM_DEVREADWRITE_LEGACY("tx1", tx1_pit8253_r, tx1_pit8253_w)
AM_RANGE(0x7000, 0x7fff) AM_WRITE(tx1_ppi_latch_w)
AM_RANGE(0xb000, 0xbfff) AM_READWRITE(ts_r, ts_w)
@@ -597,7 +596,7 @@ static ADDRESS_MAP_START( buggyboy_sound_prg, AS_PROGRAM, 8, tx1_state )
AM_RANGE(0x0000, 0x3fff) AM_ROM
AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("z80_ram")
AM_RANGE(0x6000, 0x6001) AM_READ(bb_analog_r)
- AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE_LEGACY("ppi8255", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x6800, 0x6803) AM_DEVREADWRITE("ppi8255", i8255_device, read, write)
AM_RANGE(0x7000, 0x7003) AM_DEVREADWRITE_LEGACY("buggyboy", tx1_pit8253_r, tx1_pit8253_w)
AM_RANGE(0x7800, 0x7800) AM_WRITE(z80_intreq_w)
AM_RANGE(0xc000, 0xc7ff) AM_READWRITE(ts_r, ts_w)
@@ -706,7 +705,7 @@ static MACHINE_CONFIG_START( tx1, tx1_state )
MCFG_MACHINE_RESET(tx1)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_PPI8255_ADD("ppi8255", tx1_ppi8255_intf)
+ MCFG_I8255A_ADD("ppi8255", tx1_ppi8255_intf)
MCFG_PALETTE_LENGTH(256)
MCFG_PALETTE_INIT(tx1)
@@ -758,7 +757,7 @@ static MACHINE_CONFIG_START( buggyboy, tx1_state )
MCFG_MACHINE_RESET(buggyboy)
MCFG_NVRAM_ADD_0FILL("nvram")
- MCFG_PPI8255_ADD("ppi8255", buggyboy_ppi8255_intf)
+ MCFG_I8255A_ADD("ppi8255", buggyboy_ppi8255_intf)
MCFG_DEFAULT_LAYOUT(layout_triphsxs)
diff --git a/src/mame/drivers/vroulet.c b/src/mame/drivers/vroulet.c
index 901d9eed61d..0dc3d1f8531 100644
--- a/src/mame/drivers/vroulet.c
+++ b/src/mame/drivers/vroulet.c
@@ -36,7 +36,7 @@ Tomasz Slanina 20050225
#include "emu.h"
#include "cpu/z80/z80.h"
-#include "machine/8255ppi.h"
+#include "machine/i8255.h"
#include "sound/ay8910.h"
#include "machine/nvram.h"
@@ -138,8 +138,8 @@ static ADDRESS_MAP_START( vroulet_io_map, AS_IO, 8, vroulet_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x00, 0x00) AM_DEVREAD_LEGACY("aysnd", ay8910_r)
AM_RANGE(0x00, 0x01) AM_DEVWRITE_LEGACY("aysnd", ay8910_data_address_w)
- AM_RANGE(0x10, 0x13) AM_DEVREADWRITE_LEGACY("ppi8255_0", ppi8255_r, ppi8255_w)
- AM_RANGE(0x80, 0x83) AM_DEVREADWRITE_LEGACY("ppi8255_1", ppi8255_r, ppi8255_w)
+ AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write)
+ AM_RANGE(0x80, 0x83) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write)
ADDRESS_MAP_END
/* Input Ports */
@@ -257,26 +257,27 @@ static WRITE8_DEVICE_HANDLER( ppi8255_a_w ){}// watchdog ?
static WRITE8_DEVICE_HANDLER( ppi8255_b_w ){}// lamps ?
static WRITE8_DEVICE_HANDLER( ppi8255_c_w ){}
-static const ppi8255_interface ppi8255_intf[2] =
+static I8255A_INTERFACE( ppi8255_0_intf )
{
- {
- DEVCB_INPUT_PORT("IN0"), // Port A read
- DEVCB_INPUT_PORT("IN1"), // Port B read
- DEVCB_INPUT_PORT("IN2"), // Port C read
- DEVCB_NULL, // Port A write
- DEVCB_NULL, // Port B write
- DEVCB_NULL // Port C write
- },
- {
- DEVCB_NULL, // Port A read
- DEVCB_NULL, // Port B read
- DEVCB_NULL, // Port C read
- DEVCB_HANDLER(ppi8255_a_w), // Port A write
- DEVCB_HANDLER(ppi8255_b_w), // Port B write
- DEVCB_HANDLER(ppi8255_c_w) // Port C write
- }
+ DEVCB_INPUT_PORT("IN0"), /* Port A read */
+ DEVCB_NULL, /* Port A write */
+ DEVCB_INPUT_PORT("IN1"), /* Port B read */
+ DEVCB_NULL, /* Port B write */
+ DEVCB_INPUT_PORT("IN2"), /* Port C read */
+ DEVCB_NULL /* Port C write */
};
+static I8255A_INTERFACE( ppi8255_1_intf )
+{
+ DEVCB_NULL, /* Port A read */
+ DEVCB_HANDLER(ppi8255_a_w), /* Port A write */
+ DEVCB_NULL, /* Port B read */
+ DEVCB_HANDLER(ppi8255_b_w), /* Port B write */
+ DEVCB_NULL, /* Port C read */
+ DEVCB_HANDLER(ppi8255_c_w) /* Port C write */
+};
+
+
/* Machine Driver */
static MACHINE_CONFIG_START( vroulet, vroulet_state )
@@ -288,8 +289,8 @@ static MACHINE_CONFIG_START( vroulet, vroulet_state )
MCFG_NVRAM_ADD_1FILL("nvram")
- MCFG_PPI8255_ADD( "ppi8255_0", ppi8255_intf[0] )
- MCFG_PPI8255_ADD( "ppi8255_1", ppi8255_intf[1] )
+ MCFG_I8255A_ADD( "ppi8255_0", ppi8255_0_intf )
+ MCFG_I8255A_ADD( "ppi8255_1", ppi8255_1_intf )
// video hardware