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);