diff --git a/sys/include/kbd.h b/sys/include/kbd.h new file mode 100644 index 0000000..7626e57 --- /dev/null +++ b/sys/include/kbd.h @@ -0,0 +1,7 @@ +#ifndef KBD_H +#define KBD_H + +u8 inb(u16); +s8 waitkey(void); + +#endif diff --git a/sys/kbd.c b/sys/kbd.c new file mode 100644 index 0000000..3ec560d --- /dev/null +++ b/sys/kbd.c @@ -0,0 +1,22 @@ +#include + +static inline u8 +inb(u16 port) +{ + u8 ret; + __asm__ volatile ( "inb %w1, %b0" + : "=a"(ret) + : "Nd"(port) + : "memory"); + return ret; +} + +char +waitkey(void) +{ + char k; + while ((k=inb(0x60))<128); + while (inb(0x60)>128); + + return k; +} diff --git a/sys/sysinit.c b/sys/sysinit.c index 1636443..9d04d03 100644 --- a/sys/sysinit.c +++ b/sys/sysinit.c @@ -10,5 +10,7 @@ sysinit(void) vga_clearscreen(); vga_write("Starting omOS...", 16, 0x0F); + char thing = waitkey(); + vga_write(&thing, 1, 0x1F); memory_init(); }