Пишу бильярд.
Нужно узнавать, сколько времени была нажита клавиша (пробел).
Помогите, а то я не знаю, как перехватывать прерывания.
(В архиве ничего толком не нашел )
uses dos, crt;
var
lastscan, scan: byte;
old_09h: pointer;
space_pressed, space_released: boolean;
{$f+}
procedure new_int_09h; interrupt;
begin
scan := port[$60];
inline($ff/ $1e/ >old_09h);
end;
{$f-}
function GetTime: LongInt;
Var h, m, s, ms: Word;
begin
Dos.GetTime(h, m, s, ms);
GetTime := longint(ms) + 100 * (s + 60 * (m + 60 * h));
end;
var
T, T2: longint;
begin
getintvec($09, old_09h);
setintvec($09, @new_int_09h);
space_pressed := false;
space_released := false;
scan := 128;
writeln('press ESC to exit...');
repeat
if not space_pressed then
repeat until scan < 128;
if scan = $39 then begin
T := gettime;
repeat until scan > 128;
T2 := gettime;
writeln('time = ', (T2 - T):15);
end;
while keypressed do readkey;
lastscan := scan; scan := 128;
until lastscan = 1;
setintvec($09, old_09h);
end.