got rid of tmpz84c011 ctc trampolines

This commit is contained in:
Michaël Banaan Ananas 2014-06-21 02:25:03 +00:00
parent bf43a3db23
commit 70bf1b601e
7 changed files with 28 additions and 108 deletions

View File

@ -40,11 +40,7 @@ tmpz84c011_device::tmpz84c011_device(const machine_config &mconfig, const char *
m_inportsb(*this),
m_inportsc(*this),
m_inportsd(*this),
m_inportse(*this),
m_intr_cb(*this),
m_zc0_cb(*this),
m_zc1_cb(*this),
m_zc2_cb(*this)
m_inportse(*this)
{
memset(m_pio_dir, 0, 5);
memset(m_pio_latch, 0, 5);
@ -72,11 +68,6 @@ void tmpz84c011_device::device_start()
m_inportsd.resolve_safe(0);
m_inportse.resolve_safe(0);
m_intr_cb.resolve_safe();
m_zc0_cb.resolve_safe();
m_zc1_cb.resolve_safe();
m_zc2_cb.resolve_safe();
// register for save states
save_item(NAME(m_pio_dir[0]));
save_item(NAME(m_pio_latch[0]));
@ -214,18 +205,17 @@ WRITE8_MEMBER(tmpz84c011_device::tmpz84c011_dir_pe_w)
}
WRITE_LINE_MEMBER( tmpz84c011_device::intr_cb_trampoline_w ) { m_intr_cb(state); }
WRITE_LINE_MEMBER( tmpz84c011_device::zc0_cb_trampoline_w ) { m_zc0_cb(state); }
WRITE_LINE_MEMBER( tmpz84c011_device::zc1_cb_trampoline_w ) { m_zc1_cb(state); }
WRITE_LINE_MEMBER( tmpz84c011_device::zc2_cb_trampoline_w ) { m_zc2_cb(state); }
static const z80_daisy_config daisy_chain[] =
{
{ "ctc" },
{ NULL }
};
static MACHINE_CONFIG_FRAGMENT( tmpz84c011 )
MCFG_DEVICE_ADD("ctc", Z80CTC, DERIVED_CLOCK(1,1) )
MCFG_Z80CTC_INTR_CB(WRITELINE(tmpz84c011_device, intr_cb_trampoline_w))
MCFG_Z80CTC_ZC0_CB(WRITELINE(tmpz84c011_device, zc0_cb_trampoline_w))
MCFG_Z80CTC_ZC1_CB(WRITELINE(tmpz84c011_device, zc1_cb_trampoline_w))
MCFG_Z80CTC_ZC2_CB(WRITELINE(tmpz84c011_device, zc2_cb_trampoline_w))
MCFG_Z80CTC_INTR_CB(INPUTLINE(DEVICE_SELF, INPUT_LINE_IRQ0))
MCFG_CPU_MODIFY(DEVICE_SELF)
MCFG_CPU_CONFIG(daisy_chain)
MACHINE_CONFIG_END
machine_config_constructor tmpz84c011_device::device_mconfig_additions() const

View File

@ -7,8 +7,9 @@
#include "emu.h"
#include "z80.h"
#include "machine/z80ctc.h"
// NOTE: for CTC callbacks, see machine/z80ctc.h
// TMPZ84C011 PIO callbacks
#define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \
devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb);
@ -42,20 +43,6 @@
devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb);
// CTC callbacks
#define MCFG_TMPZ84C011_Z80CTC_INTR_CB(_devcb) \
devcb = &tmpz84c011_device::set_intr_callback(*device, DEVCB_##_devcb);
#define MCFG_TMPZ84C011_Z80CTC_ZC0_CB(_devcb) \
devcb = &tmpz84c011_device::set_zc0_callback(*device, DEVCB_##_devcb);
#define MCFG_TMPZ84C011_Z80CTC_ZC1_CB(_devcb) \
devcb = &tmpz84c011_device::set_zc1_callback(*device, DEVCB_##_devcb);
#define MCFG_TMPZ84C011_Z80CTC_ZC2_CB(_devcb) \
devcb = &tmpz84c011_device::set_zc2_callback(*device, DEVCB_##_devcb);
class tmpz84c011_device : public z80_device
{
public:
@ -73,11 +60,6 @@ public:
template<class _Object> static devcb_base & set_inportsd_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportsd.set_callback(object); }
template<class _Object> static devcb_base & set_inportse_cb(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_inportse.set_callback(object); }
template<class _Object> static devcb_base &set_intr_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_intr_cb.set_callback(object); }
template<class _Object> static devcb_base &set_zc0_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc0_cb.set_callback(object); }
template<class _Object> static devcb_base &set_zc1_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc1_cb.set_callback(object); }
template<class _Object> static devcb_base &set_zc2_callback(device_t &device, _Object object) { return downcast<tmpz84c011_device &>(device).m_zc2_cb.set_callback(object); }
DECLARE_READ8_MEMBER(tmpz84c011_pa_r);
DECLARE_READ8_MEMBER(tmpz84c011_pb_r);
DECLARE_READ8_MEMBER(tmpz84c011_pc_r);
@ -99,11 +81,6 @@ public:
DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pd_w);
DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pe_w);
DECLARE_WRITE_LINE_MEMBER(intr_cb_trampoline_w);
DECLARE_WRITE_LINE_MEMBER(zc0_cb_trampoline_w);
DECLARE_WRITE_LINE_MEMBER(zc1_cb_trampoline_w);
DECLARE_WRITE_LINE_MEMBER(zc2_cb_trampoline_w);
protected:
// device-level overrides
virtual machine_config_constructor device_mconfig_additions() const;
@ -136,11 +113,6 @@ private:
devcb_read8 m_inportsc;
devcb_read8 m_inportsd;
devcb_read8 m_inportse;
devcb_write_line m_intr_cb; // interrupt callback
devcb_write_line m_zc0_cb; // channel 0 zero crossing callbacks
devcb_write_line m_zc1_cb; // channel 1 zero crossing callbacks
devcb_write_line m_zc2_cb; // channel 2 zero crossing callbacks
};
extern const device_type TMPZ84C011;

