подробная информация об ошибках может быть найдена путем немед-
ленной загрузки 0 в регистр BХ и выдачей после этого обращения к
функции 59h (Дать расширенную информацию об ошибке). Информация
возвращается в виде, представленном ниже в таблице 13-5.
Таблица 13-5
Расширенная информация об ошибке
ДДДДДДДДДДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Регистр ¦ Содержание
ДДДДДДДДДДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
AX ¦ Код ошибки (см. табл. 13-4)
ВН ¦ Класс ошибки
BL ¦ Предлагаемое действие
CH ¦ Местоположение
ДДДДДДДДДДДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Код ошибки
Код ошибки, возвращаемый в регистр AX, может быть любым из
- 13-31 -
представленных выше в таблице 13-4 в зависимости от версии опера-
ционной системы MS-DOS.
Класс ошибки
Одно из значений, указанных в таблице 13-6, возвращается в
регистре ВН и указывает общую категорию ошибки. Это может помочь
определить действительную причину возникновения ошибки, потому
что тот же код ошибки может возникнуть дважды по разным причинам.
Таблица 13-6
Классы ошибок
ДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Значение ¦ Определение
ДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
1 ¦ Истощение ресурса (нехватка памяти,
¦ каналов и т.д.)
2 ¦ Временно возникшая ситуация (проблема
¦ может исчезнуть сама собой, например,
¦ такая, как блокировка файла)
3 ¦ Санкционированность доступа (отказ
¦ в доступе)
4 ¦ Внутренние сбои (операционная система
¦ MS-DOS определила, что причиной ошибки
¦ был внутренний дефект, а не действия
¦ пользователя или системы)
5 ¦ Сбой аппаратных средств (проблема выз-
¦ вана не программой пользователя)
6 ¦ Системный сбой (серьезный сбой в работе
¦ программного обеспечения. Не обязате-
¦ льно связано непосредственно со сбоем
¦ в пользовательской программе - напри-
¦ мер, зависит от пропущенных или отсут-
¦ ствующих файлов конфигурации)
7 ¦ Ошибка в прикладной программе (например,
¦ противоречивые запросы)
8 ¦ Не найден файл (или не найден какой-то
¦ другой элемент)
9 ¦ Неправильный формат (файл или какой-то
¦ элемент заданы в неправильном формате)
10 ¦ Заблокирован (файл или какой-то другой
¦ элемент заблокирован внутренним образом)
11 ¦ Носитель (сбой носителя, например, неис-
¦ правность диска, ошибка CRC, не тот диск
¦ установлен в дисковод или повреждена
¦ поверхность носителя информации)
12 ¦ Уже существует (трудности, связанные с
¦ существующим элементом: с именем файла
¦ или с именем вычислительной машины)
13 ¦ Нераспознанный сбой (ошибка не принад-
¦ лежит никакой категории или она непонят-
¦ ная)
ДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Предлагаемое действие
В регистре BL возвращается одно из значений, указанных в
- 13-32 -
таблице 13-7. Здесь же предлагается действие по избавлению от ус-
ловия ошибки.
Таблица 13-7
Предлагаемое действие по исправлению ошибки
ДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Значение ¦ Определение
ДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
1 ¦ Повторить попытку (повторить попытку
¦ несколько раз и если сбой останется, вы-
¦ дать подсказку пользователю с вопросом о
¦ том, нужно ли продолжать работу программы
¦ или ее следует аварийно завершить)
2 ¦ Отложенная попытка повтора (то же самое,
¦ что просто пункт 1 "Повторить попытку",
¦ но сначала делается пауза с целью ожида-
¦ ния: не исправит ли ошибка сама себя?
3 ¦ Пользователь (подсказка пользователю сде-
¦ лать повторный ввод - возможно в начале
¦ был введен неправильный текст)
4 ¦ Аварийное завершение (завершить программу
¦ нормально после очистки)
5 ¦ Немедленный выход (завершить программу
¦ аварийно, не выполняя очистки)
6 ¦ Игнорирование (ошибка может быть проигно-
¦ рирована)
7 ¦ Повторить попытку после вмешательства
¦ (продолжить работу после такого вмеша-
¦ тельства пользователя, как замена диска
ДДДДДДДДДДДДДДДДБДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Местоположение
В регистре CH возвращается одно из значений, указанных в
таблице 13-8. Здесь же представляется дополнительная информация
о местонахождении неисправности.
Таблица 13-8
Местоположение сбоя
ДДДДДДДДДДДДДДДДДВДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Значение ¦ Определение
ДДДДДДДДДДДДДДДДД†ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
1 ¦ Неизвестная ошибка (неопределенная или
¦ несоответствующая ситуации ошибка)
2 ¦ Блочное устройство (ошибка относится к
¦ носителю дисковой памяти)
3 ¦ Сеть
4 ¦ Последовательное устройство (ошибка от-
¦ носится к последовательному соединению
¦ или устройству)
5 ¦ Память (ошибка относится к оперативной
¦ памяти ОЗУ)
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Поскольку в последних версиях операционной системы MS-DOS
делались исправления в механизме управления ошибками, программис-
ты встали перед трудным выбором. Новое информационное средство
- 13-33 -
"Расширенный код ошибок" является, очевидно, наиболее широко ис-
пользуемым для разработки стандартных программ исправления ошибок
внутри ваших программ. Но стоимость этого механизма неприемлема.
Если вы должны включать этот механизм в вашу программу, а также
должны поддерживать некоторые формы сквозной совместимости с бо-
лее ранними версиями операционной системы MS-DOS, полезной для
Вас может оказаться стандартная программа "Получить версию опера-
ционной системы MS-DOS" (описана ранее в этой главе). Для вер-
сий операционной системы MS-DOS ниже версии 2.0 Вы должны прове-
рять только те коды ошибок, которые поддерживаются данной
версией. Для версий 2.0 и 2.1 операционной системы MS-DOS Вы мо-
жете расширить возможности по управлению ошибками и обеспечить
распознавание большего количества кодов ошибок. Для версий же 3.0
и выше Вы можете даже больше расширить возможности по управлению
ошибками, используя вызов механизма "Расширенный код ошибок".
Форматы дисков
Как указывается в Главе 11 "Структура диска и восстановление
файлов", некоторые форматы дисков поддерживаются разными версиями
операционной системы MS-DOS. В таблицах 13-9 и 13-10 собраны ха-
рактеристики всех стандартных форматов 3,5-дюймовых, 5,25-дюймо-
вых и 8-дюймовых гибких дисков, поддерживаемых операционной сис-
темой MS-DOS версий вплоть до 4.0. Более подробно информацию
можно найти в Главе 11.
Несмотря на то, что прочие форматы и типы дисков поддержива-
ются в нескольких реализациях операционной системы MS-DOS, в таб-
лице 13-9 представлены только те форматы гибких дисков, которые
официально поддерживаются операционной системой MS-DOS. Аналогич-
но, не все характеристики жестких дисков описываются здесь, по-
скольку многие их разновидности присущи только определенному виду
реализации или системы. Поддержка работы жестких дисков в общем
случае заключается в наличии системы ПЗУ BIOS.
Допускается использование многих типов и размеров жестких
дисков, что зависит от версии и фирмы-изготовителя ПЗУ BIOS. Спе-
циальные типы носителей информации такие, как "Bernoulli Box",
часто требуют использования специальных дисковых контроллеров и
устанавливаемых дополнительно дисководов для того, чтобы справ-
ляться с недостатком средств поддержки, имеющимся в большинстве
реализаций системы ПЗУ BIOS.
Операционная система MS-DOS версий 2.0 по 3.30 поддерживает
многие форматы жестких дисков с разделением памяти, достигающей
максимального размера в 32 Мегабайта.
Операционная система MS-DOS версий с 2.0 по 3.2 поддерживает
только один способ разделения памяти операционной системы DOS на
жестком диске, в то время как версия 3.3 поддерживает несколько
способов разделения памяти жесткого диска: каждый с максимальным
размером в 32 Мегабайта и каждому назначается имя дисковода. Опе-
рационная система MS-DOS версии 4.0 (а также операционная систе-
ма "COMPAQ MS-DOS" версии 3.31) поддерживает разделение памяти
расширенного размера, которое может достигать 512 Мегабайт.
Разделение памяти расширенного размера является дополнитель-
ной возможностью в операционной системе MS-DOS версии 4.0: боль-
шой жесткий диск может, по-прежнему, форматироваться при несколь-
ких способах разделения DOS размером в 32 мегабайта или меньше.
Отметим, что разделение в 32 байта или меньше используют 16-бито-