diff options
Diffstat (limited to 'src/devices/bus/electron/rombox.cpp')
-rw-r--r-- | src/devices/bus/electron/rombox.cpp | 34 |
1 files changed, 16 insertions, 18 deletions
diff --git a/src/devices/bus/electron/rombox.cpp b/src/devices/bus/electron/rombox.cpp index 05d0a7c9092..704a7eeb7e4 100644 --- a/src/devices/bus/electron/rombox.cpp +++ b/src/devices/bus/electron/rombox.cpp @@ -55,21 +55,21 @@ void electron_rombox_device::device_add_mconfig(machine_config &config) { /* rom sockets */ GENERIC_SOCKET(config, m_rom[0], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[0]->set_device_load(FUNC(electron_rombox_device::rom1_load), this); + m_rom[0]->set_device_load(FUNC(electron_rombox_device::rom1_load)); GENERIC_SOCKET(config, m_rom[1], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[1]->set_device_load(FUNC(electron_rombox_device::rom2_load), this); + m_rom[1]->set_device_load(FUNC(electron_rombox_device::rom2_load)); GENERIC_SOCKET(config, m_rom[2], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[2]->set_device_load(FUNC(electron_rombox_device::rom3_load), this); + m_rom[2]->set_device_load(FUNC(electron_rombox_device::rom3_load)); GENERIC_SOCKET(config, m_rom[3], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[3]->set_device_load(FUNC(electron_rombox_device::rom4_load), this); + m_rom[3]->set_device_load(FUNC(electron_rombox_device::rom4_load)); GENERIC_SOCKET(config, m_rom[4], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[4]->set_device_load(FUNC(electron_rombox_device::rom5_load), this); + m_rom[4]->set_device_load(FUNC(electron_rombox_device::rom5_load)); GENERIC_SOCKET(config, m_rom[5], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[5]->set_device_load(FUNC(electron_rombox_device::rom6_load), this); + m_rom[5]->set_device_load(FUNC(electron_rombox_device::rom6_load)); GENERIC_SOCKET(config, m_rom[6], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[6]->set_device_load(FUNC(electron_rombox_device::rom7_load), this); + m_rom[6]->set_device_load(FUNC(electron_rombox_device::rom7_load)); GENERIC_SOCKET(config, m_rom[7], generic_plain_slot, "electron_rom", "bin,rom"); - m_rom[7]->set_device_load(FUNC(electron_rombox_device::rom8_load), this); + m_rom[7]->set_device_load(FUNC(electron_rombox_device::rom8_load)); /* pass-through */ ELECTRON_EXPANSION_SLOT(config, m_exp, DERIVED_CLOCK(1, 1), electron_expansion_devices, nullptr); @@ -168,7 +168,7 @@ void electron_rombox_device::expbus_w(offs_t offset, uint8_t data) { m_exp->expbus_w(offset, data); - if (offset == 0xfe05) + if ((offset == 0xfe05) && !(data & 0xf0)) { m_romsel = data & 0x0f; } @@ -178,23 +178,21 @@ void electron_rombox_device::expbus_w(offs_t offset, uint8_t data) // IMPLEMENTATION //************************************************************************** -image_init_result electron_rombox_device::load_rom(device_image_interface &image, generic_slot_device *slot) +std::pair<std::error_condition, std::string> electron_rombox_device::load_rom(device_image_interface &image, generic_slot_device *slot) { - uint32_t size = slot->common_get_size("rom"); + uint32_t const size = slot->common_get_size("rom"); // socket accepts 8K and 16K ROM only if (size != 0x2000 && size != 0x4000) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size: Only 8K/16K is supported"); - return image_init_result::FAIL; - } + return std::make_pair(image_error::INVALIDLENGTH, "Invalid size: Only 8K/16K is supported"); slot->rom_alloc(0x4000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); slot->common_load_rom(slot->get_rom_base(), size, "rom"); // mirror 8K ROMs - uint8_t *crt = slot->get_rom_base(); - if (size <= 0x2000) memcpy(crt + 0x2000, crt, 0x2000); + uint8_t *const crt = slot->get_rom_base(); + if (size <= 0x2000) + memcpy(crt + 0x2000, crt, 0x2000); - return image_init_result::PASS; + return std::make_pair(std::error_condition(), std::string()); } |