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