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;