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


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


Для DOS ниже 4.0 используется 2-байтное число скрытых секторов - HidnSecL, и на этом область данных Boot-сектора кончается. Поле Drive - номер дисковода, на котором диск форматировался. Поле DOS4_flag содержит код 0x29 (символ ')' - правая скобка), если диск форматировался в DOS 4.0 и выше. Серийный номер тома - случайное число, записываемое в поле VolNum при форматизации, может использоваться в дальнейшем для идентификации диска, как и метка тома (поле VolLabel). Наконец, поле FatForm содержит символьную последовательность 'FAT12' или 'FAT16', в зависимости от формата FAT. После этой системной информации в Boot-секторе записана программа начальной загрузки.

Для версий DOS более ранних, чем 4.0 блок системной информации в Boot-секторе имеет меньший размер - до поля HidnSecL включительно. Поля от SectSize по FatSize включительно образуют так называемый Блок Параметров BIOS (BPB - BIOS Parameter Block), он формируется в оперативной памяти драйвером диска и в дальнейшем используется при всех операциях с данным диском. В DOS 4.0 и выше принят Расширенный BPB - от поля SectSize до LongTotSecs включительно.

Опыт общения со студентами подсказывает нам, что будет нелишним напоминание о том, что формат Boot-сектора зависит не от версии DOS, установленной на той ПЭВМ, на которой дискета читается, а от версии на той ПЭВМ, где дискета форматировалась. Поскольку формат ранних версий полностью перекрывается форматом поздних, совместимость по носителям сохраняется.

Программа примера 10.3 демонстрирует чтение Boot-сектора дискеты или логического диска. Boot-сектор считывается средствами DOS как логический сектор 0. Поскольку прерывание 0x25 имеет два варианта применения - в зависимости от объема диска, программа запрашивает объем диска и по-разному готовит исходные данные для чтения сектора. Считанный сектор программа распечатывает - в зависимости от содержимого поля DOS4_flag в формате той или иной версии.




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