IPB

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

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


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

{ Обращайтесь с системными прерываниями с максимальной осторожностью }
{ Неверное использование прерываний может повредить информацию и/или }
{ сам компьютер на аппаратном уровне ! }

{ Ещё один пример использования обработчиков прерываний можно }
{ посмотреть в программе для процедуры Keep }

uses Dos, 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.
 
 К началу страницы 
Тэги:
 

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



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