From dbc62842c1c94b439ed24566d1fbaffe8108f8cd Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 22 May 2022 17:12:52 -0400 Subject: [PATCH] specpls3, cpc664, cpc6128, et al.: Add IPF floppy format used by a few software list entries --- src/mame/drivers/amstrad.cpp | 19 +++++++++++++------ src/mame/drivers/specpls3.cpp | 11 +++++++++-- src/mame/includes/amstrad.h | 1 + src/mame/includes/specpls3.h | 2 ++ 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/mame/drivers/amstrad.cpp b/src/mame/drivers/amstrad.cpp index 3aabbe7afa6..7034d6b2caa 100644 --- a/src/mame/drivers/amstrad.cpp +++ b/src/mame/drivers/amstrad.cpp @@ -106,6 +106,7 @@ Some bugs left : #include "imagedev/cassette.h" #include "formats/tzx_cas.h" #include "formats/msx_dsk.h" +#include "formats/ipf_dsk.h" #include "machine/ram.h" #include "softlist.h" @@ -796,6 +797,12 @@ static void amstrad_floppies(device_slot_interface &device) device.option_add("35ssdd", FLOPPY_35_DD); } +void amstrad_state::amstrad_floppy_formats(format_registration &fr) +{ + fr.add_mfm_containers(); + fr.add(FLOPPY_IPF_FORMAT); +} + static void aleste_floppies(device_slot_interface &device) { device.option_add("35dd", FLOPPY_35_DD); @@ -986,8 +993,8 @@ void amstrad_state::cpc664(machine_config &config) { amstrad_base(config); UPD765A(config, m_fdc, 16_MHz_XTAL / 4, true, true); - FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); 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)); @@ -1005,8 +1012,8 @@ void amstrad_state::cpc6128(machine_config &config) { amstrad_base(config); UPD765A(config, m_fdc, 16_MHz_XTAL / 4, true, true); - FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); 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)); @@ -1092,8 +1099,8 @@ void amstrad_state::cpcplus(machine_config &config) cpcplus_cartslot(config); - FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); - FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", floppy_image_device::default_mfm_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:0", amstrad_floppies, "3ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); + FLOPPY_CONNECTOR(config, "upd765:1", amstrad_floppies, "35ssdd", amstrad_state::amstrad_floppy_formats).enable_sound(true); 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)); diff --git a/src/mame/drivers/specpls3.cpp b/src/mame/drivers/specpls3.cpp index 08ee79c4ecd..842f7ea006f 100644 --- a/src/mame/drivers/specpls3.cpp +++ b/src/mame/drivers/specpls3.cpp @@ -154,6 +154,7 @@ http://www.z88forever.org.uk/zxplus3e/ #include "screen.h" #include "softlist_dev.h" +#include "formats/ipf_dsk.h" #include "formats/tzx_cas.h" #define VERBOSE 0 @@ -371,6 +372,12 @@ static void specpls3_floppies(device_slot_interface &device) device.option_add("3ssdd", FLOPPY_3_SSDD); } +void specpls3_state::floppy_formats(format_registration &fr) +{ + fr.add_mfm_containers(); + fr.add(FLOPPY_IPF_FORMAT); +} + bool specpls3_state::is_contended(offs_t offset) { u8 bank = m_bank_ram[3]->entry(); @@ -418,8 +425,8 @@ void specpls3_state::spectrum_plus3(machine_config &config) UPD765A(config, m_upd765, 16_MHz_XTAL / 4, true, false); // clocked through SED9420 m_upd765->us_wr_callback().set(FUNC(specpls3_state::plus3_us_w)); - FLOPPY_CONNECTOR(config, "upd765:0", specpls3_floppies, "3ssdd", floppy_image_device::default_mfm_floppy_formats); // internal drive - FLOPPY_CONNECTOR(config, "upd765:1", specpls3_floppies, "3ssdd", floppy_image_device::default_mfm_floppy_formats); // external drive + FLOPPY_CONNECTOR(config, "upd765:0", specpls3_floppies, "3ssdd", specpls3_state::floppy_formats); // internal drive + FLOPPY_CONNECTOR(config, "upd765:1", specpls3_floppies, "3ssdd", specpls3_state::floppy_formats); // external drive SOFTWARE_LIST(config, "flop_list").set_original("specpls3_flop"); } diff --git a/src/mame/includes/amstrad.h b/src/mame/includes/amstrad.h index 4f8b8976243..fa6718a73eb 100644 --- a/src/mame/includes/amstrad.h +++ b/src/mame/includes/amstrad.h @@ -256,6 +256,7 @@ private: DECLARE_WRITE_LINE_MEMBER( cpc_romdis ); void rom_select(uint8_t data); + static void amstrad_floppy_formats(format_registration &fr); static void aleste_floppy_formats(format_registration &fr); IRQ_CALLBACK_MEMBER(amstrad_cpu_acknowledge_int); diff --git a/src/mame/includes/specpls3.h b/src/mame/includes/specpls3.h index 1391f68a92b..986880fa6fd 100644 --- a/src/mame/includes/specpls3.h +++ b/src/mame/includes/specpls3.h @@ -49,6 +49,8 @@ private: void plus3_io(address_map &map); void plus3_mem(address_map &map); + static void floppy_formats(format_registration &fr); + optional_device m_upd765; optional_device_array m_flop; };