toaruos/boot/kbd.c

25 lines
431 B
C
Raw Normal View History

2021-06-14 05:11:37 +03:00
#include "kbd.h"
#include "util.h"
2021-07-08 07:51:03 +03:00
int read_cmos_seconds(void) {
outportb(0x70,0);
return inportb(0x71);
}
int read_scancode(int timeout) {
if (timeout) {
int start_s = read_cmos_seconds();
while (!(inportb(0x64) & 1)) {
int now_s = read_cmos_seconds();
if (now_s != start_s) return -1;
}
} else {
while (!(inportb(0x64) & 1));
}
2021-06-14 05:11:37 +03:00
int out;
while (inportb(0x64) & 1) {
out = inportb(0x60);
}
return out;
}