summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/electron/rombox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/electron/rombox.cpp')
-rw-r--r--src/devices/bus/electron/rombox.cpp34
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());
}