summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/pps41/mm76.cpp
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2021-03-04 13:09:58 +0100
committer hap <happppp@users.noreply.github.com>2021-03-04 13:10:10 +0100
commitd65c5159f16d942fccc3c0420ed166e5fe85b64f (patch)
tree164c93d492bde1c32534fde2b411027749bcca7c /src/devices/cpu/pps41/mm76.cpp
parent2d692d7570ae0a3c8819adfa09ac3001171f74c8 (diff)
pps41: add skeleton MM76-derived devices
Diffstat (limited to 'src/devices/cpu/pps41/mm76.cpp')
-rw-r--r--src/devices/cpu/pps41/mm76.cpp45
1 files changed, 37 insertions, 8 deletions
diff --git a/src/devices/cpu/pps41/mm76.cpp b/src/devices/cpu/pps41/mm76.cpp
index c7fdfb42555..2981467c0ac 100644
--- a/src/devices/cpu/pps41/mm76.cpp
+++ b/src/devices/cpu/pps41/mm76.cpp
@@ -13,26 +13,54 @@
DEFINE_DEVICE_TYPE(MM76, mm76_device, "mm76", "Rockwell MM76")
+DEFINE_DEVICE_TYPE(MM76L, mm76l_device, "mm76l", "Rockwell MM76L")
+DEFINE_DEVICE_TYPE(MM76E, mm76e_device, "mm76e", "Rockwell MM76E")
+DEFINE_DEVICE_TYPE(MM76EL, mm76el_device, "mm76el", "Rockwell MM76EL")
+
+
+// constructor
+mm76_device::mm76_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm76_device(mconfig, MM76, tag, owner, clock, 10, address_map_constructor(FUNC(mm76_device::program_0_6k), this), 6, address_map_constructor(FUNC(mm76_device::data_48x4), this))
+{ }
+
+mm76_device::mm76_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
+ pps41_base_device(mconfig, type, tag, owner, clock, prgwidth, program, datawidth, data)
+{ }
+
+mm76l_device::mm76l_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm76_device(mconfig, MM76L, tag, owner, clock, 10, address_map_constructor(FUNC(mm76l_device::program_0_6k), this), 6, address_map_constructor(FUNC(mm76l_device::data_48x4), this))
+{ }
+
+mm76e_device::mm76e_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm76e_device(mconfig, MM76E, tag, owner, clock, 10, address_map_constructor(FUNC(mm76e_device::program_1k), this), 6, address_map_constructor(FUNC(mm76e_device::data_48x4), this))
+{ }
+
+mm76e_device::mm76e_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, int prgwidth, address_map_constructor program, int datawidth, address_map_constructor data) :
+ mm76_device(mconfig, type, tag, owner, clock, prgwidth, program, datawidth, data)
+{ }
+
+mm76el_device::mm76el_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
+ mm76e_device(mconfig, MM76EL, tag, owner, clock, 10, address_map_constructor(FUNC(mm76el_device::program_1k), this), 6, address_map_constructor(FUNC(mm76el_device::data_48x4), this))
+{ }
// internal memory maps
-void mm76_device::program_map(address_map &map)
+void mm76_device::program_0_6k(address_map &map)
{
map(0x000, 0x17f).mirror(0x200).rom();
map(0x180, 0x1ff).rom();
map(0x380, 0x3ff).rom();
}
-void mm76_device::data_map(address_map &map)
+void mm76e_device::program_1k(address_map &map)
{
- map(0x00, 0x2f).ram();
+ map(0x000, 0x3ff).rom();
}
-
-// device definitions
-mm76_device::mm76_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) :
- pps41_base_device(mconfig, MM76, tag, owner, clock, 10, address_map_constructor(FUNC(mm76_device::program_map), this), 6, address_map_constructor(FUNC(mm76_device::data_map), this))
-{ }
+void mm76_device::data_48x4(address_map &map)
+{
+ map(0x00, 0x2f).ram();
+}
// machine config
@@ -54,6 +82,7 @@ void mm76_device::device_start()
{
pps41_base_device::device_start();
m_stack_levels = 1;
+ m_d_pins = 10;
}
void mm76_device::device_reset()