Операционная система MS DOS (том 2)


1. Новое в MS-DOS версии 5.0 - часть 2


Для чего потребовалось вводить программы в заблуждение относительно используемой версии MS-DOS?

Дело в том, что некоторые программы (а также драйверы) рассчитаны на работу только в среде конкретной версии MS-DOS, например, 4.00 или 4.01. На самом деле эти программы будут правильно работать и в MS-DOS версии 5.0. Но проверив версию, такие программы часто завершают свое выполнение с сообщением об ошибке в номере версии.

Вы можете получить список таких программ, просто запустив SETVER.EXE как обычную программу.

Как же получить "правильный" номер версии MS-DOS?

Для этого необходимо использовать функцию 3306h

прерывания INT 21h.

Приведем формат этой функции.

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

Регистр Содержимое
AX 3306h

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

Регистр Содержимое
BH Верхний (major) номер версии.
BL Нижний (minor) номер версии.
DL Биты 0..2 содержат номер изменения (revision), остальные биты равны 0.
DH Флаги:

Бит 3 - DOS находится в ПЗУ;

Бит 4 - DOS загружен в старшие

адреса памяти (область HMA)

Функция 30h в версии MS-DOS также претерпела некоторые изменения. Если при вызове этой функции в регистр AL записать значение 00h, все будет аналогично версиям 2.0-4.0. Если в AL

записать 01h, после возврата регистр BH

будет содержать флаги, по которым можно судить о расположении MS-DOS в ПЗУ или в старших адресах памяти.

Приведем полный формат вызова функции 30h

прерывания INT 21h.

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

Регистр Содержимое
AH 30h
AL 00h - получить код ОЕМ (код фирмы-изготовителя DOS) и версию DOS;

01h - получить флаги расположения DOS.

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

Регистр Содержимое
AL Верхний (major) номер версии.
AH Нижний (minor) номер версии.
BX:CL 24-битовый серийный номер конкретного экземпляра MS-DOS
BH Если при вызове функции AL был равен 0:

Код фирмы-изготовителя:

00h - IBM;

05h - Zenith;

16h - DEC;

23h - Olivetti;

29h - Toshiba;

4Dh - Hewlett Packard;

99h - архитектура STARLITE;

FFh - Microsoft, Phoenix.

Если при вызове функции AL был равен 1:

08h - DOS расположен в ПЗУ;

10h - DOS загружен в старшие адреса памяти (область HMA).




- Начало -  - Назад -  - Вперед -