DPT = record
StepRTm: Byte; {Задержка переключения головок} DMA : Byte; {Признак использования КПДП} DrvOff : Byte; {Задержка выключения двигателя} SectSiz: Byte; {Код размера сектора} SectCnt: Byte; {Количество секторов на дорожке} GapSize: Byte; {Длина межсекторного промежутка} DataSiz: Byte; {Максимальная длина передаваемых данных} GapFSiz: Byte; {Межсекторный интервал для форматирования} FillChr: Byte; {Символ-заполнитель для форматирования} HeadTm : Byte; {Время установки головок} StartTm: Byte; {Время запуска двигателя} end;
Большинство полей ТПД содержит оптимальные технические параметры ГД, которые не следует изменять. Исключение составляют поля SectSiz, SectCnt и FillChr. Поле SectSiz содержит код длины сектора. Поскольку MS-DOS работает только с 512—байтными секторами, это поле имеет значение 2 во всех случаях, кроме специальных средств защиты программ (подробнее см. гл.7). Поле SectCnt должно содержать количество секторов на дорожке. Это поле может изменяться, если привод ГД позволяет работать с дискетами разного формата. Например, контроллеры ГД для дискет диаметром 5'/4 дюйма могут работать в режиме DSHD (емкость дискеты 1.2 Мбайт) и DSDD (360 Кбайт). В первом случае на дорожке размещается 15, а во втором — 9 секторов, поэтому при переходе с одного формата дискет на другой необходимо нужным образом скорректировать поле SectCnt. Наконец, символ—заполнитель FillChr может быть любым символом в диапазоне ASCII— кодов О...255. Этот символ записывается в область данных при форматировании. Изменение полей ТПД обычно требуется лишь в особых режимах форматирования, используемых для защиты программ от нелегального копирования. Если Вы захотите по— экспериментировать с нестандартными значениями ТПД, учтите, что в некоторых случаях вектор $1Е содержит адрес таблицы, размещенной в ПЗУ. Изменить такую таблицу, разумеется, невозможно, поэтому следует скопировать ТПД в оперативную память, изменить в этой копии нужные параметры и установить в векторе $1Е адрес новой таблицы.
Скорость передачи данных изменяется для контроллеров, рассчитанных на разные форматы дискет, и устанавливается функцией $18 (см. ниже).
Для жесткого диска буфер форматирования всегда имеет длину 256 2— байтных слов. Младший байт каждого слова содержит признак хорошего сектора (0, если сектор хороший, и $80, если плохой), а старший — номер сектора. Как и в случае дискет, порядок следования секторных номеров определяет фактор чередования.
•Замечу, что буфер формата задается только для ПК класса IBM AT. На машинах IBM XT при форматировании жесткого диска фактор чередования указывается в регистре AL.