diff options
Diffstat (limited to 'src/mess/drivers/c128.c')
-rw-r--r-- | src/mess/drivers/c128.c | 101 |
1 files changed, 37 insertions, 64 deletions
diff --git a/src/mess/drivers/c128.c b/src/mess/drivers/c128.c index 4a63515e07e..992026dfb45 100644 --- a/src/mess/drivers/c128.c +++ b/src/mess/drivers/c128.c @@ -899,16 +899,6 @@ WRITE8_MEMBER( c128_state::vic_k_w ) m_vic_k = data; } -static MOS8564_INTERFACE( vic_intf ) -{ - SCREEN_VIC_TAG, - M8502_TAG, - DEVCB_DRIVER_LINE_MEMBER(c128_state, vic_irq_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(c128_state, vic_k_w) -}; - //------------------------------------------------- // MOS6581_INTERFACE( sid_intf ) @@ -968,12 +958,6 @@ READ8_MEMBER( c128_state::sid_poty_r ) return data; } -static MOS6581_INTERFACE( sid_intf ) -{ - DEVCB_DRIVER_MEMBER(c128_state, sid_potx_r), - DEVCB_DRIVER_MEMBER(c128_state, sid_poty_r) -}; - //------------------------------------------------- // MOS6526_INTERFACE( cia1_intf ) @@ -1112,18 +1096,6 @@ WRITE_LINE_MEMBER( c128_state::cia1_sp_w ) update_iec(); } -static MOS6526_INTERFACE( cia1_intf ) -{ - DEVCB_DRIVER_LINE_MEMBER(c128_state, cia1_irq_w), - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(c128_state, cia1_cnt_w), - DEVCB_DRIVER_LINE_MEMBER(c128_state, cia1_sp_w), - DEVCB_DRIVER_MEMBER(c128_state, cia1_pa_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(c128_state, cia1_pb_r), - DEVCB_DRIVER_MEMBER(c128_state, cia1_pb_w) -}; - //------------------------------------------------- // MOS6526_INTERFACE( cia2_intf ) @@ -1197,18 +1169,6 @@ WRITE8_MEMBER( c128_state::cia2_pa_w ) update_iec(); } -static MOS6526_INTERFACE( cia2_intf ) -{ - DEVCB_DRIVER_LINE_MEMBER(c128_state, cia2_irq_w), - DEVCB_DEVICE_LINE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, pc2_w), - DEVCB_DEVICE_LINE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, sp2_w), - DEVCB_DEVICE_LINE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, cnt2_w), - DEVCB_DRIVER_MEMBER(c128_state, cia2_pa_r), - DEVCB_DRIVER_MEMBER(c128_state, cia2_pa_w), - DEVCB_DEVICE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, pb_r), - DEVCB_DEVICE_MEMBER(C64_USER_PORT_TAG, c64_user_port_device, pb_w) -}; - //------------------------------------------------- // M6510_INTERFACE( cpu_intf ) @@ -1313,15 +1273,6 @@ WRITE_LINE_MEMBER( c128_state::iec_data_w ) update_iec(); } -static CBM_IEC_INTERFACE( cbm_iec_intf ) -{ - DEVCB_DRIVER_LINE_MEMBER(c128_state, iec_srq_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(c128_state, iec_data_w), - DEVCB_NULL -}; - //------------------------------------------------- // C64_EXPANSION_INTERFACE( expansion_intf ) @@ -1491,13 +1442,13 @@ 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, VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map) + MCFG_MOS8564_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, DEVWRITELINE(DEVICE_SELF, c128_state, vic_irq_w), DEVWRITE8(DEVICE_SELF, c128_state, vic_k_w)) MCFG_GFXDECODE(c128) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6581_TAG, SID6581, VIC6567_CLOCK) - MCFG_SOUND_CONFIG(sid_intf) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK) + MCFG_MOS6581_POTXY_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, sid_potx_r), DEVREAD8(DEVICE_SELF, 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) @@ -1505,8 +1456,14 @@ static MACHINE_CONFIG_START( ntsc, c128_state ) // devices MCFG_MOS8722_ADD(MOS8722_TAG, mmu_intf) MCFG_MOS8721_ADD(MOS8721_TAG) - MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, cia1_intf) - MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, cia2_intf) + MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6567_CLOCK, 60, DEVWRITELINE(DEVICE_SELF, c128_state, cia1_irq_w)) + MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c128_state, cia1_cnt_w), DEVWRITELINE(DEVICE_SELF, c128_state, cia1_sp_w)) + MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia1_pa_r), NULL) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia1_pb_r), DEVWRITE8(DEVICE_SELF, c128_state, cia1_pb_w), NULL) + MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6567_CLOCK, 60, DEVWRITELINE(DEVICE_SELF, c128_state, cia2_irq_w)) + MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, cnt2_w), DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, sp2_w)) + MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia2_pa_r), DEVWRITE8(DEVICE_SELF, c128_state, cia2_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(C64_USER_PORT_TAG, c64_user_port_device, pb_r), DEVWRITE8(C64_USER_PORT_TAG, c64_user_port_device, pb_w), DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, pc2_w)) MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_2_TAG, mos6526_device, flag_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) @@ -1547,7 +1504,9 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_DERIVED( c128, ntsc ) - MCFG_CBM_IEC_ADD(cbm_iec_intf, "c1571") + MCFG_CBM_IEC_ADD("c1571") + MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_srq_w)) + MCFG_CBM_IEC_BUS_DATA_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_data_w)) MACHINE_CONFIG_END @@ -1556,12 +1515,14 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_DERIVED( c128dcr, ntsc ) - MCFG_CBM_IEC_BUS_ADD(cbm_iec_intf) MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571", NULL) // TODO c1571cr MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL, NULL) + MCFG_CBM_IEC_BUS_ADD() + MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_srq_w)) + MCFG_CBM_IEC_BUS_DATA_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_data_w)) MACHINE_CONFIG_END @@ -1570,12 +1531,14 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_DERIVED( c128d81, ntsc ) - MCFG_CBM_IEC_BUS_ADD(cbm_iec_intf) MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128d81_iec_devices, "c1563", NULL) MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL, NULL) + MCFG_CBM_IEC_BUS_ADD() + MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_srq_w)) + MCFG_CBM_IEC_BUS_DATA_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_data_w)) MACHINE_CONFIG_END @@ -1598,13 +1561,13 @@ 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, VIC6569_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map) + MCFG_MOS8566_ADD(MOS8564_TAG, SCREEN_VIC_TAG, M8502_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, DEVWRITELINE(DEVICE_SELF, c128_state, vic_irq_w), DEVWRITE8(DEVICE_SELF, c128_state, vic_k_w)) MCFG_GFXDECODE(c128) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6581_TAG, SID6581, VIC6569_CLOCK) - MCFG_SOUND_CONFIG(sid_intf) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK) + MCFG_MOS6581_POTXY_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, sid_potx_r), DEVREAD8(DEVICE_SELF, 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) @@ -1612,8 +1575,14 @@ static MACHINE_CONFIG_START( pal, c128_state ) // devices MCFG_MOS8722_ADD(MOS8722_TAG, mmu_intf) MCFG_MOS8721_ADD(MOS8721_TAG) - MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, cia1_intf) - MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, cia2_intf) + MCFG_MOS6526_ADD(MOS6526_1_TAG, VIC6569_CLOCK, 50, DEVWRITELINE(DEVICE_SELF, c128_state, cia1_irq_w)) + MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(DEVICE_SELF, c128_state, cia1_cnt_w), DEVWRITELINE(DEVICE_SELF, c128_state, cia1_sp_w)) + MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia1_pa_r), NULL) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia1_pb_r), DEVWRITE8(DEVICE_SELF, c128_state, cia1_pb_w), NULL) + MCFG_MOS6526_ADD(MOS6526_2_TAG, VIC6569_CLOCK, 50, DEVWRITELINE(DEVICE_SELF, c128_state, cia2_irq_w)) + MCFG_MOS6526_SERIAL_CALLBACKS(DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, cnt2_w), DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, sp2_w)) + MCFG_MOS6526_PORT_A_CALLBACKS(DEVREAD8(DEVICE_SELF, c128_state, cia2_pa_r), DEVWRITE8(DEVICE_SELF, c128_state, cia2_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(C64_USER_PORT_TAG, c64_user_port_device, pb_r), DEVWRITE8(C64_USER_PORT_TAG, c64_user_port_device, pb_w), DEVWRITELINE(C64_USER_PORT_TAG, c64_user_port_device, pc2_w)) MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg", CBM_QUICKLOAD_DELAY_SECONDS) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, "c1530", NULL, DEVWRITELINE(MOS6526_2_TAG, mos6526_device, flag_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) @@ -1654,7 +1623,9 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_DERIVED( c128pal, pal ) - MCFG_CBM_IEC_ADD(cbm_iec_intf, "c1571") + MCFG_CBM_IEC_ADD("c1571") + MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_srq_w)) + MCFG_CBM_IEC_BUS_DATA_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_data_w)) MACHINE_CONFIG_END @@ -1663,12 +1634,14 @@ MACHINE_CONFIG_END //------------------------------------------------- static MACHINE_CONFIG_DERIVED( c128dcrp, pal ) - MCFG_CBM_IEC_BUS_ADD(cbm_iec_intf) MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec8", 8, c128dcr_iec_devices, "c1571", NULL) // TODO c1571cr MCFG_CBM_IEC_SLOT_ADD("iec9", 9, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec10", 10, cbm_iec_devices, NULL, NULL) MCFG_CBM_IEC_SLOT_ADD("iec11", 11, cbm_iec_devices, NULL, NULL) + MCFG_CBM_IEC_BUS_ADD() + MCFG_CBM_IEC_BUS_SRQ_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_srq_w)) + MCFG_CBM_IEC_BUS_DATA_CALLBACK(DEVWRITELINE(DEVICE_SELF, c128_state, iec_data_w)) MACHINE_CONFIG_END |