На входе: AH = 09h.
DX = размер требуемого блока в килобайтах.
На выходе: AX = 000lh - если функция выполнена успешно,
0000h - если произошла ошибка;
DX = 16-битовый индекс (handle) полученного блока ЕМВ.
Ошибки: BL = 80h, 81h, AOh, Alh.
Функция заказывает блок ЕМВ из пула свободной расширенной памяти. При успешномвыполнении запроса функция возвращает индекс полученного блока, который должен использоваться программой для выполнениявсех операций с блоком ЕМВ. Если блок ЕМВ программе больше не нужен,она должна освободить его с помощью функции OAh.
Количество блоков ЕМВ, которое может быть заказано, определяется в командной строке драйвера H1MEM.SYS параметром /NUMHANDLES=. Значение по умолчанию - 32, максимальное значение - 128.
Освободить блок ЕМВ
На входе: AH = 0Ah.
DX = 16-битовый индекс (handle) полученного блока ЕМВ.
На выходе: AX = 000lh - если функция выполнена успешно,
0000h - если произошла ошибка.
Ошибки: BL = 80h, 81h, A2h, B2h.
Функция освобождает блокЕМВ, заказанный предыдущей функцией. При этом вседанные, находившиеся в блоке, будут потеряны.
Копирование блоков ЕМВ
На входе: АН = Bh.
DS:SI = указатель на управляющую структуру, определяющую, откуда, куда и какбудет выполняться копирование.
На выходе: АХ = 000lh - если функция выполнена успешно, 0000h - если произошла ошибка.
Ошибки: BL = 80h, 81h, 82h, A3h, A4h, A5h, A6h, A7h, A8h, A9h.
Управляющая структура:
ExtMemMoveStruct struct
Length dd ? ; количество посылаемых байтов
SourceHandle dw ? ; индекс исходного блока
SourceOffset dd ? ; смешение в исходном блоке
DestHandle dw ?; индекс блока назначения
DestOf-fset dd ? ; смещение блока назначения
ExtMemMoveStruct ends
Эта функция выполняет основную операцию с блоками ЕМВ - копирование данных. Данные могут пересылаться между обычной памятью и блоками ЕМВ, между различными блоками ЕМВ и дажевнутри обычной памяти.
Поле Length управляющей структуры указывает количество пересылаемыхбайтов. Это количество должно быть четным.
Поля SourceHandle и DestHandle указывают соответственно индексы исходного и результирующего блоков ЕМВ. Если в качестве индекса задано значение 0000h, это означает, что в качестве источника или приемника данных используется обычная память.
Поля SourceOffset иDestOffset указывают 32-битовое смещение в блоке ЕМВ или адрес в обычной памяти. В последнем случае этот адрес имеет стандартный формат сегмент: смещение.
Функция копирования сама управляет линией А20, восстанавливая ее состояние после выполнения копирования. Поэтому программе не требуется управлять линией А20.
Во время выполнения копирования разрешены прерывания.
Блокирование ЕМВ
На входе: АН = 0Ch;
DX = 16-битовый индекс (handle) блокируемого ЕМВ.
На выходе: AX = 000lh - еслифункция выполнена успешно,
0000h - если произошла ошибка;
DX:BX = 32-битовый линейный адрес заблокированного EМВ.
Ошибки: BL = 80h, 81h, A2h, ACh, ADh.
Функция блокирует ЕМВ и возвращает его базовый адрес как линейный 32-разрядный адрес. Для заблокированного ЕМВ невозможновыполнить операцию копирования. Полученный линейный адрес действителен только для заблокированного ЕМВ.
Разблокирование ЕМВ
На входе: АН = 0Dh;
DX = 16-битовый индекс (handle) разблокируемого ЕМВ.
На выходе: AX = 000lh -если функция выполнена успешно,
0000h - если произошлаошибка.
Ошибка: BL = 80h, 81h.A2h.AAh.
Функция разблокирует ЕМВ, заблокированный при вызове предыдущей функции. Полученный от нее линейный адрес становится недействительным.
Получить информацию об индексе ЕМВ
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.