diff options
author | 2021-03-04 13:09:58 +0100 | |
---|---|---|
committer | 2021-03-04 13:10:10 +0100 | |
commit | d65c5159f16d942fccc3c0420ed166e5fe85b64f (patch) | |
tree | 164c93d492bde1c32534fde2b411027749bcca7c /src/devices/cpu/pps41/mm76.cpp | |
parent | 2d692d7570ae0a3c8819adfa09ac3001171f74c8 (diff) |
pps41: add skeleton MM76-derived devices
Diffstat (limited to 'src/devices/cpu/pps41/mm76.cpp')
-rw-r--r-- | src/devices/cpu/pps41/mm76.cpp | 45 |
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() |