Пишем программу начальной загрузки компьютера

Где взять параметры устройства и носителя?


До сих пор мы никак не учитывали какие-либо параметры загрузочного устройства и самого носителя данных. В нашем случае это привод дискет и сама дискета. Априорно, однако, считали, что размер сектора данных на дискете равен 512 байтам. Хотя по принятой спецификации программа BIOS считывет с загрузочного устройства данные с загрузочного сектора, его размер специально не оговаривается. Можно, например, форматировать дискету с размером сектора 1024 байта или 256 байт. Но тогда надо каким-то образом передавать параметры устройства и носителя программе, работающей с данными на этом носителе.
Как это решается, рассмотрим на примере дискеты:
Параметры устройства определяются программой POST и записываются в специальную область памяти Diskette Parameter Table, доступ к которой можно получить с помощью вектора прерывания Int 1Eh. Естественно эти данные никак не зависят от используемой операционной системы.
Параметры разметки дискеты записываются в загрузочный сектор дискеты (в так называемый BPB - BIOS Parameter Block) при её форматировании и в дальнейшем не меняются. Структура этих параметров, как и вся организация данных на носителе определяются файловой системой. В принципе, эти сведения могут использоваться любой операционной системой для правильного выполнения операций чтения и записи данных. Исторически же файловые системы обычно разрабатываются в рамках определенной операционной системы, а в других операционных системах для обеспечения совместимости приходиться создавать соответствующие средства.

Формат разметки дискет представляет некоторое исключение. Почти повсеместно для дискет применяется файловая система FAT12. Поэтому программы начальной загрузки многих операционных систем, размещаемые на дискете, используют эту структуру.
Для примера приведу результат моей собственной реконструкции содержимого загрузочного сектора дискеты для операционной системы MS DOS 5.0.

[Назад] [↑]  [Вперед]
Hosted by uCoz