summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/emu/bus/cbmiec/interpod.c16
-rw-r--r--src/emu/bus/ieee488/c2040.c46
-rw-r--r--src/emu/bus/ieee488/c8050.c71
-rw-r--r--src/emu/bus/ieee488/c8280.c36
-rw-r--r--src/emu/bus/ieee488/d9060.c35
-rw-r--r--src/emu/machine/6532riot.c85
-rw-r--r--src/emu/machine/6532riot.h50
-rw-r--r--src/mame/audio/exidy.c25
-rw-r--r--src/mame/audio/gottlieb.c19
-rw-r--r--src/mame/audio/starwars.c12
-rw-r--r--src/mame/drivers/firefox.c19
-rw-r--r--src/mame/drivers/gameplan.c14
-rw-r--r--src/mame/drivers/spectra.c19
-rw-r--r--src/mame/drivers/starwars.c7
-rw-r--r--src/mame/drivers/tomcat.c38
-rw-r--r--src/mame/drivers/tourtabl.c31
-rw-r--r--src/mame/includes/starwars.h3
-rw-r--r--src/mess/drivers/a2600.c24
-rw-r--r--src/mess/drivers/a7800.c10
-rw-r--r--src/mess/drivers/aim65.c15
-rw-r--r--src/mess/drivers/beta.c16
-rw-r--r--src/mess/drivers/junior.c19
-rw-r--r--src/mess/drivers/sym1.c14
-rw-r--r--src/mess/includes/a7800.h2
-rw-r--r--src/mess/machine/a7800.c10
-rw-r--r--src/mess/video/mikromik.c2
26 files changed, 254 insertions, 384 deletions
diff --git a/src/emu/bus/cbmiec/interpod.c b/src/emu/bus/cbmiec/interpod.c
index a41770e8588..a5cdb5a3dc4 100644
--- a/src/emu/bus/cbmiec/interpod.c
+++ b/src/emu/bus/cbmiec/interpod.c
@@ -122,20 +122,6 @@ ADDRESS_MAP_END
//-------------------------------------------------
-// riot6532_interface riot_intf
-//-------------------------------------------------
-
-static const riot6532_interface riot_intf =
-{
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL
-};
-
-
-//-------------------------------------------------
// MACHINE_DRIVER( interpod )
//-------------------------------------------------
@@ -144,7 +130,7 @@ static MACHINE_CONFIG_FRAGMENT( interpod )
MCFG_CPU_PROGRAM_MAP(interpod_mem)
MCFG_DEVICE_ADD(R6522_TAG, VIA6522, 1000000)
- MCFG_RIOT6532_ADD(R6532_TAG, 1000000, riot_intf)
+ MCFG_DEVICE_ADD(R6532_TAG, RIOT6532, 1000000)
MCFG_DEVICE_ADD(MC6850_TAG, ACIA6850, 0)
MCFG_CBM_IEEE488_ADD(NULL)
diff --git a/src/emu/bus/ieee488/c2040.c b/src/emu/bus/ieee488/c2040.c
index 42e42612399..868b066a9ab 100644
--- a/src/emu/bus/ieee488/c2040.c
+++ b/src/emu/bus/ieee488/c2040.c
@@ -153,7 +153,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
-// riot6532_interface riot0_intf uc1
+// riot6532 uc1
//-------------------------------------------------
READ8_MEMBER( c2040_device::dio_r )
@@ -196,18 +196,9 @@ WRITE8_MEMBER( c2040_device::dio_w )
m_bus->dio_w(this, data);
}
-static const riot6532_interface riot0_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, dio_r),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, dio_w),
- DEVCB_NULL
-};
-
//-------------------------------------------------
-// riot6532_interface riot1_intf ue1
+// riot6532 ue1
//-------------------------------------------------
READ8_MEMBER( c2040_device::riot1_pa_r )
@@ -334,15 +325,6 @@ WRITE8_MEMBER( c2040_device::riot1_pb_w )
output_set_led_value(LED_ERR, BIT(data, 5));
}
-static const riot6532_interface riot1_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, riot1_pa_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, riot1_pb_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, riot1_pa_w),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c2040_device, riot1_pb_w),
- DEVCB_CPU_INPUT_LINE(M6502_TAG, INPUT_LINE_IRQ0)
-};
-
WRITE8_MEMBER( c2040_device::via_pb_w )
{
@@ -467,8 +449,16 @@ static MACHINE_CONFIG_FRAGMENT( c2040 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
MCFG_CPU_PROGRAM_MAP(c2040_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_16MHz/16, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_16MHz/16, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_16MHz/16)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_16MHz/16)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c2040_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_16MHz/16)
@@ -513,8 +503,16 @@ static MACHINE_CONFIG_FRAGMENT( c4040 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
MCFG_CPU_PROGRAM_MAP(c2040_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_16MHz/16, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_16MHz/16, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_16MHz/16)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_16MHz/16)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c2040_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c2040_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c2040_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c2040_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_16MHz/16)
diff --git a/src/emu/bus/ieee488/c8050.c b/src/emu/bus/ieee488/c8050.c
index 1ad6cfa76b1..262b70aa693 100644
--- a/src/emu/bus/ieee488/c8050.c
+++ b/src/emu/bus/ieee488/c8050.c
@@ -262,7 +262,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
-// riot6532_interface riot0_intf uc1
+// riot6532 uc1
//-------------------------------------------------
READ8_MEMBER( c8050_device::dio_r )
@@ -305,18 +305,8 @@ WRITE8_MEMBER( c8050_device::dio_w )
m_bus->dio_w(this, data);
}
-static const riot6532_interface riot0_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, dio_r),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, dio_w),
- DEVCB_NULL
-};
-
-
//-------------------------------------------------
-// riot6532_interface riot1_intf ue1
+// riot6532 ue1
//-------------------------------------------------
READ8_MEMBER( c8050_device::riot1_pa_r )
@@ -443,15 +433,6 @@ WRITE8_MEMBER( c8050_device::riot1_pb_w )
output_set_led_value(LED_ERR, BIT(data, 5));
}
-static const riot6532_interface riot1_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, riot1_pa_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, riot1_pb_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, riot1_pa_w),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8050_device, riot1_pb_w),
- DEVCB_CPU_INPUT_LINE(M6502_TAG, INPUT_LINE_IRQ0)
-};
-
READ8_MEMBER( c8050_device::via_pa_r )
{
@@ -742,8 +723,16 @@ static MACHINE_CONFIG_FRAGMENT( c8050 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_12MHz/12, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_12MHz/12, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12)
@@ -786,8 +775,16 @@ static MACHINE_CONFIG_FRAGMENT( c8250 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_12MHz/12, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_12MHz/12, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12)
@@ -830,8 +827,16 @@ static MACHINE_CONFIG_FRAGMENT( c8250lp )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_12MHz/12, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_12MHz/12, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12)
@@ -874,8 +879,16 @@ static MACHINE_CONFIG_FRAGMENT( sfd1001 )
MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_12MHz/12)
MCFG_CPU_PROGRAM_MAP(c8050_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_12MHz/12, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_12MHz/12, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_12MHz/12)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8050_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c8050_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c8050_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8050_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6504_TAG, M6504, XTAL_12MHz/12)
diff --git a/src/emu/bus/ieee488/c8280.c b/src/emu/bus/ieee488/c8280.c
index 2d7f4a8de41..d4dd1891aae 100644
--- a/src/emu/bus/ieee488/c8280.c
+++ b/src/emu/bus/ieee488/c8280.c
@@ -116,7 +116,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
-// riot6532_interface riot0_intf
+// riot6532 0
//-------------------------------------------------
READ8_MEMBER( c8280_device::dio_r )
@@ -159,18 +159,8 @@ WRITE8_MEMBER( c8280_device::dio_w )
m_bus->dio_w(this, data);
}
-static const riot6532_interface riot0_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, dio_r),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, dio_w),
- DEVCB_NULL
-};
-
-
//-------------------------------------------------
-// riot6532_interface riot1_intf
+// riot6532 1
//-------------------------------------------------
READ8_MEMBER( c8280_device::riot1_pa_r )
@@ -298,16 +288,6 @@ WRITE8_MEMBER( c8280_device::riot1_pb_w )
}
-static const riot6532_interface riot1_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, riot1_pa_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, riot1_pb_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, riot1_pa_w),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, c8280_device, riot1_pb_w),
- DEVCB_CPU_INPUT_LINE(M6502_DOS_TAG, INPUT_LINE_IRQ0)
-};
-
-
//-------------------------------------------------
// wd17xx_interface fdc_intf
//-------------------------------------------------
@@ -325,8 +305,16 @@ static MACHINE_CONFIG_FRAGMENT( c8280 )
MCFG_CPU_ADD(M6502_DOS_TAG, M6502, XTAL_12MHz/8)
MCFG_CPU_PROGRAM_MAP(c8280_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_12MHz/8, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_12MHz/8, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_12MHz/8)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8280_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8280_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_12MHz/8)
+ MCFG_RIOT6532_IN_PA_CB(READ8(c8280_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(c8280_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(c8280_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(c8280_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_DOS_TAG, INPUT_LINE_IRQ0))
MCFG_CPU_ADD(M6502_FDC_TAG, M6502, XTAL_12MHz/8)
MCFG_CPU_PROGRAM_MAP(c8280_fdc_mem)
diff --git a/src/emu/bus/ieee488/d9060.c b/src/emu/bus/ieee488/d9060.c
index 21b12c5b880..055c8a1a81c 100644
--- a/src/emu/bus/ieee488/d9060.c
+++ b/src/emu/bus/ieee488/d9060.c
@@ -141,7 +141,7 @@ ADDRESS_MAP_END
//-------------------------------------------------
-// riot6532_interface riot0_intf
+// riot6532 0
//-------------------------------------------------
READ8_MEMBER( base_d9060_device::dio_r )
@@ -186,18 +186,8 @@ WRITE8_MEMBER( base_d9060_device::dio_w )
}
-static const riot6532_interface riot0_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, dio_r),
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, dio_w),
- DEVCB_NULL
-};
-
-
//-------------------------------------------------
-// riot6532_interface riot1_intf
+// riot6532 1
//-------------------------------------------------
READ8_MEMBER( base_d9060_device::riot1_pa_r )
@@ -324,15 +314,6 @@ WRITE8_MEMBER( base_d9060_device::riot1_pb_w )
output_set_led_value(LED_ERROR, !BIT(data, 5));
}
-static const riot6532_interface riot1_intf =
-{
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, riot1_pa_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, riot1_pb_r),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, riot1_pa_w),
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, base_d9060_device, riot1_pb_w),
- DEVCB_CPU_INPUT_LINE(M6502_DOS_TAG, INPUT_LINE_IRQ0)
-};
-
WRITE8_MEMBER( base_d9060_device::via_pb_w )
{
@@ -394,8 +375,16 @@ static MACHINE_CONFIG_FRAGMENT( d9060 )
MCFG_CPU_ADD(M6502_DOS_TAG, M6502, XTAL_4MHz/4)
MCFG_CPU_PROGRAM_MAP(d9060_main_mem)
- MCFG_RIOT6532_ADD(M6532_0_TAG, XTAL_4MHz/4, riot0_intf)
- MCFG_RIOT6532_ADD(M6532_1_TAG, XTAL_4MHz/4, riot1_intf)
+ MCFG_DEVICE_ADD(M6532_0_TAG, RIOT6532, XTAL_4MHz/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(base_d9060_device, dio_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(base_d9060_device, dio_w))
+
+ MCFG_DEVICE_ADD(M6532_1_TAG, RIOT6532, XTAL_4MHz/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(base_d9060_device, riot1_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(base_d9060_device, riot1_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(base_d9060_device, riot1_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(base_d9060_device, riot1_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_DOS_TAG, INPUT_LINE_IRQ0))
// controller
MCFG_CPU_ADD(M6502_HDC_TAG, M6502, XTAL_4MHz/4)
diff --git a/src/emu/machine/6532riot.c b/src/emu/machine/6532riot.c
index df0b3cffd34..25a7fe721ea 100644
--- a/src/emu/machine/6532riot.c
+++ b/src/emu/machine/6532riot.c
@@ -34,7 +34,6 @@ enum
-
/***************************************************************************
INTERNAL FUNCTIONS
***************************************************************************/
@@ -50,7 +49,7 @@ void riot6532_device::update_irqstate()
if (m_irq != irq)
{
- m_irq_func(irq);
+ m_irq_cb(irq);
m_irq = irq;
}
}
@@ -213,7 +212,7 @@ void riot6532_device::reg_w(UINT8 offset, UINT8 data)
else
{
/* A1 selects the port */
- riot6532_port *port = &m_port[(offset >> 1) & 1];
+ riot6532_port *port = &m_port[BIT(offset, 1)];
/* if A0 == 1, we are writing to the port's DDR */
if (offset & 1)
@@ -225,7 +224,10 @@ void riot6532_device::reg_w(UINT8 offset, UINT8 data)
else
{
port->m_out = data;
- port->m_out_func(0, data);
+ if (!BIT(offset, 1))
+ m_out_pa_cb((offs_t)0, data);
+ else
+ m_out_pb_cb((offs_t)0, data);
}
/* writes to port A need to update the PA7 state */
@@ -293,7 +295,7 @@ UINT8 riot6532_device::reg_r(UINT8 offset, bool debugger_access)
else
{
/* A1 selects the port */
- riot6532_port *port = &m_port[(offset >> 1) & 1];
+ riot6532_port *port = &m_port[BIT(offset, 1)];
/* if A0 == 1, we are reading the port's DDR */
if (offset & 1)
@@ -305,17 +307,17 @@ UINT8 riot6532_device::reg_r(UINT8 offset, bool debugger_access)
else
{
/* call the input callback if it exists */
- if (!port->m_in_func.isnull())
- {
- port->m_in = port->m_in_func(0);
+ if (!BIT(offset, 1))
+ port->m_in = m_in_pa_cb(0);
+ else
+ port->m_in = m_in_pb_cb(0);
- /* changes to port A need to update the PA7 state */
- if (port == &m_port[0])
+ /* changes to port A need to update the PA7 state */
+ if (port == &m_port[0])
+ {
+ if (!debugger_access)
{
- if ( ! debugger_access )
- {
- update_pa7_state();
- }
+ update_pa7_state();
}
}
@@ -397,56 +399,31 @@ UINT8 riot6532_device::portb_out_get()
//-------------------------------------------------
riot6532_device::riot6532_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock)
- : device_t(mconfig, RIOT6532, "6532 RIOT", tag, owner, clock, "riot6532", __FILE__)
- , m_irq(CLEAR_LINE)
- , m_pa7dir(0)
- , m_pa7prev(0)
+ : device_t(mconfig, RIOT6532, "6532 RIOT", tag, owner, clock, "riot6532", __FILE__),
+ m_in_pa_cb(*this),
+ m_out_pa_cb(*this),
+ m_in_pb_cb(*this),
+ m_out_pb_cb(*this),
+ m_irq_cb(*this),
+ m_irq(CLEAR_LINE),
+ m_pa7dir(0),
+ m_pa7prev(0)
{
memset(m_port, 0x00, sizeof(m_port));
}
-
-//-------------------------------------------------
-// device_config_complete - perform any
-// operations now that the configuration is
-// complete
-//-------------------------------------------------
-
-void riot6532_device::device_config_complete()
-{
- // inherit a copy of the static data
- const riot6532_interface *intf = reinterpret_cast<const riot6532_interface *>(static_config());
- if (intf != NULL)
- {
- *static_cast<riot6532_interface *>(this) = *intf;
- }
-
- // or initialize to defaults if none provided
- else
- {
- memset(&m_in_a_cb, 0, sizeof(m_in_a_cb));
- memset(&m_in_b_cb, 0, sizeof(m_in_b_cb));
- memset(&m_out_a_cb, 0, sizeof(m_out_a_cb));
- memset(&m_out_b_cb, 0, sizeof(m_out_b_cb));
- memset(&m_irq_cb, 0, sizeof(m_irq_cb));
- }
-}
-
-
/*-------------------------------------------------
device_start - device-specific startup
-------------------------------------------------*/
void riot6532_device::device_start()
{
- /* configure the ports */
- m_port[0].m_in_func.resolve(m_in_a_cb, *this);
- m_port[0].m_out_func.resolve(m_out_a_cb, *this);
- m_port[1].m_in_func.resolve(m_in_b_cb, *this);
- m_port[1].m_out_func.resolve(m_out_b_cb, *this);
-
- /* resolve irq func */
- m_irq_func.resolve(m_irq_cb, *this);
+ /* resolve callbacks */
+ m_in_pa_cb.resolve_safe(0);
+ m_out_pa_cb.resolve_safe();
+ m_in_pb_cb.resolve_safe(0);
+ m_out_pb_cb.resolve_safe();
+ m_irq_cb.resolve_safe();
/* allocate timers */
m_timer = machine().scheduler().timer_alloc(FUNC(timer_end_callback), (void *)this);
diff --git a/src/emu/machine/6532riot.h b/src/emu/machine/6532riot.h
index 73df5888b8c..6dcd629b674 100644
--- a/src/emu/machine/6532riot.h
+++ b/src/emu/machine/6532riot.h
@@ -12,44 +12,45 @@
#include "emu.h"
-
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
-#define MCFG_RIOT6532_ADD(_tag, _clock, _intrf) \
- MCFG_DEVICE_ADD(_tag, RIOT6532, _clock) \
- MCFG_DEVICE_CONFIG(_intrf)
+#define MCFG_RIOT6532_IN_PA_CB(_devcb) \
+ devcb = &riot6532_device::set_in_pa_callback(*device, DEVCB2_##_devcb);
+#define MCFG_RIOT6532_OUT_PA_CB(_devcb) \
+ devcb = &riot6532_device::set_out_pa_callback(*device, DEVCB2_##_devcb);
+#define MCFG_RIOT6532_IN_PB_CB(_devcb) \
+ devcb = &riot6532_device::set_in_pb_callback(*device, DEVCB2_##_devcb);
-/***************************************************************************
- TYPE DEFINITIONS
-***************************************************************************/
+#define MCFG_RIOT6532_OUT_PB_CB(_devcb) \
+ devcb = &riot6532_device::set_out_pb_callback(*device, DEVCB2_##_devcb);
+#define MCFG_RIOT6532_IRQ_CB(_devcb) \
+ devcb = &riot6532_device::set_irq_callback(*device, DEVCB2_##_devcb);
-// ======================> riot6532_interface
-
-struct riot6532_interface
-{
- devcb_read8 m_in_a_cb;
- devcb_read8 m_in_b_cb;
- devcb_write8 m_out_a_cb;
- devcb_write8 m_out_b_cb;
- devcb_write_line m_irq_cb;
-};
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
// ======================> riot6532_device
-class riot6532_device : public device_t,
- public riot6532_interface
+class riot6532_device : public device_t
{
public:
// construction/destruction
riot6532_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ template<class _Object> static devcb2_base &set_in_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pa_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_out_pa_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pa_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_in_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_in_pb_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_out_pb_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_out_pb_cb.set_callback(object); }
+ template<class _Object> static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast<riot6532_device &>(device).m_irq_cb.set_callback(object); }
+
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
@@ -74,12 +75,9 @@ protected:
UINT8 m_in;
UINT8 m_out;
UINT8 m_ddr;
- devcb_resolved_read8 m_in_func;
- devcb_resolved_write8 m_out_func;
};
// device-level overrides
- virtual void device_config_complete();
virtual void device_start();
virtual void device_reset();
virtual void device_post_load() { }
@@ -95,8 +93,12 @@ private:
riot6532_port m_port[2];
- devcb_resolved_write_line m_irq_func;
-
+ devcb2_read8 m_in_pa_cb;
+ devcb2_write8 m_out_pa_cb;
+ devcb2_read8 m_in_pb_cb;
+ devcb2_write8 m_out_pb_cb;
+ devcb2_write_line m_irq_cb;
+
UINT8 m_irqstate;
UINT8 m_irqenable;
int m_irq;
diff --git a/src/mame/audio/exidy.c b/src/mame/audio/exidy.c
index 3c9c1babf25..9eaf99b944f 100644
--- a/src/mame/audio/exidy.c
+++ b/src/mame/audio/exidy.c
@@ -457,17 +457,6 @@ READ8_MEMBER( exidy_sound_device::r6532_portb_r )
}
-static const riot6532_interface r6532_interface =
-{
- DEVCB_DEVICE_MEMBER("custom", exidy_sound_device, r6532_porta_r), /* port A read handler */
- DEVCB_DEVICE_MEMBER("custom", exidy_sound_device, r6532_portb_r), /* port B read handler */
- DEVCB_DEVICE_MEMBER("custom", exidy_sound_device, r6532_porta_w), /* port A write handler */
- DEVCB_DEVICE_MEMBER("custom", exidy_sound_device, r6532_portb_w), /* port B write handler */
- DEVCB_DEVICE_LINE_MEMBER("custom", exidy_sound_device, r6532_irq) /* IRQ callback */
-};
-
-
-
/*************************************
*
* 8253 state saving
@@ -771,7 +760,12 @@ MACHINE_CONFIG_FRAGMENT( venture_audio )
MCFG_CPU_ADD("audiocpu", M6502, 3579545/4)
MCFG_CPU_PROGRAM_MAP(venture_audio_map)
- MCFG_RIOT6532_ADD("riot", SH6532_CLOCK, r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, SH6532_CLOCK)
+ MCFG_RIOT6532_IN_PA_CB(DEVREAD8("custom", exidy_sound_device, r6532_porta_r))
+ MCFG_RIOT6532_OUT_PA_CB(DEVWRITE8("custom", exidy_sound_device, r6532_porta_w))
+ MCFG_RIOT6532_IN_PB_CB(DEVREAD8("custom", exidy_sound_device, r6532_portb_r))
+ MCFG_RIOT6532_OUT_PB_CB(DEVWRITE8("custom", exidy_sound_device, r6532_portb_w))
+ MCFG_RIOT6532_IRQ_CB(DEVWRITELINE("custom", exidy_sound_device, r6532_irq))
MCFG_DEVICE_ADD("pia0", PIA6821, 0)
MCFG_PIA_WRITEPA_HANDLER(DEVWRITE8("pia1", pia6821_device, portb_w))
@@ -1028,7 +1022,12 @@ MACHINE_CONFIG_FRAGMENT( victory_audio )
MCFG_CPU_ADD("audiocpu", M6502, VICTORY_AUDIO_CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(victory_audio_map)
- MCFG_RIOT6532_ADD("riot", SH6532_CLOCK, r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, SH6532_CLOCK)
+ MCFG_RIOT6532_IN_PA_CB(DEVREAD8("custom", exidy_sound_device, r6532_porta_r))
+ MCFG_RIOT6532_OUT_PA_CB(DEVWRITE8("custom", exidy_sound_device, r6532_porta_w))
+ MCFG_RIOT6532_IN_PB_CB(DEVREAD8("custom", exidy_sound_device, r6532_portb_r))
+ MCFG_RIOT6532_OUT_PB_CB(DEVWRITE8("custom", exidy_sound_device, r6532_portb_w))
+ MCFG_RIOT6532_IRQ_CB(DEVWRITELINE("custom", exidy_sound_device, r6532_irq))
MCFG_DEVICE_ADD("pia1", PIA6821, 0)
MCFG_PIA_CA2_HANDLER(DEVWRITELINE("custom", victory_sound_device, irq_clear_w))
diff --git a/src/mame/audio/gottlieb.c b/src/mame/audio/gottlieb.c
index 28179b2cb98..0818f96d3a2 100644
--- a/src/mame/audio/gottlieb.c
+++ b/src/mame/audio/gottlieb.c
@@ -438,20 +438,6 @@ WRITE_LINE_MEMBER( gottlieb_sound_r1_device::votrax_request )
//-------------------------------------------------
-// RIOT interface
-//-------------------------------------------------
-
-static const riot6532_interface gottlieb_riot6532_intf =
-{
- DEVCB_NULL,
- DEVCB_INPUT_PORT("SB1"),
- DEVCB_NULL,
- DEVCB_DEVICE_MEMBER(DEVICE_SELF_OWNER, gottlieb_sound_r1_device, r6532_portb_w),
- DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, gottlieb_sound_r1_device, snd_interrupt)
-};
-
-
-//-------------------------------------------------
// audio CPU map
//-------------------------------------------------
@@ -477,7 +463,10 @@ MACHINE_CONFIG_FRAGMENT( gottlieb_sound_r1 )
MCFG_CPU_PROGRAM_MAP(gottlieb_sound_r1_map)
// I/O configuration
- MCFG_RIOT6532_ADD("riot", SOUND1_CLOCK/4, gottlieb_riot6532_intf)
+ MCFG_DEVICE_ADD("riot", RIOT6532, SOUND1_CLOCK/4)
+ MCFG_RIOT6532_IN_PB_CB(IOPORT("SB1"))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(gottlieb_sound_r1_device, r6532_portb_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(gottlieb_sound_r1_device, snd_interrupt))
// sound devices
MCFG_DAC_ADD("dac")
diff --git a/src/mame/audio/starwars.c b/src/mame/audio/starwars.c
index 0f44fe19a63..7e2ad9073fa 100644
--- a/src/mame/audio/starwars.c
+++ b/src/mame/audio/starwars.c
@@ -55,18 +55,6 @@ WRITE_LINE_MEMBER(starwars_state::snd_interrupt)
}
-const riot6532_interface starwars_riot6532_intf =
-{
- DEVCB_DRIVER_MEMBER(starwars_state,r6532_porta_r),
- DEVCB_DEVICE_MEMBER("tms", tms5220_device, status_r),
- DEVCB_DRIVER_MEMBER(starwars_state,r6532_porta_w),
- DEVCB_DEVICE_MEMBER("tms", tms5220_device, data_w),
- DEVCB_DRIVER_LINE_MEMBER(starwars_state,snd_interrupt)
-};
-
-
-
-
/*************************************
*
* Sound CPU to/from main CPU
diff --git a/src/mame/drivers/firefox.c b/src/mame/drivers/firefox.c
index 305599f5bb0..9be1151eeb9 100644
--- a/src/mame/drivers/firefox.c
+++ b/src/mame/drivers/firefox.c
@@ -699,16 +699,6 @@ GFXDECODE_END
*
*************************************/
-static const riot6532_interface riot_intf =
-{
- DEVCB_DRIVER_MEMBER(firefox_state,riot_porta_r),
- DEVCB_DEVICE_MEMBER("tms", tms5220_device, status_r),
- DEVCB_DRIVER_MEMBER(firefox_state,riot_porta_w),
- DEVCB_DEVICE_MEMBER("tms", tms5220_device, data_w),
- DEVCB_DRIVER_LINE_MEMBER(firefox_state,riot_irq)
-};
-
-
static MACHINE_CONFIG_START( firefox, firefox_state )
/* basic machine hardware */
@@ -728,7 +718,6 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
MCFG_GFXDECODE_ADD("gfxdecode", "palette", firefox)
MCFG_PALETTE_ADD("palette", 512)
-
MCFG_LASERDISC_22VP931_ADD("laserdisc")
MCFG_LASERDISC_OVERLAY_DRIVER(64*8, 525, firefox_state, screen_update_firefox)
MCFG_LASERDISC_OVERLAY_CLIP(7*8, 53*8-1, 44, 480+44)
@@ -738,7 +727,13 @@ static MACHINE_CONFIG_START( firefox, firefox_state )
MCFG_X2212_ADD_AUTOSAVE("nvram_1c")
MCFG_X2212_ADD_AUTOSAVE("nvram_1d")
- MCFG_RIOT6532_ADD("riot", MASTER_XTAL/8, riot_intf)
+
+ MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_XTAL/8)
+ MCFG_RIOT6532_IN_PA_CB(READ8(firefox_state, riot_porta_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(firefox_state, riot_porta_w))
+ MCFG_RIOT6532_IN_PB_CB(DEVREAD8("tms", tms5220_device, status_r))
+ MCFG_RIOT6532_OUT_PB_CB(DEVWRITE8("tms", tms5220_device, data_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(firefox_state, riot_irq))
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
diff --git a/src/mame/drivers/gameplan.c b/src/mame/drivers/gameplan.c
index 5ff22537aa5..1135ce3958d 100644
--- a/src/mame/drivers/gameplan.c
+++ b/src/mame/drivers/gameplan.c
@@ -170,16 +170,6 @@ WRITE8_MEMBER(gameplan_state::r6532_soundlatch_w)
}
-static const riot6532_interface r6532_interface =
-{
- DEVCB_NULL, /* port A read handler */
- DEVCB_NULL, /* port B read handler */
- DEVCB_NULL, /* port A write handler */
- DEVCB_DRIVER_MEMBER(gameplan_state,r6532_soundlatch_w), /* port B write handler */
- DEVCB_DRIVER_LINE_MEMBER(gameplan_state,r6532_irq) /* IRQ callback */
-};
-
-
/*************************************
*
* Main CPU memory handlers
@@ -983,7 +973,9 @@ static MACHINE_CONFIG_START( gameplan, gameplan_state )
MCFG_CPU_ADD("audiocpu", M6502, GAMEPLAN_AUDIO_CPU_CLOCK)
MCFG_CPU_PROGRAM_MAP(gameplan_audio_map)
- MCFG_RIOT6532_ADD("riot", GAMEPLAN_AUDIO_CPU_CLOCK, r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, GAMEPLAN_AUDIO_CPU_CLOCK)
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(gameplan_state, r6532_soundlatch_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(gameplan_state, r6532_irq))
MCFG_MACHINE_START_OVERRIDE(gameplan_state,gameplan)
MCFG_MACHINE_RESET_OVERRIDE(gameplan_state,gameplan)
diff --git a/src/mame/drivers/spectra.c b/src/mame/drivers/spectra.c
index 5d4aaaca337..9374fd62e65 100644
--- a/src/mame/drivers/spectra.c
+++ b/src/mame/drivers/spectra.c
@@ -157,15 +157,6 @@ WRITE8_MEMBER( spectra_state::portb_w )
}
-static const riot6532_interface riot6532_intf =
-{
- DEVCB_DRIVER_MEMBER(spectra_state, porta_r), // port a in
- DEVCB_DRIVER_MEMBER(spectra_state, portb_r), // port b in
- DEVCB_DRIVER_MEMBER(spectra_state, porta_w), // port a out
- DEVCB_DRIVER_MEMBER(spectra_state, portb_w), // port b in
- DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE) // interrupt
-};
-
TIMER_DEVICE_CALLBACK_MEMBER( spectra_state::nmitimer)
{
if (m_t_c > 0x10)
@@ -239,8 +230,16 @@ static MACHINE_CONFIG_START( spectra, spectra_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", M6502, 3579545/4) // actually a 6503
MCFG_CPU_PROGRAM_MAP(spectra_map)
- MCFG_RIOT6532_ADD("riot", 3579545/4, riot6532_intf) // R6532
+
+ MCFG_DEVICE_ADD("riot", RIOT6532, 3579545/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(spectra_state, porta_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(spectra_state, porta_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(spectra_state, portb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(spectra_state, portb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
+
MCFG_NVRAM_ADD_1FILL("ram")
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", spectra_state, nmitimer, attotime::from_hz(120))
MCFG_TIMER_DRIVER_ADD_PERIODIC("outtimer", spectra_state, outtimer, attotime::from_hz(1200))
diff --git a/src/mame/drivers/starwars.c b/src/mame/drivers/starwars.c
index 00bda703196..e689cb1c5f4 100644
--- a/src/mame/drivers/starwars.c
+++ b/src/mame/drivers/starwars.c
@@ -334,7 +334,12 @@ static MACHINE_CONFIG_START( starwars, starwars_state )
MCFG_CPU_ADD("audiocpu", M6809, MASTER_CLOCK / 8)
MCFG_CPU_PROGRAM_MAP(sound_map)
- MCFG_RIOT6532_ADD("riot", MASTER_CLOCK / 8, starwars_riot6532_intf)
+ MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_CLOCK / 8)
+ MCFG_RIOT6532_IN_PA_CB(READ8(starwars_state, r6532_porta_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(starwars_state, r6532_porta_w))
+ MCFG_RIOT6532_IN_PB_CB(DEVREAD8("tms", tms5220_device, status_r))
+ MCFG_RIOT6532_OUT_PB_CB(DEVWRITE8("tms", tms5220_device, data_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(starwars_state, snd_interrupt))
MCFG_X2212_ADD_AUTOSAVE("x2212") /* nvram */
diff --git a/src/mame/drivers/tomcat.c b/src/mame/drivers/tomcat.c
index 71973bae77d..2f5576ffa65 100644
--- a/src/mame/drivers/tomcat.c
+++ b/src/mame/drivers/tomcat.c
@@ -380,27 +380,6 @@ void tomcat_state::machine_start()
m_dsp_BIO = 0;
}
-static const riot6532_interface tomcat_riot6532_intf =
-{
- DEVCB_NULL,
-/*
- PA0 = /WS OUTPUT (TMS-5220 WRITE STROBE)
- PA1 = /RS OUTPUT (TMS-5220 READ STROBE)
- PA2 = /READY INPUT (TMS-5220 READY FLAG)
- PA3 = FSEL OUTPUT Select TMS5220 clock;
- 0 = 325 KHz (8 KHz sampling)
- 1 = 398 KHz (10 KHz sampling)
- PA4 = /CC1 OUTPUT Coin Counter 1
- PA5 = /CC2 OUTPUT Coin Counter 2
- PA6 = /MUSRES OUTPUT (Reset the Yamaha)
- PA7 = MAINFLAG INPUT
-*/
- DEVCB_NULL,
- DEVCB_NULL,
- DEVCB_NULL, // PB0 - PB7 OUTPUT Speech Data
- DEVCB_NULL // connected to IRQ line of 6502
-};
-
static MACHINE_CONFIG_START( tomcat, tomcat_state )
MCFG_CPU_ADD("maincpu", M68010, XTAL_12MHz / 2)
MCFG_CPU_PROGRAM_MAP(tomcat_map)
@@ -415,11 +394,24 @@ static MACHINE_CONFIG_START( tomcat, tomcat_state )
MCFG_DEVICE_DISABLE()
MCFG_CPU_PROGRAM_MAP( sound_map)
- MCFG_RIOT6532_ADD("riot", XTAL_14_31818MHz / 8, tomcat_riot6532_intf)
+ MCFG_DEVICE_ADD("riot", RIOT6532, XTAL_14_31818MHz / 8)
+ /*
+ PA0 = /WS OUTPUT (TMS-5220 WRITE STROBE)
+ PA1 = /RS OUTPUT (TMS-5220 READ STROBE)
+ PA2 = /READY INPUT (TMS-5220 READY FLAG)
+ PA3 = FSEL OUTPUT Select TMS5220 clock;
+ 0 = 325 KHz (8 KHz sampling)
+ 1 = 398 KHz (10 KHz sampling)
+ PA4 = /CC1 OUTPUT Coin Counter 1
+ PA5 = /CC2 OUTPUT Coin Counter 2
+ PA6 = /MUSRES OUTPUT (Reset the Yamaha)
+ PA7 = MAINFLAG INPUT
+ */
+ // OUTB PB0 - PB7 OUTPUT Speech Data
+ // IRQ CB connected to IRQ line of 6502
MCFG_QUANTUM_TIME(attotime::from_hz(4000))
-
MCFG_NVRAM_ADD_0FILL("nvram")
MCFG_M48T02_ADD( "m48t02" )
diff --git a/src/mame/drivers/tourtabl.c b/src/mame/drivers/tourtabl.c
index 976b29cea6c..e1aa9487644 100644
--- a/src/mame/drivers/tourtabl.c
+++ b/src/mame/drivers/tourtabl.c
@@ -71,26 +71,6 @@ WRITE8_MEMBER(tourtabl_state::watchdog_w)
machine().watchdog_reset();
}
-static const riot6532_interface r6532_interface_0 =
-{
- DEVCB_INPUT_PORT("RIOT0_SWA"), /* Port 6 */
- DEVCB_INPUT_PORT("RIOT0_SWB"), /* Port 7 */
- DEVCB_NULL,
- DEVCB_DRIVER_MEMBER(tourtabl_state,watchdog_w),
- DEVCB_NULL
-};
-
-
-static const riot6532_interface r6532_interface_1 =
-{
- DEVCB_INPUT_PORT("RIOT1_SWA"), /* Port 8 */
- DEVCB_INPUT_PORT("RIOT1_SWB"), /* Port 9 */
- DEVCB_NULL,
- DEVCB_DRIVER_MEMBER(tourtabl_state,tourtabl_led_w),
- DEVCB_NULL
-};
-
-
static INPUT_PORTS_START( tourtabl )
PORT_START("PADDLE4")
@@ -171,8 +151,15 @@ static MACHINE_CONFIG_START( tourtabl, tourtabl_state )
MCFG_CPU_ADD("maincpu", M6502, MASTER_CLOCK / 3) /* actually M6507 */
MCFG_CPU_PROGRAM_MAP(main_map)
- MCFG_RIOT6532_ADD("riot1", MASTER_CLOCK / 3, r6532_interface_0)
- MCFG_RIOT6532_ADD("riot2", MASTER_CLOCK / 3, r6532_interface_1)
+ MCFG_DEVICE_ADD("riot1", RIOT6532, MASTER_CLOCK / 3)
+ MCFG_RIOT6532_IN_PA_CB(IOPORT("RIOT0_SWA"))
+ MCFG_RIOT6532_IN_PB_CB(IOPORT("RIOT0_SWB"))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(tourtabl_state, watchdog_w))
+
+ MCFG_DEVICE_ADD("riot2", RIOT6532, MASTER_CLOCK / 3)
+ MCFG_RIOT6532_IN_PA_CB(IOPORT("RIOT1_SWA"))
+ MCFG_RIOT6532_IN_PB_CB(IOPORT("RIOT1_SWB"))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(tourtabl_state, tourtabl_led_w))
/* video hardware */
MCFG_DEVICE_ADD("tia_video", TIA_NTSC_VIDEO, 0)
diff --git a/src/mame/includes/starwars.h b/src/mame/includes/starwars.h
index 5feb0fe6b5b..0a145459e2e 100644
--- a/src/mame/includes/starwars.h
+++ b/src/mame/includes/starwars.h
@@ -77,6 +77,3 @@ public:
required_device<cpu_device> m_maincpu;
required_device<cpu_device> m_audiocpu;
};
-
-/*----------- defined in audio/starwars.c -----------*/
-extern const riot6532_interface starwars_riot6532_intf;
diff --git a/src/mess/drivers/a2600.c b/src/mess/drivers/a2600.c
index 20fce8f1b4a..7d55a3093fb 100644
--- a/src/mess/drivers/a2600.c
+++ b/src/mess/drivers/a2600.c
@@ -1313,16 +1313,6 @@ READ8_MEMBER(a2600_state::riot_input_port_8_r)
return ioport("SWB")->read();
}
-static const riot6532_interface r6532_interface =
-{
- DEVCB_DRIVER_MEMBER(a2600_state,switch_A_r),
- DEVCB_DRIVER_MEMBER(a2600_state,riot_input_port_8_r),
- DEVCB_DRIVER_MEMBER(a2600_state,switch_A_w),
- DEVCB_DRIVER_MEMBER(a2600_state,switch_B_w),
- DEVCB_DRIVER_LINE_MEMBER(a2600_state, irq_callback)
-};
-
-
void a2600_state::install_banks(int count, unsigned init)
{
int i;
@@ -1953,7 +1943,12 @@ static MACHINE_CONFIG_START( a2600, a2600_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- MCFG_RIOT6532_ADD("riot", MASTER_CLOCK_NTSC / 3, r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_CLOCK_NTSC / 3)
+ MCFG_RIOT6532_IN_PA_CB(READ8(a2600_state, switch_A_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(a2600_state, irq_callback))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy")
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
@@ -1992,7 +1987,12 @@ static MACHINE_CONFIG_START( a2600p, a2600_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- MCFG_RIOT6532_ADD("riot", MASTER_CLOCK_PAL / 3, r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, MASTER_CLOCK_PAL / 3)
+ MCFG_RIOT6532_IN_PA_CB(READ8(a2600_state, switch_A_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(a2600_state, switch_A_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(a2600_state, riot_input_port_8_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(a2600_state, switch_B_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(a2600_state, irq_callback))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, "joy")
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
diff --git a/src/mess/drivers/a7800.c b/src/mess/drivers/a7800.c
index 61c9fb888b8..92c1e909755 100644
--- a/src/mess/drivers/a7800.c
+++ b/src/mess/drivers/a7800.c
@@ -1155,7 +1155,10 @@ static MACHINE_CONFIG_START( a7800_ntsc, a7800_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
/* devices */
- MCFG_RIOT6532_ADD("riot", A7800_NTSC_Y1/8, a7800_r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, A7800_NTSC_Y1/8)
+ MCFG_RIOT6532_IN_PA_CB(READ8(a7800_state, riot_joystick_r))
+ MCFG_RIOT6532_IN_PB_CB(READ8(a7800_state, riot_console_button_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(a7800_state, riot_button_pullup_w))
MCFG_CARTSLOT_ADD("cart")
MCFG_CARTSLOT_EXTENSION_LIST("bin,a78")
@@ -1190,7 +1193,10 @@ static MACHINE_CONFIG_DERIVED( a7800_pal, a7800_ntsc )
/* devices */
MCFG_DEVICE_REMOVE("riot")
- MCFG_RIOT6532_ADD("riot", CLK_PAL, a7800_r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, CLK_PAL)
+ MCFG_RIOT6532_IN_PA_CB(READ8(a7800_state, riot_joystick_r))
+ MCFG_RIOT6532_IN_PB_CB(READ8(a7800_state, riot_console_button_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(a7800_state, riot_button_pullup_w))
/* software lists */
MCFG_DEVICE_REMOVE("cart_list")
diff --git a/src/mess/drivers/aim65.c b/src/mess/drivers/aim65.c
index 27534431ecc..b44750d18f4 100644
--- a/src/mess/drivers/aim65.c
+++ b/src/mess/drivers/aim65.c
@@ -145,16 +145,6 @@ INPUT_PORTS_END
***************************************************************************/
-/* Riot interface Z33 */
-static const riot6532_interface aim65_riot_interface =
-{
- DEVCB_NULL,
- DEVCB_DRIVER_MEMBER(aim65_state, aim65_riot_b_r),
- DEVCB_DRIVER_MEMBER(aim65_state, aim65_riot_a_w),
- DEVCB_NULL,
- DEVCB_CPU_INPUT_LINE("maincpu", M6502_IRQ_LINE)
-};
-
// Deck 1 can play and record
static const cassette_interface aim65_1_cassette_interface =
{
@@ -283,7 +273,10 @@ static MACHINE_CONFIG_START( aim65, aim65_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* other devices */
- MCFG_RIOT6532_ADD("riot", AIM65_CLOCK, aim65_riot_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, AIM65_CLOCK)
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(aim65_state, aim65_riot_a_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(aim65_state, aim65_riot_b_r))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE("maincpu", M6502_IRQ_LINE))
MCFG_DEVICE_ADD("via6522_0", VIA6522, 0)
MCFG_VIA6522_READPB_HANDLER(READ8(aim65_state, aim65_pb_r))
diff --git a/src/mess/drivers/beta.c b/src/mess/drivers/beta.c
index 1a803eae084..baa93d4c466 100644
--- a/src/mess/drivers/beta.c
+++ b/src/mess/drivers/beta.c
@@ -215,15 +215,6 @@ WRITE8_MEMBER( beta_state::riot_pb_w )
m_old_data = data;
}
-static const riot6532_interface beta_riot_interface =
-{
- DEVCB_DRIVER_MEMBER(beta_state, riot_pa_r),
- DEVCB_DRIVER_MEMBER(beta_state, riot_pb_r),
- DEVCB_DRIVER_MEMBER(beta_state, riot_pa_w),
- DEVCB_DRIVER_MEMBER(beta_state, riot_pb_w),
- DEVCB_CPU_INPUT_LINE(M6502_TAG, M6502_IRQ_LINE)
-};
-
/* Quickload */
DEVICE_IMAGE_UNLOAD_MEMBER( beta_state, beta_eprom )
@@ -265,7 +256,12 @@ static MACHINE_CONFIG_START( beta, beta_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
/* devices */
- MCFG_RIOT6532_ADD(M6532_TAG, XTAL_4MHz/4, beta_riot_interface)
+ MCFG_DEVICE_ADD(M6532_TAG, RIOT6532, XTAL_4MHz/4)
+ MCFG_RIOT6532_IN_PA_CB(READ8(beta_state, riot_pa_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(beta_state, riot_pa_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(beta_state, riot_pb_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(beta_state, riot_pb_w))
+ MCFG_RIOT6532_IRQ_CB(INPUTLINE(M6502_TAG, M6502_IRQ_LINE))
/* EPROM socket */
MCFG_CARTSLOT_ADD(EPROM_TAG)
diff --git a/src/mess/drivers/junior.c b/src/mess/drivers/junior.c
index aa29897a2fb..81dcaad705a 100644
--- a/src/mess/drivers/junior.c
+++ b/src/mess/drivers/junior.c
@@ -185,16 +185,6 @@ WRITE_LINE_MEMBER( junior_state::junior_riot_irq )
}
-static const riot6532_interface junior_riot_interface =
-{
- DEVCB_DRIVER_MEMBER(junior_state, junior_riot_a_r),
- DEVCB_DRIVER_MEMBER(junior_state, junior_riot_b_r),
- DEVCB_DRIVER_MEMBER(junior_state, junior_riot_a_w),
- DEVCB_DRIVER_MEMBER(junior_state, junior_riot_b_w),
- DEVCB_DRIVER_LINE_MEMBER(junior_state, junior_riot_irq)
-};
-
-
TIMER_DEVICE_CALLBACK_MEMBER(junior_state::junior_update_leds)
{
int i;
@@ -231,12 +221,17 @@ static MACHINE_CONFIG_START( junior, junior_state )
MCFG_CPU_PROGRAM_MAP(junior_mem)
MCFG_QUANTUM_TIME(attotime::from_hz(50))
-
/* video hardware */
MCFG_DEFAULT_LAYOUT( layout_junior )
/* Devices */
- MCFG_RIOT6532_ADD("riot", XTAL_1MHz, junior_riot_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, XTAL_1MHz)
+ MCFG_RIOT6532_IN_PA_CB(READ8(junior_state, junior_riot_a_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(junior_state, junior_riot_a_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(junior_state, junior_riot_b_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(junior_state, junior_riot_b_w))
+ MCFG_RIOT6532_IRQ_CB(WRITELINE(junior_state, junior_riot_irq))
+
MCFG_TIMER_DRIVER_ADD_PERIODIC("led_timer", junior_state, junior_update_leds, attotime::from_hz(50))
MACHINE_CONFIG_END
diff --git a/src/mess/drivers/sym1.c b/src/mess/drivers/sym1.c
index be211424599..093409cc1ac 100644
--- a/src/mess/drivers/sym1.c
+++ b/src/mess/drivers/sym1.c
@@ -156,14 +156,6 @@ WRITE8_MEMBER( sym1_state::sym1_riot_b_w )
m_ttl74145->write(data & 0x0f);
}
-const riot6532_interface sym1_r6532_interface =
-{
- DEVCB_DRIVER_MEMBER(sym1_state, sym1_riot_a_r),
- DEVCB_DRIVER_MEMBER(sym1_state, sym1_riot_b_r),
- DEVCB_DRIVER_MEMBER(sym1_state, sym1_riot_a_w),
- DEVCB_DRIVER_MEMBER(sym1_state, sym1_riot_b_w)
-};
-
//**************************************************************************
// INPUT PORTS
//**************************************************************************
@@ -323,7 +315,11 @@ static MACHINE_CONFIG_START( sym1, sym1_state )
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
// devices
- MCFG_RIOT6532_ADD("riot", SYM1_CLOCK, sym1_r6532_interface)
+ MCFG_DEVICE_ADD("riot", RIOT6532, SYM1_CLOCK)
+ MCFG_RIOT6532_IN_PA_CB(READ8(sym1_state, sym1_riot_a_r))
+ MCFG_RIOT6532_OUT_PA_CB(WRITE8(sym1_state, sym1_riot_a_w))
+ MCFG_RIOT6532_IN_PB_CB(READ8(sym1_state, sym1_riot_b_r))
+ MCFG_RIOT6532_OUT_PB_CB(WRITE8(sym1_state, sym1_riot_b_w))
MCFG_DEVICE_ADD("ttl74145", TTL74145, 0)
MCFG_TTL74145_OUTPUT_LINE_0_CB(WRITELINE(sym1_state, sym1_74145_output_0_w))
diff --git a/src/mess/includes/a7800.h b/src/mess/includes/a7800.h
index 6df0af95831..d37adeaf488 100644
--- a/src/mess/includes/a7800.h
+++ b/src/mess/includes/a7800.h
@@ -125,8 +125,6 @@ protected:
/*----------- defined in machine/a7800.c -----------*/
-extern const riot6532_interface a7800_r6532_interface;
-
void a7800_partialhash(hash_collection &dest, const unsigned char *data, unsigned long length, const char *functions);
#endif /* A7800_H_ */
diff --git a/src/mess/machine/a7800.c b/src/mess/machine/a7800.c
index 45e7db18a1b..6fd3e5a22c5 100644
--- a/src/mess/machine/a7800.c
+++ b/src/mess/machine/a7800.c
@@ -55,16 +55,6 @@ WRITE8_MEMBER(a7800_state::riot_button_pullup_w)
m_p2_one_button = data & 0x10;
}
-const riot6532_interface a7800_r6532_interface =
-{
- DEVCB_DRIVER_MEMBER(a7800_state,riot_joystick_r),
- DEVCB_DRIVER_MEMBER(a7800_state,riot_console_button_r),
- DEVCB_NULL,
- DEVCB_DRIVER_MEMBER(a7800_state,riot_button_pullup_w),
- DEVCB_NULL
-};
-
-
/***************************************************************************
DRIVER INIT
***************************************************************************/
diff --git a/src/mess/video/mikromik.c b/src/mess/video/mikromik.c
index 5799837ed8b..b26cce5b773 100644
--- a/src/mess/video/mikromik.c
+++ b/src/mess/video/mikromik.c
@@ -5,7 +5,7 @@
//-------------------------------------------------
-// i8275_interface crtc_intf
+// i8275 crtc display pixels
//-------------------------------------------------
I8275_DRAW_CHARACTER_MEMBER( mm1_state::crtc_display_pixels )