From 75b2ace6e4e9e3d873da2abecfc1ed6047e062d9 Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Sun, 16 Mar 2014 15:32:27 +0000 Subject: [PATCH] Cleaned up devcb2 usage. (nw) --- src/emu/sound/mos6560.h | 22 +++++---- src/emu/sound/mos6581.h | 13 ++--- src/mess/drivers/c128.c | 32 ++++++++++-- src/mess/drivers/c64.c | 85 ++++++++++++++++++++++---------- src/mess/drivers/c65.c | 6 ++- src/mess/drivers/cbm2.c | 51 ++++++++++++++------ src/mess/drivers/vic10.c | 23 ++++++--- src/mess/drivers/vic20.c | 8 ++- src/mess/video/mos6566.c | 9 ++-- src/mess/video/mos6566.h | 102 ++++++--------------------------------- 10 files changed, 190 insertions(+), 161 deletions(-) diff --git a/src/emu/sound/mos6560.h b/src/emu/sound/mos6560.h index 605c0a8b0e2..68dc107518e 100644 --- a/src/emu/sound/mos6560.h +++ b/src/emu/sound/mos6560.h @@ -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(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(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(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 void set_callbacks(_potx potx, _poty poty) { - m_read_potx.set_callback(potx); - m_read_poty.set_callback(poty); - } + + template static devcb2_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_potx.set_callback(object); } + template static devcb2_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_poty.set_callback(object); } virtual const address_space_config *memory_space_config(address_spacenum spacenum = AS_0) const; diff --git a/src/emu/sound/mos6581.h b/src/emu/sound/mos6581.h index 5cc70dfd1d9..2e3cb4e9035 100644 --- a/src/emu/sound/mos6581.h +++ b/src/emu/sound/mos6581.h @@ -37,8 +37,11 @@ // INTERFACE CONFIGURATION MACROS //************************************************************************** -#define MCFG_MOS6581_POTXY_CALLBACKS(_potx, _poty) \ - downcast(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 void set_callbacks(_potx potx, _poty poty) { - m_read_potx.set_callback(potx); - m_read_poty.set_callback(poty); - } + template static devcb2_base &set_potx_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_potx.set_callback(object); } + template static devcb2_base &set_poty_rd_callback(device_t &device, _Object object) { return downcast(device).m_read_poty.set_callback(object); } DECLARE_READ8_MEMBER( read ); DECLARE_WRITE8_MEMBER( write ); diff --git a/src/mess/drivers/c128.c b/src/mess/drivers/c128.c index b0f3ebc0c84..4fa2d51f077 100644 --- a/src/mess/drivers/c128.c +++ b/src/mess/drivers/c128.c @@ -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) diff --git a/src/mess/drivers/c64.c b/src/mess/drivers/c64.c index 182173f0983..c50b5635cef 100644 --- a/src/mess/drivers/c64.c +++ b/src/mess/drivers/c64.c @@ -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)) diff --git a/src/mess/drivers/c65.c b/src/mess/drivers/c65.c index e1299c40245..23ef1043945 100644 --- a/src/mess/drivers/c65.c +++ b/src/mess/drivers/c65.c @@ -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) diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index 6c188a0e5a9..e93977f6255 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -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)) diff --git a/src/mess/drivers/vic10.c b/src/mess/drivers/vic10.c index 8c0a2feeced..1bce8448c42 100644 --- a/src/mess/drivers/vic10.c +++ b/src/mess/drivers/vic10.c @@ -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)) diff --git a/src/mess/drivers/vic20.c b/src/mess/drivers/vic20.c index 0eaa84f32c1..ff9404d1ce0 100644 --- a/src/mess/drivers/vic20.c +++ b/src/mess/drivers/vic20.c @@ -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 diff --git a/src/mess/video/mos6566.c b/src/mess/video/mos6566.c index 131c20f4cd9..243a17eaac9 100644 --- a/src/mess/video/mos6566.c +++ b/src/mess/video/mos6566.c @@ -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(m_cpu_tag); - else - m_cpu = machine().firstcpu; - m_screen->register_screen_bitmap(m_bitmap); for (int i = 0; i < 256; i++) diff --git a/src/mess/video/mos6566.h b/src/mess/video/mos6566.h index fe4ca992d6a..e5996a59ba2 100644 --- a/src/mess/video/mos6566.h +++ b/src/mess/video/mos6566.h @@ -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(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(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(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(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(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(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(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 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(device).m_cpu.set_tag(tag); } + template static devcb2_base &set_irq_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_irq.set_callback(object); } + template static devcb2_base &set_ba_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_ba.set_callback(object); } + template static devcb2_base &set_aec_wr_callback(device_t &device, _Object object) { return downcast(device).m_write_aec.set_callback(object); } + template static devcb2_base &set_k_wr_callback(device_t &device, _Object object) { return downcast(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 m_cpu; int m_phi0; int m_ba;