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

View File

@ -7,8 +7,9 @@
#include "emu.h" #include "emu.h"
#include "z80.h" #include "z80.h"
#include "machine/z80ctc.h"
// NOTE: for CTC callbacks, see machine/z80ctc.h
// TMPZ84C011 PIO callbacks // TMPZ84C011 PIO callbacks
#define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \ #define MCFG_TMPZ84C011_PORTA_READ_CB(_devcb) \
devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb); devcb = &tmpz84c011_device::set_inportsa_cb(*device, DEVCB_##_devcb);
@ -42,20 +43,6 @@
devcb = &tmpz84c011_device::set_outportse_cb(*device, DEVCB_##_devcb); 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 class tmpz84c011_device : public z80_device
{ {
public: 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_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_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_pa_r);
DECLARE_READ8_MEMBER(tmpz84c011_pb_r); DECLARE_READ8_MEMBER(tmpz84c011_pb_r);
DECLARE_READ8_MEMBER(tmpz84c011_pc_r); DECLARE_READ8_MEMBER(tmpz84c011_pc_r);
@ -99,11 +81,6 @@ public:
DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pd_w); DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pd_w);
DECLARE_WRITE8_MEMBER(tmpz84c011_dir_pe_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: protected:
// device-level overrides // device-level overrides
virtual machine_config_constructor device_mconfig_additions() const; virtual machine_config_constructor device_mconfig_additions() const;
@ -136,11 +113,6 @@ private:
devcb_read8 m_inportsc; devcb_read8 m_inportsc;
devcb_read8 m_inportsd; devcb_read8 m_inportsd;
devcb_read8 m_inportse; 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; 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++) for ( ; daisy->devname != NULL; daisy++)
{ {
// find the device // find the device
device_t *target = cpudevice->siblingdevice(daisy->devname); device_t *target;
if (target == NULL) if ((target = cpudevice->subdevice(daisy->devname)) == NULL)
fatalerror("Unable to locate device '%s'\n", daisy->devname); {
if ((target = cpudevice->siblingdevice(daisy->devname)) == NULL)
fatalerror("Unable to locate device '%s'\n", daisy->devname);
}
// make sure it has an interface // make sure it has an interface
device_z80daisy_interface *intf; device_z80daisy_interface *intf;

View File

@ -30,7 +30,6 @@
#include "cpu/z80/tmpz84c011.h" #include "cpu/z80/tmpz84c011.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "cpu/z80/z80daisy.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "cpu/h8/h83002.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 ) static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
/* basic machine hardware */ /* basic machine hardware */
@ -473,7 +466,6 @@ static MACHINE_CONFIG_START( csplayh5, csplayh5_state )
#endif #endif
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, unknown clock */ MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, unknown clock */
MCFG_CPU_CONFIG(daisy_chain_sound)
MCFG_CPU_PROGRAM_MAP(csplayh5_sound_map) MCFG_CPU_PROGRAM_MAP(csplayh5_sound_map)
MCFG_CPU_IO_MAP(csplayh5_sound_io_map) MCFG_CPU_IO_MAP(csplayh5_sound_io_map)
MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porta_w)) 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_PORTC_WRITE_CB(WRITE8(csplayh5_state, soundcpu_dac1_w))
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(csplayh5_state, soundcpu_portd_r)) MCFG_TMPZ84C011_PORTD_READ_CB(READ8(csplayh5_state, soundcpu_portd_r))
MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porte_w)) MCFG_TMPZ84C011_PORTE_WRITE_CB(WRITE8(csplayh5_state, soundcpu_porte_w))
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -140,9 +140,9 @@ GND | 20
#include "emu.h" #include "emu.h"
#include "cpu/z80/tmpz84c011.h" #include "cpu/z80/tmpz84c011.h"
#include "machine/mb89363b.h"
#include "includes/cps1.h" #include "includes/cps1.h"
#include "kenseim.lh" #include "kenseim.lh"
#include "machine/mb89363b.h"
class kenseim_state : public cps_state 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 ) static ADDRESS_MAP_START( kenseim_io_map, AS_IO, 8, kenseim_state )
ADDRESS_MAP_GLOBAL_MASK(0xff) 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 ADDRESS_MAP_END
static const z80_daisy_config daisy_chain_gamecpu[] =
{
{ "gamecpu:ctc" },
{ NULL }
};
static MACHINE_CONFIG_DERIVED_CLASS( kenseim, cps1_12MHz, kenseim_state ) 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_PORTB_READ_CB(IOPORT("DSW2"))
MCFG_TMPZ84C011_PORTC_READ_CB(IOPORT("CAB-IN")) MCFG_TMPZ84C011_PORTC_READ_CB(IOPORT("CAB-IN"))
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(kenseim_state, cpu_portd_r)) 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") MCFG_MB89363B_ADD("mb89363b")
// a,b,c always $80: all ports set as output // 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 "includes/nb1413m3.h" // needed for mahjong input controller
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "cpu/z80/z80daisy.h"
#include "includes/nbmj9195.h" #include "includes/nbmj9195.h"
@ -2779,19 +2778,6 @@ static INPUT_PORTS_START( mjegolf )
INPUT_PORTS_END 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? // the only difference between these 2 setups is the DAC is swapped, is that intentional?
#define OTHERS_TMZ84C011_SOUND_PORTS \ #define OTHERS_TMZ84C011_SOUND_PORTS \
MCFG_TMPZ84C011_PORTA_WRITE_CB(WRITE8(nbmj9195_state, soundcpu_porta_w)) \ 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 ) static MACHINE_CONFIG_START( NBMJDRV1_base, nbmj9195_state )
/* basic machine hardware */ /* basic machine hardware */
MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */ MCFG_CPU_ADD("maincpu", TMPZ84C011, 12000000/2) /* TMPZ84C011, 6.00 MHz */
MCFG_CPU_CONFIG(daisy_chain_main)
MCFG_CPU_PROGRAM_MAP(sailorws_map) MCFG_CPU_PROGRAM_MAP(sailorws_map)
MCFG_CPU_IO_MAP(sailorws_io_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_CPU_VBLANK_INT_DRIVER("screen", nbmj9195_state, ctc0_trg1) /* vblank is connect to ctc trigger */
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0))
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */ MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */
MCFG_CPU_CONFIG(daisy_chain_sound)
MCFG_CPU_PROGRAM_MAP(sailorws_sound_map) MCFG_CPU_PROGRAM_MAP(sailorws_sound_map)
MCFG_CPU_IO_MAP(sailorws_sound_io_map) MCFG_CPU_IO_MAP(sailorws_sound_io_map)
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
/* video hardware */ /* video hardware */
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
@ -3167,7 +3149,6 @@ static MACHINE_CONFIG_DERIVED( shabdama, NBMJDRV1 )
MCFG_CPU_MODIFY("maincpu") MCFG_CPU_MODIFY("maincpu")
MCFG_CPU_PROGRAM_MAP(shabdama_map) MCFG_CPU_PROGRAM_MAP(shabdama_map)
MCFG_CPU_IO_MAP(shabdama_io_map) MCFG_CPU_IO_MAP(shabdama_io_map)
MACHINE_CONFIG_END MACHINE_CONFIG_END

