summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/msx/slot/ram_mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/msx/slot/ram_mm.h')
-rw-r--r--src/devices/bus/msx/slot/ram_mm.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/devices/bus/msx/slot/ram_mm.h b/src/devices/bus/msx/slot/ram_mm.h
new file mode 100644
index 00000000000..69ce5f41053
--- /dev/null
+++ b/src/devices/bus/msx/slot/ram_mm.h
@@ -0,0 +1,34 @@
+// license:BSD-3-Clause
+// copyright-holders:Wilbert Pol
+#ifndef MAME_BUS_MSX_SLOT_RAM_MM_H
+#define MAME_BUS_MSX_SLOT_RAM_MM_H
+
+#pragma once
+
+#include "slot.h"
+
+class msx_slot_ram_mm_device : public device_t, public msx_internal_slot_interface
+{
+public:
+ msx_slot_ram_mm_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ msx_slot_ram_mm_device &set_total_size(u32 total_size) { m_total_size = total_size; return *this; }
+ msx_slot_ram_mm_device &set_unused_bits(u8 unused_bits) { m_unused_bits = unused_bits; return *this; }
+
+protected:
+ virtual void device_start() override;
+
+private:
+ u8 read_mapper_bank(offs_t offset);
+ void write_mapper_bank(offs_t offset, u8 data);
+
+ std::vector<u8> m_ram;
+ u32 m_total_size;
+ u8 m_bank_mask;
+ u8 m_unused_bits;
+ memory_bank_array_creator<4> m_rambank;
+};
+
+DECLARE_DEVICE_TYPE(MSX_SLOT_RAM_MM, msx_slot_ram_mm_device)
+
+#endif // MAME_BUS_MSX_SLOT_RAM_MM_H