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