View File

@ -60,9 +60,12 @@ void z80_daisy_chain::init(device_t *cpudevice, const z80_daisy_config *daisy)
for ( ; daisy->devname != NULL; daisy++)
{
// find the device
device_t *target = cpudevice->siblingdevice(daisy->devname);
if (target == NULL)
fatalerror("Unable to locate device '%s'\n", daisy->devname);
device_t *target;
if ((target = cpudevice->subdevice(daisy->devname)) == NULL)
{
if ((target = cpudevice->siblingdevice(daisy->devname)) == NULL)
fatalerror("Unable to locate device '%s'\n", daisy->devname);
}
// make sure it has an interface
device_z80daisy_interface *intf;

View File

@ -30,7 +30,6 @@
#include "cpu/z80/tmpz84c011.h"
#include "sound/dac.h"
#include "sound/3812intf.h"
#include "cpu/z80/z80daisy.h"
#include "machine/nvram.h"
#include "cpu/h8/h83002.h"
@ -449,12 +448,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(csplayh5_state::csplayh5_irq)
}
}
static const z80_daisy_config daisy_chain_sound[] =
{
{ "audiocpu:ctc" },
{ NULL }
};
static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
/* basic machine hardware */
@ -473,7 +466,6 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
#endif
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, unknown clock */
MCFG_CPU_CONFIG(daisy_chain_sound)
MCFG_CPU_PROGRAM_MAP(csplayh5_sound_map)
MCFG_CPU_IO_MAP(csplayh5_sound_io_map)
MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porta_w))
@ -481,8 +473,8 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(csplayh5_state, soundcpu_dac1_w))
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(csplayh5_state, soundcpu_portd_r))
MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porte_w))
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3))
MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -140,9 +140,9 @@ GND | 20
#include "emu.h"
#include "cpu/z80/tmpz84c011.h"
#include "machine/mb89363b.h"
#include "includes/cps1.h"
#include "kenseim.lh"
#include "machine/mb89363b.h"
class kenseim_state : public cps_state
{
@ -459,15 +459,10 @@ ADDRESS_MAP_END
static ADDRESS_MAP_START( kenseim_io_map, AS_IO, 8, kenseim_state )
ADDRESS_MAP_GLOBAL_MASK(0xff)
AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write)
AM_RANGE(0x20, 0x27) AM_DEVREADWRITE("mb89363b", mb89363b_device, read, write)
ADDRESS_MAP_END
static const z80_daisy_config daisy_chain_gamecpu[] =
{
{ "gamecpu:ctc" },
{ NULL }
};
static MACHINE_CONFIG_DERIVED_CLASS( kenseim, cps1_12MHz, kenseim_state )
@ -483,9 +478,6 @@ static MACHINE_CONFIG_DERIVED_CLASS( kenseim, cps1_12MHz, kenseim_state )
MCFG_TMPZ84C011_PORTB_READ_CB(IOPORT("DSW2"))
MCFG_TMPZ84C011_PORTC_READ_CB(IOPORT("CAB-IN"))
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(kenseim_state, cpu_portd_r))
MCFG_CPU_CONFIG(daisy_chain_gamecpu)
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("gamecpu", INPUT_LINE_IRQ0))
MCFG_MB89363B_ADD("mb89363b")
// a,b,c always $80: all ports set as output

