summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/hpc/hpc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/hpc/hpc.cpp')
-rw-r--r--src/devices/cpu/hpc/hpc.cpp20
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))
{