150______________________________________________________Глава 5

EMS— память существует. В этом случае функция определяет версию EMM и помещает ее во внутреннюю переменную EMSVer. Поскольку вызов функции IsEMM осуществляется перед любым обращением к EMM, ненулевое содержимое этой переменной служит признаком того, что проверка уже произведена и EMM установлен. Если EMSVerOO, функция IsEMS не делает описанную выше проверку, а сразу возвращает True, экономя несколько миллисекунд на каждом обращении.

Процедура MapEMSPage. Объявление: Procedure MapEMSPage(Handle,Physic,Logic: Word);

Функция: Картирует окно, связывая его физическую страницу Physic с логической страницей Logic дескриптора Handle. Поскольку картирование окна выполняется практически перед каждым обращением к EMS— памяти, эта процедура реализована с помощью встроенного ассемблера. Кроме того, в ней запоминаются параметры обращения и, если очередное обращение не изменяет существующей карты страниц, блокируется вызов EMM. Эти меры экономят до 25% времени при интенсивной работе с EMS— массивами.

Процедура NewEMSHandle. Объявление: Procedure NewEMSHandle(var Handle: Word; Pages: Word);

Функция: Открывает новый дескриптор Handle и связывает с ним Pages страниц EMS— памяти.

Гипьг PEMSXXXX. Объявление: type

PEMSArray^TMSArray;

PEMSMatrix^TEMSMatrix;

PEMSScreen^TEMSScreen;

PEMSText="TEMSText ;

PEMSType^TEMSType;

PEMSVector^TEMSVector;

Функция: Определяют типы—указатели для размещения объектов модуля в динамической памяти.

Гип PIndex Объявление: type PIndex^TIndex;

Функция: Используется для размещения списка индексов многомерного массива TEMSArray в динамической памяти.

Константы RegHeadTEMSXXXX Объявление: const

RegHeadTEMSArea : String [14]='F_EMS TEMSArea';

RegHeadTEMSArray : String [14]='F_EMS TEMSArra';

RegHeadTEMSMatrix: String [14]='F_EMS TEMSMatr';

RegHeadTEMSScreen: String [14]='F_EMS TEMSScre';

RegHeadTEMSType : String [14]='F_EMS TEMSType';

RegHeadTEMSVector: String [14]='F_EMS TEMSVect';

Функция: Служат для идентификации объектов модуля при работе с файлами.

Тип TIndex Объявление: type TIndex = array [l..Max!nt div 6,1..3] of Longint;

Функция: Описывает массив индексов, используемый внутри объекта

TEMSArray.

Примечание. В программе не следует объявлять переменные типа TIndex, т.к. длина этого массива слишком велика. Тип используется как базовый для определения типа—указателя PIndex.