summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/pencil2/ram.cpp
blob: 2f92fd77d267bd66cdc0ec85581d8b89beda2c40 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// license:BSD-3-Clause
// copyright-holders:Nigel Barnes
/******************************************************************************

    Pencil 2 Memory Packs

*******************************************************************************/

#include "emu.h"
#include "ram.h"


namespace {

class pencil2_mem16k_device : public device_t, public device_pencil2_memexp_interface
{
public:
	pencil2_mem16k_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock)
		: device_t(mconfig, PENCIL2_MEM16K, tag, owner, clock)
		, device_pencil2_memexp_interface(mconfig, *this)
		, m_ram(*this, "ram", 0x4000, ENDIANNESS_LITTLE)
	{
	}

protected:
	virtual void device_start() override ATTR_COLD { }

	virtual u8 m2_r(offs_t offset) override { return m_ram[offset]; }
	virtual void m2_w(offs_t offset, u8 data) override { m_ram[offset] = data; }
	virtual u8 m4_r(offs_t offset) override { return m_ram[offset + 0x2000]; }
	virtual void m4_w(offs_t offset, u8 data) override { m_ram[offset + 0x2000] = data; }

private:
	memory_share_creator<u8> m_ram;
};

} // anonymous namespace


DEFINE_DEVICE_TYPE_PRIVATE(PENCIL2_MEM16K, device_pencil2_memexp_interface, pencil2_mem16k_device, "pencil2_mem16k", "Pencil 2 16K Memory Pack")