второму (B:) и т. д. Адреса 80h, 81h соответствуют первому и второму НМД,
соответственно.
5.2 Определение состояния дисковой системы.
|На входе: |AH |01 |
| |DL |Адрес устройства НГМД или НМД (0, 1, ..., 80h, 81h, |
| | |...) |
|На выходе: |AL |Состояние устройства после завершения последней |
| | |операции |
|Примечание:| |PC, XT, AT, PS/2 |
Эта функция может быть использована для анализа результата выполнения
операции и получения кода ошибки. Функция берет передаваемый в регистре AL
код ошибки из области данных BIOS (байт с адресом 0000h:0441h).
Код ошибки может принимать следующие значения:
|Значение|Описание |
|00h |Успешное завершение операции |
|01h |Неправильная команда |
|02h |Не найдена адресная метка |
|03h |Попытка записи на диск, защищенный от записи |
|04h |Сектор не найден |
|05h |Ошибка при сбросе НМД |
|06h |Произошла замена дискеты |
|07h |Неправильные параметры НМД |
|08h |Переполнение канала прямого доступа ПДП при работе с НГМД |
|09h |Переход за границу 64 Кбайт при работе с ПДП |
|0Ah |Обнаружен плохой сектор (только для НМД) |
|0Bh |Обнаружена плохая дорожка (только для НМД) |
|0Ch |Неправильный номер дорожки |
|0Dh |Неправильный номер сектора при форматировании (только для НМД) |
|0Eh |Обнаружена адресная метка управляющих данных (только для НМД) |
|0Fh |Ошибка ПДП при работе с НМД |
|10h |Обнаружена ошибка в контрольной сумме CRC /ECC |
|11h |Данные скорректированы с использованием ECC (только для НМД) |
|20h |Сбой контроллера |
|40h |Сбой при поиске дорожки |
|80h |Таймаут - программа не успевает обрабатывать данные |
|AAh |НМД не готов |
|BBh |Неизвестная ошибка (только для НМД) |
|CCh |Сбой при записи (только для НМД) |
|E0h |Ошибка регистра состояния НМД |
|FFh |Ошибка операции чтения (только для НМД) |
5.3 Чтение сектора.
|На входе: |AH |02h |
| |AL |Количество секторов, которые нужно прочитать |
| |CH |Номер дорожки |
| |CL |Номер сектора |
| |DH |Номер головки |
| |ES:BX |Адрес буфера для данных |
|На выходе: |AH |Состояние дисковода после завершения последней |
| |CF |1, если произошла ошибка, |
| | |0, если ошибки нет |
Эта функция позволяет прочитать один или несколько секторов диска в
буфер, находящийся в оперативной памяти. Для НМД номер дорожки и номер
сектора задаются следующим образом: биты 5...0 регистра CX задают номер
сектора, а биты 15...6 - номер дорожки. Перед чтением необходимо
подготовить таблицу параметров НГМД или НМД.
5.4 Запись сектора.
|На входе: |AH |03h |
|На выходе: |AH |Состояние устройства после завершения последней |
Функция записи секторов аналогична предыдущей, за исключением
направления перемещения данных - данные записываются из буфера в один или
несколько секторов диска. Необходимо отметить, что при работе с НГМД не для
всякой BIOS будет выполняться ожидание перед выполнением операции записи,
пока двигатель раскрутится до рабочей скорости. В результате программа
может получить признак ошибки. Прежде чем делать вывод о причинах ошибки,
следует сбросить контроллер НГМД функцией 00H и повторить операцию записи
три раза.
5.5 Проверка сектора.
|На входе: |AH |04h |
| |AL |Количество секторов, которые нужно проверить |
| |AL |Количество проверенных секторов |
| |CF |1, если произошла ошибка,0, если ошибки нет |
С помощью этой функции программа может убедиться, что указанные
секторы существуют и их можно прочесть. Данные проверяются по методу
циклического избыточного контроля (CRC). Адрес буфера не нужен, так как при
проверке секторов чтение данных в оперативную память не выполняется.
5.6 Форматирование дорожки.
|На входе: |AH |05h |
| |AL |Количество секторов, которые нужно создать на |
| | |дорожке, или фактор чередования для НМД IBM PC/XT |
| |ES:BX |Адрес буфера формата, используется для НГМД и НМД, |
| | |установленных в IBM PC/XT |
Функция форматирования предназначена для начального формирования
структуры дорожки диска. Эта функция разрушает все данные, записанные на
дорожке. С помощью функции 05h вы можете за один раз отформатировать только
одну дорожку с указанным в регистре CH номером.
Для функции форматирования необходимо задать два параметра, на которых
мы остановимся подробнее - фактор чередования и адрес буфера формата.
Что такое фактор чередования? Этот фактор определяет
последовательность расположения секторов на дорожке. Секторы могут
располагаться в порядке своих номеров, через один, через два и т. д. Способ
размещения секторов определяется значением фактора чередования.
Некоторые программы, предназначенные для подготовки НМД к работе,
требуют указания величины фактора чередования при выполнении
низкоуровневого форматирования.
Для чего может понадобиться несмежное расположение секторов с
последовательными номерами на дорожке диска? При последовательном
расположении секторов может получиться так, что процессор не будет успевать
обрабатывать смежные секторы за один проход дорожки.
Например, программа считывает последовательно второй и третий сектор.
В момент времени, когда второй сектор уже считан, при быстром вращении
диска к моменту начала чтения третьего сектора головки могут оказаться в
середине третьего сектора. В результате диск совершит еще один оборот,
прежде чем головки окажутся в начале третьего сектора. Поэтому если
программа последовательно обращается к смежным секторам, может получиться
так, что для чтения каждого сектора потребуется один оборот. Если же
секторы будут расположены через один или через два, количество оборотов
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12