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;