Fix silly RTC and emulator.c mistakes

This commit is contained in:
beeanyew
2021-01-01 11:59:35 +01:00
parent 038912b981
commit 0eb7deffb6
2 changed files with 7 additions and 6 deletions

View File

@@ -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);
}

View File

@@ -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;
}