logo
несколько программ / bsp33

Глобальное закрывание линии a20

Регистры на входе:

AH = 04h

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка

Ошибки:

BL = 80h, 81h, 82h, 94h

Функция предназначена для тех программ, которые используют область HMA. Она должна выполняться перед завершением работы такой программы.

Локальное открывание линии A20

Регистры на входе:

AH = 05h

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка

Ошибки:

BL = 80h, 81h, 82h

Эта функция предназначена только для тех программ, которые непосредственно управляют расширенной памятью. Перед завершением работы программа должна закрыть линию A20 при помощи функции 06h.

Локальное закрывание линии A20

Регистры на входе:

AH = 06h

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка

Ошибки:

BL = 80h, 81h, 82h, 94h

Функция отменяет разрешение линии A20, запрошенное предыдущей функцией. Она предназначена только для тех программ, которые непосредственно управляют расширенной памятью.

Определение состояния линии A20

Регистры на входе:

AH = 07h

Регистры на выходе:

AX = 0001h - если линия A20 открыта, 0000h - если линия A20 закрыта

Ошибки:

BL = 00h, 80h, 81h

Функция выполняет попытку адресоваться за границу 1 Мбайт памяти и проверяет, не происходит ли при этом обращение в начало памяти (то есть "свертка памяти").

Определение размера свободной расширенной памяти

Регистры на входе:

AH = 08h

Регистры на выходе:

AX = размер наибольшего свободного блока расширенной памяти, Кбайт;

DX = общий размер свободной расширенной памяти, Кбайт

Ошибки:

BL = 80h, 81h, A0h

При определении размера свободной расширенной памяти в возвращаемое значение не включается 64 Кбайт области HMA, даже если эта область не используется программами.

Получить блок EMB

Регистры на входе:

AH = 09h

DX = размер требуемого блока, Кбайт

Регистры на выходе:

AX = 0001h - если функция выполнена успешно, 0000h - если произошла ошибка;

DX = 16-разрядный идентификатор (handle) полученного блока EMB

Ошибки:

BL = 80h, 81h, A0h, A1h

Функция заказывает блок EMB из пула свободной расширенной памяти. При успешном выполнении запроса функция возвращает идентификатор полученного блока, который должен использоваться программой для выполнения всех операций с блоком EMB. Если блок EMB программе больше не нужен, она должна освободить его с помощью функции 0Ah.

Количество блоков EMB, которое может быть заказано, определяется в командной строке драйвера HIMEM.SYS параметром /NUMHANDLES=. Значение по умолчанию - 32, максимальное значение - 128.