Характеристики дисководов - часть 8
/p>
Все времена в таблице зависят от частоты тактового генератора контроллера НГМД, приведенные значения соответствуют частоте 8 МГц.
Для удобства работы с таблицей параметров дискеты файл sysp.h содержит определение типа DPT:
#pragma pack(1)
typedef struct _DPT_ { unsigned char srt_hut; unsigned char dma_hlt; unsigned char motor_w; unsigned char sec_size; unsigned char eot; unsigned char gap_rw; unsigned char dtl; unsigned char gap_f; unsigned char fill_char; unsigned char hst; unsigned char mot_start; } DPT;
#pragma pack()
Адреса таблиц параметров жестких дисков HDPT
расположены по адресам, соответствующим векторам прерываний INT 41h (для первого физического диска) и INT 46h (для второго физического диска). Эти таблицы имеют следующий формат:
(0) 2 | max_cyl | Максимальное количество цилиндров на диске. |
(+2) 1 | max_head | Максимальное количество магнитных головок. |
(+3) 2 | srwcc | Начальный цилиндр для предварительной записи (Starting reduced-write current cylinder). |
(+5) 2 | swpc | Начальный цилиндр для предварительной компенсации при записи (Starting write precompensation cylinder). |
(+7) 1 | max_ecc | Максимальная длина блока коррекции ошибок ECC (Maximum ECC data burst length). |
(+8) 1 | dstopt | Опции устройства: бит 7 - запрет восстановления; бит 6 - запрет восстановления по блоку коррекции ошибок ECC (Error Correction Code); биты 2-0 - опции устройства. |
(+9) 1 | st_del | Стандартная величина задержки. |
(+10) 1 | fm_del | Величина задержки для форматирования диска. |
(+11) 1 | chk_del | Величина задержки для проверки диска. |
(+12) 4 | reserve | Зарезервировано. |
Файл sysp.h содержит соответствующее определение типа HDPT:
#pragma pack(1)
typedef struct _HDPT_ { unsigned max_cyl; unsigned char max_head; unsigned srwcc; unsigned swpc; unsigned char max_ecc; unsigned char dstopt; unsigned char st_del; unsigned char fm_del; unsigned char chk_del; char reserve[4]; } HDPT;
#pragma pack()
Наиболее полезная информация, которую можно извлечь из таблицы параметров дискеты - это код размера сектора. Если вам когда-либо понадобится работать с нестандартным размером сектора (512 байтов), вам не обойтись без этой таблицы.