Примечания.
Адрес процедуры должен быть указан в структуре вызова реального режима. Процедура должна завершать выполнение командой RET FAR. Если поля SS и SP равны нулю, то стек выделяется DPMI. 32-битные программы должны использовать ES:EDI для адресации структуры.
Вход:
AX=0302h
BH – флаги:
бит 0 – сбросить контроллер прерывания и адресную линию A20
биты 1–7 – зарезервированы и должны быть равны нулю
CX – количество слов, которые надо скопировать из стека защищенного режима в стек реального
ES:(E)DI – селектор: смещение структуры вызова реального режима (формат структуры вызова реального режима описан в функции 0300h)Выход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение модифицированной структуры вызова реального режима
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция вызывает процедуру реального режима, заканчивающуюся командой IRET.
Примечания.
Адрес процедуры должен быть указан в структуре вызова реального режима. Процедура должна завершать выполнение командой IRET. Если поля SS и SP равны нулю, то стек выделяется DPMI. 32-битные программы должны использовать ES:EDI для адресации структуры.
Вход:
AX=0400hВыход:
CF=0
AH – версия DPMI
AL – подверсия DPMI
BX – флаги:
Бит 0=1, если программа запущена под управлением DPMI для 80386
Бит 1=1, если процессор вернулся в реальный режим для обработки прерываний
Бит 2=1, если поддерживается виртуальная память
Бит 3 – зарезервирован и не определяется
Остальные биты зарезервированы для использования в будущем и должны быть равны нулю.
CL – тип процессора:
CL=2 – 80286
CL=3 – 80386
CL=4 – 80486
DL – текущее значение базы первого контроллера прерываний
DH – текущее значение базы второго контроллера прерыванийОписание.
Данная функция возвращает версию DPMI.
Вход:
AX=0500h
ES:(E)DI – селектор: смещение 30-байтного буфераВыход:
CF=0, если функция выполнена успешно
ES:(E)DI – селектор: смещение, содержащий структуру (Таблица Г-2).
CF=1, если при выполнении функции возникли ошибкиОписание. Данная функция возвращает информацию о свободной памяти.
Примечания.
32-битные программы должны использовать ES:EDI для адресации буфера. Только первое поле структуры гарантированно содержит правильное значение, остальные поля, в случае, если они не поддерживаются, содержат 0FFFFFFFFh (-1).
Вход:
AX=0501h
BX:CX – размер блока свободной памяти, который нужно выделить (в байтах)Выход:
CF=0, если функция выполнена успешно
BX:CX – линейный адрес выделенного блока памяти
SI:DI – индекс блока памяти (используется для изменения размера и освобождения памяти)
CF=1, если при выполнении функции возникли ошибки