diff options
-rw-r--r-- | src/devices/bus/adamnet/fdc.cpp | 7 | ||||
-rw-r--r-- | src/devices/bus/adamnet/fdc.h | 2 | ||||
-rw-r--r-- | src/devices/bus/cbmiec/c1541.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/cbmiec/c1571.cpp | 8 | ||||
-rw-r--r-- | src/devices/bus/cbmiec/c1581.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/cbmiec/fd2000.cpp | 4 | ||||
-rw-r--r-- | src/devices/bus/compucolor/floppy.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/ieee488/c2031.cpp | 2 | ||||
-rw-r--r-- | src/devices/bus/ieee488/c2040.cpp | 12 | ||||
-rw-r--r-- | src/devices/bus/msx_cart/msx_audio.cpp | 11 | ||||
-rw-r--r-- | src/devices/bus/msx_cart/msx_audio.h | 1 | ||||
-rw-r--r-- | src/devices/bus/plus4/c1551.cpp | 2 | ||||
-rw-r--r-- | src/devices/imagedev/floppy.h | 5 | ||||
-rw-r--r-- | src/emu/validity.cpp | 69 |
14 files changed, 72 insertions, 57 deletions
diff --git a/src/devices/bus/adamnet/fdc.cpp b/src/devices/bus/adamnet/fdc.cpp index 9eff427a77a..5fbdd822e44 100644 --- a/src/devices/bus/adamnet/fdc.cpp +++ b/src/devices/bus/adamnet/fdc.cpp @@ -172,7 +172,7 @@ adam_fdc_device::adam_fdc_device(const machine_config &mconfig, const char *tag, device_adamnet_card_interface(mconfig, *this), m_maincpu(*this, M6801_TAG), m_fdc(*this, WD2793_TAG), - m_floppy0(*this, WD2793_TAG":0:525ssdd"), + m_connector(*this, WD2793_TAG":0"), m_floppy(nullptr), m_ram(*this, "ram"), m_sw3(*this, "SW3") @@ -239,7 +239,8 @@ READ8_MEMBER( adam_fdc_device::p1_r ) uint8_t data = 0x00; // disk in place - data |= m_floppy0->exists() ? 0x00 : 0x01; + floppy_image_device *floppy0 = m_connector->get_device(); + data |= (floppy0 != nullptr && floppy0->exists()) ? 0x00 : 0x01; // floppy data request data |= m_fdc->drq_r() ? 0x04 : 0x00; @@ -283,7 +284,7 @@ WRITE8_MEMBER( adam_fdc_device::p1_w ) if (BIT(data, 5)) { - m_floppy = m_floppy0; + m_floppy = m_connector->get_device(); } m_fdc->set_floppy(m_floppy); diff --git a/src/devices/bus/adamnet/fdc.h b/src/devices/bus/adamnet/fdc.h index 356c69a314e..6cdaedbc133 100644 --- a/src/devices/bus/adamnet/fdc.h +++ b/src/devices/bus/adamnet/fdc.h @@ -52,7 +52,7 @@ protected: required_device<cpu_device> m_maincpu; required_device<wd2793_device> m_fdc; - required_device<floppy_image_device> m_floppy0; + required_device<floppy_connector> m_connector; floppy_image_device *m_floppy; required_shared_ptr<uint8_t> m_ram; required_ioport m_sw3; diff --git a/src/devices/bus/cbmiec/c1541.cpp b/src/devices/bus/cbmiec/c1541.cpp index 092d2155ee2..19d70310ba1 100644 --- a/src/devices/bus/cbmiec/c1541.cpp +++ b/src/devices/bus/cbmiec/c1541.cpp @@ -836,7 +836,7 @@ MACHINE_CONFIG_MEMBER( c1541_device_base::device_add_mconfig ) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_ATN_CALLBACK(WRITELINE(c1541_device_base, atn_w)) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1541_device_base, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1540_floppies, "525ssqd", c1541_device_base::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1540_floppies, "525ssqd", c1541_device_base::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/cbmiec/c1571.cpp b/src/devices/bus/cbmiec/c1571.cpp index a3f1ffd0ffd..d0028133d48 100644 --- a/src/devices/bus/cbmiec/c1571.cpp +++ b/src/devices/bus/cbmiec/c1571.cpp @@ -632,7 +632,7 @@ MACHINE_CONFIG_MEMBER( c1570_device::device_add_mconfig ) MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) MACHINE_CONFIG_END @@ -668,7 +668,7 @@ MACHINE_CONFIG_MEMBER( c1571_device::device_add_mconfig ) MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) MACHINE_CONFIG_END @@ -698,7 +698,7 @@ MACHINE_CONFIG_MEMBER( c1571cr_device::device_add_mconfig ) MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) MACHINE_CONFIG_END @@ -734,7 +734,7 @@ MACHINE_CONFIG_MEMBER( mini_chief_device::device_add_mconfig ) MCFG_WD1770_ADD(WD1770_TAG, XTAL_16MHz/2) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c1571_device, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1571_floppies, "525qd", c1571_device::floppy_formats) MCFG_DEVICE_ADD(ISA_BUS_TAG, ISA8, 0) MCFG_ISA8_CPU(M6502_TAG) diff --git a/src/devices/bus/cbmiec/c1581.cpp b/src/devices/bus/cbmiec/c1581.cpp index c5bfb3d40fb..85e037a42be 100644 --- a/src/devices/bus/cbmiec/c1581.cpp +++ b/src/devices/bus/cbmiec/c1581.cpp @@ -279,7 +279,7 @@ MACHINE_CONFIG_MEMBER( c1581_device::device_add_mconfig ) MCFG_MOS6526_PB_OUTPUT_CALLBACK(WRITE8(c1581_device, cia_pb_w)) MCFG_WD1772_ADD(WD1772_TAG, XTAL_16MHz/2) - MCFG_FLOPPY_DRIVE_ADD(WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(WD1772_TAG":0", c1581_floppies, "35dd", c1581_device::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/cbmiec/fd2000.cpp b/src/devices/bus/cbmiec/fd2000.cpp index 6f5cc650245..e067583d7eb 100644 --- a/src/devices/bus/cbmiec/fd2000.cpp +++ b/src/devices/bus/cbmiec/fd2000.cpp @@ -223,7 +223,7 @@ MACHINE_CONFIG_MEMBER( fd2000_device::device_add_mconfig ) MCFG_DP8473_ADD(DP8473V_TAG) - MCFG_FLOPPY_DRIVE_ADD(DP8473V_TAG":0", fd2000_floppies, "35hd", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(DP8473V_TAG":0", fd2000_floppies, "35hd", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) MACHINE_CONFIG_END @@ -239,7 +239,7 @@ MACHINE_CONFIG_MEMBER( fd4000_device::device_add_mconfig ) MCFG_PC8477A_ADD(PC8477AV1_TAG) - MCFG_FLOPPY_DRIVE_ADD(PC8477AV1_TAG":0", fd4000_floppies, "35ed", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(PC8477AV1_TAG":0", fd4000_floppies, "35ed", floppy_image_device::default_floppy_formats)//fd2000_device::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/compucolor/floppy.cpp b/src/devices/bus/compucolor/floppy.cpp index f61a9a706ee..d7702286d48 100644 --- a/src/devices/bus/compucolor/floppy.cpp +++ b/src/devices/bus/compucolor/floppy.cpp @@ -51,7 +51,7 @@ SLOT_INTERFACE_END //------------------------------------------------- MACHINE_CONFIG_MEMBER( compucolor_floppy_device::device_add_mconfig ) - MCFG_FLOPPY_DRIVE_ADD("floppy", compucolor_floppies, "525sssd", compucolor_floppy_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED("floppy", compucolor_floppies, "525sssd", compucolor_floppy_device::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/ieee488/c2031.cpp b/src/devices/bus/ieee488/c2031.cpp index 846d3512a9b..3ba4ef1471f 100644 --- a/src/devices/bus/ieee488/c2031.cpp +++ b/src/devices/bus/ieee488/c2031.cpp @@ -325,7 +325,7 @@ MACHINE_CONFIG_MEMBER( c2031_device::device_add_mconfig ) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(WRITELINE(c2031_device, byte_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c2031_floppies, "525ssqd", c2031_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c2031_floppies, "525ssqd", c2031_device::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/ieee488/c2040.cpp b/src/devices/bus/ieee488/c2040.cpp index 982dd693743..cea7a1c7351 100644 --- a/src/devices/bus/ieee488/c2040.cpp +++ b/src/devices/bus/ieee488/c2040.cpp @@ -486,8 +486,8 @@ MACHINE_CONFIG_MEMBER( c2040_device::device_add_mconfig ) MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w)) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1)) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c2040_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c2040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":0", c2040_floppies, "525ssqd", c2040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":1", c2040_floppies, "525ssqd", c2040_device::floppy_formats) MACHINE_CONFIG_END @@ -529,8 +529,8 @@ MACHINE_CONFIG_MEMBER( c3040_device::device_add_mconfig ) MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w)) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1)) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c3040_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c3040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":0", c2040_floppies, "525ssqd", c3040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":1", c2040_floppies, "525ssqd", c3040_device::floppy_formats) MACHINE_CONFIG_END @@ -572,8 +572,8 @@ MACHINE_CONFIG_MEMBER( c4040_device::device_add_mconfig ) MCFG_C2040_SYNC_CALLBACK(DEVWRITELINE(M6530_TAG, mos6530_new_device, pb6_w)) MCFG_C2040_READY_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_ca1)) MCFG_C2040_ERROR_CALLBACK(DEVWRITELINE(M6522_TAG, via6522_device, write_cb1)) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":0", c2040_floppies, "525ssqd", c4040_device::floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(FDC_TAG":1", c2040_floppies, "525ssqd", c4040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":0", c2040_floppies, "525ssqd", c4040_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(FDC_TAG":1", c2040_floppies, "525ssqd", c4040_device::floppy_formats) MACHINE_CONFIG_END diff --git a/src/devices/bus/msx_cart/msx_audio.cpp b/src/devices/bus/msx_cart/msx_audio.cpp index 1327a298474..ed91ed28732 100644 --- a/src/devices/bus/msx_cart/msx_audio.cpp +++ b/src/devices/bus/msx_cart/msx_audio.cpp @@ -126,6 +126,17 @@ READ8_MEMBER(msx_cart_msx_audio_hxmu900_device::read_cart) } +ROM_START( msx_hxmu ) + ROM_REGION(0x8000, "y8950", ROMREGION_ERASE00) +ROM_END + + +const tiny_rom_entry *msx_cart_msx_audio_hxmu900_device::device_rom_region() const +{ + return ROM_NAME( msx_hxmu ); +} + + diff --git a/src/devices/bus/msx_cart/msx_audio.h b/src/devices/bus/msx_cart/msx_audio.h index 02093ce94f4..034fb38566d 100644 --- a/src/devices/bus/msx_cart/msx_audio.h +++ b/src/devices/bus/msx_cart/msx_audio.h @@ -23,6 +23,7 @@ public: // device-level overrides virtual machine_config_constructor device_mconfig_additions() const override; + virtual const tiny_rom_entry *device_rom_region() const override; virtual void initialize_cartridge() override; diff --git a/src/devices/bus/plus4/c1551.cpp b/src/devices/bus/plus4/c1551.cpp index 266720d26cf..c15932c30b2 100644 --- a/src/devices/bus/plus4/c1551.cpp +++ b/src/devices/bus/plus4/c1551.cpp @@ -366,7 +366,7 @@ static MACHINE_CONFIG_START( c1551 ) MCFG_DEVICE_ADD(C64H156_TAG, C64H156, XTAL_16MHz) MCFG_64H156_BYTE_CALLBACK(DEVWRITELINE(C64H156_TAG, c64h156_device, atni_w)) - MCFG_FLOPPY_DRIVE_ADD(C64H156_TAG":0", c1551_floppies, "525ssqd", c1551_device::floppy_formats) + MCFG_FLOPPY_DRIVE_ADD_FIXED(C64H156_TAG":0", c1551_floppies, "525ssqd", c1551_device::floppy_formats) MCFG_PLUS4_PASSTHRU_EXPANSION_SLOT_ADD() MACHINE_CONFIG_END diff --git a/src/devices/imagedev/floppy.h b/src/devices/imagedev/floppy.h index f18e6425797..9f2d494fb7f 100644 --- a/src/devices/imagedev/floppy.h +++ b/src/devices/imagedev/floppy.h @@ -30,6 +30,11 @@ MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ static_cast<floppy_connector *>(device)->set_formats(_formats); +#define MCFG_FLOPPY_DRIVE_ADD_FIXED(_tag, _slot_intf, _def_slot, _formats) \ + MCFG_DEVICE_ADD(_tag, FLOPPY_CONNECTOR, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, true) \ + static_cast<floppy_connector *>(device)->set_formats(_formats); + #define MCFG_FLOPPY_DRIVE_SOUND(_doit) \ static_cast<floppy_connector *>(device)->enable_sound(_doit); diff --git a/src/emu/validity.cpp b/src/emu/validity.cpp index 86020e7719c..c31052f9982 100644 --- a/src/emu/validity.cpp +++ b/src/emu/validity.cpp @@ -1834,54 +1834,51 @@ void validity_checker::validate_devices() // if it's a slot, iterate over possible cards (don't recurse, or you'll stack infinite tee connectors) device_slot_interface *const slot = dynamic_cast<device_slot_interface *>(&device); - if (slot && !slot->fixed()) + if (slot != nullptr) { for (auto &option : slot->option_list()) { - if (option.second->selectable()) - { - std::string const card_tag(util::string_format("_%s", option.second->name())); - device_t *const card = m_current_config->device_add(&slot->device(), card_tag.c_str(), option.second->devtype(), option.second->clock()); + std::string const card_tag(util::string_format("_%s", option.second->name())); + device_t *const card = m_current_config->device_add(&slot->device(), card_tag.c_str(), option.second->devtype(), option.second->clock()); - const char *const def_bios = option.second->default_bios(); - if (def_bios) - device_t::static_set_default_bios_tag(*card, def_bios); - machine_config_constructor const additions = option.second->machine_config(); - if (additions) - (*additions)(*m_current_config, card, card); + const char *const def_bios = option.second->default_bios(); + if (def_bios) + device_t::static_set_default_bios_tag(*card, def_bios); + machine_config_constructor const additions = option.second->machine_config(); + if (additions) + (*additions)(*m_current_config, card, card); - for (device_slot_interface &subslot : slot_interface_iterator(*card)) + for (device_slot_interface &subslot : slot_interface_iterator(*card)) + { + if (subslot.fixed()) { - if (subslot.default_option() && *subslot.default_option()) + device_slot_option const *const suboption = subslot.option(subslot.default_option()); + if (suboption) { - device_slot_option const *const suboption = subslot.option(subslot.default_option()); - if (suboption) - { - device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock()); - const char *const sub_bios = suboption->default_bios(); - if (sub_bios) - device_t::static_set_default_bios_tag(*sub_card, sub_bios); - machine_config_constructor const sub_additions = suboption->machine_config(); - if (sub_additions) - (*sub_additions)(*m_current_config, sub_card, sub_card); - } + device_t *const sub_card = m_current_config->device_add(&subslot.device(), suboption->name(), suboption->devtype(), suboption->clock()); + const char *const sub_bios = suboption->default_bios(); + if (sub_bios) + device_t::static_set_default_bios_tag(*sub_card, sub_bios); + machine_config_constructor const sub_additions = suboption->machine_config(); + if (sub_additions) + (*sub_additions)(*m_current_config, sub_card, sub_card); } } + } - for (device_t &card_dev : device_iterator(*card)) - card_dev.config_complete(); - validate_roms(*card); - - for (device_t &card_dev : device_iterator(*card)) - { - m_current_device = &card_dev; - card_dev.findit(true); - card_dev.validity_check(*this); - m_current_device = nullptr; - } + for (device_t &card_dev : device_iterator(*card)) + card_dev.config_complete(); + validate_roms(*card); - m_current_config->device_remove(&slot->device(), card_tag.c_str()); + for (device_t &card_dev : device_iterator(*card)) + { + m_current_device = &card_dev; + card_dev.findit(true); + card_dev.validity_check(*this); + m_current_device = nullptr; } + + m_current_config->device_remove(&slot->device(), card_tag.c_str()); } } } |