(Запоминаем дату изготовления ПЗУ} 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) ;