start implementing time utils

This commit is contained in:
2025-03-16 13:26:38 +03:00
parent 4cbdbfe838
commit 211a6e9318
2 changed files with 23 additions and 0 deletions
+2
View File
@@ -4,6 +4,8 @@
uint8 inportb(uint16 _port); uint8 inportb(uint16 _port);
void outportb(uint16 _port, uint8 _data); void outportb(uint16 _port, uint8 _data);
uint8_t get_rtc(uint8_t reg);
void get_fancy_datetime();
#define inb inportb #define inb inportb
#define outb outportb #define outb outportb
+21
View File
@@ -12,3 +12,24 @@ void outportb(uint16 _port, uint8 _data)
{ {
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data)); __asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
} }
uint8_t get_rtc(uint8_t reg)
{
uint8_t nmi_disable_bit = 0;
outb(0x70, (nmi_disable_bit << 7) | reg);
uint8_t result = inb(0x71);
return result;
}
void get_fancy_datetime()
{
uint8_t century = get_rtc(0x32);
uint8_t year = get_rtc(0x09);
uint8_t month = get_rtc(0x08);
uint8_t day_of_month = get_rtc(0x07);
uint8_t hour = get_rtc(0x04);
uint8_t minute = get_rtc(0x02);
uint8_t second = get_rtc(0x00);
printf("%X-%X-%X%X %X:%X:%X\n", day_of_month, month, century, year, hour, minute, second);
}