Cleaned up devcb2 usage. (nw)

This commit is contained in:
Curt Coder 2014-03-16 15:32:27 +00:00
parent 0ee0b829f1
commit 75b2ace6e4
10 changed files with 190 additions and 161 deletions

View File

@ -43,7 +43,7 @@
// DEVICE CONFIGURATION MACROS
//***************************************************************************
#define MCFG_MOS6560_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _potx, _poty) \
#define MCFG_MOS6560_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(MOS6560_VRETRACERATE) \
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
@ -52,11 +52,10 @@
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \
MCFG_SOUND_ADD(_tag, MOS6560, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6560_device *>(device)->set_callbacks(DEVCB2_##_potx, DEVCB2_##_poty); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map)
#define MCFG_MOS6561_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _potx, _poty) \
#define MCFG_MOS6561_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(MOS6561_VRETRACERATE) \
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) \
@ -65,7 +64,6 @@
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \
MCFG_SOUND_ADD(_tag, MOS6561, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6560_device *>(device)->set_callbacks(DEVCB2_##_potx, DEVCB2_##_poty); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map)
@ -78,11 +76,17 @@
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6560_device, screen_update) \
MCFG_SOUND_ADD(_tag, MOS656X_ATTACK_UFO, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6560_device *>(device)->set_callbacks(DEVCB2_NULL, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map)
#define MCFG_MOS6560_POTX_CALLBACK(_read) \
devcb = &mos6560_device::set_potx_rd_callback(*device, DEVCB2_##_read);
#define MCFG_MOS6560_POTY_CALLBACK(_read) \
devcb = &mos6560_device::set_poty_rd_callback(*device, DEVCB2_##_read);
//**************************************************************************
// MACROS / CONSTANTS
@ -134,11 +138,9 @@ class mos6560_device : public device_t,
public:
mos6560_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
mos6560_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
template<class _potx, class _poty> void set_callbacks(_potx potx, _poty poty) {
m_read_potx.set_callback(potx);
m_read_poty.set_callback(poty);
}
template<class _Object> static devcb2_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast<mos6560_device &>(device).m_read_potx.set_callback(object); }
template<class _Object> static devcb2_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast<mos6560_device &>(device).m_read_poty.set_callback(object); }
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;

View File

@ -37,8 +37,11 @@
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_MOS6581_POTXY_CALLBACKS(_potx, _poty) \
downcast<mos6581_device *>(device)->set_callbacks(DEVCB2_##_potx, DEVCB2_##_poty);
#define MCFG_MOS6581_POTX_CALLBACK(_read) \
devcb = &mos6581_device::set_potx_rd_callback(*device, DEVCB2_##_read);
#define MCFG_MOS6581_POTY_CALLBACK(_read) \
devcb = &mos6581_device::set_poty_rd_callback(*device, DEVCB2_##_read);
@ -58,10 +61,8 @@ public:
mos6581_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
~mos6581_device();
template<class _potx, class _poty> void set_callbacks(_potx potx, _poty poty) {
m_read_potx.set_callback(potx);
m_read_poty.set_callback(poty);
}
template<class _Object> static devcb2_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast<mos6581_device &>(device).m_read_potx.set_callback(object); }
template<class _Object> static devcb2_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast<mos6581_device &>(device).m_read_poty.set_callback(object); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );

View File

@ -1456,14 +1456,26 @@ static MACHINE_CONFIG_START( ntsc, c128_state )
// video hardware
MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6567_CLOCK*2, vdc_intf, vdc_videoram_map)
MCFG_MOS8564_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c128_state, vic_irq_w), WRITE8(c128_state, vic_k_w))
MCFG_DEVICE_ADD(MOS8564_TAG, MOS8564, VIC6567_CLOCK)
MCFG_MOS6566_CPU(M8502_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w))
MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_VIC_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_VIC_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS8564_TAG, mos8564_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", MOS8563_TAG":palette", c128)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c128_state, sid_potx_r), READ8(c128_state, sid_poty_r))
MCFG_MOS6581_POTX_CALLBACK(READ8(c128_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c128_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_SOUND_ADD("dac", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
@ -1594,14 +1606,26 @@ static MACHINE_CONFIG_START( pal, c128_state )
// video hardware
MCFG_MOS8563_ADD(MOS8563_TAG, SCREEN_VDC_TAG, VIC6569_CLOCK*2, vdc_intf, vdc_videoram_map)
MCFG_MOS8566_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c128_state, vic_irq_w), WRITE8(c128_state, vic_k_w))
MCFG_DEVICE_ADD(MOS8566_TAG, MOS8566, VIC6569_CLOCK)
MCFG_MOS6566_CPU(M8502_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c128_state, vic_irq_w))
MCFG_MOS8564_K_CALLBACK(WRITE8(c128_state, vic_k_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_VIC_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_VIC_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS8566_TAG, mos8566_device, screen_update)
MCFG_GFXDECODE_ADD("gfxdecode", MOS8563_TAG":palette", c128)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c128_state, sid_potx_r), READ8(c128_state, sid_poty_r))
MCFG_MOS6581_POTX_CALLBACK(READ8(c128_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c128_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
MCFG_SOUND_ADD("dac", DAC, 0)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)

View File

@ -1086,28 +1086,39 @@ void c64_state::machine_reset()
static MACHINE_CONFIG_START( ntsc, c64_state )
// basic hardware
MCFG_CPU_ADD(M6510_TAG, M6510, VIC6567_CLOCK)
MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_14_31818MHz/14)
MCFG_CPU_PROGRAM_MAP(c64_mem)
MCFG_M6510_PORT_CALLBACKS(READ8(c64_state, cpu_r), WRITE8(c64_state, cpu_w))
MCFG_M6510_PORT_PULLS(0x17, 0xc8)
MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
// video hardware
MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c64_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6567_TAG, MOS6567, XTAL_14_31818MHz/14)
MCFG_MOS6566_CPU(M6510_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6567_TAG, mos6567_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c64_state, sid_potx_r), READ8(c64_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_14_31818MHz/14)
MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
MCFG_PLS100_ADD(PLA_TAG)
MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_ADD(MOS6526_1_TAG, XTAL_14_31818MHz/14, 60, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_4), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_5))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64_state, cia1_pa_r), NULL)
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64_state, cia1_pb_r), WRITE8(c64_state, cia1_pb_w), NULL)
MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_ADD(MOS6526_2_TAG, XTAL_14_31818MHz/14, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_6), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_7))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64_state, cia2_pa_r), WRITE8(c64_state, cia2_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64_state, cia2_pb_r), WRITE8(c64_state, cia2_pb_w), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_8))
@ -1118,7 +1129,7 @@ static MACHINE_CONFIG_START( ntsc, c64_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy")
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, XTAL_14_31818MHz/14, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(c64_state, exp_irq_w), WRITELINE(c64_state, exp_nmi_w), WRITELINE(c64_state, exp_reset_w))
MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(READ8(c64_state, read), WRITE8(c64_state, write), WRITELINE(c64_state, exp_dma_w))
@ -1203,8 +1214,9 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED_CLASS( ntsc_c, ntsc, c64c_state )
MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, VIC6567_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c64_state, sid_potx_r), READ8(c64_state, sid_poty_r))
MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, XTAL_14_31818MHz/14)
MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
@ -1215,28 +1227,39 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( pal, c64_state )
// basic hardware
MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK)
MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_17_734472MHz/18)
MCFG_CPU_PROGRAM_MAP(c64_mem)
MCFG_M6510_PORT_CALLBACKS(READ8(c64_state, cpu_r), WRITE8(c64_state, cpu_w))
MCFG_M6510_PORT_PULLS(0x17, 0xc8)
MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
// video hardware
MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c64_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6569_TAG, MOS6569, XTAL_17_734472MHz/18)
MCFG_MOS6566_CPU(M6510_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6569_TAG, mos6569_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c64_state, sid_potx_r), READ8(c64_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_17_734472MHz/18)
MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
MCFG_PLS100_ADD(PLA_TAG)
MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_ADD(MOS6526_1_TAG, XTAL_17_734472MHz/18, 50, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_4), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_5))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64_state, cia1_pa_r), NULL)
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64_state, cia1_pb_r), WRITE8(c64_state, cia1_pb_w), NULL)
MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_ADD(MOS6526_2_TAG, XTAL_17_734472MHz/18, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_6), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_7))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64_state, cia2_pa_r), WRITE8(c64_state, cia2_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64_state, cia2_pb_r), WRITE8(c64_state, cia2_pb_w), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_8))
@ -1247,7 +1270,7 @@ static MACHINE_CONFIG_START( pal, c64_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy")
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, XTAL_17_734472MHz/18, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(c64_state, exp_irq_w), WRITELINE(c64_state, exp_nmi_w), WRITELINE(c64_state, exp_reset_w))
MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(READ8(c64_state, read), WRITE8(c64_state, write), WRITELINE(c64_state, exp_dma_w))
@ -1310,8 +1333,9 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_DERIVED_CLASS( pal_c, pal, c64c_state )
MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, VIC6569_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c64_state, sid_potx_r), READ8(c64_state, sid_poty_r))
MCFG_SOUND_REPLACE(MOS6581_TAG, MOS8580, XTAL_17_734472MHz/18)
MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
MACHINE_CONFIG_END
@ -1322,28 +1346,39 @@ MACHINE_CONFIG_END
static MACHINE_CONFIG_START( pal_gs, c64gs_state )
// basic hardware
MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK)
MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_17_734472MHz/18)
MCFG_CPU_PROGRAM_MAP(c64_mem)
MCFG_M6510_PORT_CALLBACKS(READ8(c64gs_state, cpu_r), WRITE8(c64gs_state, cpu_w))
MCFG_M6510_PORT_PULLS(0x07, 0xc0)
MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
// video hardware
MCFG_MOS8565_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(c64_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6569_TAG, MOS8565, XTAL_17_734472MHz/18)
MCFG_MOS6566_CPU(M6510_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(c64_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6569_TAG, mos8565_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS8580, VIC6569_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c64_state, sid_potx_r), READ8(c64_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS8580, XTAL_17_734472MHz/18)
MCFG_MOS6581_POTX_CALLBACK(READ8(c64_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c64_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
MCFG_PLS100_ADD(PLA_TAG)
MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_ADD(MOS6526_1_TAG, XTAL_17_734472MHz/18, 50, WRITELINE(c64_state, cia1_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_4), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_5))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64gs_state, cia1_pa_r), NULL)
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64gs_state, cia1_pb_r), WRITE8(c64gs_state, cia1_pb_w), NULL)
MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_ADD(MOS6526_2_TAG, XTAL_17_734472MHz/18, 60, WRITELINE(c64_state, cia2_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_6), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_7))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(c64_state, cia2_pa_r), WRITE8(c64_state, cia2_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(c64_state, cia2_pb_r), WRITE8(c64_state, cia2_pb_w), DEVWRITELINE(PET_USER_PORT_TAG, pet_user_port_device, write_8))
@ -1353,7 +1388,7 @@ static MACHINE_CONFIG_START( pal_gs, c64gs_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy")
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, XTAL_17_734472MHz/18, c64_expansion_cards, NULL)
MCFG_C64_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(c64_state, exp_irq_w), WRITELINE(c64_state, exp_nmi_w), WRITELINE(c64_state, exp_reset_w))
MCFG_C64_EXPANSION_SLOT_DMA_CALLBACKS(READ8(c64_state, read), WRITE8(c64_state, write), WRITELINE(c64_state, exp_dma_w))

