Функции BIOS для работы с дисками
Наилучший и самый безопасный способ работы с дисками на физическом уровне в среде MS-DOS - использование функций базовой системы ввода/вывода BIOS. Эти функции учитывают все особенности аппаратуры и предоставляют достаточно широкий набор средств доступа к дискам на физическом уровне.
Вся дисковая подсистема обслуживается прерыванием INT13h . Это прерывание выполняет множество функций. Для вызова определенной функции программа должна занести ее код в регистр AH. При этом в другие регистры следует записать параметры - номер НМД или НГМД, номер цилиндра, головки , адрес таблиц параметров НМД или НГМД и т. д.
Библиотека системы разработки Borland C++ содержит специальную функцию _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 |