Функции BIOS для работы с дисками
Наилучшим и самым безопасным способом работы с дисками на физическом уровне является использование функций BIOS. Эти функции учитывают все особенности аппаратуры и предоставляют достаточно широкий набор средств доступа к дискам на физическом уровне.
Вся дисковая подсистема обслуживается прерыванием BIOS INT13h. Это прерывание выполняет множество функций. Для вызова определенной функции программа должна занести ее код в регистр AH, другие регистры, как правило, должны содержать параметры - номера используемых дисководов, цилиндров, головок, адреса таблиц параметров дискеты и жесткого диска и т.д.
Библиотека транслятора Microsoft QC 2.5 содержит специальную функцию _bios_disk(), сильно упрощающую работу с дисковыми функциями BIOS. В примерах программ, приведенных в книге, мы продемонстрируем как непосредственный вызов прерывания INT 13h, так и использование функции _bios_disk().
Мы приведем краткую таблицу функций прерывания INT 13h, после чего займемся детальным описанием этих функций. В примечании к описанию функций мы будем указывать типы компьютеров, на которых данная функция работоспособна.
| 00h | Сброс дисковой подсистемы |
| 01h | Получить состояние дисковой подсистемы |
| 02h | Чтение сектора |
| 03h | Запись сектора |
| 04h | Проверка сектора |
| 05h | Форматирование дорожки |
| 06h | Форматирование дорожки (НМД) |
| 07h | Форматирование диска (НМД) |
| 08h | Получить текущие параметры дисковода (НМД) |
| 09h | Инициализация таблиц параметров жесткого диска |
| 0Ah | Чтение длинное (НМД) |
| 0Bh | Запись длинная (НМД) |
| 0Ch | Поиск цилиндра (НМД) |
| 0Dh | Альтернативный сброс дисковода (НМД) |
| 0Eh | Чтение буфера сектора (НМД) |
| 0Fh | Запись буфера сектора (НМД) |
| 10h | Проверка готовности дисковода (НМД) |
| 11h | Рекалибровка дисковода (НМД) |
| 12h | Проверка памяти контроллера (НМД) |
| 13h | Проверка дисковода (НМД) |
| 14h | Проверка контроллера (НМД) |
| 15h | Получить тип дисковода |
| 16h | Проверка замены диска |
| 17h | Установка типа дискеты |
| 18h | Установка среды носителя данных для форматирования |
| 19h | Парковка головок (НМД) |
| 1Ah | Форматирование диска (ESDI НМД) |