¦ ¦системы DOS (FFFF, если последний блок диска
¦ ¦в цепочке)
ДДДДДДДДБДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Функция 32h(50) : найти информацию о блоке на диске
для указанного диска
Функция 32h аналогична функции 1Fh, за исключением того, что
может быть определен указатель на таблицу информации о блоках
диска для указанного диска.
Вход : AH = 32h
DL = номер дисковода (0 = по умолчанию, 1= A и т.д.)
- П-47 -
Возврат: AL = 00 если диск существует; =FFh если нет.
DS:BX содержит адрес первого входа в блок диска.
Примечания: Функция 32h аналогична функции 1Fh, за исключе-
нием только того, что функция 1Fh возвращает инфор-
мацию о блоке диска для текущего диска
Функция 34h (52): получить флаг занятости операционной
системы MS-DOS
Функция 34h возвращает указатель на флаг занятости операци-
онной системы MS-DOS (также называемый флагом критической секции
операционной системы MS-DOS). Флаг занятости операционной системы
MS-DOS - это байт, установленный в "0" в случае его безопасности
для прерывания операционной системы MS-DOS и установленный в зна-
чение, не равное "0" в случае отсутствия безопасности для преры-
вания операционной системы MS-DOS. Эта функция используется сов-
местно с прерыванием "int 28h": данное прерывание устанавливает
флаг занятости операционной системы MS-DOS, а функция 34h по об-
работке прерывания "int 21h" указывает на положение флага (отсы-
лаем к более раннему обсуждению не описанных в документации пре-
рываний).
Вход: AH = 34h
Возврат: ES:BX указывает на флаг занятости MS-DOS
Примечания: Есть некоторые специфические особенности, касаю-
щиеся флага занятости операционной системы MS-DOS в
различных версиях операционной системы MS-DOS. При
работе под управлением операционной системы MS-DOS
версии 2.10 байт, расположенный непосредственно за
флагом занятости операционной системы MS-DOS должен
быть установлен в "00", чтобы вызвать прерывание по
обработке PRINT.COM. Для операционной системы
MS-DOS версии 3.0 и 3.1 (за исключением COMPAQ DOS
3.0) байт перед флагом занятости операционной сис-
темы MS-DOS должен быть установлен в "0", для опе-
рационной системы COMPAQ DOS версии 3.0 байт 01AAh
до этого должен быть установлен в "0".
Функция 37h(55): получить/установить символ переключения
Функция 37h используется для изменения символа, который ис-
пользуется для переключений командных строк операционной системы
MS-DOS. "Символ-переключатель" по умолчанию представляет собой
символ "/" (наклонная черта), однако он может быть изменен с по-
мощью функции 37h на какой-нибудь другой символ, подобный символу
переноса (-), который является по умолчанию подобным символом в
операционной системе UNIX. Эта функция была полно описана в доку-
ментации по операционной системе MS-DOS до того, как была выпуще-
на версия 3.0 операционной системы MS-DOS, когда в составе ее ко-
манд была команда, которая должна была помещаться в файл
конфигурации системы CONFIG.SYS (SWITCHAR=/).
Для версии 3.0 операционной системы MS-DOS ссылки на эту
- П-48 -
функцию и на команду SWITCHAR из CONFIG.SYS были удалены из доку-
ментации по операционной системе MS-DOS. Однако, в версии 3.30
операционной системы MS-DOS, функция 37h прерывания 21h выполня-
ется также как и прежде.
Вход: AH = 37h
AL = 0 (считать "символ-переключатель" (возвращаемый в
регистре DL)
AL = 1 (установить символ переключения (новый символ в
регистре DL)
AL = 2 (только версия 2.Х операционной системы MS-DOS:
Считать готовность устройства)
AL = 3 (только версия 2.Х операционной системы MS-DOS:
Установить готовность устройства, где DL = 0,
если /DEV/ должно предшествовать именам уст-
ройств, и DL<>0, если /DEV/ не должно пред-
шествовать именам устройств
Возврат: DL = Cимвол-переключатель (если AL = 0 или 1
на входе)
DL = флаг готовности устройства (если AL = 2 или 3
на входе)
AL = 0FFh в случае ошибки (значение регистра AL на
входе не равно числу от 0 до 3)
Функция 50h(8): установить сегмент PSP
Функция 50h используется для установки сегмента для нового
сегмента программного префикса (PSP).
Вход: AH = 50h
BX = адрес сегмента нового PSP
Возврат: ничего
Примечания: Для версии 2.Х операционной системы MS-DOS эта
функция не может быть вызвана внутри обработчика
прерывания "int 28h" без предшествующего обраще-
ния к функции 5Dh прерывания "int 21h"
Функция 51h(81): Считать сегмент PSP
Функция 51h используется для возврата адреса сегмента теку-
щего сегмента программного префикса (PSP).
Вход: AH = 51h
Возврат: BX = адрес сегмента текущего PSP
Функция 52h(82): Считать адрес "списка списков"
операционной системы MS-DOS
Функция 52h возвращает указатель на "список списков" опера-
ционной системы MS-DOS, содержащий различные типы информации,
включающие указатели на другие списки информации. В таблицах Б-2
и Б-3 представлен формат "списка списков" операционной системы
MS-DOS.
Вход: AH = 52h
Возврат: ES:BX содержит адрес "списка списков" операционной
системы MS-DOS.
Примечание: Список списков, о котором идет речь, различается
- П-49 -
для версий 2.ХХ и 3.ХХ операционной системы
MS-DOS (см. таблицы Б-2 и Б-3).Несмотря на то,
что указанный "Список списков", вызываемый вслед
за функцией 52h, содержит информацию в первом
блоке диска, это не вызывает доступа к диску,
поскольку данная информация на диске может ока-
заться неточной. Функции 1Fh или 32h, однако,
дают возможность обращаться к диску, автомати-
чески обновляя данный блок диска в случае изме-
нений на диске.
Таблица Б-2
"Список списков" операционной системы MS-DOS версии 2.ХХ
ДДДДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Смещение ¦ Тип ¦ Данные
ДДДДДДДДД†ДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
02 ¦Слово ¦ Сегмент первого управляющего блока памяти
00 ¦Байт ¦ Пустой
01 ¦Слово ¦ Указатель на первый блок диска (см.функцию 36h)
04 ¦Байт ¦ Не известно; указатель на первый резидентный
¦ ¦ драйвер?
08 ¦Слово ¦ Указатель на драйвер устройства CLOCK$
0С ¦Слово ¦ Указатель на фактический CON: драйвер устройства
10 ¦Байт ¦ Количество логических дисководов в системе
11 ¦Слово ¦ Максимальное количество байтов в блоке любого
¦ ¦ блокового устройства
13 ¦Байт ¦ Неизвестно
17 ¦Байт ¦ Начало (не указатель) драйвера устройства NUL
ДДДДДДДДДБДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Таблица Б-3
"Список списков" операционной системы MS-DOS версии 3.ХХ
ДДДДДДДДДВДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Смещение ¦ Тип ¦ Данные
ДДДДДДДДД†ДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
02 ¦Слово ¦ Сегмент первого управляющего блока памяти
00 ¦Байт ¦ Пустой
01 ¦Слово ¦ Указатель на первый блок диска (см.функцию 36h)
04 ¦Байт ¦ Не известно: указатель на первый резидентный
¦ ¦ драйвер?
08 ¦Слово ¦ Указатель на драйвер устройства CLOCK$
0С ¦Слово ¦ Указатель на фактический CON: драйвер устройства
10 ¦Байт ¦ Максимальное количество байтов в блоке любого
¦ ¦ блокового устройства
12 ¦Байт ¦ Неизвестно (возможно указатель на текущий блок
¦ ¦ каталога)
16 ¦Байт ¦ Неизвестно (возможно массив информации на диске)
1A ¦Байт ¦ Неизвестно
20 ¦Байт ¦ Количество блоковых устройств
21 ¦Байт ¦ Значение команды LASTDRIVE в файле CONFIG.SYS
¦ ¦ (по умолчанию = 5)
22 ¦Байт ¦ Начало (не указатель) драйвера устройства NUL
ДДДДДДДДДБДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
- П-50 -
Функция 53h(83): Преобразовать блок параметров BIOS (BPB)
в блок на диске
Функция 53h преобразует блок параметров BIOS (BPB) данного
диска в формат "блока на диске" операционной системы DOS и разме-
щает информацию в указанное место (см. таблицу Б-4).
Вход: AH = 53h
DS:SI = указатель на блок параметров BIOS (BPB) для
диска
ES:BP = указатель на область, в которой должен хра-
ниться блок диска операционной системы DOS
Возврат: информация в формате блока диска, хранимая в
области первоначально указанной с помощью ES:BP
Таблица Б-4
Информация о структуре блока диска операционной системы MS-DOS,
возвращенная функцией 53h
ДДДДДДДДДВДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Смещение ¦ Тип ¦ Данные
ДДДДДДДДД†ДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
00 ¦Слово ¦ Количество байтов в секторе
02 ¦Байт ¦ Количество секторов в кластере
03 ¦Слово ¦ Зарезервированные сектора
05 ¦Байт ¦ Количество таблиц FAT
05 ¦Байт ¦ Смещение от кластера до сектора