From 9aef5b0977bbc389480e0b822e615abbe1f8882b Mon Sep 17 00:00:00 2001 From: Dean Netherton Date: Wed, 28 Oct 2020 10:24:29 +1100 Subject: [PATCH] RPC501: Added leap year support --- Source/HBIOS/rp5rtc.asm | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/Source/HBIOS/rp5rtc.asm b/Source/HBIOS/rp5rtc.asm index fec5fc63..6e8acae6 100644 --- a/Source/HBIOS/rp5rtc.asm +++ b/Source/HBIOS/rp5rtc.asm @@ -8,6 +8,15 @@ RP5RTC_BUFSIZ .EQU 6 ; SIX BYTE BUFFER (YYMMDDHHMMSS) ; RTC DEVICE INITIALIZATION ENTRY ; +; TODO: +; set the day of week register +; read from nvram +; write to nvram +; read block of nvram +; write block of nvram +; set alarm/get alarm???? + + RP5RTC_REG .EQU $B4 RP5RTC_DAT .EQU $B5 @@ -17,7 +26,7 @@ REG_1MIN .EQU $02 REG_10MIN .EQU $03 REG_1HR .EQU $04 REG_10HR .EQU $05 -REG_DAYWEEK .EQU $06 +REG_DAYWEEK .EQU $06 ; NOT USED BY THIS DRIVER REG_1DAY .EQU $07 REG_10DAY .EQU $08 REG_1MNTH .EQU $09 @@ -28,7 +37,9 @@ REG_MODE .EQU $0D REG_TEST .EQU $0E REG_RESET .EQU $0F + REG_12_24 .EQU $0A +REG_LEAPYR .EQU $0B MODE_TIMEST .EQU 0 MODE_ALRMST .EQU 1 @@ -187,6 +198,15 @@ RP5RTC_SETTIM: LD A, (RP5RTC_YR) CALL RP5RTC_WRVL + LD B, MODE_ALRMST + CALL RP5RTC_SETMD + + LD A, (RP5RTC_YR) + CALL BCD2BYTE + AND 3 + LD B, REG_LEAPYR + CALL RP5RTC_WRVL + XOR A ; SIGNAL SUCCESS RET ; AND RETURN ; @@ -301,3 +321,6 @@ RP5RTC_DT .DB 01 RP5RTC_HH .DB 00 RP5RTC_MM .DB 00 RP5RTC_SS .DB 00 + +RP5RTC_DW .DB 00 ; THE DAY OF THE WEEK +RP5RTC_LP .DB 00 ; 1 IF IS LEAP YEAR, OTHERWISE 0