MS-DOS для программиста

Функция _bios_disk


Стандартная библиотека Borland C++ содержит специальную функцию _bios_disk , облегчающую работу с диском на уровне BIOS. Эта функция описана в файле bios.h следующим образом:

unsigned _bios_disk (unsigned funct, struct diskinfo_t *diskinfo);

Параметр funct задает выполняемую функцию. Параметр diskinfo - это указатель на структуру, описывающую необходимые параметры, такие как номер дорожки, номер головки и т. д.:

struct diskinfo_t { unsigned drive; // номер дисковода unsigned head; // номер головки unsigned track; // номер дорожки unsigned sector; // номер первого сектора unsigned nsectors; // количество секторов void far *buffer; // адрес буфера в памяти };

Перед использованием функции _bios_disk программа должна заполнить поля структуры diskinfo и указать соответствующий параметр funct.

Файл bios.h содержит константы для возможных значений параметра funct:



Значение Описание
_DISK_FORMAT Форматирование дорожки, описанной в структуре diskinfo.Программа должна задать для этой функции в структуре diskinfo номер НГМД или НМД, для которого выполняется форматирование, номер головки и номер форматируемой дорожки. Кроме этого, программа должна установить указатель buffer на подготовленный буфер формата. Следует также выполнить все подготовительные действия, связанные с настройкой контроллера НГМД и таблицы параметров дискеты
_DISK_READ Чтение одного или нескольких секторов.Эта функция аналогична функции 2 прерывания INT13h . Если при чтении секторов произошла ошибка, ее код будет возвращен функцией _bios_disk в старшем байте. При успешном завершении операции функция возвращает 0
_DISK_WRITE Запись одного или нескольких секторов на диск. Функция аналогична предыдущей, за исключением того, что данные из буфера записываются на диск
_DISK_RESET Сброс контроллера НГМД. Для этой функции не надо заполнять структуру diskinfo, так как ее содержимое игнорируется. Сброс контроллера выполняют после того, как произошла ошибка при выполнении другой операции, например, чтения или записи. После сброса можно попробовать повторить выполнение операции
_DISK_STATUS Получение состояния НГМД после выполнения последней операции.Старший байт возвращаемого функцией _bios_disk значения содержит байт состояния
_DISK_VERIFY Проверка диска.С помощью этой функции можно убедиться в том, что указанные секторы существуют и могут быть прочитаны в память. Дополнительно выполняется проверка CRC . Функция проверки диска использует все поля структуры diskinfo. При ошибке старшие 8 бит возвращаемого функцией значения содержат байт состояния.



Содержание раздела