diff options
Diffstat (limited to 'src/mess/drivers/amstrad.c')
-rw-r--r-- | src/mess/drivers/amstrad.c | 103 |
1 files changed, 77 insertions, 26 deletions
diff --git a/src/mess/drivers/amstrad.c b/src/mess/drivers/amstrad.c index b6ed946e1e9..e38f820c85b 100644 --- a/src/mess/drivers/amstrad.c +++ b/src/mess/drivers/amstrad.c @@ -563,25 +563,25 @@ static INPUT_PORTS_START( plus ) The connectors' description for both CPCs and CPC+'s can be found at http://www.hardwarebook.info/Category:Computer */ PORT_START("analog.0") - PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) + PORT_BIT(0x3f , 0, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("analog.1") - PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) + PORT_BIT(0x3f , 0, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(1) PORT_START("analog.2") - PORT_BIT(0x3f , 0, IPT_TRACKBALL_X) + PORT_BIT(0x3f , 0, IPT_AD_STICK_X) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2) PORT_START("analog.3") - PORT_BIT(0x3f , 0, IPT_TRACKBALL_Y) + PORT_BIT(0x3f , 0, IPT_AD_STICK_Y) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_PLAYER(2) @@ -780,6 +780,7 @@ speed of 3.8 MHz */ static SLOT_INTERFACE_START( amstrad_floppies ) SLOT_INTERFACE( "3ssdd", FLOPPY_3_SSDD ) + SLOT_INTERFACE( "35ssdd", FLOPPY_35_DD ) SLOT_INTERFACE_END static SLOT_INTERFACE_START( aleste_floppies ) @@ -795,6 +796,23 @@ static MACHINE_CONFIG_FRAGMENT( cpcplus_cartslot ) MCFG_SOFTWARE_LIST_ADD("cart_list", "gx4000") MACHINE_CONFIG_END +SLOT_INTERFACE_START(cpc464_exp_cards) + SLOT_INTERFACE("ddi1", CPC_DDI1) + SLOT_INTERFACE("ssa1", CPC_SSA1) + SLOT_INTERFACE("dkspeech", CPC_DKSPEECH) + SLOT_INTERFACE("rom", CPC_ROM) + SLOT_INTERFACE("multiface2", CPC_MFACE2) + SLOT_INTERFACE("pds", CPC_PDS) + SLOT_INTERFACE("rs232", CPC_RS232) + SLOT_INTERFACE("amsrs232", CPC_RS232_AMS) + SLOT_INTERFACE("sf2", CPC_SYMBIFACE2) + SLOT_INTERFACE("amdrum", CPC_AMDRUM) + SLOT_INTERFACE("playcity", CPC_PLAYCITY) + SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH) + SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4) + SLOT_INTERFACE("hd20", CPC_HD20) +SLOT_INTERFACE_END + SLOT_INTERFACE_START(cpc_exp_cards) SLOT_INTERFACE("ssa1", CPC_SSA1) SLOT_INTERFACE("dkspeech", CPC_DKSPEECH) @@ -808,6 +826,7 @@ SLOT_INTERFACE_START(cpc_exp_cards) SLOT_INTERFACE("playcity", CPC_PLAYCITY) SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH) SLOT_INTERFACE("brunword4", CPC_BRUNWORD_MK4) + SLOT_INTERFACE("hd20", CPC_HD20) SLOT_INTERFACE_END SLOT_INTERFACE_START(cpcplus_exp_cards) @@ -821,6 +840,7 @@ SLOT_INTERFACE_START(cpcplus_exp_cards) SLOT_INTERFACE("amdrum", CPC_AMDRUM) SLOT_INTERFACE("playcity", CPC_PLAYCITY) SLOT_INTERFACE("smartwatch", CPC_SMARTWATCH) + SLOT_INTERFACE("hd20", CPC_HD20) SLOT_INTERFACE_END SLOT_INTERFACE_START(amstrad_centronics_devices) @@ -833,7 +853,7 @@ SLOT_INTERFACE_START(amstrad_centronics_devices) SLOT_INTERFACE("digiblst", CENTRONICS_DIGIBLASTER) SLOT_INTERFACE_END -static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state ) +static MACHINE_CONFIG_START( amstrad_base, amstrad_state ) /* Machine hardware */ MCFG_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) MCFG_CPU_PROGRAM_MAP(amstrad_mem) @@ -894,8 +914,11 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state ) MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( cpc464, amstrad_base ) MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0) - MCFG_DEVICE_SLOT_INTERFACE(cpc_exp_cards, NULL, false) + MCFG_DEVICE_SLOT_INTERFACE(cpc464_exp_cards, NULL, false) MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0)) MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(WRITELINE(amstrad_state, cpc_romdis)) // ROMDIS @@ -903,21 +926,50 @@ static MACHINE_CONFIG_START( amstrad_nofdc, amstrad_state ) /* internal ram */ MCFG_RAM_ADD(RAM_TAG) - MCFG_RAM_DEFAULT_SIZE("128K") - MCFG_RAM_EXTRA_OPTIONS("64K,320K,576K") + MCFG_RAM_DEFAULT_SIZE("64K") + MCFG_RAM_EXTRA_OPTIONS("128K,320K,576K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( amstrad, amstrad_nofdc ) +static MACHINE_CONFIG_DERIVED( cpc664, amstrad_base ) MCFG_UPD765A_ADD("upd765", true, true) - MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats) + MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop") + MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0) + MCFG_DEVICE_SLOT_INTERFACE(cpc_exp_cards, NULL, false) + MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0)) + MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(WRITELINE(amstrad_state, cpc_romdis)) // ROMDIS + MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(WRITE8(amstrad_state,rom_select)) + + /* internal ram */ + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("64K") + MCFG_RAM_EXTRA_OPTIONS("128K,320K,576K") +MACHINE_CONFIG_END + +static MACHINE_CONFIG_DERIVED( cpc6128, amstrad_base ) + MCFG_UPD765A_ADD("upd765", true, true) + MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats) MCFG_SOFTWARE_LIST_ADD("flop_list","cpc_flop") + + MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0) + MCFG_DEVICE_SLOT_INTERFACE(cpc_exp_cards, NULL, false) + MCFG_CPC_EXPANSION_SLOT_OUT_IRQ_CB(INPUTLINE("maincpu", 0)) + MCFG_CPC_EXPANSION_SLOT_OUT_NMI_CB(INPUTLINE("maincpu", INPUT_LINE_NMI)) + MCFG_CPC_EXPANSION_SLOT_OUT_ROMDIS_CB(WRITELINE(amstrad_state, cpc_romdis)) // ROMDIS + MCFG_CPC_EXPANSION_SLOT_ROM_SELECT(WRITE8(amstrad_state,rom_select)) + + /* internal ram */ + MCFG_RAM_ADD(RAM_TAG) + MCFG_RAM_DEFAULT_SIZE("128K") + MCFG_RAM_EXTRA_OPTIONS("320K,576K") MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( kccomp, amstrad ) +static MACHINE_CONFIG_DERIVED( kccomp, cpc6128 ) MCFG_MACHINE_START_OVERRIDE(amstrad_state,kccomp) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,kccomp) @@ -989,7 +1041,7 @@ static MACHINE_CONFIG_START( cpcplus, amstrad_state ) MCFG_FRAGMENT_ADD(cpcplus_cartslot) MCFG_FLOPPY_DRIVE_ADD("upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD("upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats) MCFG_DEVICE_ADD("exp", CPC_EXPANSION_SLOT, 0) MCFG_DEVICE_SLOT_INTERFACE(cpcplus_exp_cards, NULL, false) @@ -1057,7 +1109,7 @@ static MACHINE_CONFIG_START( gx4000, amstrad_state ) MACHINE_CONFIG_END -static MACHINE_CONFIG_DERIVED( aleste, amstrad ) +static MACHINE_CONFIG_DERIVED( aleste, cpc6128 ) MCFG_MACHINE_START_OVERRIDE(amstrad_state,aleste) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,aleste) @@ -1132,7 +1184,6 @@ ROM_START( cpc464 ) ROM_REGION(0x01c000, "maincpu", 0) /* load the os to offset 0x01000 from memory base */ ROM_LOAD("cpc464.rom", 0x10000, 0x8000, CRC(40852f25) SHA1(56d39c463da60968d93e58b4ba0e675829412a20)) - ROM_LOAD("cpcados.rom", 0x18000, 0x4000, CRC(1fe22ecd) SHA1(39102c8e9cb55fcc0b9b62098780ed4a3cb6a4bb)) ROM_END @@ -1195,14 +1246,14 @@ ROM_END * *************************************/ -/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ -COMP( 1984, cpc464, 0, 0, amstrad, cpc464, driver_device, 0, "Amstrad plc", "Amstrad CPC464", 0 ) -COMP( 1985, cpc664, cpc464, 0, amstrad, cpc664, driver_device, 0, "Amstrad plc", "Amstrad CPC664", 0 ) -COMP( 1985, cpc6128, cpc464, 0, amstrad, cpc6128, driver_device, 0, "Amstrad plc", "Amstrad CPC6128", 0 ) -COMP( 1985, cpc6128f, cpc464, 0, amstrad, cpc6128f, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (France, AZERTY Keyboard)", 0 ) -COMP( 1985, cpc6128s, cpc464, 0, amstrad, cpc6128s, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (Sweden/Finland)", 0 ) -COMP( 1990, cpc464p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC464+", 0 ) -COMP( 1990, cpc6128p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC6128+", 0 ) -CONS( 1990, gx4000, 0, 0, gx4000, gx4000, driver_device, 0, "Amstrad plc", "Amstrad GX4000", 0 ) -COMP( 1989, kccomp, cpc464, 0, kccomp, kccomp, driver_device, 0, "VEB Mikroelektronik", "KC Compact", 0 ) -COMP( 1993, al520ex, cpc464, 0, aleste, aleste, driver_device, 0, "Patisonic", "Aleste 520EX", GAME_IMPERFECT_SOUND ) +/* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ +COMP( 1984, cpc464, 0, 0, cpc464, cpc464, driver_device, 0, "Amstrad plc", "Amstrad CPC464", 0 ) +COMP( 1985, cpc664, cpc464, 0, cpc664, cpc664, driver_device, 0, "Amstrad plc", "Amstrad CPC664", 0 ) +COMP( 1985, cpc6128, cpc464, 0, cpc6128, cpc6128, driver_device, 0, "Amstrad plc", "Amstrad CPC6128", 0 ) +COMP( 1985, cpc6128f, cpc464, 0, cpc6128, cpc6128f, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (France, AZERTY Keyboard)", 0 ) +COMP( 1985, cpc6128s, cpc464, 0, cpc6128, cpc6128s, driver_device, 0, "Amstrad plc", "Amstrad CPC6128 (Sweden/Finland)", 0 ) +COMP( 1990, cpc464p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC464+", 0 ) +COMP( 1990, cpc6128p, 0, 0, cpcplus, plus, driver_device, 0, "Amstrad plc", "Amstrad CPC6128+", 0 ) +CONS( 1990, gx4000, 0, 0, gx4000, gx4000, driver_device, 0, "Amstrad plc", "Amstrad GX4000", 0 ) +COMP( 1989, kccomp, cpc464, 0, kccomp, kccomp, driver_device, 0, "VEB Mikroelektronik", "KC Compact", 0 ) +COMP( 1993, al520ex, cpc464, 0, aleste, aleste, driver_device, 0, "Patisonic", "Aleste 520EX", GAME_IMPERFECT_SOUND ) |