View File

@ -571,7 +571,8 @@ static MACHINE_CONFIG_START( c65, c65_state )
/* sound hardware */
MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker")
MCFG_SOUND_ADD("sid_r", MOS8580, 985248)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c65_state, sid_potx_r), READ8(c65_state, sid_poty_r))
MCFG_MOS6581_POTX_CALLBACK(READ8(c65_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c65_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MCFG_SOUND_ADD("sid_l", MOS8580, 985248)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)
@ -608,7 +609,8 @@ static MACHINE_CONFIG_DERIVED( c65pal, c65 )
/* sound hardware */
MCFG_SOUND_REPLACE("sid_r", MOS8580, 1022727)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(c65_state, sid_potx_r), READ8(c65_state, sid_poty_r))
MCFG_MOS6581_POTX_CALLBACK(READ8(c65_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(c65_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.50)
MCFG_SOUND_REPLACE("sid_l", MOS8580, 1022727)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.50)

View File

@ -2108,17 +2108,28 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state )
MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500)
// basic hardware
MCFG_CPU_ADD(M6509_TAG, M6509, VIC6567_CLOCK)
MCFG_CPU_ADD(M6509_TAG, M6509, XTAL_14_31818MHz/14)
MCFG_CPU_PROGRAM_MAP(p500_mem)
MCFG_QUANTUM_PERFECT_CPU(M6509_TAG)
// video hardware
MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(p500_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6567_TAG, MOS6567, XTAL_14_31818MHz/14)
MCFG_MOS6566_CPU(M6509_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(p500_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6567_TAG, mos6567_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(p500_state, sid_potx_r), READ8(p500_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_14_31818MHz/14)
MCFG_MOS6581_POTX_CALLBACK(READ8(p500_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(p500_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
@ -2131,7 +2142,7 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state )
MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w))
MCFG_MOS6551_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd))
MCFG_MOS6526_ADD(MOS6526_TAG, VIC6567_CLOCK, 60, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_14_31818MHz/14, 60, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w))
@ -2159,7 +2170,7 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6567_CLOCK, cbm2_expansion_cards, NULL)
MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, XTAL_14_31818MHz/14, cbm2_expansion_cards, NULL)
MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, cbm2_user_port_cards, NULL)
MCFG_CBM2_USER_PORT_IRQ_CALLBACK(WRITELINE(p500_state, user_irq_w))
MCFG_CBM2_USER_PORT_SP_CALLBACK(DEVWRITELINE(MOS6526_TAG, mos6526_device, sp_w))
@ -2194,17 +2205,28 @@ static MACHINE_CONFIG_START( p500_pal, p500_state )
MCFG_MACHINE_RESET_OVERRIDE(p500_state, p500)
// basic hardware
MCFG_CPU_ADD(M6509_TAG, M6509, VIC6569_CLOCK)
MCFG_CPU_ADD(M6509_TAG, M6509, XTAL_17_734472MHz/18)
MCFG_CPU_PROGRAM_MAP(p500_mem)
MCFG_QUANTUM_PERFECT_CPU(M6509_TAG)
// video hardware
MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(p500_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6569_TAG, MOS6569, XTAL_17_734472MHz/18)
MCFG_MOS6566_CPU(M6509_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(p500_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6569_TAG, mos6569_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(p500_state, sid_potx_r), READ8(p500_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_17_734472MHz/18)
MCFG_MOS6581_POTX_CALLBACK(READ8(p500_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(p500_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
@ -2217,7 +2239,7 @@ static MACHINE_CONFIG_START( p500_pal, p500_state )
MCFG_MOS6551_IRQ_HANDLER(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w))
MCFG_MOS6551_TXD_HANDLER(DEVWRITELINE(RS232_TAG, rs232_port_device, write_txd))
MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_17_734472MHz/18, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w))
@ -2245,7 +2267,7 @@ static MACHINE_CONFIG_START( p500_pal, p500_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL)
MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, VIC6569_CLOCK, cbm2_expansion_cards, NULL)
MCFG_CBM2_EXPANSION_SLOT_ADD(CBM2_EXPANSION_SLOT_TAG, XTAL_17_734472MHz/18, cbm2_expansion_cards, NULL)
MCFG_CBM2_USER_PORT_ADD(CBM2_USER_PORT_TAG, cbm2_user_port_cards, NULL)
MCFG_CBM2_USER_PORT_IRQ_CALLBACK(WRITELINE(p500_state, user_irq_w))
MCFG_CBM2_USER_PORT_SP_CALLBACK(DEVWRITELINE(MOS6526_TAG, mos6526_device, sp_w))
@ -2300,7 +2322,8 @@ static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state )
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_18MHz/9)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(cbm2_state, sid_potx_r), READ8(cbm2_state, sid_poty_r))
MCFG_MOS6581_POTX_CALLBACK(READ8(cbm2_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(cbm2_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
@ -2388,7 +2411,7 @@ static MACHINE_CONFIG_DERIVED( cbm2lp_pal, cbm2lp_ntsc )
MCFG_MACHINE_START_OVERRIDE(cbm2_state, cbm2_pal)
MCFG_DEVICE_REMOVE(MOS6526_TAG)
MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_17_734472MHz/18, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i2_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(cbm2_state, cia_pa_r), WRITE8(cbm2_state, cia_pa_w))
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(cbm2_state, cia_pb_r), DEVWRITE8(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w), DEVWRITELINE(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w))

View File

@ -604,23 +604,34 @@ void vic10_state::machine_reset()
static MACHINE_CONFIG_START( vic10, vic10_state )
// basic hardware
MCFG_CPU_ADD(M6510_TAG, M6510, VIC6566_CLOCK)
MCFG_CPU_ADD(M6510_TAG, M6510, XTAL_8MHz/8)
MCFG_CPU_PROGRAM_MAP(vic10_mem)
MCFG_M6510_PORT_CALLBACKS(READ8(vic10_state, cpu_r), WRITE8(vic10_state, cpu_w))
MCFG_M6510_PORT_PULLS(0x10, 0x20)
MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
// video hardware
MCFG_MOS6566_ADD(MOS6566_TAG, SCREEN_TAG, VIC6566_CLOCK, vic_videoram_map, vic_colorram_map, WRITELINE(vic10_state, vic_irq_w))
MCFG_DEVICE_ADD(MOS6566_TAG, MOS6566, XTAL_8MHz/8)
MCFG_MOS6566_CPU(M6510_TAG)
MCFG_MOS6566_IRQ_CALLBACK(WRITELINE(vic10_state, vic_irq_w))
MCFG_VIDEO_SET_SCREEN(SCREEN_TAG)
MCFG_DEVICE_ADDRESS_MAP(AS_0, vic_videoram_map)
MCFG_DEVICE_ADDRESS_MAP(AS_1, vic_colorram_map)
MCFG_SCREEN_ADD(SCREEN_TAG, RASTER)
MCFG_SCREEN_REFRESH_RATE(VIC6566_VRETRACERATE)
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES)
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1)
MCFG_SCREEN_UPDATE_DEVICE(MOS6566_TAG, mos6566_device, screen_update)
// sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6566_CLOCK)
MCFG_MOS6581_POTXY_CALLBACKS(READ8(vic10_state, sid_potx_r), READ8(vic10_state, sid_poty_r))
MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_8MHz/8)
MCFG_MOS6581_POTX_CALLBACK(READ8(vic10_state, sid_potx_r))
MCFG_MOS6581_POTY_CALLBACK(READ8(vic10_state, sid_poty_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
// devices
MCFG_MOS6526_ADD(MOS6526_TAG, VIC6566_CLOCK, 60, WRITELINE(vic10_state, cia_irq_w))
MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_8MHz/8, 60, WRITELINE(vic10_state, cia_irq_w))
MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(VIC10_EXPANSION_SLOT_TAG, vic10_expansion_slot_device, cnt_w), DEVWRITELINE(VIC10_EXPANSION_SLOT_TAG, vic10_expansion_slot_device, sp_w))
MCFG_MOS6526_PORT_A_CALLBACKS(READ8(vic10_state, cia_pa_r), NULL)
MCFG_MOS6526_PORT_B_CALLBACKS(READ8(vic10_state, cia_pb_r), WRITE8(vic10_state, cia_pb_w), NULL)
@ -628,7 +639,7 @@ static MACHINE_CONFIG_START( vic10, vic10_state )
MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL)
MCFG_VCS_CONTROL_PORT_TRIGGER_CALLBACK(DEVWRITELINE(MOS6566_TAG, mos6566_device, lp_w))
MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, "joy")
MCFG_VIC10_EXPANSION_SLOT_ADD(VIC10_EXPANSION_SLOT_TAG, VIC6566_CLOCK, vic10_expansion_cards, NULL)
MCFG_VIC10_EXPANSION_SLOT_ADD(VIC10_EXPANSION_SLOT_TAG, XTAL_8MHz/8, vic10_expansion_cards, NULL)
MCFG_VIC10_EXPANSION_SLOT_IRQ_CALLBACKS(WRITELINE(vic10_state, exp_irq_w), WRITELINE(vic10_state, exp_reset_w))
MCFG_VIC10_EXPANSION_SLOT_SERIAL_CALLBACKS(DEVWRITELINE(MOS6526_TAG, mos6526_device, cnt_w), DEVWRITELINE(MOS6526_TAG, mos6526_device, sp_w))

