Witam,
tworzę prosty system operacyjny. Doszedłem do momentu, w którym dodaję obsługę klawiatury i pojawił się problem.
System powinien mieć funkcję, która sprawdza czy klawisz jest naciśniety, jeżeli tak to wyświetla znak. Sprawdzanie warunku odbywa się cały czas w trakcie wykonywania kodu, a nie w jednym momencie.
Wiem, że muszę to jakoś zapętlić, ale nie mam pojęcia jak to zrobić, żeby nie zawiesić programu tworząc nieskończoną pętlę...
0
1
A czy nie możesz po prostu użyć do tego celu przerwań?
0
Dzięki za odpowiedzi :)
Z tego wynika, że interrupt klawiatury zapisuje scancode do buffera i kończy działąnie. Mam kod, który pobiera wartość z danego portu, czyli może pobierać to co ten interrupt zapisał (jeżeli dobrze rozumiem).
Problem polega na tym, że nie wiem co zrobić po pobraniu scancodu i przekształceniu go na znak.
static uint8_t inb(uint16_t port) // przy wywołaniu podaję 0x60
{
uint8_t ret;
asm volatile ( "inb %1, %0"
: "=a"(ret)
: "Nd"(port) );
return ret;
}
Nie wiem też o co chodzi w (kod z http://webpages.charter.net/danrollins/techhelp/0106.HTM)
cmp al,POP_KEY ;is this the hot key?
je do_pop ; yes, trigger the popup
; no, drop through to original driver
Co to jest ten "popup"