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;