View File

@ -25,7 +25,6 @@ Notes:
#include "includes/nb1413m3.h" // needed for mahjong input controller
#include "sound/3812intf.h"
#include "sound/dac.h"
#include "cpu/z80/z80daisy.h"
#include "includes/nbmj9195.h"
@ -2779,19 +2778,6 @@ static INPUT_PORTS_START( mjegolf )
INPUT_PORTS_END
static const z80_daisy_config daisy_chain_main[] =
{
{ "maincpu:ctc" },
{ NULL }
};
static const z80_daisy_config daisy_chain_sound[] =
{
{ "audiocpu:ctc" },
{ NULL }
};
// the only difference between these 2 setups is the DAC is swapped, is that intentional?
#define OTHERS_TMZ84C011_SOUND_PORTS \
MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(nbmj9195_state, soundcpu_porta_w)) \
@ -2829,20 +2815,16 @@ static const z80_daisy_config daisy_chain_sound[] =
static MACHINE_CONFIG_START( NBMJDRV1_base, nbmj9195_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */
MCFG_CPU_CONFIG(daisy_chain_main)
MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */
MCFG_CPU_PROGRAM_MAP(sailorws_map)
MCFG_CPU_IO_MAP(sailorws_io_map)
MCFG_CPU_VBLANK_INT_DRIVER("screen", nbmj9195_state, ctc0_trg1) /* vblank is connect to ctc triggfer */
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_CPU_VBLANK_INT_DRIVER("screen", nbmj9195_state, ctc0_trg1) /* vblank is connect to ctc trigger */
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */
MCFG_CPU_CONFIG(daisy_chain_sound)
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */
MCFG_CPU_PROGRAM_MAP(sailorws_sound_map)
MCFG_CPU_IO_MAP(sailorws_sound_io_map)
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3))
MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
@ -3167,7 +3149,6 @@ static MACHINE_CONFIG_DERIVED( shabdama, NBMJDRV1 )
MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(shabdama_map)
MCFG_CPU_IO_MAP(shabdama_io_map)
MACHINE_CONFIG_END

View File

@ -40,7 +40,6 @@ Memo:
#include "includes/nb1413m3.h"
#include "sound/dac.h"
#include "sound/3812intf.h"
#include "cpu/z80/z80daisy.h"
#include "machine/nvram.h"
#include "includes/niyanpai.h"
@ -761,13 +760,6 @@ INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt)
m_tmp68301->external_interrupt_0();
}
static const z80_daisy_config daisy_chain_sound[] =
{
{ "audiocpu:ctc" },
{ NULL }
};
static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
@ -781,7 +773,6 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
MCFG_TMP68301_OUT_PARALLEL_CB(WRITE16(niyanpai_state, tmp68301_parallel_port_w))
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */
MCFG_CPU_CONFIG(daisy_chain_sound)
MCFG_CPU_PROGRAM_MAP(niyanpai_sound_map)
MCFG_CPU_IO_MAP(niyanpai_sound_io_map)
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, cpu_portd_r))
@ -789,9 +780,8 @@ static MACHINE_CONFIG_START( niyanpai, niyanpai_state )
MCFG_TMPZ84C011_PORTB_WRITE_CB(WRITE8(niyanpai_state, cpu_portb_w))
MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(niyanpai_state, cpu_portc_w))
MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(niyanpai_state, cpu_porte_w))
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0))
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3))
MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
MCFG_NVRAM_ADD_0FILL("nvram")