Скачать Модуль для работы с клавиатурой

04.02.1996
Скачать файл (788,00 Б)





{
     Модуль для работы с клавиатурой
     (c) Viktor Ostashev
 
     04.02.96 15:32
}
 
unit l_kbd;
 
interface
 
function scan       : byte;
{
Возвращает scan-код нажатой клавиши, ожидает нажатия
}
 
function bioskey    : word; inline($B4/$10/$CD/$16);
{
Читает нажатие через int 16h, hi - scan, lo - ascii
}
 
function keystatus  : word; inline($B4/$12/$CD/$16);
{
Читает расширенный статус клавиатуры
}
 
function kbhit      : word; inline($B4/$11/$CD/$16/$75/$02/$31/$C0);
{
Проверяет наличие символа в буфере без ожидания,
возвращает расширенный код, не очищая буфер
}
 
procedure chartobuf(symb : word); inline($59/$B4/$05/$CD/$16);
{
Возвращает символ в буфер клавиатуры
}
 
 
procedure clearkbd;
{
Очистка буфера клавиатуры
}
 
 
procedure togglekbd;inline($E4/$21/$34/$02/$E6/$21);
{
Включает/выключает клавиатуру через запрет IRQ1
}
 
 
implementation
 
     function scan; assembler;
     asm
          @1:
          in      al,60h
          and     al,al
          jns     @1
          @2:
          in      al,60h
          and     al,al
          js      @2
          xor     ah,ah
          push    ax
          mov     ah,11h
          int     16h
          jz      @3
          mov     ah,10h
          int     16h
          @3:
          pop     ax
     end;
 
     procedure clearkbd; assembler;
     asm
          mov     ax,seg0040
          push    ds
          mov     ds,ax
          mov     ax,ds:[001Ah]
          mov     ds:[001Ch],ax
          pop     ds
     end;
 
end.