Операционная система MS DOS (том 2)


Функция _bios_disk()


Стандартная библиотека трансляторов Microsoft QC .01, QC .5, C .0 содержит специальную функцию, облегчающую работу с диском на уровне BIOS - _bios_disk(). Эта функция требует использования файла 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 и вызвать _bios_disk() с соответствующим параметром funct.

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

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


- Начало -  - Назад -  - Вперед -