diff options
author | 2013-02-12 15:21:24 +0000 | |
---|---|---|
committer | 2013-02-12 15:21:24 +0000 | |
commit | 7e6fabfb9e6797461c3f8f037ab1d4e8a4c69c04 (patch) | |
tree | c65a6911f296e74a918caaf39a5e6fc3fa56588e /src/mess/drivers/cbm2.c | |
parent | 8acbf9de2c66b6536969af8f621681a584a1d8c9 (diff) |
Modernized the MOS6526, MOS6560, MOS7360, MOS6581, CBM IEC, and IEEE-488 devices. [Curt Coder]
Diffstat (limited to 'src/mess/drivers/cbm2.c')
-rw-r--r-- | src/mess/drivers/cbm2.c | 117 |
1 files changed, 42 insertions, 75 deletions
diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index 676d17b85b3..053d274cfef 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1135,16 +1135,6 @@ WRITE_LINE_MEMBER( p500_state::vic_irq_w ) m_maincpu->set_input_line(INPUT_LINE_IRQ0, m_vic_irq || m_tpi1_irq || m_user_irq); } -static MOS6567_INTERFACE( vic_intf ) -{ - SCREEN_TAG, - M6509_TAG, - DEVCB_DRIVER_LINE_MEMBER(p500_state, vic_irq_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL -}; - //------------------------------------------------- // MOS6581_INTERFACE( sid_intf ) @@ -1204,12 +1194,6 @@ READ8_MEMBER( cbm2_state::sid_poty_r ) return data; } -static MOS6581_INTERFACE( sid_intf ) -{ - DEVCB_DRIVER_MEMBER(cbm2_state, sid_potx_r), - DEVCB_DRIVER_MEMBER(cbm2_state, sid_poty_r) -}; - //------------------------------------------------- // tpi6525_interface tpi1_intf @@ -1649,18 +1633,6 @@ READ8_MEMBER( cbm2_state::cia_pb_r ) return data; } -static MOS6526_INTERFACE( cia_intf ) -{ - DEVCB_DEVICE_LINE_MEMBER(MOS6525_1_TAG, tpi6525_device, i2_w), - DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, pc_w), - DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, sp_w), - DEVCB_DEVICE_LINE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, cnt_w), - DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_r), - DEVCB_DRIVER_MEMBER(cbm2_state, cia_pa_w), - DEVCB_DRIVER_MEMBER(cbm2_state, cia_pb_r), - DEVCB_DEVICE_MEMBER(CBM2_USER_PORT_TAG, cbm2_user_port_device, d2_w) -}; - //------------------------------------------------- // DS75161A_INTERFACE( ds75161a_intf ) @@ -1688,23 +1660,6 @@ static DS75161A_INTERFACE( ds75161a_intf ) //------------------------------------------------- -// IEEE488_INTERFACE( ieee488_intf ) -//------------------------------------------------- - -static IEEE488_INTERFACE( ieee488_intf ) -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER(MOS6525_1_TAG, tpi6525_device, i1_w), - DEVCB_NULL, - DEVCB_NULL -}; - - -//------------------------------------------------- // pic8259_interface ext_pic_intf //------------------------------------------------- @@ -1888,18 +1843,6 @@ WRITE8_MEMBER( cbm2_state::ext_cia_pb_w ) m_ext_pic->ir7_w(BIT(data, 7)); } -static MOS6526_INTERFACE( ext_cia_intf ) -{ - DEVCB_DEVICE_LINE_MEMBER(MOS6525_1_TAG, tpi6525_device, i3_w), - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_DEVICE_HANDLER(EXT_MOS6525_TAG, tpi6525_porta_r), - DEVCB_NULL, - DEVCB_DRIVER_MEMBER(cbm2_state, ext_cia_pb_r), - DEVCB_DRIVER_MEMBER(cbm2_state, ext_cia_pb_w) -}; - //------------------------------------------------- // CBM2_USER_PORT_INTERFACE( user_intf ) @@ -2187,12 +2130,12 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state ) MCFG_QUANTUM_PERFECT_CPU(M6509_TAG) // video hardware - MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map) + MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_videoram_map, vic_colorram_map, DEVWRITELINE(DEVICE_SELF, p500_state, vic_irq_w)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6567_CLOCK) - MCFG_SOUND_CONFIG(sid_intf) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6567_CLOCK) + MCFG_MOS6581_POTXY_CALLBACKS(DEVREAD8(DEVICE_SELF, p500_state, sid_potx_r), DEVREAD8(DEVICE_SELF, p500_state, sid_poty_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) // devices @@ -2201,10 +2144,14 @@ static MACHINE_CONFIG_START( p500_ntsc, p500_state ) MCFG_TPI6525_ADD(MOS6525_1_TAG, p500_tpi1_intf) MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf) MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w)) - MCFG_MOS6526_ADD(MOS6526_TAG, VIC6567_CLOCK, 60, cia_intf) + MCFG_MOS6526_ADD(MOS6526_TAG, VIC6567_CLOCK, 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(DEVREAD8(DEVICE_SELF, cbm2_state, cia_pa_r), DEVWRITE8(DEVICE_SELF, cbm2_state, cia_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, 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)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) - MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050") + MCFG_CBM_IEEE488_ADD("c8050") + MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6567_TAG, mos6567_device, lp_w)) @@ -2239,12 +2186,12 @@ static MACHINE_CONFIG_START( p500_pal, p500_state ) MCFG_QUANTUM_PERFECT_CPU(M6509_TAG) // video hardware - MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map) + MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_videoram_map, vic_colorram_map, DEVWRITELINE(DEVICE_SELF, p500_state, vic_irq_w)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6569_CLOCK) - MCFG_SOUND_CONFIG(sid_intf) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, VIC6569_CLOCK) + MCFG_MOS6581_POTXY_CALLBACKS(DEVREAD8(DEVICE_SELF, p500_state, sid_potx_r), DEVREAD8(DEVICE_SELF, p500_state, sid_poty_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) // devices @@ -2253,10 +2200,14 @@ static MACHINE_CONFIG_START( p500_pal, p500_state ) MCFG_TPI6525_ADD(MOS6525_1_TAG, p500_tpi1_intf) MCFG_TPI6525_ADD(MOS6525_2_TAG, p500_tpi2_intf) MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w)) - MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 50, cia_intf) + MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 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(DEVREAD8(DEVICE_SELF, cbm2_state, cia_pa_r), DEVWRITE8(DEVICE_SELF, cbm2_state, cia_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, 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)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) - MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050") + MCFG_CBM_IEEE488_ADD("c8050") + MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) MCFG_VCS_CONTROL_PORT_TRIGGER_HANDLER(DEVWRITELINE(MOS6569_TAG, mos6569_device, lp_w)) @@ -2303,8 +2254,8 @@ static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state ) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD(MOS6851_TAG, SID6581, XTAL_18MHz/9) - MCFG_SOUND_CONFIG(sid_intf) + MCFG_SOUND_ADD(MOS6581_TAG, MOS6581, XTAL_18MHz/9) + MCFG_MOS6581_POTXY_CALLBACKS(DEVREAD8(DEVICE_SELF, cbm2_state, sid_potx_r), DEVREAD8(DEVICE_SELF, cbm2_state, sid_poty_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) // devices @@ -2312,10 +2263,14 @@ static MACHINE_CONFIG_START( cbm2lp_ntsc, cbm2_state ) MCFG_TPI6525_ADD(MOS6525_1_TAG, tpi1_intf) MCFG_TPI6525_ADD(MOS6525_2_TAG, tpi2_intf) MCFG_MOS6551_ADD(MOS6551A_TAG, XTAL_1_8432MHz, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i4_w)) - MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_18MHz/9, 60, cia_intf) + MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_18MHz/9, 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(DEVREAD8(DEVICE_SELF, cbm2_state, cia_pa_r), DEVWRITE8(DEVICE_SELF, cbm2_state, cia_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, 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)) MCFG_DS75160A_ADD(DS75160A_TAG, DEVREAD8(IEEE488_TAG, ieee488_device, dio_r), DEVWRITE8(IEEE488_TAG, ieee488_device, dio_w)) MCFG_DS75161A_ADD(DS75161A_TAG, ds75161a_intf) - MCFG_CBM_IEEE488_ADD(ieee488_intf, "c8050") + MCFG_CBM_IEEE488_ADD("c8050") + MCFG_IEEE488_SRQ_CALLBACK(DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i1_w)) MCFG_PET_DATASSETTE_PORT_ADD(PET_DATASSETTE_PORT_TAG, cbm_datassette_devices, NULL, NULL, DEVWRITELINE(MOS6526_TAG, mos6526_device, flag_w)) MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vcs_control_port_devices, NULL, NULL) MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vcs_control_port_devices, NULL, NULL) @@ -2358,7 +2313,10 @@ 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, XTAL_18MHz/9, 50, cia_intf) + MCFG_MOS6526_ADD(MOS6526_TAG, VIC6569_CLOCK, 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(DEVREAD8(DEVICE_SELF, cbm2_state, cia_pa_r), DEVWRITE8(DEVICE_SELF, cbm2_state, cia_pa_w)) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, 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)) MACHINE_CONFIG_END @@ -2421,7 +2379,10 @@ static MACHINE_CONFIG_DERIVED( bx256hp, b256hp ) MCFG_PIC8259_ADD(EXT_I8259A_TAG, ext_pic_intf) MCFG_TPI6525_ADD(EXT_MOS6525_TAG, ext_tpi_intf) - MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 50, ext_cia_intf) + MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 60, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i3_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(DEVREAD8(EXT_MOS6525_TAG, tpi6525_porta_r), NULL) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, cbm2_state, ext_cia_pb_r), DEVWRITE8(DEVICE_SELF, cbm2_state, ext_cia_pb_w), NULL) MACHINE_CONFIG_END @@ -2437,7 +2398,10 @@ static MACHINE_CONFIG_DERIVED( cbm2hp_pal, cbm2hp_ntsc ) MCFG_TPI6525_ADD(MOS6525_2_TAG, hp_tpi2_intf) MCFG_DEVICE_REMOVE(MOS6526_TAG) - MCFG_MOS6526_ADD(MOS6526_TAG, XTAL_18MHz/9, 50, cia_intf) + MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i3_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(DEVREAD8(EXT_MOS6525_TAG, tpi6525_porta_r), NULL) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, cbm2_state, ext_cia_pb_r), DEVWRITE8(DEVICE_SELF, cbm2_state, ext_cia_pb_w), NULL) MACHINE_CONFIG_END @@ -2472,7 +2436,10 @@ static MACHINE_CONFIG_DERIVED( cbm730, cbm720 ) MCFG_PIC8259_ADD(EXT_I8259A_TAG, ext_pic_intf) MCFG_TPI6525_ADD(EXT_MOS6525_TAG, ext_tpi_intf) - MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 60, ext_cia_intf) + MCFG_MOS6526_ADD(EXT_MOS6526_TAG, XTAL_18MHz/9, 50, DEVWRITELINE(MOS6525_1_TAG, tpi6525_device, i3_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(DEVREAD8(EXT_MOS6525_TAG, tpi6525_porta_r), NULL) + MCFG_MOS6526_PORT_B_CALLBACKS(DEVREAD8(DEVICE_SELF, cbm2_state, ext_cia_pb_r), DEVWRITE8(DEVICE_SELF, cbm2_state, ext_cia_pb_w), NULL) MACHINE_CONFIG_END |