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