problkem z kodem w pascalu

0

ten post mógłby mieć temat "ja sie już nie starzeję" ale zrezygnuję
w podanym poniżej kodzie po kompilacji nie wykazuje żadnego błędu a gdy run'uje go to mi tylko poda numer 1-szego klawisza jaki nacisne i koniec bajki mam win XP podobno to ma jakies znaczenie wiec czy moge to odpalić lub poprawić aby dzialalo?? oto kod :
program gra;
uses crt,graf_fx;
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_SYS_KLAWIATURA(STAN : BOOLEAN);
begin

if(stan = TRUE) then
port[$21] :=$00
else
port[$21] :=$02;
end;
procedure g_powtarzanie_klawiszy( liczba, opoznienie : byte );
begin
asm
mov ah, 03h
mov bl, liczba
mov bh, opoznienie
int 16h
end;
end;
var
kod_skan : byte;

begin

clrscr;
g_powtarzanie_klawiszy($1f, $01);
g_sys_klawiatura(FALSE);
while (1 = 1) do
begin
g_pobierz_skan_kod(kod_skan);
if (kod_skan = 1 ) then break ;
if (kod_skan <> 0) then writeln(kod_skan) ;
end;
g_sys_klawiatura(TRUE);
end.
piszcie jesli wiecie co tu est nie tak [angel]

0

WinXP nie ma DOSa. Dziwie się, że w ogóle program się odpalił.

0

Programy dosowe na XP działają bez problemów.

0

Przy wywołaniu funkcji 03h przerwania 16h nie podałeś nr podfunkcji. Domyślam się, że chodzi tutaj o funkcję 05h. Musisz dopisać mov al, 05h

A swoją drogą, to pisz choć odrobinę komentarzy, bo trochę mi zajęło dojście co wysyłasz na port (Chociaż celu nie znam. Po co wyłączasz przerwanie klawiatury?)

0

ok ale gdzie to dopisać???? w którym miejscu?? :-[ :-[

0
asm
mov ah, 03h
mov al, 05h
mov bl, liczba
mov bh, opoznienie
int 16h
end;

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