diff --git a/headers/rtc.h b/headers/rtc.h index 4e25637..146263a 100644 --- a/headers/rtc.h +++ b/headers/rtc.h @@ -5,6 +5,7 @@ #define SECOND_REGISTER 0x00 #define MINUTE_REGISTER 0x02 #define HOUR_REGISTER 0x04 +#define DAY_OF_THE_WEEK_REGISTER 0x06 #define DAY_OF_THE_MONTH_REGISTER 0x07 #define MONTH_REGISTER 0x08 #define YEAR_REGISTER 0x09 diff --git a/src/rtc/rtc.c b/src/rtc/rtc.c index 3c7a0b9..9204273 100644 --- a/src/rtc/rtc.c +++ b/src/rtc/rtc.c @@ -38,7 +38,8 @@ struct rtc_date get_date(void) rv.minute = read_register(MINUTE_REGISTER); rv.hour = read_register(HOUR_REGISTER); rv.day = read_register(DAY_OF_THE_MONTH_REGISTER); - rv.month = read_register(MONTH_REGISTER); + rv.index_of_the_day = read_register(DAY_OF_THE_WEEK_REGISTER) - 1; + rv.month = read_register(MONTH_REGISTER) - 1; rv.year += read_register(YEAR_REGISTER); century = read_register(CENTURY_REGISTER); @@ -47,10 +48,11 @@ struct rtc_date get_date(void) rv.minute = bcd_mode_to_bin(rv.minute); rv.hour = bcd_mode_to_bin(rv.hour); rv.day = bcd_mode_to_bin(rv.day); + rv.index_of_the_day = bcd_mode_to_bin(rv.index_of_the_day); rv.month = bcd_mode_to_bin(rv.month); rv.year = bcd_mode_to_bin(rv.year); century = bcd_mode_to_bin(century); } - rv.year += century * 100 - 108; // -108 = bozo offset + rv.year += century * 100 - 98; // -108 = bozo offset return rv; } \ No newline at end of file diff --git a/src/shell/date.c b/src/shell/date.c index 078e489..22d86c3 100644 --- a/src/shell/date.c +++ b/src/shell/date.c @@ -16,7 +16,15 @@ void date() "October", "November", "December" }; + static const char * week_days[] = { + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" }; struct rtc_date date = get_date(); - kprintf(0, "%s. %d %s. %d %d:%d:%d\n", "mer", date.day, months[date.month], date.year, date.hour, date.minute, date.second); + kprintf(0, "%s. %d %s. %d %d:%d:%d\n", week_days[date.index_of_the_day], date.day, months[date.month], date.year, date.hour, date.minute, date.second); } \ No newline at end of file