summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Curt Coder <curtcoder@mail.com>2012-08-24 20:23:12 +0000
committer Curt Coder <curtcoder@mail.com>2012-08-24 20:23:12 +0000
commitee9e573b11e0304b35fdc7d65c70600cf61de6e8 (patch)
tree250b358f141c063504699bb655fc138e5b80de4a
parent0d6ceb18d96b4c597003d95d5a24b2d923d37157 (diff)
(MESS) c64: Added some kernals and cleanup. (nw)
-rw-r--r--src/mess/drivers/c64.c259
-rw-r--r--src/mess/machine/c1541.c76
-rw-r--r--src/mess/machine/c1541.h8
3 files changed, 85 insertions, 258 deletions
diff --git a/src/mess/drivers/c64.c b/src/mess/drivers/c64.c
index 7427b63f859..ff54a30918c 100644
--- a/src/mess/drivers/c64.c
+++ b/src/mess/drivers/c64.c
@@ -2,6 +2,7 @@
TODO:
+ - sort out kernals between PAL/NTSC
- tsuit215 test failures
- CPUPORT (0=FF 1=FF 0=00 1=FF 1=FF 1=FF, AFTER 00 17, RIGHT 00 DF)
@@ -1150,51 +1151,15 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_START( ntsc_sx, sx64_state )
+ MCFG_FRAGMENT_ADD(ntsc)
+
// basic hardware
- MCFG_CPU_ADD(M6510_TAG, M6510, VIC6567_CLOCK)
- MCFG_CPU_PROGRAM_MAP(c64_mem)
+ MCFG_CPU_MODIFY(M6510_TAG)
MCFG_CPU_CONFIG(sx64_cpu_intf)
- MCFG_CPU_VBLANK_INT(SCREEN_TAG, c64_frame_interrupt)
- MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
-
- // video hardware
- MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
-
- // sound hardware
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6567_CLOCK)
- MCFG_SOUND_CONFIG(sid_intf)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
- MCFG_PLS100_ADD(PLA_TAG)
- MCFG_MOS6526R1_ADD(MOS6526_1_TAG, VIC6567_CLOCK, cia1_intf)
- MCFG_MOS6526R1_ADD(MOS6526_2_TAG, VIC6567_CLOCK, cia2_intf)
- MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
- MCFG_CBM_IEC_BUS_ADD(iec_intf)
- MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL)
+ MCFG_DEVICE_REMOVE("iec8")
MCFG_CBM_IEC_SLOT_ADD("iec8", 8, sx1541_iec_devices, "sx1541", 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_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
- MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
-
- // software list
- MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop")
- MCFG_SOFTWARE_LIST_FILTER("disk_list", "NTSC")
-
- // internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
MACHINE_CONFIG_END
@@ -1203,51 +1168,11 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_START( ntsc_dx, sx64_state )
- // basic hardware
- MCFG_CPU_ADD(M6510_TAG, M6510, VIC6567_CLOCK)
- MCFG_CPU_PROGRAM_MAP(c64_mem)
- MCFG_CPU_CONFIG(sx64_cpu_intf)
- MCFG_CPU_VBLANK_INT(SCREEN_TAG, c64_frame_interrupt)
- MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
-
- // video hardware
- MCFG_MOS6567_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
-
- // sound hardware
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6567_CLOCK)
- MCFG_SOUND_CONFIG(sid_intf)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
+ MCFG_FRAGMENT_ADD(ntsc_sx)
// devices
- MCFG_PLS100_ADD(PLA_TAG)
- MCFG_MOS6526R1_ADD(MOS6526_1_TAG, VIC6567_CLOCK, cia1_intf)
- MCFG_MOS6526R1_ADD(MOS6526_2_TAG, VIC6567_CLOCK, cia2_intf)
- MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
- MCFG_CBM_IEC_BUS_ADD(iec_intf)
- MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL)
- MCFG_CBM_IEC_SLOT_ADD("iec8", 8, sx1541_iec_devices, "sx1541", NULL)
- MCFG_CBM_IEC_SLOT_ADD("iec9", 9, sx1541_iec_devices, "sx1541", 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_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
- MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
-
- // software list
- MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop")
- MCFG_SOFTWARE_LIST_FILTER("disk_list", "NTSC")
-
- // internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
+ MCFG_DEVICE_REMOVE("iec9")
+ MCFG_CBM_IEC_SLOT_ADD("iec9", 8, sx1541_iec_devices, "sx1541", NULL)
MACHINE_CONFIG_END
@@ -1255,49 +1180,7 @@ MACHINE_CONFIG_END
// MACHINE_CONFIG( ntsc_c )
//-------------------------------------------------
-static MACHINE_CONFIG_START( ntsc_c, c64c_state )
- // basic hardware
- MCFG_CPU_ADD(M6510_TAG, M6510, VIC6567_CLOCK)
- MCFG_CPU_PROGRAM_MAP(c64_mem)
- MCFG_CPU_CONFIG(cpu_intf)
- MCFG_CPU_VBLANK_INT(SCREEN_TAG, c64_frame_interrupt)
- MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
-
- // video hardware
- MCFG_MOS8562_ADD(MOS6567_TAG, SCREEN_TAG, VIC6567_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
-
- // sound hardware
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6567_CLOCK)
- MCFG_SOUND_CONFIG(sid_intf)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-
- // devices
- MCFG_PLS100_ADD(PLA_TAG)
- MCFG_MOS6526R1_ADD(MOS6526_1_TAG, VIC6567_CLOCK, cia1_intf)
- MCFG_MOS6526R1_ADD(MOS6526_2_TAG, VIC6567_CLOCK, cia2_intf)
- MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
- MCFG_CASSETTE_ADD(CASSETTE_TAG, cbm_cassette_interface)
- MCFG_TIMER_ADD(TIMER_C1531_TAG, cassette_tick)
- MCFG_CBM_IEC_ADD(iec_intf, "c1541")
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6567_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
- MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
-
- // software list
- MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "NTSC")
- MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop")
- MCFG_SOFTWARE_LIST_FILTER("disk_list", "NTSC")
-
- // internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
+static MACHINE_CONFIG_DERIVED_CLASS( ntsc_c, ntsc, c64c_state )
MACHINE_CONFIG_END
@@ -1356,51 +1239,15 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_START( pal_sx, sx64_state )
+ MCFG_FRAGMENT_ADD(pal)
+
// basic hardware
- MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK)
- MCFG_CPU_PROGRAM_MAP(c64_mem)
+ MCFG_CPU_MODIFY(M6510_TAG)
MCFG_CPU_CONFIG(sx64_cpu_intf)
- MCFG_CPU_VBLANK_INT(SCREEN_TAG, c64_frame_interrupt)
- MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
-
- // video hardware
- MCFG_MOS6569_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
-
- // sound hardware
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6569_CLOCK)
- MCFG_SOUND_CONFIG(sid_intf)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
// devices
- MCFG_PLS100_ADD(PLA_TAG)
- MCFG_MOS6526R1_ADD(MOS6526_1_TAG, VIC6569_CLOCK, cia1_intf)
- MCFG_MOS6526R1_ADD(MOS6526_2_TAG, VIC6569_CLOCK, cia2_intf)
- MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
- MCFG_CBM_IEC_BUS_ADD(iec_intf)
- MCFG_CBM_IEC_SLOT_ADD("iec4", 4, cbm_iec_devices, NULL, NULL)
+ MCFG_DEVICE_REMOVE("iec8")
MCFG_CBM_IEC_SLOT_ADD("iec8", 8, sx1541_iec_devices, "sx1541", 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_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
- MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
-
- // software list
- MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL")
- MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL")
- MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop")
- MCFG_SOFTWARE_LIST_FILTER("disk_list", "PAL")
-
- // internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
MACHINE_CONFIG_END
@@ -1408,49 +1255,7 @@ MACHINE_CONFIG_END
// MACHINE_CONFIG( pal_c )
//-------------------------------------------------
-static MACHINE_CONFIG_START( pal_c, c64c_state )
- // basic hardware
- MCFG_CPU_ADD(M6510_TAG, M6510, VIC6569_CLOCK)
- MCFG_CPU_PROGRAM_MAP(c64_mem)
- MCFG_CPU_CONFIG(cpu_intf)
- MCFG_CPU_VBLANK_INT(SCREEN_TAG, c64_frame_interrupt)
- MCFG_QUANTUM_PERFECT_CPU(M6510_TAG)
-
- // video hardware
- MCFG_MOS8565_ADD(MOS6569_TAG, SCREEN_TAG, VIC6569_CLOCK, vic_intf, vic_videoram_map, vic_colorram_map)
-
- // sound hardware
- MCFG_SPEAKER_STANDARD_MONO("mono")
- MCFG_SOUND_ADD(MOS6851_TAG, SID6581, VIC6569_CLOCK)
- MCFG_SOUND_CONFIG(sid_intf)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
- MCFG_SOUND_ADD("dac", DAC, 0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
-
- // devices
- MCFG_PLS100_ADD(PLA_TAG)
- MCFG_MOS6526R1_ADD(MOS6526_1_TAG, VIC6569_CLOCK, cia1_intf)
- MCFG_MOS6526R1_ADD(MOS6526_2_TAG, VIC6569_CLOCK, cia2_intf)
- MCFG_QUICKLOAD_ADD("quickload", cbm_c64, "p00,prg,t64", CBM_QUICKLOAD_DELAY_SECONDS)
- MCFG_CASSETTE_ADD(CASSETTE_TAG, cbm_cassette_interface)
- MCFG_TIMER_ADD(TIMER_C1531_TAG, cassette_tick)
- MCFG_CBM_IEC_ADD(iec_intf, "c1541")
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL1_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_VCS_CONTROL_PORT_ADD(CONTROL2_TAG, vic20_control_port_devices, NULL, NULL)
- MCFG_C64_EXPANSION_SLOT_ADD(C64_EXPANSION_SLOT_TAG, VIC6569_CLOCK, expansion_intf, c64_expansion_cards, NULL, NULL)
- MCFG_C64_USER_PORT_ADD(C64_USER_PORT_TAG, user_intf, c64_user_port_cards, NULL, NULL)
-
- // software list
- MCFG_SOFTWARE_LIST_ADD("cart_list_vic10", "vic10")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_vic10", "PAL")
- MCFG_SOFTWARE_LIST_ADD("cart_list_c64", "c64_cart")
- MCFG_SOFTWARE_LIST_FILTER("cart_list_c64", "PAL")
- MCFG_SOFTWARE_LIST_ADD("disk_list", "c64_flop")
- MCFG_SOFTWARE_LIST_FILTER("disk_list", "PAL")
-
- // internal ram
- MCFG_RAM_ADD(RAM_TAG)
- MCFG_RAM_DEFAULT_SIZE("64K")
+static MACHINE_CONFIG_DERIVED_CLASS( pal_c, pal, c64c_state )
MACHINE_CONFIG_END
@@ -1570,6 +1375,10 @@ ROM_START( c64n )
ROMX_LOAD( "exos4.u4", 0x0000, 0x2000, CRC(d5cf83a9) SHA1(d5f03a5c0e9d00032d4751ecc6bcd6385879c9c7), ROM_BIOS(27) )
ROM_SYSTEM_BIOS(27, "pdc", "ProLogic-DOS Classic" )
ROMX_LOAD( "pdc.u4", 0x0000, 0x4000, CRC(6b653b9c) SHA1(0f44a9c62619424a0cd48a90e1b377b987b494e0), ROM_BIOS(28) )
+ ROM_SYSTEM_BIOS(28, "digidos", "DigiDOS" )
+ ROMX_LOAD( "digidos.u4", 0x0000, 0x4000, CRC(2b0c8e89) SHA1(542d6f61c318bced0642e7c2d4d3b34a0f13e634), ROM_BIOS(29) )
+ ROM_SYSTEM_BIOS(29, "magnum", "Magnum Load" )
+ ROMX_LOAD( "magnum.u4", 0x0000, 0x4000, CRC(b2cffcc6) SHA1(827c782c1723b5d0992c05c00738ae4b2133b641), ROM_BIOS(30) )
ROM_REGION( 0x1000, "charom", 0 )
ROM_LOAD( "901225-01.u5", 0x0000, 0x1000, CRC(ec4272ee) SHA1(adc7c31e18c7c7413d54802ef2f4193da14711aa) )
@@ -1780,21 +1589,21 @@ ROM_END
// SYSTEM DRIVERS
//**************************************************************************
-// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
-COMP( 1982, c64n, 0, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", 0 )
-COMP( 1982, c64j, c64n, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (Japan)", 0 )
-COMP( 1982, c64p, c64n, 0, pal, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (PAL)", 0 )
-COMP( 1982, c64sw, c64n, 0, pal, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", 0 )
-COMP( 1983, pet64, c64n, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", 0 )
-COMP( 1983, edu64, c64n, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "Educator 64 (NTSC)", 0 )
-COMP( 1984, sx64n, c64n, 0, ntsc_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", 0 )
-COMP( 1984, sx64p, c64n, 0, pal_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", 0 )
-COMP( 1984, vip64, c64n, 0, pal_sx, c64sw, driver_device, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", 0 )
-COMP( 1984, dx64, c64n, 0, ntsc_dx, c64, driver_device, 0, "Commodore Business Machines", "DX-64 (NTSC)", 0 )
+// YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS
+COMP( 1982, c64n, 0, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1982, c64j, c64n, 0, ntsc, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (Japan)", GAME_SUPPORTS_SAVE )
+COMP( 1982, c64p, c64n, 0, pal, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64 (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1982, c64sw, c64n, 0, pal, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64 / VIC-64S (Sweden/Finland)", GAME_SUPPORTS_SAVE )
+COMP( 1983, pet64, c64n, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "PET 64 / CBM 4064 (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1983, edu64, c64n, 0, pet64, c64, driver_device, 0, "Commodore Business Machines", "Educator 64 (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1984, sx64n, c64n, 0, ntsc_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1984, sx64p, c64n, 0, pal_sx, c64, driver_device, 0, "Commodore Business Machines", "SX-64 / Executive 64 (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1984, vip64, c64n, 0, pal_sx, c64sw, driver_device, 0, "Commodore Business Machines", "VIP-64 (Sweden/Finland)", GAME_SUPPORTS_SAVE )
+COMP( 1984, dx64, c64n, 0, ntsc_dx, c64, driver_device, 0, "Commodore Business Machines", "DX-64 (NTSC)", GAME_SUPPORTS_SAVE )
//COMP(1983, clipper, c64, 0, c64pal, clipper, XXX_CLASS, c64pal, "PDC", "Clipper", GAME_NOT_WORKING) // C64 in a briefcase with 3" floppy, electroluminescent flat screen, thermal printer
//COMP(1983, tesa6240, c64, 0, c64pal, c64, XXX_CLASS, c64pal, "Tesa", "6240", GAME_NOT_WORKING) // modified SX64 with label printer
-COMP( 1986, c64cn, c64n, 0, ntsc_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", 0 )
-COMP( 1986, c64cp, c64n, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (PAL)", 0 )
-COMP( 1986, c64csw, c64n, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", 0 )
-COMP( 1986, c64g, c64n, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64G (PAL)", 0 )
-CONS( 1990, c64gs, c64n, 0, pal_gs, c64gs, driver_device, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", 0 )
+COMP( 1986, c64cn, c64n, 0, ntsc_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (NTSC)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c64cp, c64n, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64C (PAL)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c64csw, c64n, 0, pal_c, c64sw, driver_device, 0, "Commodore Business Machines", "Commodore 64C (Sweden/Finland)", GAME_SUPPORTS_SAVE )
+COMP( 1986, c64g, c64n, 0, pal_c, c64, driver_device, 0, "Commodore Business Machines", "Commodore 64G (PAL)", GAME_SUPPORTS_SAVE )
+CONS( 1990, c64gs, c64n, 0, pal_gs, c64gs, driver_device, 0, "Commodore Business Machines", "Commodore 64 Games System (PAL)", GAME_SUPPORTS_SAVE )
diff --git a/src/mess/machine/c1541.c b/src/mess/machine/c1541.c
index 78b3032ea8c..b644b56df47 100644
--- a/src/mess/machine/c1541.c
+++ b/src/mess/machine/c1541.c
@@ -267,6 +267,8 @@ ROM_START( c1541 )
ROMX_LOAD( "rolo27.uab5", 0x0000, 0x2000, CRC(171c7962) SHA1(04c892c4b3d7c74750576521fa081f07d8ca8557), ROM_BIOS(9) )
ROM_SYSTEM_BIOS( 9, "tt34", "TurboTrans v3.4" )
ROMX_LOAD( "ttd34.uab5", 0x0000, 0x8000, CRC(518d34a1) SHA1(4d6ffdce6ab122e9627b0a839861687bcd4e03ec), ROM_BIOS(10) )
+ ROM_SYSTEM_BIOS( 10, "digidos", "DigiDOS" )
+ ROMX_LOAD( "digidos.uab5", 0x0000, 0x8000, CRC(b3f05ea3) SHA1(99d3d848344c68410b686cda812f3788b41fead3), ROM_BIOS(11) )
ROM_END
@@ -409,6 +411,26 @@ const rom_entry *base_c1541_device::device_rom_region() const
}
+
+//-------------------------------------------------
+// read -
+//-------------------------------------------------
+
+READ8_MEMBER( c1541_prologic_dos_classic_device::read )
+{
+ return 0;
+}
+
+
+//-------------------------------------------------
+// write -
+//-------------------------------------------------
+
+WRITE8_MEMBER( c1541_prologic_dos_classic_device::write )
+{
+}
+
+
//-------------------------------------------------
// ADDRESS_MAP( c1541_mem )
//-------------------------------------------------
@@ -454,14 +476,15 @@ ADDRESS_MAP_END
//-------------------------------------------------
static ADDRESS_MAP_START( c1541pdc_mem, AS_PROGRAM, 8, c1541_prologic_dos_classic_device )
- AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("share1")
+ AM_RANGE(0x0000, 0xffff) AM_READWRITE(read, write)
+/* AM_RANGE(0x0000, 0x07ff) AM_MIRROR(0x6000) AM_RAM AM_SHARE("share1")
AM_RANGE(0x1800, 0x180f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_0_TAG, via6522_device, read, write)
AM_RANGE(0x1c00, 0x1c0f) AM_MIRROR(0x63f0) AM_DEVREADWRITE(M6522_1_TAG, via6522_device, read, write)
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("share1")
AM_RANGE(0x8800, 0x9fff) AM_RAM
AM_RANGE(0xa000, 0xb7ff) AM_ROM AM_REGION(M6502_TAG, 0x0000)
AM_RANGE(0xb800, 0xb80f) AM_READWRITE(pia_r, pia_w)
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0x2000)
+ AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(M6502_TAG, 0x2000)*/
ADDRESS_MAP_END
@@ -853,15 +876,10 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c1541c )
- MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
- MCFG_CPU_PROGRAM_MAP(c1541_mem)
- MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
+ MCFG_FRAGMENT_ADD(c1541)
- MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541c_via0_intf)
- MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf)
-
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
- MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
+ MCFG_DEVICE_MODIFY(M6522_0_TAG)
+ MCFG_DEVICE_CONFIG(c1541c_via0_intf)
MACHINE_CONFIG_END
@@ -870,15 +888,10 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c1541dd )
- MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
- MCFG_CPU_PROGRAM_MAP(c1541dd_mem)
- MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
-
- MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541_via0_intf)
- MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf)
+ MCFG_FRAGMENT_ADD(c1541)
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
- MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
+ MCFG_CPU_MODIFY(M6502_TAG)
+ MCFG_CPU_PROGRAM_MAP(c1541dd_mem)
MACHINE_CONFIG_END
@@ -887,15 +900,10 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c1541pd )
- MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
- MCFG_CPU_PROGRAM_MAP(c1541pd_mem)
- MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
-
- MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541_via0_intf)
- MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf)
+ MCFG_FRAGMENT_ADD(c1541)
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
- MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
+ MCFG_CPU_MODIFY(M6502_TAG)
+ MCFG_CPU_PROGRAM_MAP(c1541pd_mem)
MACHINE_CONFIG_END
@@ -904,15 +912,11 @@ MACHINE_CONFIG_END
//-------------------------------------------------
static MACHINE_CONFIG_FRAGMENT( c1541pdc )
- MCFG_CPU_ADD(M6502_TAG, M6502, XTAL_16MHz/16)
- MCFG_CPU_PROGRAM_MAP(c1541pdc_mem)
- MCFG_QUANTUM_PERFECT_CPU(M6502_TAG)
+ MCFG_FRAGMENT_ADD(c1541)
- MCFG_VIA6522_ADD(M6522_0_TAG, XTAL_16MHz/16, c1541_via0_intf)
- MCFG_VIA6522_ADD(M6522_1_TAG, XTAL_16MHz/16, c1541_via1_intf)
+ MCFG_CPU_MODIFY(M6502_TAG)
+ MCFG_CPU_PROGRAM_MAP(c1541pdc_mem)
- MCFG_LEGACY_FLOPPY_DRIVE_ADD(FLOPPY_0, c1541_floppy_interface)
- MCFG_64H156_ADD(C64H156_TAG, XTAL_16MHz, ga_intf)
MCFG_PIA6821_ADD(MC6821_TAG, pia_intf)
MCFG_CENTRONICS_PRINTER_ADD(CENTRONICS_TAG, standard_centronics)
MACHINE_CONFIG_END
@@ -1095,6 +1099,12 @@ void fsd2_device::device_start()
}
}
+void c1541_prologic_dos_classic_device::device_start()
+{
+ // find memory regions
+ m_mmu_rom = memregion("mmu")->base();
+}
+
//-------------------------------------------------
// device_reset - device-specific reset
diff --git a/src/mess/machine/c1541.h b/src/mess/machine/c1541.h
index 7e3c7e247e6..b47fdcd81be 100644
--- a/src/mess/machine/c1541.h
+++ b/src/mess/machine/c1541.h
@@ -211,7 +211,13 @@ public:
// construction/destruction
c1541_prologic_dos_classic_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // device-level overrides
+ virtual void device_start();
+
// not really public
+ DECLARE_READ8_MEMBER( read );
+ DECLARE_WRITE8_MEMBER( write );
+
DECLARE_READ8_MEMBER( pia_r );
DECLARE_WRITE8_MEMBER( pia_w );
@@ -222,6 +228,8 @@ public:
protected:
required_device<pia6821_device> m_pia;
required_device<centronics_device> m_centronics;
+
+ UINT8 *m_mmu_rom;
};