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;