Sprawdzanie jednego warunku podczas wykonywania się całego kodu

Odpowiedz Nowy wątek
2017-07-12 22:45
0

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ę...

edytowany 1x, ostatnio: caderda, 2017-07-12 22:45

Pozostało 580 znaków

2017-07-12 22:58
zbb
1

A czy nie możesz po prostu użyć do tego celu przerwań?

Których interruptów byś urzył? Target to i386. - caderda 2017-07-12 23:32
vpiotr podesłał link, który powinien Ci pomóc. - zbb 2017-07-13 00:30

Pozostało 580 znaków

2017-07-12 23:48
1

http://webpages.charter.net/danrollins/techhelp/0106.HTM


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

2017-07-13 10:29
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"

edytowany 5x, ostatnio: caderda, 2017-07-13 10:43
Ten POP_KEY to klawisz na który czeka ta przykładowa procedura (TSR). "popup" to pewnie chodzi o to że ma coś wyskoczyć na ekran po naciśnięciu tego klawisza. - vpiotr 2017-07-13 10:59

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0