192 Глава 7
for i := 0 to 1 do {2 поверхности} for j := 1 to NS do begin
{Восстанавливаем содержимое сектора} ah : = 3; {Код операции записи} а1 := 1; {Записываем 1 сектор} ch := k; {Номер дорожки] • с1 := j; {Номер сектора} dh := i; {Номер головки} dl := DSK; {Номер диска} пп := i*NS+pred(j) ;
es := seg(PA[nn*512]) ;
bx := ofs(P"[nn*512]);
Intr($13,R) ;
{Читаем сектор)
ah := 2; /й'од операции чтения}
а1 := 1; {Читаем 1 сектор}
ch := k; {Номер дорожки}
с1 :== j; {Номер сектора}
dh :== i; {Номер головки}
dl := DSK; {Номер диска}
es := seg{P^[nr\*512] ) ;
bx := ofstP^nr^S:!^]) ;
Intr($13,R) ;
if (Flags and FCarry)<>0 then
WriteLn('Дефектный сектор ',(k*2+i)*NS+j) end end end;
SetIntVec($lE,01d) {Восстанавливаем прежнюю ТПД} end.
Недостатком описанного способа защиты являются относительно большие затраты времени на контроль всей дискеты и потеря работоспособности некоторой ее части. От этих недостатков можно избавиться, если на дискете создать программным способом нестандартные для ДОС особенности. Этими особенностями могут быть:
• нестандартная длина секторов на всей дискете или какой-либо одной ее дорожке;
• специальное расположение (фактор чередования) секторов на дорожке;
• нестандартное количество дорожек.
Разумеется, надежность защиты с помощью программно создаваемых особенностей структуры дискеты будет значительно меньше. Тем не менее следует помнить, что в большинстве случаев «взломщик» программы стремится изменить ее код, а не имитировать особый способ копирования дискет, так что несложная защита, связанная с использованием допол—