From bbfd445e15fa203dc85700223023e6bd5da2632a Mon Sep 17 00:00:00 2001 From: Fabio Priuli Date: Wed, 30 Apr 2014 09:42:07 +0000 Subject: [PATCH] 6532riot: updated to use devcb2. nw. --- src/emu/bus/cbmiec/interpod.c | 16 +------ src/emu/bus/ieee488/c2040.c | 46 +++++++++---------- src/emu/bus/ieee488/c8050.c | 71 +++++++++++++++++------------ src/emu/bus/ieee488/c8280.c | 36 +++++---------- src/emu/bus/ieee488/d9060.c | 35 +++++---------- src/emu/machine/6532riot.c | 85 +++++++++++++---------------------- src/emu/machine/6532riot.h | 50 +++++++++++---------- src/mame/audio/exidy.c | 25 +++++------ src/mame/audio/gottlieb.c | 19 ++------ src/mame/audio/starwars.c | 12 ----- src/mame/drivers/firefox.c | 19 +++----- src/mame/drivers/gameplan.c | 14 ++---- src/mame/drivers/spectra.c | 19 ++++---- src/mame/drivers/starwars.c | 7 ++- src/mame/drivers/tomcat.c | 38 +++++++--------- src/mame/drivers/tourtabl.c | 31 ++++--------- src/mame/includes/starwars.h | 3 -- src/mess/drivers/a2600.c | 24 +++++----- src/mess/drivers/a7800.c | 10 ++++- src/mess/drivers/aim65.c | 15 ++----- src/mess/drivers/beta.c | 16 +++---- src/mess/drivers/junior.c | 19 +++----- src/mess/drivers/sym1.c | 14 +++--- src/mess/includes/a7800.h | 2 - src/mess/machine/a7800.c | 10 ----- src/mess/video/mikromik.c | 2 +- 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 @@ -121,20 +121,6 @@ static ADDRESS_MAP_START( interpod_mem, AS_PROGRAM, 8, interpod_device ) 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(static_config()); - if (intf != NULL) - { - *static_cast(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,15 +12,24 @@ #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); + +#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); /*************************************************************************** @@ -28,28 +37,20 @@ ***************************************************************************/ -// ======================> 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; -}; - - - // ======================> 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 static devcb2_base &set_in_pa_callback(device_t &device, _Object object) { return downcast(device).m_in_pa_cb.set_callback(object); } + template static devcb2_base &set_out_pa_callback(device_t &device, _Object object) { return downcast(device).m_out_pa_cb.set_callback(object); } + template static devcb2_base &set_in_pb_callback(device_t &device, _Object object) { return downcast(device).m_in_pb_cb.set_callback(object); } + template static devcb2_base &set_out_pb_callback(device_t &device, _Object object) { return downcast(device).m_out_pb_cb.set_callback(object); } + template static devcb2_base &set_irq_callback(device_t &device, _Object object) { return downcast(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 @@ -437,20 +437,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 m_maincpu; required_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 )