IPB

> Keep.PAS
Чат
Форум
Загрузка...
 

Язык:
Русский
English


 { Пример программы для процедуры Keep }

 { В данном примере используются процедуры GetIntVec и SetIntVec }
 { Посмотрите их описание и пример программы ! }

{$M $800, 0, 0 }   { 2кб стек, без кучи }

{ Эта программа включает встроенный динамик
  на короткое время каждый раз, при нажатии клавиши }


uses Crt, Dos;

var
  KbdIntVec : procedure;

{$F+} { Включаем дальний (FAR) тип вызова }
procedure KeyClick; Interrupt;
begin

 { Порт $60 - порт клавиатуры (также $64 ) }

 if Port[$60] < $80 then
 { Щёлкаем при нажатии клавиши }
 begin
    Sound(5000);
    Delay(1);
    NoSound;
 end;
 InLine($9C); { PUSHF -- запоминаем флаги в стеке }

 { Теперь нужно вернуть событие клавиатуры в цепь обработки. }
 { Вызываем старый ISR с использованием сохранённого вектора }

  KbdIntVec;
end;
{$F-}

begin
 { Устанавливаем новый обработчик событий клавиатуры }
 { $9 - прерывание клавиатуры }
  GetIntVec($9, @KbdIntVec);
 { Переназначаем стандартный обработчик на нашу процедуру }
  SetIntVec($9, Addr(KeyClick));
 { Оставляем программу в памяти }
  Keep(0);
end.
 
 К началу страницы 
Тэги:
 

Код для вставки: :: :: :: ГОСТ ::
Поделиться: //
 



-
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"