01 сентября 2000 |
|
-PIFORMAT- (С) 1999 PIcon/Last Masters ----------------------------------------- От редакции. Я опубликовал не "очередной формати- ровщик", а действительно очень полезную программу, которая поможет вам отформати- ровать ваши "убитые" диски. Описание дан- ной программы делать бессмысленно. Я ре- шил ограничиться только описанием отличий этой программы от себе подобных. С этим вопросом я обратился непосредственно к автору программы. ьОтветы на некоторые вопросыь Данная версия PIFORMAT`а позволяет обойти некоторые царапины, какие и как именно я сейчас расскажу. Обычно исполь- зуемый формат дорожки не всегда бывает правильным и корректным. Вот пример одного из них: +---------------------------------------+ | #4Е - 5Oшт. Последний пробел ?? | | #00 - 12шт. ?? | | #F6 - Зшт. Поле #С2 ?? | | #FC - 1шт. Индексная метка ?? | | #4Е - 22шт. Первый пробел ?? 50 шт.| | #00 - 12шт. | | #F5 - Зшт. Поле A1 | | #FE - 1шт. Адресная метка заголовка | | XX - 1шт. Номер дорожки | | XX - 1шт. Номер стороны | | XX - 1шт. Номер сектора | | XX - 1шт. Длина сектора | | #F7 - 1шт. Контрольный код заголовка | | #4Е - 22шт. Второй пробел | | #00 - 12шт. | | #F5 - Зшт. Поле A1 | | #FB - 1шт. Адресная метка данных | | XX - 25бшт. Данные | | #F7 - 1шт. Контрольный код данных | | #4Е - 22шт. Третий пробел | +---------------------------------------+ И так повторяется для всех 16 секто- ров начиная с 1-го пробела по контрольный код данных, а в конце остаток дорожки за- полняют пробелами #4Е, чтобы размер всей дорожки был приблизительно равен 6,5 Кб. #4Е - XX шт. Конечный пробел. На разных дисководах значение 6,5 Кб колеблется в пределах от -20 до +20 байт, но даже на одном и том же дисководе оно нестабильно. Поэтому сильно завышать сек- тора нельзя. Помеченные "??" места - это те, которые некоторые программисты совсем выбрасывают, хотя этого делать нельзя. В своем FORMATER`е я использую такой вид форматирования дорожки: +---------------------------------------+ | #00 - 12шт. !! | | #4Е - 8Oшт. Последний пробел !! | | #00 - 12шт. !! | | #F6 - Зшт. Поле С2 !! | | #FC - 1шт. Индексная метка !! | | #F7 - 1шт. Контр. код индекса !! | | #4Е - 5Oшт. Первый пробел !! | | #00 - 12шт. синхронули | | #F5 - Зшт. Поле A1 | | #FE - 1шт. Адресная метка заголовка | | XX - 1шт. Номер дорожки | | XX - 1шт. Номер стороны | | XX - 1шт. Номер сектора | | XX - 1шт. Длина сектора | | #F7 - 1шт. Контрольный код заголовка | | #4Е - 22шт. Второй пробел | | #00 - 12шт. Синхронули | | #F5 - Зшт. Поле A1 | | #FB - 1шт. Адресная метка данных | | XX - 25бшт. Данные | | #F7 - 1шт. Контрольный код данных | | #4Е - 22шт. Третий пробел | +---------------------------------------+ Это повторяется для всех 16 секторов, начиная с 1-го пробела по контрольный код данных, а в конце остаток дорожки запол- няют пробелами #4Е, чтобы размер всей до- рожки был приблизительно равен 6,5 Кб. #4Е - XX шт. Конечный пробел. Помеченные "!!" места - это те, кото- рые отличаются от некоторых из применяе- мых стандартов. Если изобразить графичес- ки, каким методом можно обойти царапины на диске или другие повреждения, станет ясно, что это осуществляется за счет уве- личения или уменьшения длин пробелов. ОбычныйИзменённыйКак мы видим на втором рисунке, что увеличив первый и второй пробелы, мы пе- реместили адресную метку и поле данных с места царапины, а на полях пробелов цара- пины почти не влияют на качество чтения с диска. В принципе, такой подход в некото- рых случаях оправдан, но не всегда. Если перый пробел можно увеличивать и умень- шать в пределах от 32 до 90 знаков, то при этом, естественно, последний пробел сократится пропорционально первому. Что ж 2, 3, ..., 16 пробелов, которые находятся между адресной меткой и данными, они дол- жны быть равны и изменять их длину не ре- комендую. Если их длина разная, то чтение очередного сектора может произойти только за второй заход, что влияет на скорость чтения и зачастую TURBO LOADER читает их еще медленее, чем обычное чтение. Кроме этого нет гарантии в том, что такой фор- мат даст необходимое качество записи и чтения. В моём варианте формата частично про- исходит сдвиг от начала трека, но все по- ля, кроме первого и последнего, стандарт- ны. Перед первым полем пробелов добавлено поле синхроимпульса, которое есть на всех форматах IBM-совместимых компьютеров и я рекомендую для применения на Спектруме. И если посмотреть внимательно на рисунок,то видно, что царапины ушли с информационных полей: ОбычныйPIFORMATТак что, как и в первом варианте, так и в моём мы обошли некоторые царапины, но при этом не потеряли качество и скорость при чтении и записи диска. Есть еще и второй способ обхода цара- пин и битых секторов. Он основан на том, что эти места форматируются как и обычные сектора, но номер битого сектора делается нестандартным или с таким же, как впереди него. При этом эти сектора не читаются. Пример первый: +----------------------------+ |#01 #02 #03 #F7 #04 .... #10| +----------------------------+ Пример второй: +----------------------------+ |#01 #02 #03 #03 #04 .... #10| +----------------------------+ В первом случае TR-DOS его не прочи- тает, а во втором пропустит, т.к. он уже считал #03. Но это не всегда так, если программа использует свой загрузчик и при этом она читает подряд, к примеру, 20 секторов, то ни один из этих способов не поможет. Кро- ме этого есть ограничение на количество секторов на одной дорожке, в зависимости от длин полей оно разное. Кроме этих спо- собов можно использовать и некоторые дру- гие способы, но они требуют своего собст- венного загрузчика или же дублирования на второй стороне, как это сделано в прог- рамме "Чёрный Ворон". Ну вот, пожалуй, и всё. Если у вас есть свои методы работы с дисками, а также вы хотите с ними поделиться, то пишите. Я их рассмотрю и если они эфективны - приму их во внимание. От редакции: не стал я переписывать мате- риал в соответствие со своими взглядами и убеждениями на этот счёт, а решил просто его прокомментировать. Действительно, по- лями пробелов можно обойти повреждения на диске, но здесь надо делать более серьёз- ный анализ трека на предмет нахождения и способа обхода дефекта. Времени на работу подобного плана уйдёт много, но мы полу- чим 98% вероятности успешного результата. Определить повреждения на диске можно та- ким способом: форматируешь трек кодом #4Е и потом сканируешь в буфер, где будет об- раз трека. Это, чтобы не засирать ОЗУ ещё одним буфером. Итак, при сканировании би- ты поля пробела могут "съехать" и в буфе- ре могут быть другие коды. Чтобы безоши- бочно определить этот код, надо сравнить несколько подряд идущих байт. Из наблюде- ний за последствиями сканирования я реко- мендую начать поиск не с начала буфера, а сделав пропуск первых 20 байт. После того, как определили код, надо с тем же отступом от начала буфера "пробе- жаться" по всему буферу, сверяя коды. То место, где встретится другой байт, и есть сбойное место. Определить ещё дефекты, за этим местом, представляется затруднитель- ным, т.к. биты вновь могут съехать и код в буфере может быть другим. А может и не изменится. Определиться с этими ситуация- ми можно при помощи многочисленных экспе- риментов. После обнаружения повреждений следует провести расчёты, которыми определишься с шагом между секторами для обхода дефектов диска. Шаг между секторами (пробелы) мож- но менять и между секторами. Это я прове- рял и с глюками при чтении или записи не сталкивался! Если и в этом случае нет ни- какой возможности обойти сбойный участок, то предложи в своей программе самым кра- сивым окошечком, которое только сможешь изобразить, что "Пользователю следует вы- кинуть нахер этот фуфловый диск и не мо- рочить голову себе и людям!" ;-))) Ньюанс: поля пробелов сделаны для то- го, чтобы контроллер синхронизировался. Я рекомендую сдвигать сектора по треку так, чтобы царапины попадали на начало пробе- лов. Иначе возникнет ситуация, как в ста- рые добрые времена, когда мы пользовались кассетами - короткий пилотон затрудняет чтение файла. Тоже самое и с секторами - контроллер не успеет синхронизироваться и заголовок сектора может потеряться. Также не рекомендую делать синхропробел между заголовком сектора и его данными сильно отличающимся от стандарта - чревато пос- ледствиями: некачественная запись на этот сектор и как результат - снова дрочилка с PIFORMAT`ом... И ещё: как-то мне довелось где-то чи- тать охи-ахи по поводу того, что на 8OOКб диск нельзя качественно отформатировать, чтобы не запороть последний сектор. Чушь всё это! Можно, ещё как можно! Достаточно сократить поля пробелов на 20 байт каждый и всё получится без проблем! Качество ра- боты с диском не изменится. Это я опробо- вал в полной мере на диске с нашей игрой "Чёрный Ворон. Новые Миссии". Ну как, Picon, реализуешь это на прак- тике? Учитывая то, что в последние годы наблюдается дефицит новых или качествен- ных б/у дискет на 5.25", работать иногда приходится на "убитых" дисках и без твоей программы нам не обойтись! Мы ждём новой версии... ----- Beeper protection system v1.0 beta (С) Мг.Beeper ----------------------------------------- Данная программа очень полезна в приме- нении, когда необходимо защитить диск па- ролем или кодом от произвольного просмот- ра. После защиты диска этой программой невозможно просмотреть - какие файлы есть на диске или же запустить какую-либо про- грамму. После загрузки программы,на экра- не монитора появится, меню состоящее из следующих надписей: 1. Установка защиты 2. Снятие защиты 3. Виды защиты 4. Информация 5. Выход Установка защиты После выбора этого пункта вам предла- гается ввести пароль до 10 символов, включая цифры и знаки препинания. Если диск уже имеет защиту, появится соответ- ствующее сообщение. Снятие защиты Этот пункт позволит вам снять защиту, если диск защищен. Виды защиты В этой версии данный пункт не реализо- ван. Информация После выбора этого пункта вы узнаете некоторую информацию о программе. Выход После выбора этого пункта происходит проверка на наличие в памяти Real Coman- der`а и, если он присутствует в памяти,то запускается. В противном случае делается перезагрузка TR-DOS. В следующей версии прежде всего будет реализован пункт "виды защиты",при помощи которого будет возможно выбрать разновид- ность способа, каким защищать диск или файл. Полный перехват дисковых ошибок. Увеличение числа вводимых символов для пароля. Усовершенствование защиты.
Other articles:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Similar articles:
В этот день... 21 November