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]=(
'Обнаружены изменения в структуре жесткого диска, которые могут быть",
'следствием заражения ПК вирусом!',
'Лечение загрузочного вируса основано на восстановлении структуры ЖД',
'в том виде, в каком она была к моменту создания архивного файла.',
'Эта операция может нанести непоправимый вред Вашему ПК, '+
"если архивный файл",