From bdf177df07cc8b9043fde7a8fd1e5b040bb7bd40 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 12 Mar 2014 18:06:02 +0000 Subject: [PATCH] Updated tmp68301 device to use devcb2 (nw) --- src/emu/machine/tmp68301.c | 31 ++++++----------------------- src/emu/machine/tmp68301.h | 35 ++++++++++++--------------------- src/mame/drivers/csplayh5.c | 9 +-------- src/mame/drivers/niyanpai.c | 9 ++------- src/mame/drivers/realbrk.c | 18 ++++------------- src/mame/drivers/seta2.c | 39 +++++++++---------------------------- 6 files changed, 34 insertions(+), 107 deletions(-) diff --git a/src/emu/machine/tmp68301.c b/src/emu/machine/tmp68301.c index 134578c2678..c5a4b8f4fe3 100644 --- a/src/emu/machine/tmp68301.c +++ b/src/emu/machine/tmp68301.c @@ -85,43 +85,24 @@ WRITE16_MEMBER(tmp68301_device::pdir_w) READ16_MEMBER(tmp68301_device::pdr_r) { - return m_in_parallel_func(0) & ~m_pdir; + return m_in_parallel_cb(0) & ~m_pdir; } WRITE16_MEMBER(tmp68301_device::pdr_w) { - m_out_parallel_func(0,data & m_pdir); + m_out_parallel_cb(0, data & m_pdir, 0xffff); } tmp68301_device::tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : device_t(mconfig, TMP68301, "TMP68301", tag, owner, clock, "tmp68301", __FILE__), device_memory_interface(mconfig, *this), + m_in_parallel_cb(*this), + m_out_parallel_cb(*this), m_space_config("regs", ENDIANNESS_LITTLE, 16, 10, 0, NULL, *ADDRESS_MAP_NAME(tmp68301_regs)) { } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void tmp68301_device::device_config_complete() -{ - // inherit a copy of the static data - const tmp68301_interface *intf = reinterpret_cast(static_config()); - if (intf != NULL) - *static_cast(this) = *intf; - - // or defaults to 0 if none provided - else - { - memset(&m_in_parallel_cb, 0, sizeof(m_in_parallel_cb)); - memset(&m_out_parallel_cb, 0, sizeof(m_out_parallel_cb)); - - } -} //------------------------------------------------- // device_start - device-specific startup @@ -133,8 +114,8 @@ void tmp68301_device::device_start() for (i = 0; i < 3; i++) m_tmp68301_timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(tmp68301_device::timer_callback), this)); - m_in_parallel_func.resolve(m_in_parallel_cb, *this); - m_out_parallel_func.resolve(m_out_parallel_cb, *this); + m_in_parallel_cb.resolve_safe(0); + m_out_parallel_cb.resolve_safe(); } //------------------------------------------------- diff --git a/src/emu/machine/tmp68301.h b/src/emu/machine/tmp68301.h index 31811342f42..dfcc5664f6c 100644 --- a/src/emu/machine/tmp68301.h +++ b/src/emu/machine/tmp68301.h @@ -5,41 +5,30 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -/* TODO: frequency & hook it up with m68k */ -#define MCFG_TMP68301_ADD(_tag, _config) \ - MCFG_DEVICE_ADD(_tag, TMP68301, 0) \ - MCFG_DEVICE_CONFIG(_config) +/* TODO: serial ports, frequency & hook it up with m68k */ +#define MCFG_TMP68301_IN_PARALLEL_CALLBACK(_devcb) \ + devcb = &tmp68301_device::set_in_parallel_callback(*device, DEVCB2_##_devcb); -#define MCFG_TMP68301_MODIFY(_tag, _config) \ - MCFG_DEVICE_MODIFY(_tag) \ - MCFG_DEVICE_CONFIG(_config) - - -#define TMP68301_INTERFACE(name) \ - const tmp68301_interface (name) = +#define MCFG_TMP68301_OUT_PARALLEL_CALLBACK(_devcb) \ + devcb = &tmp68301_device::set_out_parallel_callback(*device, DEVCB2_##_devcb); //************************************************************************** // TYPE DEFINITIONS //************************************************************************** -// ======================> mb_vcu_interface -struct tmp68301_interface -{ - devcb_read16 m_in_parallel_cb; - devcb_write16 m_out_parallel_cb; -// TODO: serial ports -}; class tmp68301_device : public device_t, - public device_memory_interface, - public tmp68301_interface + public device_memory_interface { public: tmp68301_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); ~tmp68301_device() {} + template static devcb2_base &set_in_parallel_callback(device_t &device, _Object object) { return downcast(device).m_in_parallel_cb.set_callback(object); } + template static devcb2_base &set_out_parallel_callback(device_t &device, _Object object) { return downcast(device).m_out_parallel_cb.set_callback(object); } + // Hardware Registers DECLARE_READ16_MEMBER( regs_r ); DECLARE_WRITE16_MEMBER( regs_w ); @@ -62,14 +51,14 @@ public: protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const; - devcb_resolved_read16 m_in_parallel_func; - devcb_resolved_write16 m_out_parallel_func; private: + devcb2_read16 m_in_parallel_cb; + devcb2_write16 m_out_parallel_cb; + // internal state UINT16 m_regs[0x400]; diff --git a/src/mame/drivers/csplayh5.c b/src/mame/drivers/csplayh5.c index 0badbb3d6d4..1c5cbfae6b7 100644 --- a/src/mame/drivers/csplayh5.c +++ b/src/mame/drivers/csplayh5.c @@ -636,13 +636,6 @@ static const z80_daisy_config daisy_chain_sound[] = { NULL } }; -static TMP68301_INTERFACE( tmp68301_interface ) -{ - DEVCB_NULL, - DEVCB_NULL -}; - - static MACHINE_CONFIG_START( csplayh5, csplayh5_state ) /* basic machine hardware */ @@ -650,7 +643,7 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state ) MCFG_CPU_PROGRAM_MAP(csplayh5_map) MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", csplayh5_state, csplayh5_irq, "screen", 0, 1) - MCFG_TMP68301_ADD("tmp68301",tmp68301_interface) + MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) #if USE_H8 MCFG_CPU_ADD("subcpu", H83002, 16000000) /* unknown clock */ diff --git a/src/mame/drivers/niyanpai.c b/src/mame/drivers/niyanpai.c index 73d604a3fed..f4972c7620e 100644 --- a/src/mame/drivers/niyanpai.c +++ b/src/mame/drivers/niyanpai.c @@ -934,12 +934,6 @@ static const z80_daisy_config daisy_chain_sound[] = { NULL } }; -static TMP68301_INTERFACE( tmp68301_interface ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER16(niyanpai_state,tmp68301_parallel_port_w) -}; - static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) /* basic machine hardware */ @@ -947,7 +941,8 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) MCFG_CPU_PROGRAM_MAP(niyanpai_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", niyanpai_state, niyanpai_interrupt) - MCFG_TMP68301_ADD("tmp68301",tmp68301_interface) + MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) + MCFG_TMP68301_OUT_PARALLEL_CALLBACK(WRITE16(niyanpai_state, tmp68301_parallel_port_w)) MCFG_CPU_ADD("audiocpu", Z80, 8000000) /* TMPZ84C011, 8.00 MHz */ MCFG_CPU_CONFIG(daisy_chain_sound) diff --git a/src/mame/drivers/realbrk.c b/src/mame/drivers/realbrk.c index 9685b18b0ea..13215f2a1d4 100644 --- a/src/mame/drivers/realbrk.c +++ b/src/mame/drivers/realbrk.c @@ -750,18 +750,6 @@ INTERRUPT_GEN_MEMBER(realbrk_state::realbrk_interrupt) m_tmp68301->external_interrupt_1(); } -static TMP68301_INTERFACE( tmp68301_default_interface ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER16(realbrk_state,realbrk_flipscreen_w) -}; - -static TMP68301_INTERFACE( tmp68301_pkgnsh_interface ) -{ - DEVCB_NULL, - DEVCB_NULL -}; - static MACHINE_CONFIG_START( realbrk, realbrk_state ) /* basic machine hardware */ @@ -769,7 +757,8 @@ static MACHINE_CONFIG_START( realbrk, realbrk_state ) MCFG_CPU_PROGRAM_MAP(realbrk_mem) MCFG_CPU_VBLANK_INT_DRIVER("screen", realbrk_state, realbrk_interrupt) - MCFG_TMP68301_ADD("tmp68301", tmp68301_default_interface) + MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) + MCFG_TMP68301_OUT_PARALLEL_CALLBACK(WRITE16(realbrk_state,realbrk_flipscreen_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) @@ -799,7 +788,8 @@ static MACHINE_CONFIG_DERIVED( pkgnsh, realbrk ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(pkgnsh_mem) - MCFG_TMP68301_MODIFY("tmp68301", tmp68301_pkgnsh_interface) + MCFG_DEVICE_MODIFY("tmp68301") + MCFG_TMP68301_OUT_PARALLEL_CALLBACK(NULL) MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED( pkgnshdx, pkgnsh ) diff --git a/src/mame/drivers/seta2.c b/src/mame/drivers/seta2.c index 8ee543529e9..9db09a3b283 100644 --- a/src/mame/drivers/seta2.c +++ b/src/mame/drivers/seta2.c @@ -1987,37 +1987,13 @@ static const x1_010_interface x1_010_sound_intf = 0x0000, /* address */ }; -static TMP68301_INTERFACE( tmp68301_default_intf ) -{ - DEVCB_NULL, - DEVCB_NULL -}; - - -static TMP68301_INTERFACE( tmp68301_gundamex_intf ) -{ - DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_r), - DEVCB_DRIVER_MEMBER16(seta2_state,gundamex_eeprom_w) -}; - -static TMP68301_INTERFACE( tmp68301_reelquak_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_MEMBER16(seta2_state,reelquak_leds_w) -}; - -static TMP68301_INTERFACE( tmp68301_samshoot_intf ) -{ - DEVCB_INPUT_PORT("DSW2"), - DEVCB_NULL -}; static MACHINE_CONFIG_START( seta2, seta2_state ) MCFG_CPU_ADD("maincpu", M68301, XTAL_50MHz/3) // !! TMP68301 !! MCFG_CPU_PROGRAM_MAP(mj4simai_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) - MCFG_TMP68301_ADD("tmp68301", tmp68301_default_intf) + MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) // video hardware MCFG_SCREEN_ADD("screen", RASTER) @@ -2058,7 +2034,9 @@ static MACHINE_CONFIG_DERIVED( gundamex, seta2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(gundamex_map) - MCFG_TMP68301_MODIFY("tmp68301",tmp68301_gundamex_intf) + MCFG_DEVICE_MODIFY("tmp68301") + MCFG_TMP68301_IN_PARALLEL_CALLBACK(READ16(seta2_state, gundamex_eeprom_r)) + MCFG_TMP68301_OUT_PARALLEL_CALLBACK(WRITE16(seta2_state, gundamex_eeprom_w)) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -2126,7 +2104,8 @@ static MACHINE_CONFIG_DERIVED( reelquak, seta2 ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(reelquak_map) - MCFG_TMP68301_MODIFY("tmp68301",tmp68301_reelquak_intf) + MCFG_DEVICE_MODIFY("tmp68301") + MCFG_TMP68301_OUT_PARALLEL_CALLBACK(WRITE16(seta2_state, reelquak_leds_w)) MCFG_NVRAM_ADD_0FILL("nvram") MCFG_TICKET_DISPENSER_ADD("ticket", attotime::from_msec(200), TICKET_MOTOR_ACTIVE_HIGH, TICKET_STATUS_ACTIVE_LOW) @@ -2144,7 +2123,8 @@ static MACHINE_CONFIG_DERIVED( samshoot, seta2 ) MCFG_CPU_PROGRAM_MAP(samshoot_map) MCFG_CPU_PERIODIC_INT_DRIVER(seta2_state, samshoot_interrupt, 60) - MCFG_TMP68301_MODIFY("tmp68301",tmp68301_samshoot_intf) + MCFG_DEVICE_MODIFY("tmp68301") + MCFG_TMP68301_IN_PARALLEL_CALLBACK(IOPORT("DSW2")) MCFG_NVRAM_ADD_0FILL("nvram") @@ -2269,8 +2249,7 @@ static MACHINE_CONFIG_START( namcostr, seta2_state ) MCFG_CPU_PROGRAM_MAP(namcostr_map) MCFG_CPU_VBLANK_INT_DRIVER("screen", seta2_state, seta2_interrupt) - MCFG_TMP68301_ADD("tmp68301",tmp68301_default_intf) // tmp68301_reelquak_intf does this have a ticket dispenser? - + MCFG_DEVICE_ADD("tmp68301", TMP68301, 0) // does this have a ticket dispenser? // video hardware MCFG_SCREEN_ADD("screen", RASTER)