push ax {Помещаем в стек) retf {Перезапуск ДОС} end end; {ReStartDos} {.-, ————_———_——}

const

Intl3Addr: Pointer=»NIL; {Адрес Intl3 в BIOS}

01d62: Pointer=NII.; (Старый вектор $62} /————.—————_——;

Procedure RWSecIntl3(Op,Hd,SC: Word; var Targ);

{Читает или записывает абсолютный сектор ВД с помощью непосредственного вызова Intl3 из BIOS} var

R: Registers;

begin

if Intl3AddrONIL then with R do begin

ah := Op;

al :- 1;

dh :- Hd;

dl := $80;

ex := SC;

es := Seg(Targ) ;

bx :"= Ofs (Targ);

Intr($62,R) ;

Disk Error := Flags and FCarryoO end else

GetAbsSector($80,Hd,SC,Targ) end; {R»SecIntl3} _•————————————;

Procedure Alarm;

/'Вызывается в случае обнаружения изменений в структуре ЖД} var

k: Integer;

Fl: File of TStruc;

c: CheckType;

Boot: BootSecType;

S,ss: String;

Procedure Save(H: Byte; SC: Word);

(Записывает абсолютные координаты сектора и сам сектор в файл Fl} var

LD: TStruc;

begin

if so'' then with LD do begin

BHD := H;

BSC := SC;

GetAbsSector($80,BHD,BSC,Sec) ;

Write(F1,LD) end end;

const

t: array [1..9] of String [80]=(

'Обнаружены изменения в структуре жесткого диска, которые могут быть",

'следствием заражения ПК вирусом!',

'Лечение загрузочного вируса основано на восстановлении структуры ЖД',

'в том виде, в каком она была к моменту создания архивного файла.',

'Эта операция может нанести непоправимый вред Вашему ПК, '+

"если архивный файл",