begin {CheckBootsf

{Устанавливаем в вектор $62 BIOS-адрес входа в начало обработки прерывания

Intl3, чтобы обмануть utealth-вирусы}

GetIntVec($62,01d62); {Сй&саби век-гор $62} SetIntVec($62,Head.Intl3) ;

WriteLn;

WriteLn('Для досрочного завершения работы программы нажмите ESC")? WriteLn;

WriteLn('Антивирусный контроль описателей структуры ЖД:');

WriteLn('Головка','Сектор/цилиндр':20);

{Проверяем ссылки и описатели ЛД) with Head do

for k := 1 to NDisk do with LDisk[k] do begin

Write(BHD:4,BSC:17) ;

RWSecIntl3(2,BHd,BSC,Buf) ;

Read(F,c) ;

if Equal(c.SecO,Buf,512) then

WriteLn('Норма':20) else begin

WriteInCИзменен!'l20);

Alarm {Обнаружены изменения) end end;

{Нормальное завершение проверки} SetIntVec($62,01d62) ;

IntlSAddr := MIL;

BegDat FilePos(F) ;

{Наполняем коллекцию архивными файлами} WriteLn;

WriteLn('Читается архивный файл ANTIVIR.DAT...') ;

while not EOF(F) do begin

New(oh) ;

Read(F,ch^) ;

FColl".Insert(ch) ;

if KeyPressed and (ReadKey°#27) then

Halt end;

HriteLn

end; {CheckBoots} ^————————————/

Procedure SetFile(FName: String);

{Помещает в архив эталон файла FRAME} vac

ch: ^CheckType;

k, nz,sz: Word;

P : Pointer;

FP : file;

begin {SetFile}

Assign(FF,FName) ;

{$!-}

Reset (FF,1) ;

{?I+t

if lOResult <> 0 then MsgC Ошибка доступа к файлу Ч-FName)

else begin

{Искать в архиве одноименный файл:}