[pascal/asm] zarządzanie klawiaturą

0

Witam wszystkich

ucze sie dopiero pascala i mam taki problem, mam taki kod:

program test;
uses crt;

var kod_skan: byte;
procedure g_pobierz_skan_kod(var kod_scan: byte);
var
temp: byte;
begin
temp := port[$64];
if((temp and $01) = 0) then
begin
kod_scan:= 0;
exit;
end;
if((temp and $20) = 32) then
begin
temp := port[$60];
kod_scan := 0;
exit;
end;

kod_scan := port[$60];
end;

procedure g_powtarzanie_klawiszy(liczba, opoznienie: byte);
begin
asm

mov ah, 03h
mov bl, liczba
mov bh, opoznienie
int 16h

end;
end;

procedure g_sys_klawiatura(stan:boolean);
begin

if(stan = TRUE) then
port[$21] := $00
else
port[$21] := $02;

end;

begin
clrscr;
g_powtarzanie_klawiszy($1f, $01);


while (1=1) do
begin

g_pobierz_skan_kod(kod_skan);
g_sys_klawiatura(FALSE);
if(kod_skan=1) then break;

if(kod_skan<>0) then writeln(kod_skan);
end;
g_sys_klawiatura(TRUE);
end.

No i kiedy odpalam program nie wyskakuje mi żaden bład, ale po tym jak wcisne jakikolwiek klawisz, to blokuje mi sie cała klawiatura i nie moge nic robic :(
Kombinowalem troche i wydaje mi sie że to wina procedury g_sys_klawiatura(); bo bez niej działa dosyć dobrze. Proszę o pomoc, co mam zmienic w kodzie?

Z góry dzieki!!

0

Wiem włąsnie, z tego własnie to brałem ale ten kod mi i tak nie działa :/ Czy to tylko u mnie tak sie dzieje czy też Wam sie zawiesza po wciśnieciu klawisza pierwszy raz?

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