При использовании переключателя /MACHINE:c нелишне знать код или номер вашего ПК. Если вы его не знаете (т.е. если ПК не указан в таблице), или его указание не решает проблемы, то придется поэкспериментировать. Для этого лучше перебирать номера ПК в таком порядке: 1, 11, 12, 13, 8, 2-7. 9, 10, 14-16.
После смены кода или номера ПК необходимо перезагрузить DOS. Когда это сделать не удается (система зависает), используйте средства шунтирования команд из файлов CONFIG.SYS и AUTOEXEC.BAT, чтобы отменить обработку команды, обеспечивающей подключение к системе драйвера HIMEM.SYS, После успешной загрузки DOS измените значение в переключателе /MACHINE.
3. Использование драйвера HIMEM.SYS для программирования.
СпецификацияXMS содержит описание программного интерфейса драйвера HIMEM.SYS и рекомендации по использованию областипамяти НМА.
3.1. Проверка подключения драйвера
Первое,что должна сделать программа, которая собирается вызывать драйвер HIMEM.SYS, - проверить,был ли установлен этот драйверпри загрузке операционной системы.
Для этого надо загрузить в регистр АХ значение 4300h и вызвать прерывание INT 2Fh. Если регистр AL будет содержать значение 80h,драйвер установлен, в противном случае - нет. Приведемфрагмент программы, проверяющей подключение драйвера:
Проверяем, установлен ли драйвер HIMEM.SYS:
mov ax. 4300h
int 2fh
cmp aI, 80h
je hmm_installed; Выполняем переход, если драйвер установлен.
3.2. Получение адреса управляющей программы
Длявызова драйвера программа должна получитьадрес специальной управляющей программы, котораявыполняет все функции по обслуживанию расширенной памяти и области НМА.
Этот адрес можно получить, если загрузить в регистр АХ значение 4310h и вызватьпрерывание INT 2Fh. Прерывание возвратятсегментный адрес управляющей программы в регистре ES, смещение - в регистре ВХ:
Получаем адрес управляющей функции драйвера
mov ax, 4310h
int 2fh
mov word ptr cs:[HMMEntry][0]. bx
mov word ptr cs : [HMMEntry][2], es
В дальнейшем полученныйадрес используется для выполнения функций по обслуживаниюрасширенной памяти. Программы,которые обращаются к управляющей функции, должны перед вызовомфункции иметь размер стека не менее 256 байтов.
3.3. Описание функции драйвера H1MEM.SYS
Все функции драйвера H1MEM.SYS могутбыть разделены на следующиепять групп:
- функции полученияинформации о драйвере (0h);
- функции управления областью НМА (lh, 2h);
- функции управления линией А20 (3h...7h);
- функции управления расширенной памятью (8h,.Fh);
- функции управления блоками UMB (10h,.llh).
Приведемподробное описание этих функций в соответствии со спецификациейXMS версии 2.0.
Получить версию XMS:
На входе AH = 00h.
На выходе AX = номер версии XMS
BX = номер внутренней модификации драйвера;
DX = 0001h –если существует область HMA;
0000h – если область HMA не существует
Ошибки: Нет
Функция возвращает номера версиии модификации XMS в двоично-десятичном (BCD) формате. Например, если AX=0250h, этоозначает, что драйвер реализует спецификацию XMS версии 2.50. Дополнительнофункция позволяет проверить наличие в системе области НМА.
Запросить область НМА
На входе: АН =0lh;
DX = размер памяти в байтах вобласти НМА, которая будет использоваться резидентнымипрограммами или драйверами,обычная программа должна использовать значение DX = FFFFh.
На выходе АХ = 000lh - еслифункция выполнена успешно,
0000h - если произошла ошибка.
Ошибки: BL = 80h,81h, 90h, 91h, 92h(описание кодов ошибок будет приведенопосле описания всех функций).
С помощью этой функции программа может зарезервировать для себя область НМА. Задаваемый в регистре DX размер памяти сравнивается суказанным в параметре драйвера /HMAMIN=. Область НМА распределяется запросившей программе только в том случае, если запрошенный в регистре DX размер больше или равен указанному в параметре /HMAMIN. Такой механизм позволяет ограничить использование области НМА толькотеми программами, которыеиспользуют ее наилучшим образом,
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.