396 Приложение

Int $2F (Восстанавливаем Intl3f pop bx {Смещение} pop ax {Сегмент} mov S13,ax mov 013,bx end;

Intl3 := Ptr(S13,013) ;

Move(Intl3",Begl3,SizeOf(Begl3)) ;

NDisk := 0; (Количество дисков} end; fwitA Head} {Сканируем структуру ЖД} GetMasterBoot(c.SecO) ;

if not Disk_Error then with Head,c,SecO.Boot do

begin {Есть хотя бы один ЖД} h := 0;

s := 1;

Seek(F,l);

GetDiskInfo(2,DIn) ;

SecTr := DIn.TrackSiz;

Heads := Din.Heads;

{Цикл по всем ЛД: h,s - адрес ссылки}

repeat

/Запоминаем адрес ссылки в заголовке} inc(NDisk);

with LDisk[NDisk] do begin

BHd :° h;

BSC :- s;

Space :•• 1 end;

{Читаем ссылку на очередной ЛД}

GetAbsSector($80,h,s,c.SecO.Boot) ;

{Сохраняем ее в архиве} Name := 11 ;

SizO := 0;

Write(F,с) ;

{Ищем непустой описатель ЛД1 k := 1;

while (Part[k].BegSC»0) and (k<4) do inc(k) ;

if Part[k].BegSCOO then with Part[k] do begin

{Запоминаем адрес описателя в Head} inc (NDisk) ;

with LDisk[NDisk] do begin

BHd :- BegHd;

BSC BegSC;

Space :^s Size end;

{Запоминаем ссылку на следующий ЛД} inc(k);

h := Part [It] .BegHd;

s :° Part[k].BegSC;

{Запоминаем описатель в архиве} Name :« '';

SizO := 0;

with LDisk[Ndisk] do GetAbsSector($80,BegHd,BegSC,SecO);