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;