Системное программное обеспечение персональных ЭВМ


Пример 4 - часть 3


Boot-сектор содержит информацию о физических параметрах диска и о размещении на нем системной информации, используемой далее системой при работе с диском, поэтому даже если дискета и несистемная, то есть, загрузка с нее не выполняется, на ней все равно имеется Boot-сектор с данными о носителе.

Формат Boot-сектора различен для версий DOS до 4.0 и от 4.0 и выше. В программном примере 10.3 структурой struct BootRec описан Boot-сектор для DOS 4.0 и выше. Дадим некоторые комментарии к полям этой структуры.

Первые 3 байта сектора содержат команду JMP, обеспечивающую переход на программу загрузки. Следующие 8 байт - символьный идентификатор программного средства, производившего форматизацию дискеты (диска); если дискета форматировалась системной утилитой FORMAT, там записан номер версии операционной системы. Поле SectSize всегда содержит значение 512. Поле ClustSize показывает, сколько секторов содержится в одном кластере - единице распределения дисковой памяти. Поле ResSect содержит число секторов, расположенных до начала FAT, обычно это 1 - перед FAT имеется только Boot-сектор. Число копий FAT (поле FatCnt) всегда 2. Поле RootSize показывает размер Корневого Каталога, чтобы узнать число секторов в корневом каталоге надо содержимое этого поля разделить на 16. Поле TotSecs - общее число секторов на диске для диска, отформатированного в DOS 4.0 или выше, содержит 0, если число секторов больше 65535, в этом случае число секторов может быть выбрано из поля LongTotSecs. Байт Media идентифицирует тип носителя; возможны такие его значения: 0xFF - 2 стороны, 8 секторов на дорожке; 0xFE - 1 сторона, 8 секторов на дорожке; 0xFD - 2 стороны, 9 секторов на дорожке; 0xFC - 1 сторона, 9 секторов на дорожке; 0xF9 - 2 стороны, 15 секторов на дорожке; 0xF8 - жеский диск. Поле FatSize - число секторов в одной копии FAT. Поля TrkSecs, HeadCnt содержат значения, необходимые для преобразования дискового адреса по формуле 10.1. Поля HidnSecL и HidnSecH для DOS 4.0 и выше можно интерпретировать как одно поле: dword HidnSec - это количество скрытых секторов, упоминавшихся выше.


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