опубликован 30-01-2002 12:14 MSK
abswrite не пробовал, потому что прочитал такое:
---------------------------------------------------------------
biosdisk
--------------------------------------------------------------- Назначение Ввод/вывод с жесткого или гибкого диска.
Синтаксис int biosdisk(int cmd, int drive, int head,
int track, int sector, int nsects,
void *buffer);
Прототип в bios.h
Замечания Эта функция использует прерывание 0х13 для вы-
зова дисковых операций непосредственно из BIOS.
drive - номер используемого дисковода : 0 для
первого дисковода гибких дискет, 1 для второго,
2 для третьего и т.д. Для жесткого дисковода
величина 0х80 для drive определяет первый дис-
ковод, 0х81 - второй, 0х82 - третий и т.д.
Для жесткого диска определяется физический дис-
ковод, а не логическое разделение диска.
При необходимости прикладная программа должна
сама интерпретировать информацию из таблицы
разбиения диска.
cmd опредедяет действия, которые должны быть
выполнены.
В зависимости от значения cmd могут понадобить-
ся и другие параметры. Ниже приведены значения
cmd для IBM PC, XT, АТ или PS/2 и совместимых с
ними моделей:
0 - сброс дисковой системы. Контроллер дисково-
да выполняет принудительный сброс. Все осталь-
ные параметры игнорируются.
1 - возврат статуса выполнения последней диско-
вой операции. Все другие параметры игнорируют-
ся.
2 - читает один или более дисковых секторов в
память. Начальный сектор для чтения задается
параметрами head, track и sector. Число секто-
ров задается параметром nsect. Данные читаются
по 512 байт в секторе в buffer.
3 - записывает один или более секторов диска из
памяти. Начальный сектор для записи задается
head, track и sector. Число секторов задается
параметром nsect. Данные записываются по 512
байт в сектор из buffer.
4 - проверяет один или более секторов. Началь-
ный сектор задается head, track и sector. Число
секторов задается в nsect.
5 - форматирует дорожку. Дорожка задается пара-
метрами head и track. buffer указывает на таб-
лицу заголовков секторов, которые будут записы-
ваться в заданную track. Смотри техническую
документацию для IBM PC для описания этой таб-
лицы и операции форматирования
Следующие значения cmd допускаются только для
моделей ХТ, АТ, PS/2 и совместимых с ними:
6 - форматирует дорожку и устанавливает флаги
дефектных секторов.
7 - форматирует дисковод, начиная с заданной
дорожки.
8 - возвращает параметры активного дисковода.
Эта информация помещается в первые четыре байта
buffer.
9 - инициализация характеристик парного диско-
вода.
10 - производит длинное чтение, 512+4 байта на
сектор.
11 - производит длинную запись, 512+4 байта в
сектор.
12 - производит позиционирование дисковода.
13 - производит альтернативный сброс дисковода.
14 - читает буфер сектора.
15 - записывает буфер сектора.
16 - проверяет готовность заданного дисковода.
17 - проводит перекалибровку дисковода.
18 - диагностика контроллера RAM.
19 - диагностика дисковода.
20 - внутренняя диагностика контроллера.
Замечание: biosdisk работает с секторами диска
на более низком уровне, чем файловая система MS
-DOS, поэтому некорректное использование этой
функции может привести к порче файлов или ог-
лавления жесткого диска.
Возвращаемое Эти операции возвращают статусный байт,
значение составленный из следующих бит:
0х00 - операция прошла успешно
0х01 - неверная команда
0х02 - маркер адреса не найден
0x03 - запись на диск запрещена
0х04 - запись не найдена
0х05 - ошибка сброса
0x06 - изменилось содержание диска после пос-
ледней операции
0х07 - ошибка чтения параметров дисковода
0x08 - переполнение DMA
0х09 - попытка для DMA перейти границу 64 Кб
0x0A - обнаружен дефектный сектор
0х0В - обнаружен флаг дефектной дорожки
0x0C - трек недоступен
0х10 - ошибка кода коррекции при чтении диска
0х11 - коррекция данных с помощью кода коррек-
ции
0х20 - контроллер неисправен
0х40 - ошибка позиционирования
0х80 - некорректный ответ дисковода
0хВВ - неизвестная ошибка
0xCC - ошибка записи
0xE0 - неверный статус
0хFF - ошибка доступа
Заметим, что 0х11 не является ошибкой, т.к.
данные корректны. Значение возвращается с той
целью, чтобы дать возможность прикладной прог-
рамме самой сделать выбор.
Переносимость Эта функция работает только на IBM PC и ей
подобных.
Разве эт не правильно!?