From 0eb7deffb62e5153425c4931ec9d4c8c068c7feb Mon Sep 17 00:00:00 2001 From: beeanyew Date: Fri, 1 Jan 2021 11:59:35 +0100 Subject: [PATCH] Fix silly RTC and emulator.c mistakes --- emulator.c | 2 +- platforms/shared/rtc.c | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/emulator.c b/emulator.c index d2d3eab..a898541 100644 --- a/emulator.c +++ b/emulator.c @@ -566,7 +566,7 @@ void m68k_write_memory_8(unsigned int address, unsigned int value) { PLATFORM_CHECK_WRITE(OP_TYPE_BYTE); if (address == 0xbfe001) { - if (ovl != (value & (1 << 0)) { + if (ovl != (value & (1 << 0))) { ovl = (value & (1 << 0)); printf("OVL:%x\n", ovl); } diff --git a/platforms/shared/rtc.c b/platforms/shared/rtc.c index 8b3772c..dd5edad 100644 --- a/platforms/shared/rtc.c +++ b/platforms/shared/rtc.c @@ -49,20 +49,21 @@ void put_rtc_byte(uint32_t address_, uint8_t value, uint8_t rtc_type) { break; case 0x03: case 0x06: - ricoh_alarm[address] = (value & (0x08 & 0xFF)); + ricoh_alarm[address] &= (value & (0x08 ^ 0xFF)); break; case 0x05: case 0x08: case 0x0B: - ricoh_alarm[address] = (value & (0x0C & 0xFF)); + ricoh_alarm[address] = (value & (0x0C ^ 0xFF)); break; case 0x0A: - ricoh_alarm[address] = (value & (0x0E & 0xFF)); + ricoh_alarm[address] = (value & (0x0E ^ 0xFF)); break; default: ricoh_alarm[address] = value; break; } + //printf("Write to Ricoh alarm @%.2X: %.2X -> %.2X\n", address, value, ricoh_alarm[address]); return; } else if (address >= 0x0D) { @@ -105,7 +106,7 @@ uint8_t get_rtc_byte(uint32_t address_, uint8_t rtc_type) { case 0x05: // Hours high? if (rtc_type == RTC_TYPE_MSM) { if (rtc_mystery_reg[2] & 4) { - return ((rtc_time->tm_hour / 10) | (rtc_time->tm_hour >= 12) ? 0x04 : 0x00); + return (((rtc_time->tm_hour % 12) / 10) | (rtc_time->tm_hour >= 12) ? 0x04 : 0x00); } else return rtc_time->tm_hour / 10; @@ -115,7 +116,7 @@ uint8_t get_rtc_byte(uint32_t address_, uint8_t rtc_type) { return rtc_time->tm_hour / 10; } else { - return ((rtc_time->tm_hour / 10) | (rtc_time->tm_hour >= 12) ? 0x02 : 0x00); + return (((rtc_time->tm_hour % 12) / 10) | (rtc_time->tm_hour >= 12) ? 0x02 : 0x00); } break; } -- 2.39.2