From 6d4dfeb950d4075f3170ee03eb08fd5e3aa1fd4a Mon Sep 17 00:00:00 2001 From: Curt Coder Date: Thu, 13 Mar 2014 11:25:48 +0000 Subject: [PATCH] (MESS) adam: Cleanup. (nw) --- src/emu/bus/adam/exp.c | 57 +++++++----------------------------------- src/emu/bus/adam/exp.h | 12 ++------- src/emu/bus/adam/ram.c | 9 ++++--- src/emu/bus/adam/ram.h | 3 +++ 4 files changed, 19 insertions(+), 62 deletions(-) diff --git a/src/emu/bus/adam/exp.c b/src/emu/bus/adam/exp.c index 1424090ff7d..b6b59d79a5a 100644 --- a/src/emu/bus/adam/exp.c +++ b/src/emu/bus/adam/exp.c @@ -39,47 +39,12 @@ const device_type ADAM_EXPANSION_SLOT = &device_creator(device.owner()); } -//------------------------------------------------- -// adam_rom_pointer - get expansion ROM pointer -//------------------------------------------------- - -UINT8* device_adam_expansion_slot_card_interface::adam_rom_pointer(running_machine &machine, size_t size) -{ - if (m_rom.count() == 0) - { - m_rom.resize(size); - - m_rom_mask = size - 1; - } - - return m_rom; -} - - -//------------------------------------------------- -// adam_ram_pointer - get expansion ROM pointer -//------------------------------------------------- - -UINT8* device_adam_expansion_slot_card_interface::adam_ram_pointer(running_machine &machine, size_t size) -{ - if (m_ram.count() == 0) - { - m_ram.resize(size); - - m_ram_mask = size - 1; - } - - return m_ram; -} - - //************************************************************************** // LIVE DEVICE @@ -104,7 +69,7 @@ adam_expansion_slot_device::adam_expansion_slot_device(const machine_config &mco void adam_expansion_slot_device::device_start() { - m_cart = dynamic_cast(get_card_device()); + m_card = dynamic_cast(get_card_device()); // resolve callbacks m_write_irq.resolve_safe(); @@ -126,7 +91,7 @@ void adam_expansion_slot_device::device_reset() bool adam_expansion_slot_device::call_load() { - if (m_cart) + if (m_card) { size_t size = 0; @@ -134,15 +99,11 @@ bool adam_expansion_slot_device::call_load() { size = length(); - fread(m_cart->adam_rom_pointer(machine(), size), size); + fread(m_card->m_rom, size); } else { - size = get_software_region_length("rom"); - if (size) memcpy(m_cart->adam_rom_pointer(machine(), size), get_software_region("rom"), size); - - size = get_software_region_length("ram"); - if (size) memcpy(m_cart->adam_ram_pointer(machine(), size), get_software_region("ram"), size); + load_software_region("rom", m_card->m_rom); } } @@ -178,9 +139,9 @@ void adam_expansion_slot_device::get_default_card_software(astring &result) UINT8 adam_expansion_slot_device::bd_r(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { - if (m_cart != NULL) + if (m_card != NULL) { - data = m_cart->adam_bd_r(space, offset, data, bmreq, biorq, aux_rom_cs, cas1, cas2); + data = m_card->adam_bd_r(space, offset, data, bmreq, biorq, aux_rom_cs, cas1, cas2); } return data; @@ -193,9 +154,9 @@ UINT8 adam_expansion_slot_device::bd_r(address_space &space, offs_t offset, UINT void adam_expansion_slot_device::bd_w(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { - if (m_cart != NULL) + if (m_card != NULL) { - m_cart->adam_bd_w(space, offset, data, bmreq, biorq, aux_rom_cs, cas1, cas2); + m_card->adam_bd_w(space, offset, data, bmreq, biorq, aux_rom_cs, cas1, cas2); } } diff --git a/src/emu/bus/adam/exp.h b/src/emu/bus/adam/exp.h index 7326596050d..c298a64a719 100644 --- a/src/emu/bus/adam/exp.h +++ b/src/emu/bus/adam/exp.h @@ -94,7 +94,7 @@ protected: devcb2_write_line m_write_irq; - device_adam_expansion_slot_card_interface *m_cart; + device_adam_expansion_slot_card_interface *m_card; }; @@ -110,21 +110,13 @@ public: virtual ~device_adam_expansion_slot_card_interface() { } protected: - // initialization - virtual UINT8* adam_rom_pointer(running_machine &machine, size_t size); - virtual UINT8* adam_ram_pointer(running_machine &machine, size_t size); - // runtime virtual UINT8 adam_bd_r(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { return data; } virtual void adam_bd_w(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2) { } adam_expansion_slot_device *m_slot; - dynamic_array m_rom; - dynamic_array m_ram; - - size_t m_rom_mask; - size_t m_ram_mask; + optional_shared_ptr m_rom; }; diff --git a/src/emu/bus/adam/ram.c b/src/emu/bus/adam/ram.c index 8c51fb2f7ac..3ddfdd7fca7 100644 --- a/src/emu/bus/adam/ram.c +++ b/src/emu/bus/adam/ram.c @@ -29,9 +29,10 @@ const device_type ADAM_RAM = &device_creator; // adam_ram_expansion_device - constructor //------------------------------------------------- -adam_ram_expansion_device::adam_ram_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, ADAM_RAM, "Adam 64KB RAM expansion", tag, owner, clock, "adam_ram", __FILE__), - device_adam_expansion_slot_card_interface(mconfig, *this) +adam_ram_expansion_device::adam_ram_expansion_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) : + device_t(mconfig, ADAM_RAM, "Adam 64KB RAM expansion", tag, owner, clock, "adam_ram", __FILE__), + device_adam_expansion_slot_card_interface(mconfig, *this), + m_ram(*this, "ram") { } @@ -42,7 +43,7 @@ adam_ram_expansion_device::adam_ram_expansion_device(const machine_config &mconf void adam_ram_expansion_device::device_start() { - adam_ram_pointer(machine(), 64 * 1024); + m_ram.allocate(0x10000); } diff --git a/src/emu/bus/adam/ram.h b/src/emu/bus/adam/ram.h index 96c8d53d941..5d299ec326e 100644 --- a/src/emu/bus/adam/ram.h +++ b/src/emu/bus/adam/ram.h @@ -39,6 +39,9 @@ protected: // device_adam_expansion_slot_card_interface overrides virtual UINT8 adam_bd_r(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2); virtual void adam_bd_w(address_space &space, offs_t offset, UINT8 data, int bmreq, int biorq, int aux_rom_cs, int cas1, int cas2); + +private: + optional_shared_ptr m_ram; };