| 16.7.    Модуль OverlayМодуль Overlay предназначен для организации оверлейных программ, которые загружаются и перезагружаются в оперативную память отдельными частями - секциями. Отдельные оверлейные части программы должны быть оформлены как отдельные модули, причем в них необходимо использовать ключ компилятора {$0+}. Кроме этого необходимо предусмотреть, чтобы при вызове оверлейных процедур и функций все активные в этот момент подпрограммы имели "дальнюю" адресацию (для этого следует использовать ключ компилятора {$F+}. Подключение оверлейных модулей к основной программе помимо стандартного использования раздела uses должно содержать ключ компилятора {$0 unitname} с указанием имени оверлейного модуля. В версии 7.0 введено понятие "испытательной" области, выделяемой в конце оверлейного буфера. Если оверлейная секция попадает в эту область, проверяется, были ли обращения к подпрограммам этой секции. Если таких обращений не было, при необходимости эта секция выбрасывается, а вместо нее записывается другая. Если же обращения были, то секция не выбрасывается, а ставится в конец очереди на удаление, а удаляется какая-либо другая секция. В предыдущих версиях этот механизм не действовал (предполагался размер "испытательной" области равный нулю). В модуле Overlay имеется один стандартный процедурный тип type OvrReadFunc=function (OvrSeg: Word): Integer; Этот тип можно использовать для того, чтобы создавать функции анализа работы с оверлеями. Здесь OvrSeg - номер загружаемого оверлея.  Таблица 41. Константы модуля Overlay 
| Имя | Значение | Назначение |  
 
| Коды ошибок |  ovrOk ovrError
 ovrNotFound
 ovrNoMemory
 ovrlOError
 ovrNoEMSDriver
 ovrNoEMSMemory
 | 0 -1
 -2
 -3
 -4
 -5
 -6
 | Успешное выполнение Ошибка в управлении оверлеями
 Отсутствие оверлейного файла
 Недостаточно памяти для оверлейного буфера
 Ошибка при чтении оверлейного файла
 Не найден драйвер расширенной памяти
 Недостаточно расширенной памяти
 |  Модуль Overlay использует также переменные модуля System (см. табл. 9).  Таблица 42. Переменные модуля Overlay 
| Имя | Значение | Назначение |  
| OvrResult 
 OvrTrapCount
 
 OvrLoadCount
 
 OvrFileMode
 
 OvrReadBuf
 | Integer 
 Word
 
 Word
 
 Byte
 
 OvrReadFunc
 | Результат обращения к процедурам и функциям, работающим с оверлеями (см. табл. 41) Счетчик числа обращений к диспетчеру оверлея (первоначально равен нулю)
 Счетчик числа загрузок оверлеев (первоначально равен нулю)
 Характеристика способа работы с оверлейным файлом (первоначально используется только для чтения)
 Адрес функции проверки результата оверлейной операции
 |  Таблица 43. Процедуры и функции модуля Overlay 
| Имя | Назначение |  
| Процедуры |  
| OvrClearBuf Ovrlnit
 OvrlnitEMS
 OvrSetBuf
 OvrSetRetry
 | Очистка оверлейного буфера Инициализация диспетчера оверлеев и оверлейного файла
 Загрузка оверлейного файла в расширенную память
 Задание размера оверлейного буфера
 Задание "испытательной" области
 |  
| Функции |  
| OvrGetBuf OvrGetRetry
 | Получение размера оверлейного буфера Получение размера "испытательной" области
 |  Далее в алфавитном порядке описаны процедуры и функции модуля Overlay. 
 
 |