Невозможности создать программными средствами на нормальной дискете неустранимые дефекты.

Как показывает практика, лишь очень небольшое число дискет (менее 1%) имеет заводские дефекты изготовления, поэтому при массовом тиражировании коммерческих программ приходится создавать такие дефекты искусственно. Для этого иногда используются лазеры, а чаще — обыкновенная булавка. После некоторой тренировки Вы всегда сможете наносить царапины на слой носителя или даже прокалывать дискету так, чтобы по возможности сохранить работоспособность большей ее части. Однако следует иметь в виду, что царапины и проколы на поверхности дискеты могут повредить считывающие головки накопителя.

Следующая программа выводит на экран номера всех секторов дискеты, имеющих неустранимые дефекты. Программа сначала определяет истинное количество дорожек Trk и секторов NS на дорожке дискеты (в привод дисковода, рассчитанного на дискеты 1.2 Мбайт, может быть вставлена дискета емкостью 360 Кбайт). Проверка этих параметров осуществляется непосредственно по блоку параметров BIOS (BPB], считываемому из загрузочного сектора дискеты. После этого соответствующим образом изменяется таблица параметров дискеты (ТПД) и осуществляется цикл чтения по всем Trk дорожкам. Если в ходе чтения возникла ошибка, про — грамма приступает к детальному анализу дорожки. Она вначале пытается прочитать и запомнить информацию, содержащуюся в каждом из ее N5 секторов на обеих поверхностях, затем форматирует дорожку и восстанавливает прежнее содержимое секторов. Если после такой операции на дорожке останутся сбойные секторы, программа выводит на экран их

номера. {+—— ————------—-------——----------——--+

¦ Программа считывает информацию с дискеты по

I дорожкам. При обнаружении сбойной дорожки

¦ определяется сбойный сектор, информация из

I остальных секторов запоминается, а дорожка

' форматируется заново, после чего восстана-

', вливается содержимое несбойных секторов.

I Если при повторной проверке вновь возникла

ч ошибка, печатается фраза

¦ "Дефектный сектор NNN".

+---------------------------------------------т/

Uses DOS, F_Disk;

type

PDBT_Type ^DBT^Type; {Указатель на ТПД} {Таблица параметров дискеты} DBT_Type = record

Reservl array [0..2] of Byte;

SizeCode Byte; {Код размера сектора}

LastSect Byte; {Количество секторова дорожке}

Reserv2 array [5..7] of Byte;

FillChar Char; {Символ-заполнитель для форматирования}