Reserv3 : Word end;

{Элемент буфера форматирования} F_Buf = record

Track: Byte; {Номер дорожки} Head : Byte; {Номер головки} Sect : Byte; {Номер сектора} Size : Byte {Код размера} end;

TrackType = array [O..MaxInt] of Byte;

const

DSK = 0; {Номер диска} var

Info: TDisk; {Информация о диске} Old: PDBT_Type; {Указатель на исходную ТПД} DBT: PDBT_Type; {Указатель на новую ТПД} TRK: Word; {Количество дорожек} NS : Word; {Количество секторов на дорожке} i, {Счетчик поверхностей} j, /Счетчик секторов} k, {Счетчик дорожек} nn: Integer; {Номер сектора в цилиндре} Р:"TrackType; {Буфер чтения/записи} R: registers; {Регистры ЦП} BF : array [0..20] of F_Buf; {Буфер для форматирования} begin

{Определяем количество дорожек, головок и количество секторов на дорожке} GetDiskInfo(DSK,Info) ;

if Disk_Error then begin

WriteLn('Ошибка доступа к диску');

Halt end;

Trk := Info.Tracks;

NS := Info.TrackSiz;

{Резервируем память для буфера} GetMem(P,2*NS*512) ;

(Готовим нужную ТПД}

Old := ptr(MemW[0:$lE*4+2],MemW[0:$1Е*4]);

New(DBT) ;

DBT^:= Old"; {Получаем копию ТПД в ОЗУ} SetIntVec($1E,DBT); {Изменяем ссылку на ТПД} DBT^ .Last-Sect := NS; {Устанавливаем нужное

количество секторов на дорожке} {Цикл проверки дорожек}

for k := 0 to TRK-1 do with R do begin