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.