summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/cbm2.c
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2013-02-12 15:21:24 +0000
committer Curt Coder <curtcoder@mail.com>2013-02-12 15:21:24 +0000
commit7e6fabfb9e6797461c3f8f037ab1d4e8a4c69c04 (patch)
treec65a6911f296e74a918caaf39a5e6fc3fa56588e /src/mess/drivers/cbm2.c
parent8acbf9de2c66b6536969af8f621681a584a1d8c9 (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.c117
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