end; {ReadSector} /-———————————————/

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

{Çàïèñûâàåò àáñîëþòíûé äèñêîâûé ñåêòîð ñ ïîìîùüþ ïðåðûâàíèÿ $13} begin

with Reg do begin

ah := 3; (Îïåðàöèÿ çàïèñè} dl :° Disk; (Íîìåð ïðèâîäà} dh := Head; (Íîìåð ãîëîâêè} ex := CSec; {Öèëèíäð/ñåêòîð} al := 1; (×èòàåì îäèí ñåêòîð} es := seg(Buf) ;

bx :- ofs(Buf) ;

Intr($13,Reg);

Output end end; /SetAbsSector/ ^———————————————;

Procedure SetDefaultDrvfDisk: Byte);

(Óñòàíàâëèâàåò äèñê ïî óìîë÷àíèþ} begin

if Disk <= GetMaxDrv then with Reg do begin

AH :=» $E;

DL := Disk;

MSDOS(Reg)

end end;

_———————————————;

Procedure SetFATItemfDisk: Byte;Cluster,Item: Word) ;

(Óñòàíàâëèâàåò ñîäåðæèìîå ITEM â ýëåìåíò CLUSTER òàáëèöû FAT} var

DI : TDisk;

k,j,n: Integer;

Fat: record case Byte of 0: (w: array [0..255] of Word);

1: (b: array (0..512*3-1] of Byte) ;

end;

begin

GetDiskInfo(Disk,DI) ;

if not Disk_Error then with DI do begin

if (Cluster <= MaxClus) and (Cluster >=• 2) then begin

if FAT16 then

begin

k := Cluster div 256; (Íóæíûé ñåêòîð FAT}

j := Cluster mod 256; (Ñìåùåíèå â ñåêòîðå}

n :» 1 end else begin

k := Cluster div 1024; {Íóæíàÿ òðîéêà ñåêòîðîâ FAT}

j := (3*Clu3ter) shr 1-k*1536;

n :° 3 end;