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;