В реализации этой функции учитывается то обстоятельство, что FAT может быть одного из двух типов: с 12—битными и 16—битными элементами. В первом случае под каждую пару смежных элементов выделяется три байта таблицы, во втором каждому элементу отводится два байта. Для определения типа FAT используется следующая проверка: если общее количество кластеров больше 4080, FAT содержит 16-битные элементы, иначе — 12—битные.
В случае 12-битной ГАГ значение, возвращаемое функцией CctFATtem, приводится к 16-битному формату: если элемент FAT имеет значение больше, чем $FFO, к этому значению прибавляется код $FOOO. Это связано с тем, что 16 старших значений элементов FAT ($FFFO. . .$FFFF для 16-битной и $FFO. . .$FFF для 12-битной FAT} используются ДОС для специальных целей — для указания конца цепочки FAT (коды $FF8. . ,$FFF для 12-битной и $FFF8. . ,$FFFF для 16—битной FAT), сбойных кластеров (коды $FF7 и $FFF7) и резервных кластеров (коды $FFO...$FF6 и $FFFO. . .$FFF6).
Процедура GetIOCTLInfo. Реализует общий вызов IOCTL в формате функции $60 (дать информацию об устройстве). Заголовок:
Procedure GetIOCTLInfo(Disk: Byte; var Info: IOCTL_Type).
Здесь Disk — номер диска; Info — Переменная типа IOCTL__Type, в которой возвращается информация о диске.
Эта процедура используется для построения ВРВ при обращении к процедуре GetDiskInfo.
Процедура GetMasterBoot. Используется для доступа к главному загрузочному сектору, что может оказаться полезным в программах защиты от компьютерных вирусов (см. гл.6). Заголовок:
Procedure GetMasterBoot(var Buf).
Здесь Buf — любая переменная длиной не менее 512 байт; в эту переменную помещается содержимое главного загрузочного сектора.
Главный (системный) загрузчик всегда располагается на первом ЖД (MS-DOS может обсуживать один или два жестких диска) в самом первом секторе нулевой дорожки. Доступ к этому сектору можно получить только с помощью прерывания $13. Доступ к остальным частям любого диска реализуется функциями ReadSector/WriteSector (см. ниже).
Функция GetMaxDrv. Возвращает общее количество логических дисков минус 1, т.е. максимально возможный номер диска. Заголовок:
Function GetMaxDrv: Byte.
Для определения количества дисков используется функция $ОЕ ДОС (установка диска по умолчанию), которая в регистре AL возвращает требуемое значение. Предварительно с помощью функции $19 программа получает номер текущего диска (диска по умолчанию), поэтому обращение к процедуре не меняет настройку ДОС.