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