View File

@ -723,7 +723,9 @@ static MACHINE_CONFIG_DERIVED( ntsc, vic20 )
// video/sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_MOS6560_ADD(M6560_TAG, SCREEN_TAG, MOS6560_CLOCK, vic_videoram_map, vic_colorram_map, DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_x_r), DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_y_r))
MCFG_MOS6560_ADD(M6560_TAG, SCREEN_TAG, MOS6560_CLOCK, vic_videoram_map, vic_colorram_map)
MCFG_MOS6560_POTX_CALLBACK(DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_x_r))
MCFG_MOS6560_POTY_CALLBACK(DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_y_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
@ -748,7 +750,9 @@ static MACHINE_CONFIG_DERIVED( pal, vic20 )
// video/sound hardware
MCFG_SPEAKER_STANDARD_MONO("mono")
MCFG_MOS6561_ADD(M6560_TAG, SCREEN_TAG, MOS6561_CLOCK, vic_videoram_map, vic_colorram_map, DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_x_r), DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_y_r))
MCFG_MOS6561_ADD(M6560_TAG, SCREEN_TAG, MOS6561_CLOCK, vic_videoram_map, vic_colorram_map)
MCFG_MOS6560_POTX_CALLBACK(DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_x_r))
MCFG_MOS6560_POTY_CALLBACK(DEVREAD8(CONTROL1_TAG, vcs_control_port_device, pot_y_r))
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices

