Невозможности создать программными средствами на нормальной дискете неустранимые дефекты.
Как показывает практика, лишь очень небольшое число дискет (менее 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; {Символ-заполнитель для форматирования}