bx := ofs(Buf) ;

Intr($13,R) ;

ReadSec := (Flags and FCarry)=0 end

end; {ReadSec} {————————————}

type

{Описатель раздела} Part_Type = record

BootF: Byte {Флаг активности раздела} BegHd: Byte {Начало раздела - головка} BegSC: Word {Начало раздела - сектор/цилиндр} Sys : Byte {Код системы} EndHd: Byte {Конец раздела - головка} EndSC: Word {Конец раздела - сектор/цилиндр} Sees : Longint; {Относительный номер начального сектора} Size : Longint; {Длина раздела в секторах} end; {Part_Type} {Структура ссылочного сектора} BootSecType = record

a: array [O..$1BD] of Byte;

Part: array [1..4] of Part_Type;

b: array [1..2] of Byte end;

const

MAXPART = 24; {Максимальное количество логических дисков} var

Boot : BootSecType;

Disk : array [1..MAXPART] of record

Hd: Byte; {Головка} Tr: Word; {Дорожка} Se: Byte; {Сектор} PT: Part_Type;

end;

k,d,j: Byte;

begin

Q := 0; {Номер очередного логического диска} {Читаем главный загрузчик}

if not ReadSec($80,0,1,Boot) then begin

WriteLn('Ошибка чтения главного загрузчика');

Halt end;

{Формируем адрес описателя диска С} Disk[l].Hd := 0;

Disk[l].Tr := 0;