View File

@ -40,7 +40,6 @@ Memo:
#include "includes/nb1413m3.h" #include "includes/nb1413m3.h"
#include "sound/dac.h" #include "sound/dac.h"
#include "sound/3812intf.h" #include "sound/3812intf.h"
#include "cpu/z80/z80daisy.h"
#include "machine/nvram.h" #include "machine/nvram.h"
#include "includes/niyanpai.h" #include "includes/niyanpai.h"
@ -761,13 +760,6 @@ INTERRUPT_GEN_MEMBER(niyanpai_state::niyanpai_interrupt)
m_tmp68301->external_interrupt_0(); m_tmp68301->external_interrupt_0();
} }
static const z80_daisy_config daisy_chain_sound[] =
{
{ "audiocpu:ctc" },
{ NULL }
};
static MACHINE_CONFIG_START( niyanpai, niyanpai_state ) 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_TMP68301_OUT_PARALLEL_CB(WRITE16(niyanpai_state, tmp68301_parallel_port_w))
MCFG_CPU_ADD("audiocpu", TMPZ84C011, 8000000) /* TMPZ84C011, 8.00 MHz */ 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_PROGRAM_MAP(niyanpai_sound_map)
MCFG_CPU_IO_MAP(niyanpai_sound_io_map) MCFG_CPU_IO_MAP(niyanpai_sound_io_map)
MCFG_TMPZ84C011_PORTD_READ_CB(READ8(niyanpai_state, cpu_portd_r)) 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_PORTB_WRITE_CB(WRITE8(niyanpai_state, cpu_portb_w))
MCFG_TMPZ84C011_PORTC_WRITE_CB(WRITE8(niyanpai_state, cpu_portc_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_PORTE_WRITE_CB(WRITE8(niyanpai_state, cpu_porte_w))
MCFG_TMPZ84C011_Z80CTC_INTR_CB(INPUTLINE("audiocpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_MODIFY("audiocpu:ctc")
MCFG_TMPZ84C011_Z80CTC_ZC0_CB(DEVWRITELINE("audiocpu:ctc", z80ctc_device, trg3)) MCFG_Z80CTC_ZC0_CB(DEVWRITELINE("ctc", z80ctc_device, trg3))
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")