(MESS) adam: Cleanup. (nw)

This commit is contained in:
Curt Coder 2014-03-13 11:25:48 +00:00
parent cc54aa383c
commit 6d4dfeb950
4 changed files with 19 additions and 62 deletions

View File

@ -39,47 +39,12 @@ const device_type ADAM_EXPANSION_SLOT = &device_creator<adam_expansion_slot_devi
device_adam_expansion_slot_card_interface::device_adam_expansion_slot_card_interface(const machine_config &mconfig, device_t &device) : device_adam_expansion_slot_card_interface::device_adam_expansion_slot_card_interface(const machine_config &mconfig, device_t &device) :
device_slot_card_interface(mconfig, device), device_slot_card_interface(mconfig, device),
m_rom_mask(0), m_rom(*this, "rom")
m_ram_mask(0)
{ {
m_slot = dynamic_cast<adam_expansion_slot_device *>(device.owner()); m_slot = dynamic_cast<adam_expansion_slot_device *>(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 // 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() void adam_expansion_slot_device::device_start()
{ {
m_cart = dynamic_cast<device_adam_expansion_slot_card_interface *>(get_card_device()); m_card = dynamic_cast<device_adam_expansion_slot_card_interface *>(get_card_device());
// resolve callbacks // resolve callbacks
m_write_irq.resolve_safe(); m_write_irq.resolve_safe();
@ -126,7 +91,7 @@ void adam_expansion_slot_device::device_reset()
bool adam_expansion_slot_device::call_load() bool adam_expansion_slot_device::call_load()
{ {
if (m_cart) if (m_card)
{ {
size_t size = 0; size_t size = 0;
@ -134,15 +99,11 @@ bool adam_expansion_slot_device::call_load()
{ {
size = length(); size = length();
fread(m_cart->adam_rom_pointer(machine(), size), size); fread(m_card->m_rom, size);
} }
else else
{ {
size = get_software_region_length("rom"); load_software_region("rom", m_card->m_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);
} }
} }
@ -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) 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; 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) 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);
} }
} }

View File

@ -94,7 +94,7 @@ protected:
devcb2_write_line m_write_irq; 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() { } virtual ~device_adam_expansion_slot_card_interface() { }
protected: 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 // 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 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) { } 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; adam_expansion_slot_device *m_slot;
dynamic_array<UINT8> m_rom; optional_shared_ptr<UINT8> m_rom;
dynamic_array<UINT8> m_ram;
size_t m_rom_mask;
size_t m_ram_mask;
}; };

View File

@ -29,9 +29,10 @@ const device_type ADAM_RAM = &device_creator<adam_ram_expansion_device>;
// adam_ram_expansion_device - constructor // 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) 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_t(mconfig, ADAM_RAM, "Adam 64KB RAM expansion", tag, owner, clock, "adam_ram", __FILE__),
device_adam_expansion_slot_card_interface(mconfig, *this) 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() void adam_ram_expansion_device::device_start()
{ {
adam_ram_pointer(machine(), 64 * 1024); m_ram.allocate(0x10000);
} }

View File

@ -39,6 +39,9 @@ protected:
// device_adam_expansion_slot_card_interface overrides // 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 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); 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<UINT8> m_ram;
}; };