diff options
Diffstat (limited to 'src/mame/drivers/amstrad.cpp')
-rw-r--r-- | src/mame/drivers/amstrad.cpp | 163 |
1 files changed, 84 insertions, 79 deletions
diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 8fcdc8732fa..c9280c9a6ed 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -813,7 +813,7 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus_cartslot) MCFG_GENERIC_MANDATORY MCFG_GENERIC_LOAD(amstrad_state, amstrad_plus_cartridge) - MCFG_SOFTWARE_LIST_ADD("cart_list", "gx4000") + SOFTWARE_LIST(config, "cart_list").set_original("gx4000"); MACHINE_CONFIG_END void cpc464_exp_cards(device_slot_interface &device) @@ -905,12 +905,12 @@ void amstrad_centronics_devices(device_slot_interface &device) MACHINE_CONFIG_START(amstrad_state::amstrad_base) /* Machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 16_MHz_XTAL / 4) - MCFG_DEVICE_PROGRAM_MAP(amstrad_mem) - MCFG_DEVICE_IO_MAP(amstrad_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) + Z80(config, m_maincpu, 16_MHz_XTAL / 4); + m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem); + m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io); + m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int)); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); MCFG_MACHINE_START_OVERRIDE(amstrad_state, amstrad ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, amstrad ) @@ -922,12 +922,12 @@ MACHINE_CONFIG_START(amstrad_state::amstrad_base) ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(16_MHz_XTAL, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15) - MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad)) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(16_MHz_XTAL, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15); + m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad)); + m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad)); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_palette(m_palette); PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_cpc_palette), 32); @@ -944,28 +944,29 @@ MACHINE_CONFIG_START(amstrad_state::amstrad_base) /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); + WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25); AY8912(config, m_ay, 16_MHz_XTAL / 16); m_ay->port_a_read_callback().set(FUNC(amstrad_state::amstrad_psg_porta_read)); m_ay->add_route(ALL_OUTPUTS, "mono", 0.25); /* printer */ - MCFG_DEVICE_ADD("centronics", CENTRONICS, amstrad_centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, amstrad_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, amstrad_centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy)); /* snapshot */ - MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna", 0) + MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna") - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_FORMATS(cdt_cassette_formats) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) - MCFG_CASSETTE_INTERFACE("cpc_cass") + CASSETTE(config, m_cassette); + m_cassette->set_formats(cdt_cassette_formats); + m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED); + m_cassette->set_interface("cpc_cass"); - MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass") + SOFTWARE_LIST(config, "cass_list").set_original("cpc_cass"); MACHINE_CONFIG_END -MACHINE_CONFIG_START(amstrad_state::cpc464) +void amstrad_state::cpc464(machine_config &config) +{ amstrad_base(config); cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc464_exp_cards, nullptr)); @@ -977,14 +978,15 @@ MACHINE_CONFIG_START(amstrad_state::cpc464) /* internal ram */ RAM(config, m_ram).set_default_size("64K").set_extra_options("128K,320K,576K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(amstrad_state::cpc664) +void amstrad_state::cpc664(machine_config &config) +{ amstrad_base(config); UPD765A(config, m_fdc, 16_MHz_XTAL / 4, 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") + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats); + SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop"); cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc_exp_cards, nullptr)); exp.set_cpu_tag(m_maincpu); @@ -995,14 +997,15 @@ MACHINE_CONFIG_START(amstrad_state::cpc664) /* internal ram */ RAM(config, m_ram).set_default_size("64K").set_extra_options("128K,320K,576K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(amstrad_state::cpc6128) +void amstrad_state::cpc6128(machine_config &config) +{ amstrad_base(config); UPD765A(config, m_fdc, 16_MHz_XTAL / 4, 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") + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats); + SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop"); cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 16_MHz_XTAL / 4, cpc_exp_cards, nullptr)); exp.set_cpu_tag(m_maincpu); @@ -1013,26 +1016,27 @@ MACHINE_CONFIG_START(amstrad_state::cpc6128) /* internal ram */ RAM(config, m_ram).set_default_size("128K").set_extra_options("320K,576K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(amstrad_state::kccomp) +void amstrad_state::kccomp(machine_config &config) +{ cpc6128(config); MCFG_MACHINE_START_OVERRIDE(amstrad_state,kccomp) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,kccomp) m_palette->set_init(FUNC(amstrad_state::kccomp_palette)); -MACHINE_CONFIG_END +} MACHINE_CONFIG_START(amstrad_state::cpcplus) /* Machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 40_MHz_XTAL / 10) - MCFG_DEVICE_PROGRAM_MAP(amstrad_mem) - MCFG_DEVICE_IO_MAP(amstrad_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) + Z80(config, m_maincpu, 40_MHz_XTAL / 10); + m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem); + m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io); + m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int)); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); MCFG_MACHINE_START_OVERRIDE(amstrad_state, plus ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, plus ) @@ -1044,12 +1048,12 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus) ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15) - MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad)) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15); + m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad)); + m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad)); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_palette(m_palette); PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_plus_palette), 4096); @@ -1065,31 +1069,31 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus) /* sound hardware */ SPEAKER(config, "mono").front_center(); - WAVE(config, "wave", "cassette").add_route(ALL_OUTPUTS, "mono", 0.25); + WAVE(config, "wave", m_cassette).add_route(ALL_OUTPUTS, "mono", 0.25); AY8912(config, m_ay, 40_MHz_XTAL / 40); m_ay->port_a_read_callback().set(FUNC(amstrad_state::amstrad_psg_porta_read)); m_ay->add_route(ALL_OUTPUTS, "mono", 0.25); /* printer */ - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, amstrad_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(amstrad_state::write_centronics_busy)); /* snapshot */ - MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna", 0) + MCFG_SNAPSHOT_ADD("snapshot", amstrad_state, amstrad, "sna") - MCFG_CASSETTE_ADD( "cassette" ) - MCFG_CASSETTE_FORMATS(cdt_cassette_formats) - MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED) - MCFG_CASSETTE_INTERFACE("cpc_cass") - MCFG_SOFTWARE_LIST_ADD("cass_list","cpc_cass") + CASSETTE(config, m_cassette); + m_cassette->set_formats(cdt_cassette_formats); + m_cassette->set_default_state(CASSETTE_STOPPED | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED); + m_cassette->set_interface("cpc_cass"); + SOFTWARE_LIST(config, "cass_list").set_original("cpc_cass"); UPD765A(config, m_fdc, 40_MHz_XTAL / 10, true, true); cpcplus_cartslot(config); - 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") + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_floppy_formats); + SOFTWARE_LIST(config, "flop_list").set_original("cpc_flop"); cpc_expansion_slot_device &exp(CPC_EXPANSION_SLOT(config, "exp", 40_MHz_XTAL / 10, cpcplus_exp_cards, nullptr)); exp.set_cpu_tag(m_maincpu); @@ -1103,14 +1107,15 @@ MACHINE_CONFIG_START(amstrad_state::cpcplus) MACHINE_CONFIG_END -MACHINE_CONFIG_START(amstrad_state::gx4000) +void amstrad_state::gx4000(machine_config &config) +{ /* Machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 40_MHz_XTAL / 10) - MCFG_DEVICE_PROGRAM_MAP(amstrad_mem) - MCFG_DEVICE_IO_MAP(amstrad_io) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(amstrad_state,amstrad_cpu_acknowledge_int) + Z80(config, m_maincpu, 40_MHz_XTAL / 10); + m_maincpu->set_addrmap(AS_PROGRAM, &amstrad_state::amstrad_mem); + m_maincpu->set_addrmap(AS_IO, &amstrad_state::amstrad_io); + m_maincpu->set_irq_acknowledge_callback(FUNC(amstrad_state::amstrad_cpu_acknowledge_int)); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) + config.m_minimum_quantum = attotime::from_hz(60); MCFG_MACHINE_START_OVERRIDE(amstrad_state, gx4000 ) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state, gx4000 ) @@ -1122,12 +1127,12 @@ MACHINE_CONFIG_START(amstrad_state::gx4000) ppi.out_pc_callback().set(FUNC(amstrad_state::amstrad_ppi_portc_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15) - MCFG_SCREEN_UPDATE_DRIVER(amstrad_state, screen_update_amstrad) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, amstrad_state, screen_vblank_amstrad)) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw((40_MHz_XTAL * 2) / 5, 1024, 32, 32 + 640 + 64, 312, 56 + 15, 200 + 15); + m_screen->set_screen_update(FUNC(amstrad_state::screen_update_amstrad)); + m_screen->screen_vblank().set(FUNC(amstrad_state::screen_vblank_amstrad)); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); + m_screen->set_palette(m_palette); PALETTE(config, m_palette, FUNC(amstrad_state::amstrad_plus_palette), 4096); @@ -1151,10 +1156,11 @@ MACHINE_CONFIG_START(amstrad_state::gx4000) /* internal ram */ RAM(config, m_ram).set_default_size("64K"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(amstrad_state::aleste) +void amstrad_state::aleste(machine_config &config) +{ cpc6128(config); MCFG_MACHINE_START_OVERRIDE(amstrad_state,aleste) MCFG_MACHINE_RESET_OVERRIDE(amstrad_state,aleste) @@ -1166,7 +1172,7 @@ MACHINE_CONFIG_START(amstrad_state::aleste) m_palette->set_entries(32+64); m_palette->set_init(FUNC(amstrad_state::aleste_palette)); - MCFG_DEVICE_ADD("rtc", MC146818, 4.194304_MHz_XTAL) + MC146818(config, m_rtc, 4.194304_MHz_XTAL); I8272A(config.replace(), m_fdc, 16_MHz_XTAL / 4, true); @@ -1177,16 +1183,15 @@ MACHINE_CONFIG_START(amstrad_state::aleste) exp.romdis_callback().set(FUNC(amstrad_state::cpc_romdis)); // ROMDIS exp.rom_select_callback().set(FUNC(amstrad_state::rom_select)); - MCFG_FLOPPY_DRIVE_ADD("upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD("upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats) + FLOPPY_CONNECTOR(config, "upd765:0", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats); + FLOPPY_CONNECTOR(config, "upd765:1", aleste_floppies, "35dd", amstrad_state::aleste_floppy_formats); - MCFG_DEVICE_REMOVE("flop_list") - MCFG_SOFTWARE_LIST_ADD("flop_list", "aleste") - MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cpc_list", "cpc_flop") + SOFTWARE_LIST(config.replace(), "flop_list").set_original("aleste"); + SOFTWARE_LIST(config, "cpc_list").set_compatible("cpc_flop"); /* internal ram */ m_ram->set_default_size("2M"); -MACHINE_CONFIG_END +} |