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