diff options
author | 2025-04-02 10:22:45 -0400 | |
---|---|---|
committer | 2025-04-02 10:22:45 -0400 | |
commit | 9349b16a17d6395e301c719af14b4428fee73421 (patch) | |
tree | 66c885b15f2f4df65e41d31820b702b0375e6c20 /src/devices/cpu | |
parent | 838bd064c617062f3c03e6f3255233ecdc98d373 (diff) |
Add a skeleton for an Oldsmobile Driver Information System (#13525)
* New NOT_WORKING machine
----------
Oldsmobile Driver Information System (version 2.2 CH) [Devin Acker]
Diffstat (limited to 'src/devices/cpu')
-rw-r--r-- | src/devices/cpu/upd7810/upd7810.cpp | 13 | ||||
-rw-r--r-- | src/devices/cpu/upd7810/upd7810.h | 10 | ||||
-rw-r--r-- | src/devices/cpu/upd7810/upd7810_opcodes.cpp | 5 |
3 files changed, 27 insertions, 1 deletions
diff --git a/src/devices/cpu/upd7810/upd7810.cpp b/src/devices/cpu/upd7810/upd7810.cpp index 0883dd3cc31..4f706c09a13 100644 --- a/src/devices/cpu/upd7810/upd7810.cpp +++ b/src/devices/cpu/upd7810/upd7810.cpp @@ -378,6 +378,7 @@ DEFINE_DEVICE_TYPE(UPD7810, upd7810_device, "upd7810", "NEC uPD7810") DEFINE_DEVICE_TYPE(UPD78C10, upd78c10_device, "upd78c10", "NEC uPD78C10") DEFINE_DEVICE_TYPE(UPD7811, upd7811_device, "upd7811", "NEC uPD7811") DEFINE_DEVICE_TYPE(UPD78C11, upd78c11_device, "upd78c11", "NEC uPD78C11") +DEFINE_DEVICE_TYPE(UPD78C14, upd78c14_device, "upd78c14", "NEC uPD78C14") DEFINE_DEVICE_TYPE(UPD7807, upd7807_device, "upd7807", "NEC uPD7807") DEFINE_DEVICE_TYPE(UPD7801, upd7801_device, "upd7801", "NEC uPD7801") DEFINE_DEVICE_TYPE(UPD78C05, upd78c05_device, "upd78c05", "NEC uPD78C05") @@ -408,6 +409,13 @@ void upd7810_device::upd_internal_4096_rom_256_ram_map(address_map &map) m_ram_view[0](0xff00, 0xffff).ram(); } +void upd7810_device::upd_internal_16k_rom_256_ram_map(address_map &map) +{ + map(0x0000, 0x3fff).rom(); + map(0xff00, 0xffff).view(m_ram_view); + m_ram_view[0](0xff00, 0xffff).ram(); +} + upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map) : cpu_device(mconfig, type, tag, owner, clock) , m_to_func(*this) @@ -474,6 +482,11 @@ upd78c11_device::upd78c11_device(const machine_config &mconfig, const char *tag, { } +upd78c14_device::upd78c14_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) + : upd78c10_device(mconfig, UPD78C14, tag, owner, clock, address_map_constructor(FUNC(upd78c14_device::upd_internal_16k_rom_256_ram_map), this)) +{ +} + void upd7807_device::configure_ops() { m_opXX = s_opXX_7807; diff --git a/src/devices/cpu/upd7810/upd7810.h b/src/devices/cpu/upd7810/upd7810.h index 9e07c77043b..cdda6dd8077 100644 --- a/src/devices/cpu/upd7810/upd7810.h +++ b/src/devices/cpu/upd7810/upd7810.h @@ -90,6 +90,7 @@ protected: void upd_internal_256_ram_map(address_map &map) ATTR_COLD; void upd_internal_4096_rom_128_ram_map(address_map &map) ATTR_COLD; void upd_internal_4096_rom_256_ram_map(address_map &map) ATTR_COLD; + void upd_internal_16k_rom_256_ram_map(address_map &map) ATTR_COLD; // flags enum @@ -1384,6 +1385,14 @@ public: }; +class upd78c14_device : public upd78c10_device +{ +public: + // construction/destruction + upd78c14_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); +}; + + class upd7807_device : public upd7810_device { public: @@ -1449,6 +1458,7 @@ DECLARE_DEVICE_TYPE(UPD7810, upd7810_device) DECLARE_DEVICE_TYPE(UPD78C10, upd78c10_device) DECLARE_DEVICE_TYPE(UPD7811, upd7811_device) DECLARE_DEVICE_TYPE(UPD78C11, upd78c11_device) +DECLARE_DEVICE_TYPE(UPD78C14, upd78c14_device) DECLARE_DEVICE_TYPE(UPD7807, upd7807_device) DECLARE_DEVICE_TYPE(UPD7801, upd7801_device) DECLARE_DEVICE_TYPE(UPD78C05, upd78c05_device) diff --git a/src/devices/cpu/upd7810/upd7810_opcodes.cpp b/src/devices/cpu/upd7810/upd7810_opcodes.cpp index 892db43bc33..f9580278be5 100644 --- a/src/devices/cpu/upd7810/upd7810_opcodes.cpp +++ b/src/devices/cpu/upd7810/upd7810_opcodes.cpp @@ -309,7 +309,10 @@ void upd7810_device::DIV_A() A = remainder; } else - EA = 0xffff; /* guess */ + { + A = EAL; + EA = 0xffff; + } } /* 48 3e: 0100 1000 0011 1110 */ |