Форматирование жесткого диска с контроллером типа ESDI

Вход: АН = $1А;

AL — количество элементов в таблице дефектов;

DL — номер диска;

CL — режим форматирования;

ES:BX — адрес таблицы дефектов. Выход: CF, АН — признак и код ошибки

Если диск работает под управлением контроллера с интерфейсом ESDI, для его форматирования используется функция $1А. Эта функция поддерживает таблицу дефектных дорожек и имеет несколько режимов форматирования в зависимости от содержимого регистра CL при обращении к функции:

бит 0=1— игнорировать первичную таблицу дефектов;

бит 1=1— игнорировать вторичную таблицу дефектов;

бит 2=1— обновить вторичную таблицу дефектов;

бит 3=1— выполнить анализ поверхности;

бит 4=1— периодически генерировать прерывание $15;

биты 5...7 — должны быть равны 0.

При установке бита 2 регистра CL содержимое вторичной таблицы дефектов обновляется — в нее заносятся результаты тестирования диска. Для углубленного анализа поверхности диска вначале выполняется форматирование с битом 3=0, а затем анализ поверхности с битом 3=1.

Если при форматировании бит 4=1, то после форматирования очередной дорожки BIOS генерирует прерывание $15 с регистром АН=$ОР. Это прерывание можно использовать для индикации процесса форматирования или для прекращения операции по требованию пользователя.

3.2.2. Поддержка дисков в ДОС

Функции 2 и 3 прерывания $13 позволяют прочитать или записать любой сектор на любом диске. Однако формат обращения к этому прерыванию требует задания нескольких несущественных для программиста, но важных для правильной работы программы параметров, таких как номера головки, цилиндра, сектора на дорожке. Кроме того, это прерывание игнорирует разбивку жесткого диска на логические разделы, что обычно вызывает определенные неудобства, т.к. формат и размещение описателей логических разделов зависят от используемой программы обслуживания логических дисков, например FDisk или Disk Manager. Поэтому для операций чтения/записи чаще используются два специальных прерывания ДОС с векторами $25 и $26. Первое из них реализует чтение, а второе — запись информации. В этих прерываниях ДОС (не путайте с функциями ДОС) принят одинаковый формат использования регистров для обмена управляющей информацией с программой пользователя:

Вход: АХ — номер диска (О—А, 1—В, 2—С и т.д.);

DX — номер сектора;

СХ — количество секторов;

DS:BX = адрес буфера. Выход: CF = 1, если была обнаружена ошибка, иначе 0;