Фоновая программа оформляется как главная программа, оперативная — как процедура без параметров. Переменные для совместного использования фоновой и оперативной программами должны быть объявлены глобальными до объявления оперативной программы.
Установка вектора прерываний на программу обслуживания ВУ (т.е. запись вектора прерываний по определенному адресу) выполняется с помощью стандартной процедуры Turbo Pascal из модуля DOS (WINDOS):
Procedure SetlntVec (IntNo: byte; IntProcAddr: Pointer);
где IntNo — номер типа прерывания = АВП = 4 * IntNo; IntProcAddr — вектор прерывания, содержит начальный адрес программы обработки прерывания; тип Pointer — указатель — переменная, которая в качестве своего значения содержит адрес байта в памяти, и этот адрес должен быть адресом первой команды оперативной программы. Указатель — совокупность двух слов, трактуемых как сегмент и смещение.
При установке нового вектора прерываний старый вектор будет утерян, если его предварительно не сохранить. Сохранение старого вектора прерывания в некоторой переменной выполняется процедурой из того же модуля DOS (WINDOS):
Procedure GetIntVec (IntNo: byte; Var О Id IntProcAddr: pointer);
Сохранение и восстановление регистров ЦП в программе обслуживания прерываний выполняется с помощью указания специального заголовка процедуры обслуживания прерываний. Все оперативные программы обслуживания прерываний оформляются как процедуры и должны иметь в заголовке ключевое слово Interrupt:
Procedure IntXXX; Intemipt;
Ключевое слово Intemipt приводит к генерации машинных команд, обеспечивающих сохранение в стеке всех регистров ЦП при входе в процедуру IntXXX и извлечение их из стека при ее завершении. Заканчивается такая процедура командой IRET — возврат из прерывания, а не обычной командой возврата из подпрограммы RET, что позволяет ЦП восстановить содержимое СчК и РСП.
Установку/сброс флага разрешения прерываний в регистре Flags центрального процессора можно выполнить с помощью вставки ассемблерного текста в программу:
asm STI end; {IF=1, прерывания разрешены.} asm CLI end; {IF=0, прерывания запрещены.}.