diff options
Diffstat (limited to 'src/devices/bus/acorn/system/8k.cpp')
-rw-r--r-- | src/devices/bus/acorn/system/8k.cpp | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/devices/bus/acorn/system/8k.cpp b/src/devices/bus/acorn/system/8k.cpp index b8635920aab..b83544d3c8f 100644 --- a/src/devices/bus/acorn/system/8k.cpp +++ b/src/devices/bus/acorn/system/8k.cpp @@ -70,8 +70,8 @@ ioport_constructor acorn_8k_device::device_input_ports() const void acorn_8k_device::device_add_mconfig(machine_config &config) { /* rom sockets */ - GENERIC_SOCKET(config, "rom0", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom0_load), this); // IC17 - GENERIC_SOCKET(config, "rom1", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom1_load), this); // IC18 + GENERIC_SOCKET(config, "rom0", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom0_load)); // IC17 + GENERIC_SOCKET(config, "rom1", generic_plain_slot, "acrnsys_rom", "bin,rom").set_device_load(FUNC(acorn_8k_device::rom1_load)); // IC18 } @@ -98,6 +98,7 @@ acorn_8k_device::acorn_8k_device(const machine_config &mconfig, const char *tag, void acorn_8k_device::device_start() { + save_item(NAME(m_ram)); } //------------------------------------------------- @@ -112,11 +113,11 @@ void acorn_8k_device::device_reset() if (ram_addr == 0x0000) // BLK0 { - space.install_ram(0x1000, 0x1fff); + space.install_ram(0x1000, 0x1fff, m_ram); } else { - space.install_ram(ram_addr, ram_addr + 0x1fff); + space.install_ram(ram_addr, ram_addr + 0x1fff, m_ram); } uint16_t rom_addr = (m_links->read() & 0xf0) << 9; @@ -136,16 +137,13 @@ void acorn_8k_device::device_reset() // IMPLEMENTATION //************************************************************************** -image_init_result acorn_8k_device::load_rom(device_image_interface &image, generic_slot_device *slot) +std::pair<std::error_condition, std::string> acorn_8k_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 2K and 4K ROM only if (size != 0x0800 && size != 0x1000) - { - image.seterror(IMAGE_ERROR_UNSPECIFIED, "Invalid size: Only 2K/4K is supported"); - return image_init_result::FAIL; - } + return std::make_pair(image_error::INVALIDLENGTH, "Invalid size: Only 2K/4K is supported"); slot->rom_alloc(0x1000, GENERIC_ROM8_WIDTH, ENDIANNESS_LITTLE); slot->common_load_rom(slot->get_rom_base(), size, "rom"); @@ -154,5 +152,5 @@ image_init_result acorn_8k_device::load_rom(device_image_interface &image, gener uint8_t *rom = slot->get_rom_base(); if (size <= 0x0800) memcpy(rom + 0x0800, rom, 0x0800); - return image_init_result::PASS; + return std::make_pair(std::error_condition(), std::string()); } |