begin

with Reg do begin

Disk_Error := Flags and FCarry =1;

Disk_Status:= ax end

end; {Output} /——————————————;

Function ChangeDiskette(Disk: Byte): Boolean;

{Âîçâðàùàåò TRUE, åñëè èçìåíÿëîñü ïîëîæåíèå çàïîðà íà óêàçàííîì ïðèâîäå ãèáêîãî äèñêà) begin

with Reg do begin

ÀÍ := $16;

DL := Disit;

Intr($13, Reg) ;

Output;

ChangeDiskette := Disk_Error and (AH=6) end end; {ChangeDiskett} ^————————————————/

Procedure FreeListDisklvar List: PListDisk);

{Óäàëÿåò ñïèñîê äèñêîâûõ îïèñàòåëåé} var

Ð: PListDisk;

begin

while List <> Nib do begin

P :a List^.NextDisk;

Dispose(List) ;

List := P end end; {FreeListDisk} ^——.————————————;

Procedure GetAbsSector(Disk,Head: Byte; CSec: Word; var Buf);

{×èòàåò àáñîëþòíûé äèñêîâûé ñåêòîð ñ ïîûîï^ûî ïðåðûâàíèÿ $13} begin

with Reg do begin

ah :»= 2; {Îïåðàöèÿ ÷òåíèÿ) dl := Disk; {Íîìåð ïðèâîäà} dh := Head; {Íîìåð ãîëîâêè} ex := CSec; {Öèëèíäð/ñåêòîð} a.1 :« 1; (×èòàòü îäèí ñåêòîð} es := seg(Buf);

bx := of s (Buf) ;

Intr($13,Reg) ;

Output end end; /GetAbsSector^ ^——————————————;

Function GetCluster(Disk: Byte; Sector: Word): Word;

{Âîçâðàùàåò íîìåð êëàñòåðà ïî çàäàííîìó íîìåðó ñåêòîðà} var

DI: TDisk;

begin

GetDiskInfo(Disk,DI) ;

if not Disic Error then with DI do