418 _____ Приложение
ReadLn(C[200]);
C[17] := 0;
{Считаем контрольную сумму} М := 0;
for k := 2 to 255 do N := N+C[k];
C[256] := M mod 256;
{Шифруем сектор}
С[1] := Random(255)+1;
for k := 2 to 256 do C[k] :» C[k] xor C[1] ;
{Записываем сектор}
ah := $03; {Код операции записи)
а1 :-=• 1; {Записать 1 сектор}
ch :- TRK; {На дорожке TRK}
с1 := 1; {Начиная с сектора 1}
dh := 0; ^На поверхности 0}
dl := DSK; №ск DSK1
es := seg(C); {Адрес буфера С для записи}
Ьх :-. ofs(C) ;
Intrl3(R,'Ошибка записи');
{Читаем сектор)
ah := $02; ^Код операции чтения) а1 :=• 1;
ch := TRK;
с1 :- 1;
dh :- 0;
dl := DSK;
es := seg(D); {Адрес буфера D для чтения) Ьх :» ofs(D) ;
Intrl3(R,'Ошибка чтения') end;
{Проверяем совпадение) for k := I to Size do if c[k:]<>d[k] then begin
WriteLn('Несовпадение данных') ;
SetIntVec($lE,01d) ;
Halt end;
WriteLn('Создана и проверена ',TRK+1,
'-я дорожка с секторами по ',Size,' байт');
{Измеряем время доступа к новой дорожке)
Write('Время доступа к скрытой дорожке: ');
MriteLn(AccessTime(DSK,TRK):6:2,' с') ;
{Измеряем время доступа к стандартной дорожке)
DBTA.SizeCode := 2; {Указываем стандартную длину сектора в ТПД} Write('Доступ к обычной дорожке: ');
WriteLn(AccessTime(DSK,20):6:2,' с') ;
{Восстанавливаем старую ТПД}
SetIntVec($lE,01d) end.
П10.2. Модуль F_Prot
Описание модуля см. п.7.4.
^»=-«==»=====»=; unit F_Prot; {"»..-"=—==-="=»}
{
+--_----—---—-._------——-——---------—-——-,+