From d2c4286eca573ed6143b50cb4acd0c8ab72db9f1 Mon Sep 17 00:00:00 2001 From: hap Date: Tue, 5 Dec 2023 20:34:30 +0100 Subject: [PATCH] m6801: mask unused ram ctrl reg bits --- src/devices/cpu/m6800/m6801.cpp | 15 ++++++++++++++- src/devices/cpu/m6800/m6801.h | 4 +++- src/mame/chess/yeno_301xl.cpp | 2 ++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/devices/cpu/m6800/m6801.cpp b/src/devices/cpu/m6800/m6801.cpp index 1485e7f2d67..db770b8e7d8 100644 --- a/src/devices/cpu/m6800/m6801.cpp +++ b/src/devices/cpu/m6800/m6801.cpp @@ -1285,7 +1285,7 @@ void m6801_cpu_device::device_reset() OCD = 0xffff; TOD = 0xffff; m_timer_next = 0xffff; - m_ram_ctrl |= 0x78; + m_ram_ctrl |= 0x40; m_latch09 = 0; m_trcsr = M6801_TRCSR_TDRE; @@ -1311,6 +1311,7 @@ void hd6301x_cpu_device::device_reset() m_tcsr2 = 0x00; m_pending_tcsr2 = 0x00; OC2D = 0xffff; + m_ram_ctrl = (m_ram_ctrl & 0x80) | 0x7c; m_t2cnt = 0x00; m_tconr = 0xff; @@ -1333,6 +1334,7 @@ void hd6301y_cpu_device::device_reset() { hd6301x_cpu_device::device_reset(); + m_ram_ctrl = (m_ram_ctrl & 0x80) | 0x78; m_p6csr = 7; } @@ -2231,6 +2233,17 @@ void m6801_cpu_device::sci_tdr_w(uint8_t data) uint8_t m6801_cpu_device::rcr_r() { + return m_ram_ctrl | 0x3f; +} + +uint8_t hd6301x_cpu_device::rcr_r() +{ + return m_ram_ctrl | 0x30; +} + +uint8_t hd6301y_cpu_device::rcr_r() +{ + // no unused bits return m_ram_ctrl; } diff --git a/src/devices/cpu/m6800/m6801.h b/src/devices/cpu/m6800/m6801.h index 89d9d609409..499aae2dc6f 100644 --- a/src/devices/cpu/m6800/m6801.h +++ b/src/devices/cpu/m6800/m6801.h @@ -122,7 +122,7 @@ protected: uint8_t sci_rdr_r(); void sci_tdr_w(uint8_t data); - uint8_t rcr_r(); + virtual uint8_t rcr_r(); virtual void rcr_w(uint8_t data); uint8_t ff_r(); @@ -340,6 +340,7 @@ protected: virtual void p6_data_w(uint8_t data); uint8_t p7_data_r(); void p7_data_w(uint8_t data); + virtual uint8_t rcr_r() override; uint8_t tcsr2_r(); void tcsr2_w(uint8_t data); @@ -442,6 +443,7 @@ protected: virtual void p6_data_w(uint8_t data) override; uint8_t p6_csr_r(); void p6_csr_w(uint8_t data); + virtual uint8_t rcr_r() override; virtual void rcr_w(uint8_t data) override; virtual void m6800_check_irq2() override; diff --git a/src/mame/chess/yeno_301xl.cpp b/src/mame/chess/yeno_301xl.cpp index 8e641158a89..32e8cb458a1 100644 --- a/src/mame/chess/yeno_301xl.cpp +++ b/src/mame/chess/yeno_301xl.cpp @@ -16,6 +16,8 @@ Hardware notes: - Hitachi HD63B01X0, 8MHz XTAL - 8*8 chessboard buttons, 16+1 LEDs, piezo +Yeno 309 XT is on the same PCB, and has the same MCU ROM. + TODO: - if/when MAME supports an exit callback, hook up power-off IRQ to that