Disk[l].Se := 1;

{Цикл чтения описателей логических дисков} with Boot do repeat

k := 1; {Ищем непустой описатель} while (Part[k] .BegSOO) and (k<4) do inc (k) ;

if k<=4 then

begin {Найден непустой описатель} if cKMAXPART then begin

inc(d); {Номер очередного диска} Disk[d].PT := Part[k] {Сохраняемго описатель} end;

inc(k); {Part[k] -ссылка на следующий

описатель раздела}

if (k<=4) and (Part [k] .BegSCOO) then with Part[k],Disk[d+1] do

begin {Адрес очередного описателя} Hd := BegHd;

Tr := (BegSC and 192) shi 2+BegSC shr 8;

Se := BegSC and 63 end end;

{Продолжаем цикл до ошибки чтения или

пустой ссылки на очередной описатель} until (Part[k].BegSC=0) or (k>4) or

not ReadSec($80,Part[k].BegHd,Part[k].BegSC,Boot) ;

{Выводим таблицу логических дисков} Write(#13#lO#lO'nHCK',' ':8);

for j := 1 to d do

Write(chr(ord('B')+j):10) ;

Write(#13#10'Активный',' ':4);

for j := 1 to d do with Disk[j].Pt do if BootF=$8O then

Write(^a' :10) else

Write('Нет':10) ;

Write(#13#10'Код системы ');

for j := 1 to d do with Disk[j].Pt do Write(Sys:10) ;

Write(#13#10'Объем (байт)');

for j := 1 to d do with Disk[j].Pt do Write(Size*512:lO) ;

WriteLn(#13#10'Начало:') ;

Write(' OTH.сектор');

for j := 1 to d do with Disk[d].Pt do