getintvc.pas

Пример программы для процедур GetIntVec и SetIntVec.

Код примера
 {GetIntVc.PAS}
 
 { Пример программы для процедур GetIntVec и SetIntVec }
 
 { Обращайтесь с системными прерываниями с максимальной осторожностью }
 { Неверное использование прерываний может повредить информацию и/или }
 { сам компьютер на аппаратном уровне ! }
 
 { Еще один пример использования обработчиков прерываний можно }
 { посмотреть в программе для процедуры Keep }
 
 Uses WinDos, Crt;
 
 Var Int1CSave : Pointer;
            Fl : Boolean;
 
 {$F+}
 Procedure TimerHandler;
 Interrupt;
 Begin
  { ISR на события таймера }
 
 {*** Обратитесь к документации по DDK или
  DPMI для информации по созданию ISR *** }
 
 { ISR на события таймера вызываются 18 раз в секунду }
 
 { Данный пример включает внутренний динамик 9 раз в
   секунду с частотой 1000 }
 
 If Fl Then NoSound Else Sound(1000);
 Fl:=Not Fl;
End;
{$F-}
 
Begin
 { Получаем старый вектор прерывания $1C - (системный таймер) }
 { и сохраняем его в переменной Int1CSave }
 GetIntVec($1C, Int1CSave);
 { Переназначаем его на нашу процедуру обработки прерывания }
 SetIntVec($1C, @TimerHandler);
 WriteLn('Нажмите любую клавишу для снятия обработчика...');
  Repeat
  Until Keypressed;
  { Возвращаем обработчик прерывания в исходное состояние }
  SetIntVec($1C, Int1CSave);
 End.

Скачать getintvc.pas