From 3a508a1497f61fc7cddc243446c58625dde2dc72 Mon Sep 17 00:00:00 2001 From: hap Date: Mon, 18 Dec 2023 00:39:40 +0100 Subject: hd6301: fix timer 2 serial clock --- src/devices/cpu/m6800/m6801.cpp | 10 ++++------ src/mame/novag/snova.cpp | 1 - src/mame/novag/svip.cpp | 5 ++--- src/mame/saitek/turbo16k.cpp | 2 +- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/devices/cpu/m6800/m6801.cpp b/src/devices/cpu/m6800/m6801.cpp index befef29c36d..b6f5af38196 100644 --- a/src/devices/cpu/m6800/m6801.cpp +++ b/src/devices/cpu/m6800/m6801.cpp @@ -2084,14 +2084,12 @@ void hd6301x_cpu_device::increment_t2cnt(int amount) if (BIT(m_rmcr, 5) && !m_use_ext_serclock) { - if (m_ext_serclock + amount >= 32) + m_ext_serclock++; + if (m_ext_serclock >= 32) { - m_ext_serclock = (m_ext_serclock + amount) % 32; - serial_transmit(); - serial_receive(); + m_ext_serclock = 0; + machine().scheduler().synchronize(timer_expired_delegate(FUNC(hd6301x_cpu_device::sci_tick), this)); } - else - m_ext_serclock += amount; } m_tcsr3 |= 0x80; diff --git a/src/mame/novag/snova.cpp b/src/mame/novag/snova.cpp index fbaf229e1f8..84211f7364c 100644 --- a/src/mame/novag/snova.cpp +++ b/src/mame/novag/snova.cpp @@ -11,7 +11,6 @@ NVRAM won't work properly (supremo doesn't have NVRAM). TODO: - if/when MAME supports an exit callback, hook up nsnova power-off switch to that -- serial port isn't working, same problem as nsvip - unmapped reads from 0x33/0x34 (nsnova) or 0x3c/0x3d (supremo) - supremo unmapped writes to 0x2000/0x6000, always 0? - is "Aquamarine / Super Nova" the same rom as nsnova and just a redesign? diff --git a/src/mame/novag/svip.cpp b/src/mame/novag/svip.cpp index 498c6cd4746..b070dbc74da 100644 --- a/src/mame/novag/svip.cpp +++ b/src/mame/novag/svip.cpp @@ -26,8 +26,7 @@ The LCD is the same as the one in Primo / Supremo / Super Nova. TODO: - if/when MAME supports an exit callback, hook up power-off switch to that -- serial port isn't working, MCU emulation problem? (it has nothing to do with - the distributor box, that's just a dumb expander) +- serial port isn't working for nsvip V1.x? it only sends empty chars - unmapped reads from 0x3* range, same as snova driver - is (non-super) VIP on the same hardware? minus EPROM or RS232 @@ -138,7 +137,7 @@ u8 svip_state::p2_r() if (m_inp_mux & m_inputs[i]->read()) data |= 0x20 << i; - return ~data; + return ~data ^ 8; } void svip_state::p2_w(u8 data) diff --git a/src/mame/saitek/turbo16k.cpp b/src/mame/saitek/turbo16k.cpp index a7116d71184..a2af118c681 100644 --- a/src/mame/saitek/turbo16k.cpp +++ b/src/mame/saitek/turbo16k.cpp @@ -23,7 +23,7 @@ TODO: and says "Sixteen Level Computerized Chess" Hardware notes: -- HD6301Y0 MCU, 8MHz or 12MHz (LC osc, no XTAL) +- Hitachi HD6301Y0P/F MCU, 8MHz or 12MHz (LC osc, no XTAL) - 16 board LEDs (can be tri-color), 7 or 8 status LEDs - buttons sensor board, piezo -- cgit v1.2.3