diff options
Diffstat (limited to 'src/devices/cpu/hpc/hpc.cpp')
-rw-r--r-- | src/devices/cpu/hpc/hpc.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/devices/cpu/hpc/hpc.cpp b/src/devices/cpu/hpc/hpc.cpp index cdfbe43dc1a..9d10ffbbbf9 100644 --- a/src/devices/cpu/hpc/hpc.cpp +++ b/src/devices/cpu/hpc/hpc.cpp @@ -13,9 +13,19 @@ #include "hpcdasm.h" // device type definitions +DEFINE_DEVICE_TYPE(HPC46003, hpc46003_device, "hpc46003", "HPC46003") DEFINE_DEVICE_TYPE(HPC46104, hpc46104_device, "hpc46104", "HPC46104") +void hpc46003_device::internal_map(address_map &map) +{ + map(0x0000, 0x00bf).ram(); + map(0x00c0, 0x00c0).rw(FUNC(hpc46003_device::psw_r), FUNC(hpc46003_device::psw_w)); + map(0x00c4, 0x00cf).ram().share("core_regs"); + // TODO: many other internal registers + map(0x01c0, 0x01ff).ram(); +} + void hpc46104_device::internal_map(address_map &map) { map(0x0000, 0x00bf).ram(); @@ -25,6 +35,11 @@ void hpc46104_device::internal_map(address_map &map) map(0x01c0, 0x02ff).ram(); } +std::unique_ptr<util::disasm_interface> hpc46003_device::create_disassembler() +{ + return std::make_unique<hpc16083_disassembler>(); +} + std::unique_ptr<util::disasm_interface> hpc46104_device::create_disassembler() { return std::make_unique<hpc16164_disassembler>(); @@ -41,6 +56,11 @@ hpc_device::hpc_device(const machine_config &mconfig, device_type type, const ch { } +hpc46003_device::hpc46003_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) + : hpc_device(mconfig, HPC46003, tag, owner, clock, address_map_constructor(FUNC(hpc46003_device::internal_map), this)) +{ +} + hpc46104_device::hpc46104_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock) : hpc_device(mconfig, HPC46104, tag, owner, clock, address_map_constructor(FUNC(hpc46104_device::internal_map), this)) { |