(Запоминаем дату изготовления ПЗУ} TrassBlockl;

Date := ptr($FOOO,$FFF5) ;

Key.Dat := Date^;

{Шифруем параметры} Randomize;

with Key do

while Hard=0 do Hard := Random($FFFF);

for n := 2 to 5 do with Key do KeyW[n] := KeyW[n] xor Hard;

{Открываем файл с программой} TrassBlockl;

Assign(F,MameF) ;

Reset(F,1) ;

{Читаем заголовок файла} BlockRead(F,W,SizeOf(W) ,n) ;

if noSizeOf(W) then begin

SetOnHD := -5;

Exit end;

{Ищем в файле положение Hard} R.ah := $62;

MSDOS(R) ;

P := @Key;

L :- round;(DSeg-R.bx-16+W[5])*16.0)+ofs(P") ;

Seek(F,L) ;

{Записываем в файл} TrassBlockl;

BlockWrite(F,Key,SizeOf(Key),n) ;

if noSizeOf(Key) then begin

SetOnHD :» -5;

Close(F) ;

Exit end;

(Шифруем ключевой сектор} Inst :=Buf[200]-Buf[17]-l;

HidnSec(Buf,Buf[17]+l,Buf[20O]) ;

(Записываем на дискету новый ключ} TrassBlockl;

if not DiskettPrepare(DSK) then

begin {Ошибка доступа к дискете: удаляем установку} ErrWrt:

FillChar(Key,SizeOf(Key),0) ;

See)<:(F,L);

BlockWrite(F,Key,SizeOf(Key),n) ;

SetOnHD :=-3;

Close(F) ;

Exit end;

with R do begin

an =• 3 ;

al = 1;

ch = TRK;

cl = SEC;

dh - HED;

dl = DSK;

es = seg (Buf) ;