summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/drivers/c128.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/drivers/c128.c')
-rw-r--r--src/mess/drivers/c128.c101
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