View File

@ -591,7 +591,8 @@ mos6566_device::mos6566_device(const machine_config &mconfig, const char *tag, d
m_write_irq(*this),
m_write_ba(*this),
m_write_aec(*this),
m_write_k(*this)
m_write_k(*this),
m_cpu(*this)
{
}
@ -608,6 +609,7 @@ mos6566_device::mos6566_device(const machine_config &mconfig, device_type type,
m_write_ba(*this),
m_write_aec(*this),
m_write_k(*this),
m_cpu(*this),
m_phi0(1),
m_ba(ASSERT_LINE),
m_aec(ASSERT_LINE)
@ -654,11 +656,6 @@ void mos6566_device::device_start()
m_write_aec.resolve_safe();
m_write_k.resolve_safe();
if (m_cpu_tag != NULL)
m_cpu = machine().device<cpu_device>(m_cpu_tag);
else
m_cpu = machine().firstcpu;
m_screen->register_screen_bitmap(m_bitmap);
for (int i = 0; i < 256; i++)

View File

@ -91,89 +91,20 @@
// DEVICE CONFIGURATION MACROS
//***************************************************************************
#define MCFG_MOS6566_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _irq) \
MCFG_DEVICE_ADD(_tag, MOS6566, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(NULL, DEVCB2_##_irq, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6566_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6566_device, screen_update)
#define MCFG_MOS6566_CPU(_tag) \
mos6566_device::static_set_cpu_tag(*device, "^"_tag);
#define MCFG_MOS6567_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _irq) \
MCFG_DEVICE_ADD(_tag, MOS6567, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(NULL, DEVCB2_##_irq, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6567_device, screen_update)
#define MCFG_MOS6566_IRQ_CALLBACK(_write) \
devcb = &mos6566_device::set_irq_wr_callback(*device, DEVCB2_##_write);
#define MCFG_MOS8562_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _irq) \
MCFG_DEVICE_ADD(_tag, MOS8562, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(NULL, DEVCB2_##_irq, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8562_device, screen_update)
#define MCFG_MOS6566_BA_CALLBACK(_write) \
devcb = &mos6566_device::set_ba_wr_callback(*device, DEVCB2_##_write);
#define MCFG_MOS8564_ADD(_tag, _screen_tag, _cpu_tag, _clock, _videoram_map, _colorram_map, _irq, _k) \
MCFG_DEVICE_ADD(_tag, MOS8564, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(_cpu_tag, DEVCB2_##_irq, DEVCB2_##_k); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6567_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6567_COLUMNS, VIC6567_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6567_VISIBLECOLUMNS - 1, 0, VIC6567_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8564_device, screen_update)
#define MCFG_MOS6566_AEC_CALLBACK(_write) \
devcb = &mos6566_device::set_aec_wr_callback(*device, DEVCB2_##_write);
#define MCFG_MOS6569_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _irq) \
MCFG_DEVICE_ADD(_tag, MOS6569, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(NULL, DEVCB2_##_irq, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos6569_device, screen_update)
#define MCFG_MOS8565_ADD(_tag, _screen_tag, _clock, _videoram_map, _colorram_map, _irq) \
MCFG_DEVICE_ADD(_tag, MOS8565, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(NULL, DEVCB2_##_irq, DEVCB2_NULL); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8565_device, screen_update)
#define MCFG_MOS8566_ADD(_tag, _screen_tag, _cpu_tag, _clock, _videoram_map, _colorram_map, _irq, _k) \
MCFG_DEVICE_ADD(_tag, MOS8566, _clock) \
MCFG_VIDEO_SET_SCREEN(_screen_tag) \
downcast<mos6566_device *>(device)->set_callbacks(_cpu_tag, DEVCB2_##_irq, DEVCB2_##_k); \
MCFG_DEVICE_ADDRESS_MAP(AS_0, _videoram_map) \
MCFG_DEVICE_ADDRESS_MAP(AS_1, _colorram_map) \
MCFG_SCREEN_ADD(_screen_tag, RASTER) \
MCFG_SCREEN_REFRESH_RATE(VIC6569_VRETRACERATE) \
MCFG_SCREEN_SIZE(VIC6569_COLUMNS, VIC6569_LINES) \
MCFG_SCREEN_VISIBLE_AREA(0, VIC6569_VISIBLECOLUMNS - 1, 0, VIC6569_VISIBLELINES - 1) \
MCFG_SCREEN_UPDATE_DEVICE(_tag, mos8566_device, screen_update)
#define MCFG_MOS8564_K_CALLBACK(_write) \
devcb = &mos6566_device::set_k_wr_callback(*device, DEVCB2_##_write);
@ -284,11 +215,11 @@ public:
mos6566_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, UINT32 variant, const char *shortname, const char *source);
mos6566_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
template<class _irq, class _k> void set_callbacks(const char *cpu_tag, _irq irq, _k k) {
m_cpu_tag = cpu_tag;
m_write_irq.set_callback(irq);
m_write_k.set_callback(k);
}
static void static_set_cpu_tag(device_t &device, const char *tag) { downcast<mos6566_device &>(device).m_cpu.set_tag(tag); }
template<class _Object> static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_irq.set_callback(object); }
template<class _Object> static devcb2_base &set_ba_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_ba.set_callback(object); }
template<class _Object> static devcb2_base &set_aec_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_aec.set_callback(object); }
template<class _Object> static devcb2_base &set_k_wr_callback(device_t &device, _Object object) { return downcast<mos6566_device &>(device).m_write_k.set_callback(object); }
virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const;
@ -362,8 +293,7 @@ protected:
devcb2_write_line m_write_aec;
devcb2_write8 m_write_k;
const char *m_cpu_tag;
cpu_device *m_cpu;
required_device<cpu_device> m_cpu;
int m_phi0;
int m_ba;