for k := 2 to 255 do

n := n+Buf[k] ;

Buf[256] := n mod 256; {Контрольная сумма} {Шифруем все данные} for k := 2 to 256 do

Buf[k] := Buf[k] xor Buf[l];

{$R+f end; {HidnSec} ^————————.————^

Function SetOnHD: Integer;

(Устанавливает стационарную копию на жесткий диск. Возвращает:

-1 - не вставлена дискета;

-2 - не мастер-дискета;

-3 - защита от записи или ошибка записи ГД;

-4 - программа не скопирована на ЖД;

-5 - ошибка доступа к ЖД;

-6 - исчерпан лимит установок;

-7 - программа уже установлена.

>=0 - количество оставшихся установок}

var

DSK: Byte; . '.Диск} F: file; {Файл с программой} Date^TDate; {Дата ПЗУ) NameF: String; {Имя файла с программой} W: array [1..5] of Word; {Заголовок файла} n: Word; {Счетчик} L: Longint; {Файловое смещение} Inst: Byte; {Количество установок} label ErrWrt;

begin

TrassBlockl;

if Key.HardoO then begin

SetOnHD :=-7;

Exit end;

{Проверяем резидентность программы) NameF := FExpand(ParamStr(0)) ;

if NameF[1] in ['A','B'] then begin

SetOnHD := -4;

Exit end;

(Проверяем дискету}

if not LegalDiskett(DSK) then begin

case DSK of 2: SetOnHD := -1;

else

SetOnHD := -2;

end;

Exit end;

if (Buf[200]<>255) and (Buf[17]>=Buf[200]) then

begin {Исчерпан лимит установок} SetOnHD := -6;

Exit end;