Д.Ю.Усенков
БК-0010: ОПЫТ РАБОТЫ С ДИСКОМ (с точки зрения пользователя)
Какие преимущества дает подключение к БК-0010 дисковода, знают сегодня уже все. Большая по сравнению с магнитофоном скорость чтения/записи информации при существенно большей надежности, свободный доступ к любому из файлов, записанных на дискете (а на магнитной ленте нужно, во-первых, точно знать, в каком месте какой кассеты находится та или иная программа, а во-вторых, вручную перемотать ленту к этому месту), возможность удалить ненужный файл и тут же использовать освободившееся место для записи нового (что особенно удобно при работе с текстами, базами данных, при написании собственных программ, которые при отладке приходится многократно корректировать) и менее важная, но удобная возможность использования игр и системных программ, состоящих из отдельных частей, подгружаемых друг за другом. Однако "не было у бабы забот, да купила порося...". С покупкой и установкой дисковода исчезают многие из проблем, связанных с использованием магнитофона, но взамен приходят новые. Ведь дисковод, тем более отечественного производства, и сам далеко не "безгрешен". У него могут быть свои неисправности. Да и дискеты довольно часто подводят. Впрочем, и программное обеспечение на БК тоже иногда оказывается слегка недоработанным. Часто причина этого - небрежность или невнимательность автора, а иногда и "пиратский" способ списывания программ - нередко "по рукам" ходят "сырые" и как следует не проверенные версии. Исходя из сказанного, представляют интерес вопросы хотя бы минимального технического обслуживания дисковода. Важна информация и о существующих сегодня программах Для работы с дисководом, об их преимуществах и недостатках. Обсудим далее, как можно восстановить (полностью или частично) информацию на дискете, потерянную из-за неисправностей дисковода, повреждения дискеты или ошибок в программном обеспечении.
Следует оговориться, что речь пойдет о версиях программ пусть даже более старых, но зато имеющихся у большинства пользователей . Да, новые версии лучше, в них добавлены многие полезные при работе с диском функции. Да, предпочтительней пользоваться самыми свежими версиями... если вам удастся их достать. А пока эти новые версии есть лишь у немногих, они "погоды не делают".
1. Программное обеспечение для работы с дисководом
Оставим в стороне многочисленные варианты подорожечных копировщиков типа DISKCOPY, которых сегодня известно настолько много, что обо всех рассказать просто невозможно, а также разного рода "специфические" программы (делающие диск загрузочным, юстирующие дисковод и т.п.).
Операционная система NORD. Эта Нортон-подобная дисковая операционная система, пришедшая на смену уже известного Нортона-БК и в некоторой степени являющаяся его дальнейшим развитием, была создана А.Г. Прудковским и В. Кобяковым и появилась сравнительно недавно - приблизительно во второй половине 1992 года. Данную операционную систему выгодно отличает более высокое качество исполнения по сравнению со старым Нортоном, возможность создания на дискете подкаталогов и логических дисков, возможность запуска программ на Фокале (ОС NORD сама распознает такие программы и автоматически запускает интерпретатор Фокала), возможность переноса файлов из IBM-подобного формата записи в Нортон-подобный и обратно и существенно возросшая надежность хранения информации на дискете. Последнее объясняется тем, что ОС NORD имеет второй, резервный каталог файлов (подобно дублированию FAT па IBM) и автоматически проверяет запись при копировании файлов командой COPY. Кроме того, в ОС хорошо организован аппарат DEL - файлов и BAD - файлов. Как сама ОС, так и новая версия сквизера автоматически формируют BAD-файлы, закрывающие собой попорченные места. А возникающие при удалении файлов "свободные" участки NORD сразу же задействует для записи файлов, если новый файл подходит по размеру для освободившейся области. Так что во многих случаях отпадает надобность в сквизировании диска или это можно делать значительно реже. Интересным новшеством NORDa является также подгружаемый при работе командный процессор, позволяющий, в частности, реализовать аппарат .ВАТ -файлов. Недостатками ОС NORD являются черты, "унаследованные" от старого Нортона-БК. Это вызывает необходимость все же рано или поздно сквизировать диск, что занимает довольно длительное время, а также невозможность записи измененной версии файла (например, текста после исправления) поверх старой, как в IBM. Кроме того, при копировании файлы обрабатываются частями по 24000 — 25000 (восьм.) байт, что для длинных файлов замедляет процесс копирования, а при наличии одного дисковода увеличивает число "перестановок" дискет. (С другой стороны, такой метод улучшает качество записи, так как проверяется каждый фрагмент файла, и позволяет свободно копировать файлы, по размерам не умещающиеся целиком в память БК, например тексты, подготовленные на IBM.)
Операционная система ANDOS. ОС ANDOS уже известна многим пользователям БК по статье, опубликованной в журнале "Вычислительная техника и ее применение" N4 за 1992 год. Ее главным преимуществом является IBM-подобный формат хранения файлов. Это дает возможность, во-первых, свободно переносить файлы (прежде всего тексты) с БК на IBM и обратно, во-вторых, полностью исключает необходимость сквизирования диска, и в-третьих, за счет использования кластеризации дискового пространства позволяет более гибко работать с файловой информацией (место, освободившееся после удаления файла, полностью доступно для любого нового файла, а также имеется возможность записать измененную версию файла поверх старой, не "плодя" множества копий разной степени свежести). Недостатками общераспространенной версии 2.23 являются малое количество доступных пользователю функций для работы с файлами (нет операции просмотра и редактирования текстов, переименования и т.д.), отсутствие аппарата BAD-кластеров, снижающее надежность хранения информации на дискете, а также закрытость операционной системы от пользователя. Впрочем, в новой версии 2.30, недавно появившейся в продаже, эти недостатки большей частью устранены, а также составлена подробная документация, охватывающая вопросы как использования программных средств (системы и утилит), так и "внутреннего строения" ANDOS.
Программы для форматирования дискет. Любая дискета, прежде чем ее использовать для записи файлов, должна быть отформатирована. Форматирование вообще служит двум целям: во-первых, на дискету наносятся специальные магнитные "метки", обозначающие места расположения начала секторов и дорожек (одновременно производится проверка на сбойные участки дискеты), а во-вторых, происходит стирание всей записанной на диске до форматирования информации. Поэтому дискета должна быть обязательно отформатирована в начале использования, когда она еще только куплена, либо когда необходимо изменить количество дорожек или секторов, а кроме того, полезно заново переформатировать дискету в качестве альтернативы простого стирания всех файлов. На IBM операционная система сразу после форматирования исключает из дискового пространства поврежденные участки, отмечая их в FAT как плохие кластеры (таким образом, блокируется возможность записи на сбойный участок), а на БК, где такая возможность, к сожалению, отсутствует даже в ANDOSe, вы хотя бы будете заранее знать о наличии сбойных участков. Все форматирующие программы выполняют лишь "стандартное" форматирование каждой дорожки на 10 секторов, вызывая для этого прошитую в ПЗУ контроллера подпрограмму и сообщая ей номер дорожки и сторону диска. Примерами являются две форматирующие программы — старая MY-05, которая имеет невысокое качество исполнения, и входящая в комплект ANDOSa программа ANFORMAT. Достоинством программы ANFORMAT является достаточно высокая гибкость в задании параметров дискеты (количество дорожек, одно- или двухстороннее форматирование и т.п.), а недостатком — наличие (по крайней мере, во второй версии, входящей в комплект ANDOS v2.23) невыловленных ошибок. Так, если какую-либо из дорожек приходится форматировать повторно (по результатам проверки качества) более 3 раз, ANFORMAT "забывает" синициализировать дискету, и это приходится делать отдельной командой. А при попытке форматировать на 80-дорожечном дисководе дискету на 360 Кб (с пропуском дорожек) сразу же после форматирования иногда возникают неприятности при контроле качества. Программа " забывает", что имел место пропуск дорожек, и пытается "пропихнуть" головку дисковода дальше возможного. Кроме этих отдельных программ, функции форматирования имеются также в составе ОС Нортон и NORD, и в программе PLUM Disk Tools. Некоторые из форматирующих программ контролируют качество для каждой дорожки в отдельности, как, например, NORD, а некоторые, например все тот же ANFORMAT, контролируют качество форматирования уже по всему диску. Однако так или иначе нужно выбирать для работы форматирующую программу с достаточно надежным контролем качества форматирования, иначе возможны неприятные последствия.
Сквизер диска для ОС NORD SQ18.032eagle. Это — новая версия сквизера, написанная В.Кобяковым для NORDa. Она настроена на NORD-овскую возможность создания подкаталогов, но вполне применима и для дисков в формате старого Нортона. Главное же его преимущество — в значительно расширенном наборе функций для тестирования диска. Например, имеются функции не только тестирования читаемости файлов, но и тестирования свободной области диска, причем все плохие файлы и сектора немедленно помечаются как BAD. Имеется полезная функция тестирования BAD-файлов, что позволяет выделить из занятой длинным файлом, "подпорченным" в одном-двух секторах, остальные сектора, вполне пригодные для записи. Таким образом, при "капитальной" проверке диска следует вначале проверить все файлы на читаемость, затем протестировать свободную область, а затем, если появились BAD-файлы, протестировать их и только после этого сквизировать диск.
Дисковая сервисная программа PLUM Disk Tools. Очень полезная программа, по внешнему исполнению претендующая на схожесть с PC-TOOLS на IBM. Программа содержит функции для форматирования и тестирования дискет с выводом графической "карты диска" (типа MAP в PC-TOOLS), функции для сохранения каталога дискеты на последних дорожках и при необходимости — восстановления испорченного каталога по сохраненной копии. Имеется также весьма важная и удобная функция — Disk Doktor. Функция Disk Doktor производит просмотр всего диска, читая каждую дорожку. Если при чтении очередного сектора возникает ошибка, программа все же пытается считать записанную в нем информацию, а если этого не удается, предлагает пользователю выбор: либо попытаться еще раз считать ошибочный сектор, либо пропустить его и читать следующие, либо "пожертвовать" заодно и содержимым всех последующих секторов на данной дорожке (клавиши R, I или N соответственно). После этого, если зафиксирована ошибка, PLUM Disk Tools форматирует всю дорожку заново и перезаписывает ее с контролем записи. В результате удается по меньшей мере спасти остальные сектора дорожки и ликвидировать саму причину ошибки на диске (как правило, это плохое форматирование секторов на дорожке), а часто позволяет и вообще "вылечить" диск, сохранив всю информацию. Однако есть у программы и недостатки — при возникновении ошибки чтения она просто повторно читает ту же дорожку, не повторяя заново весь процесс позиционирования. На отечественных дисководах большая часть ошибок чтения возникает как раз из-за ошибки позиционирования головки на дорожке, так что правильнее было бы при фиксировании ошибки сначала отвести головку назад на нулевую дорожку и только затем повторить позиционирование и чтение.
PLUM Dir Doktor. По-видимому, более старая версия, позже вошедшая в состав программы Disk Tools. Аналогично действию описанной в предыдущем пункте команды Disk Doktor, программа Dir Doktor пытается считать каталог диска (с 10 по 20 сектор) и затем, в случае фиксации ошибок чтения, заново переформатирует и перезаписывает указанный участок дорожки. Нужно отметить, что и эта, и предыдущая программы PLUM изначально были ориентированы на диски в формате Нортона. Однако каталоги в большинстве форматов записи расположены на нулевой дорожке, и программа Dir Doktor, как и аналогичный ей пункт меню в Disk Tools, может помочь и при работе с ANDOSoм или NORDoм.
Утилиты семейства DESSxx. Это семейство аналогичных по назначению программ разных версий с разными возможностями Наиболее поздней (по дате создания) и наиболее мощной (по своим возможностям) среди известных мне версий является DESS09 (автор М. Королев). Данная программа позволяет выполнять практически все те же действия, что и команда VIEW/EDIT в PC-TOOLS на IBM PC, т. е. позволяет редактировать содержимое физических секторов диска. Редактировать можно как символьное представление записанной в секторе информации, так и непосредственно коды. (В новой версии имеются дополнительные файлы, существенно расширяющие возможности программы.) Программа DESS, весьма полезна при ручном восстановлении испорченных каталогов дисков. Чуть позже мы еще вернемся к этому вопросу. Что же касается правил использования данной программы, наличие достаточно подробной встроенной подсказки (Help) и почти полная аналогичность функционирования уже указанной команде PC-TOOLS дает возможность любому пользователю работать с этой программой практически без подготовки, тем более, если есть опыт работы с PC-TOOLS
Утилиты для создания резервной копии каталога. Идея обеспечения возможности сохранения резервной (страховочной) копии каталога выражена сегодня в большом количестве ее реализаций. Так, в комплекте пакета старого Нортона-БК имелась написанная все тем же В. Кобяковым программа DIRus, сохраняющая все 20 секторов нулевой дорожки в файле с именем /KATALOG. При необходимости та же программа позволяла восстановить по этому файлу испорченное содержимое нулевой дорожки. Однако искать файл /KATALOG приходилось в большинстве случаев вручную (просто заранее записав номер его первого сектора). Дальнейшим развитием DIRus стала программа В. Кобякова SAVER, которая также создает на диске файл-копию нулевой дорожки с именем "Reserve". В отличие от старой версии при повреждений настоящего каталога новая программа сама ищет на диске резервный файл и автоматически восстанавливает каталог. Другие программы сохраняют копию каталога на последних дорожках диска, стараясь при этом не занимать его "полезное" пространство. Но следует предостеречь пользователей: некоторые из таких программ сохраняют копию на 80-й (для дисководов на 360 Кбайт - на 40-й) дорожке, не проверяя при этом, свободна ли она, и никак не отражая факта записи в каталоге. В результате (если диск записан "под завязку") либо копия каталога портит последний файл (файлы), записанный на последней дорожке, либо позже записываемый туда файл затирает страховочную копию. Следует порекомендовать для использования пожалуй лишь программу Dir Keeper (среди наиболее известных), которая сохраняет копию каталога на неиспользуемой обычно 81 (или 41) дорожке. Однако следует учитывать то, что не все типы дисководов позволяют использовать 81 или 41 дорожку, для некоторых дисководов попытка обращения к этим дорожкам приводит к выходу дисковода из строя (магнитная головка начинает биться об корпус).
Вообще говоря, сохранение страховочной копии каталога дискеты — хорошая превентивная мера. Даже при работе с ANDOSoм или NORDoм, которые имеют "штатные" резервные копии FAT и каталога соответственно, желательно делать страховочную копию. Для Нортона же, имеющего каталог "в единственном экземпляре", эта мера совершенно необходимая. Следует также напомнить, что программа Dir Keeper и ей подобные работают непосредственно с физическими секторами дискет и сохраняют всю нулевую дорожку, поэтому они в отличие от SAVERa и DIRusa, настроенных на Нортон-подобный формат записи, могут применяться для любых форматов — и для Нортона (NORDa), и для ANDOSa.
База данных для каталогов дискет. Весьма интересная программа, аналоги которой автору не известны. Программа SКаталогер написана В. Кобяковым и представляет собой фактически многофункциональную базу данных, хранящую на отдельной дискете все каталоги других дискет в формате NORDa (Нортона). После занесения каталога очередной новой дискеты в базу данных (для чего нужно только вставить новую дискету в дисковод и дать соответствующую команду) пользователь получает возможность искать по имени файла (допускается задание шаблона имени) на каких дискетах он имеется (всем дискетам присваиваются метки-имена и порядковые номера), просматривать, какие файлы записаны на данной дискете, и т.п.
Комплект утилит SCREW BK-TOOLS. Разработанные автором утилиты BK-TOOLS представляют собой комплект программ, работающих в среде ANDOS и реализующих многие отсутствующие в оболочке SHELL и в комплекте утилит ANDOSa возможности. В комплект BK-TOOLS на момент написания статьи входят следующие программы:
— GRAPVIEW: просмотр картинок (копий экранного ОЗУ, игровых заставок и т.п.). Можно просматривать картинки, соответствующие копии экрана без использования служебной строки или с ней, просматривать картинки, упакованные программой ВКРАСК17, а также распаковывать упакованные в ВКРАСК17 копии экрана в обычный вид, например для переноса на IBM. Для этого автором написаны программы на языке Borland Turbo-C++, работающие на IBM PC и обеспечивающие преобразование копии экранного ОЗУ в формате БК в графическое изображение в стандарте EGA или VGA.
— GRAPRINT: аналог предыдущей программы, позволяющий сразу же распечатать просматриваемую картинку (как упакованную ВКРАСКом, так и не упакованную) на принтере МС-6312. Печатается весь экран. Размер получаемой "твердой копии" соответствует приблизительно половине листа формата А4.
— TAPEDISK: программа для копирования отдельного файла с ленты на диск и обратно. От стандартного для SHELL процесса копирования отличается тем, что не копирует с ленты случайно попавшиеся "по пути" файлы.
— FILECOPY: производит копирование отдельного файла с Нортон-дискеты на ANDOS-дискету и обратно. Отличается от DISCOP2A тем, что позволяет осуществить двустороннее копирование, а от реализации этой процедуры в NORD'e версии 2.0 тем, что работает без ошибок и не искажает имен файлов.
— DIREKT: в отличие от программы ANDIR, входящей в комплект ANDOSa, сбрасывает каталог дискеты не на принтер, а в файл DIR.TXT. Этот файл можно затем редактировать, переносить на IBM и распечатывать.
— RENAME (2 варианта): переименование файлов. При этом сначала на диск записывается копия файла под новым именем, а затем удаляется старая копия, что значительно увеличивает надежность выполнения операции. Ответив на ANDOSoвскoe сообщение "Удалить?" нажатием клавиши СТОП, можно не удалять старый файл.
— UNTED (3 варианта): преобразование текстов из формата TED6 - TED8 в формат EDASPa. Программа предназначена во-первых, для переноса текстов на IBM, так как утилита CONTXT (автор A.M. Надежин) недостаточно четко обрабатывает TED-тексты; во-вторых, для создания "головного" файла для базы данных BASE.
— IBMREAD: весьма полезная утилита для тех, кто постоянно работает на IBM и имеет дискеты, отформатированные не в ANDOSe. В документации к ANDOSy указано, что "БК не способна работать с дискетами, отформатированными на IBM, по аппаратным причинам". Конкретно причина этого в том, что IBM не ставит заголовок первого сектора на каждой дорожке, позиционируя его "по факту" начала дорожки, тогда как БК требует наличия заголовка для каждого сектора. Программа же IBMREAD позволяет считать с дискеты, ОТФОРМАТИРОВАННОЙ НА IBM(!) на 800 Кб, хотя бы корневой каталог, чтобы просмотреть содержимое дискеты. Программа показывает не только имена файлов, но и их длины, дату и время создания, а также файловые атрибуты. Кроме того, демонстрируются удаленные файлы (синим цветом, с первым символом "х"), чтобы "утерянный" файл можно было найти среди случайно стертых.
— FILMDEMO: демонстратор "рекламных роликов" (копий экрана, упакованных в ВКРАСКе, подгружаемых под музыку один за другим в соответствии с "программным" файлом).
Все перечисленные программы выполнены "в традициях" программного обеспечения для IBM, имеют систему меню, оконный интерфейс и встроенные Неlp-ы.
Утилита DISCOP2A. Эта программа предназначена для копирования файлов из Нортона в ANDOS. Достоинством ее является возможность помечать выбираемые файлы в выдаваемом списке - каталоге содержимого дискеты, что полезно, если имена файлов заранее не известны. Недостатком — отсутствие возможности обратного копирования.
HELP 12. HELP 12 (Н12.2) — это доработанный (для возможности записи на диск) старый HELP7. Программа весьма полезна для перекачки файлов, ранее записанных в виде архива на кассете с помощью HELP7, или наоборот, для создания архива программ, записанных на диске. Однако программа, видимо, из-за ошибок, допущенных при адаптации к диску, часто дает сбои. Так, запись с диска в архив происходит неправильно, и при попытке считать только что записанную программу блоки архива не читаются. Для того чтобы все-таки выполнить запись с диска в архив, можно поступить следующим образом:
Кроме того, нередки ошибки при копировании из архива на диск файлов, начальный адрес которых превышает 1000. Так, попытка поднять из архива текст в формате TED8 портит этот текст. А получить из архива на диск копии экрана и файлы длиной более 37000 и вовсе невозможно.
SCREW FANDOS. Небольшая программа автора, служащая для быстрой установки на БК системы ANDOS вместе с оболочкой SHELL8 из любой другой дисковой операционной системы (например, Нортона). Преимущество такого способа загрузки состоит в том, что нужно считывать только один файл, а не два (саму ОС и оболочку SHELL).
SCREW BACKUP v4.0. Программа автора, позволяющая с помощью ANDOSa переносить тексты программ на Бейсике-БК в виде текстовых файлов на IBM и обратно (некоторые простейшие версии Бейсика-IBM близки к Бейсику-БК, и при работе на IBM отдельные части программы вполне можно отлаживать на БК). Программа позволяет "склеивать" ASC-блоки Бейсик-программы в единый текстовый файл или "разрезать" текстовый листинг на блоки. Наличие встроенного HELPa, меню, оконного интерфейса, и подобных Norton Commandery индикаторов процесса копирования по блокам облегчает работу с программой.
2. Техническое обслуживание дисковода
Пользователи, приобретшие дисководы с рук, должны учесть, что дисковод чаще, всего достаточно долго лежит у прежнего хозяина без всякого ухода. Первое, что следует сделать после покупки дисковода, — это смазать трущиеся части. Смазка должна быть вязкой и желательно химически нейтральной. Годится технический или даже косметический вазелин. Смазку нужно наносить в небольших количествах на направляющие, по которым перемещается головка. Следите, чтобы смазка не попала на другие механизмы. Диск на время смазки нужно вынуть и взамен вставить картонный транспортный вкладыш. Наносите смазку маленькими порциями и вручную немного подвигайте головку по направляющим. Остатки смазки лучше убрать. Полезно также смазать места соприкосновения флажка замка с лицевой панелью.
Второе — очистка головок дисковода с помощью очистного лиска. Это желательно сделать сразу же и позже делать хотя бы раз в несколько месяцев, а при интенсивной работе (например, при форматировании большого количества новых дискет) и чаще. Рекомендуется применять для этой цели чистящие диски типа "Электроника ДО-130". Рабочую поверхность чистящего диска (там, где у нормальной дискеты магнитный слой) слегка пропитайте спиртом или водкой, вставьте диск в дисковод и "отформатируйте" его. Для форматирования используйте программы, проверяющие качество этой операции уже после форматирования всех дорожек диска, например, ANFORMAT. Нужно, чтобы в процессе "форматирования" головка прошлась по чистящему диску от нулевой до последней дорожки.
3. Возможные неисправности дисковода
Как правило, большинство неисправностей, связанных непосредственно с работой дисковода и контроллера, устраняются в специализированных мастерских. Дисковод — сложное устройство, и при попытке исправить какой-либо дефект самостоятельно можно "наломать дров". Поэтому в "домашних" условиях рекомендуем устранять только простейшие неисправности и сбои, и проводить профилактические работы.
Внешние признаки неисправности
|
Наиболее вероятная причина |
Рекомендации по устранению |
---|---|---|
При обращении к диску не загорается индикатор дисковода, не слышно шума вращения привода, не производится чтения файлов |
Нет напряжения питания Нет контакта в разъеме питания |
Проверьте работоспо собность блока питания Проверьте надежность подключения разъема питания |
Файлы не читаются, индикатор не горит, но мотор привода работает |
Неправильно установлена перемычка выбора дисковода Нет контакта в разъемах шлейфа |
Проверьте правильность установки перемычки выбора дисковода (A:, B: и т.д.) Проверьте надежность подключения разъемов шлейфа к дисководу и контроллеру |
Сильный "скрежет" при чтении файлов, записанных на самых "дальних" дорожках |
Нет смазки на "полозьях" направляющих головки |
Смазать дисковод |
Характерный "трущийся" шум при вращении дискеты. Файлы не читаются, хотя индикатор горит |
Неполный прижим дискеты механизмом замка |
Флажок замка дисковода должен быть повернут до упора |
Отдельно следует сказать о возможной неисправности системы защиты дискет от записи. На дисководе может не работать фотоэлектронный блок определения наличия защитной заклейки дискеты, обнаружить же это можно только в процессе работы (например, попытаться отформатировать дискету, записав на нее несколько файлов и заклеив). При других неисправностях рекомендуется обращаться в ремонтные мастерские.
4. Возможные неисправности дискеты и их устранение
Сбои, связанные с "неисправностью" дискеты в целом, можно условно разделить на три группы. Во-первых, это повреждения на "физическом" уровне, связанные с механическим повреждением магнитного слоя дискеты (царапины, задиры и т.д.), делающие принципиально невозможной правильную запись информации на данном месте дискеты и поэтому неустранимые. Во-вторых, это сбои, связанные с ошибками при форматировании секторов или с ошибками в "закрытых" от пользователя служебных зонах, содержащих специальную, используемую только контроллером информацию о секторах. Такие сбои устраняются повторным переформатированием поврежденной дорожки и сопровождаются, как правило, потерей записанной в данном секторе (а то и на всей дорожке) информации. После исправления дефекта на это место можно записать какой-либо другой файл. И в-третьих, это сбои, связанные с нарушением качества записи самой "пользовательской" информации (как правило, неприятности несут так называемые плавающие биты — нестабильно читаемые биты, считываемые то как "1", то как "0"). Кроме того, при чтении/записи могут возникать ошибки, связанные с неправильным позиционированием головки на дорожке дискеты. Такие ошибки устраняются просто при повторном считывании файла и не требуют никаких действий по восстановлению диска. В двух последних случаях можно не только восстановить сбойный участок дискеты для последующего использования, но и попытаться спасти записанную на нем информацию. Для этого предназначена команда программы PLUM Disk Tools "Disk Doktor". Указанная программа просматривает весь диск по дорожкам, пытается в случае ошибки считать максимально возможное количество секторов с поврежденной дорожки, заново переформатирует ее и записывает "спасенные" данные на старое место. Таким образом, удается сохранить информацию хотя бы на других, читаемых секторах дорожки. Если же восстановить дискету не удается, а заново переформатировать всю дорожку нежелательно, нужно хотя бы оставить на поврежденном месте "заплату", переименовав испорченный файл в ".BAD". Теперь нельзя будет испортить файл, записав его на поврежденное место. Кстати, сквизер из комплекта ОС NORD позволяет высвободить для использования неиспорченные сектора, также закрытые .BAD-файлом.
5. Повреждение каталога дискеты
Отдельно следует поговорить о случаях повреждения нулевой дорожки дискеты, на которой записан каталог файлов. Ведь если в других случаях мы теряем один файл, с чем еще можно как-то примириться, то при порче каталога мы теряем практически все файлы, записанные на дискете. Наиболее частыми причинами порчи каталога являются следующие.
В ОС Нортон. Операционная система Нортон имеет каталог в единственном экземпляре. Часто происходит порча каталога при попытке удаления файла или группы файлов с помощью стандартной команды меню Нортона или даже при простом переименовании файла. При этом вместо настоящих имен файлов и данных о них (длина, начальный сектор и т.п.) в каталог записывается всяческий "мусор". Поэтому, если вы работаете исключительно с Нортоном, лучше сохранять каталог с помощью DIRus перед каждой операцией удаления или переименования. Замечено, кстати, что вероятность порчи каталога в этом случае зависит от конкретного экземпляра дисковода, а вот от фирмы-изготовителя дискеты почти не зависит. Замечено также, что запись в Нортоне на дискеты, инициализированные и частично заполненные в NORDe, увеличивает вероятность повреждения каталога, особенно на его участке, сформированном NORDoм. Второй причиной порчи каталога (впрочем, это относится и ко всем другим дисковым системам на БК) является перезапуск БК выключением питания или кнопкой RESET в момент записи файла. При этом БК успевает изменить в отдельно отведенной зоне каталога количество записанных файлов, но не успевает занести в каталог имя файла и информацию о нем. В этом случае можно попытаться с помощью программы редактирования диска DESS восстановить вид каталога, каким он был до неудачной записи на диск (как правило, нужно уменьшить на 1 количество записанных файлов и "обнулить" последнюю запись в списке их имен). Вообще же следует взять за правило: НИКОГДА НЕ ПРЕРЫВАТЬ ОПЕРАЦИЙ ЗАПИСИ НА ДИСК.
В ОС NORD. Вообще говоря, NORD хорошо защищен от сбоев. Он имеет две "штатные" копии каталога, и если первая копия ("основная") почему-либо не читается, считывается вторая ("страховочная") и по ней восстанавливается первая. Однако, и в NORDe возможно "исчезновение" файлов из каталога при "втаскивании" их в создаваемую поддиректорию. Нортон эти файлы "видит", сквизер "видит", а сам NORD не замечает. В этом случае можно попытаться удалить подкаталог, при создании которого потеряны файлы. Как правило, они после этого "проявляются" вновь.
В ОС ANDOS. ANDOS, также как и NORD, хорошо защищен от порчи каталога. По крайней мере FAT, как и на IBM, записана в двух экземплярах. Однако сам список файлов один, и здесь могут быть неприятные сбои. Впрочем, единственный случай, с которым мне приходилось сталкиваться в ANDOSe, был вызван всего-навсего тем, что из-за ошибки в прикладной программе код первого символа имени файла устанавливался при его записи равным нулю. Нулевой код в первой позиции имени файла для ANDOSa — признак конца списка файлов, а в результате создавалось впечатление исчезновения всех файлов, идущих в списке после ошибочного имени. (ANDOS к тому же заносит новое имя прежде всего на место старого, помеченного как "стертый файл".) Все, что при этом требовалось, это заменить злосчастный нулевой код на любой другой. Это можно было сделать с помощью DESS, а при ее отсутствии — считать в DEBUG всю нулевую дорожку, вызвав прошитую в ПЗУ подпрограмму чтения секторов, а после изменения записать ее заново тем же способом. Нужно только помнить, что задаваемый при этом в регистре R3 адрес рабочей области контроллера для ANDOSa равен @#120020 (в противном случае, в том числе и при создании своей копии рабочей области с помощью подпрограммы @#160010 контроллера, возможны сбои при чтении/записи).
Если вы заранее сохранили резервную копию каталога, то вам не страшны большинство из случающихся с каталогом напастей (за исключением того, что после восстановления каталога по его копии вы теряете его часть, сформированную после записи последней копии). Вообще говоря, это очень хорошая превентивная мера, и лучше всего делать несколько копий разными резервирующим программами, размещая копии в разных местах диска, а то и сохраняя их "про запас" на другом диске. Но как быть, если каталог испорчен, а копии нет. В этом случае, конечно, нет гарантии, что все удастся исправить, но имея известный опыт и настойчивость, можно попытаться спасти хотя бы часть утерянной информации.
Подпрограммы ПЗУ контроллера дисковода. В ПЗУ контроллера дисковода имеется ряд подпрограмм, служащих для работы с диском на уровне секторов. Все прочие программы, обеспечивающие чтение/запись файлов или форматирование дискет, обращаются к этим подпрограммам, и знания о них понадобятся вам, особенно если начать писать свои "спасающие" программы.
а) @#160000 — подпрограмма-автозагрузчик операционной системы с загрузочной дискеты. Автоматически ищет загрузочный диск на всех имеющихся дисководах и найдя, загружает. Не требует параметров. Может быть вызвана командой БК-0010 ЕМТ52.
б) @#160004 — подпрограмма чтения/записи секторов (ЕМТ54). Подпрограмме передаются параметры:
Подпрограмма читает или записывает указанное количество двухбайтных слов, начиная с заданных адреса в ОЗУ и сектора на диске. Количество читаемых или записываемых секторов зависит от длины файла (каждый сектор занимает 0.5 Кб или в БКшечном восьмеричном представлении 1000). По результатам чтения устанавливается состояние бита С слова состояния процессора. Если чтение произведено без ошибок, С=0. Если возникла ошибка чтения/записи, С=1 и в ячейке ОЗУ по адресу @#52 находится байт — номер ошибки (коды ошибок восьмеричные):
Код |
Причина ошибки |
Код |
Причина ошибки |
1 |
Запись: диск заклеен; чтение: ошибка контрольной суммы в зоне данных |
6 |
Нет диска или он не вращается |
2 |
Ошибка в заголовке сектора |
7 |
Прерывание по клавише СТОП |
3 |
Нет выхода на 0 дорожку |
10 |
Не найден адресный маркер |
4 |
Ошибка позиционирования |
11 |
Не найден маркер данных |
5 |
Не найден сектор |
12 |
Недопустимые параметры команды или формат диска |
в) @#160010 —подпрограмма создания в ОЗУ и заполнения служебной области для функционирования контроллера и дисковода (рабочей области). Подпрограмма может быть вызвана по ЕМТ56. Параметр: R3 — адрес начала рабочей области в ОЗУ.
В рабочей области записаны данные (указано смещение в байтах от начала, восьм.):
Остальные участки рабочей области являются служебными.
Таблица признаков (смещение 22 от начала рабочей области) содержит четыре байта, соответствующие четырем дисководам. Для каждого из них биты байта таблицы имеют значения:
Остальные биты не используются.
г) @#160012 — подпрограмма форматирования отдельной дорожки диска. В качестве параметра подпрограмме передается в R3 адрес размещения в ОЗУ рабочей области контроллера, в которой, в соответствии с вышеприведенным списком, должны быть указаны номер диска, номер стороны и номер форматируемой дорожки, а также записываемый при форматировании "нулевой код".
Кроме того, имеются две дополнительные подпрограммы, используемые реже названных выше:
(Сведения о подпрограммах приведены для "326" прошивки ПЗУ контроллера.)
Кроме того, чтобы после выполнения операций чтения/записи остановить дисковод, нужно обнулить содержимое служебного регистра контроллера @#177130 (CLR @#177130).
Нортоновский формат записи файлов на диск
В системе Нортон и аналогичных ей (МикроДОС, NORD и т.п.) файлы записываются на диск "потоком", начиная с первого свободного сектора. Удаленный файл продолжает занимать место на диске, пока диск не будет обработан сквизером, и на его место запись нового файла невозможна (кроме NORDa). Если длина файла такова, что последний сектор занят "хвостом" файла не полностью, конец сектора остается пустым и как правило, содержит нули (после сквизирования там может оставаться часть ранее записанного файла). Таким образом, мы можем в случае порчи каталога по наличию пустых ("нулевых") зон в конце сектора с достаточно малой вероятностью ошибки определить конец одного файла и начало следующего. Определив же для каждого файла номер начального сектора и длину в байтах по количеству занимаемых файлом секторов, мы можем занести эти данные в каталог в соответствии с его "стандартом записи". Добавив (по памяти или для первого случая наугад) адрес начала файла в ОЗУ и имя файла, мы можем вручную заполнить каталог правильной информацией и таким образом, восстановить его. После того, как каталог восстановлен, можно подобрать правильные значения имен и начальных адресов программ. Все эти действия удобно производить с помощью программы DESS.
Формат записи Нортон-каталога. Каталог в системе Нортон представляет собой массив информации, хранящийся на диске начиная с 0 сектора и имеющий длину 4000 машинных слов (это значение нужно задать в регистре R1 для чтения с помощью п/пр @#160004). Первая часть этого массива — загрузчик (для системных дискет) либо пустая область (для несистемных). В ячейках области загрузчика со смещением от начала 30 и 32 (восьм.) записаны "общедисковые" параметры: количество записанных на дискету файлов и номер первого свободного сектора. Сам каталог начинается с байта со смещением 500 (восьм.) от начала. Каждый файл занимает в каталоге 30 байт и эти 30 байт соответствуют следующим информационным зонам.
Смещение (восьм.) | Кол-во байт (дес.) | Содержимое |
0 | 2 | Признак статуса файла ("0" - обычный файл, "-1" - удаленный |
2 | 14 | Имя файла (14 символов) |
20 | 2 | Номер начального сектора |
22 | 2 | Кол-во секторов, занимаемое файлом |
26 | 2 | Длина файла в байтах |
После всех записей о файлах идет еще одна запись, как бы "резервирующая" место для будущего файла. Она имеет тот же формат, что и записи для файлов, но все зоны записи заполнены "нулевым кодом", кроме зон со смещением 20 и 22 (восьм.) от начала "хвостовой" записи. В них соответственно записаны скопированные из аналогичных ячеек зоны загрузчика значение номера первого свободного сектора и общее количество оставшихся свободными секторов диска. Именно рассогласованием этих значений с записанными в зоне загрузчика и объясняется ошибка, возникающая в Нортоне при прерывании БК в момент записи.
Восстановление файлов в ANDOSe
К сожалению, в комплекте утилит, поставляемых для ANDOSa версии 2.23, отсутствуют достаточно удобные средства для восстановления диска (FAT по каталогу, каталога по FAT и т.д.) Так что пока нам придется восстанавливать каталоги ANDOSa вручную. В принципе, делается это точно так же, как и для Нортона, но в ANDOSe работу осложняет то обстоятельство, что при длительной и интенсивной работе с дискетой файлы могут оказаться кластеризованными (т.е могут храниться частями в несмежных секторах диска). На ANDOS-дискете принят следующий формат хранения системной информации. Напомню, что в ANDOSe диск разбивается на более "крупные" элементы - кластеры, каждый из которых занимает по четыре сектора. Это сделано для того, чтобы уменьшить объем буфера в оперативной памяти, необходимый для хранения FAT. Кроме того, кластеры нумеруются начиная с 2, где началу кластера 2 соответствует начало 12 (восьмеричное 14) сектора на диске. Для файлов в каталоге указываются номера начальных кластеров, а не секторов.
Номер сектора | Назначение |
0 | Загрузчик |
1-2 | Первая копия FAT |
3-4 | Вторая копия FAT |
5-11 | Каталог |
12-... | Зона данных |
В каталоге каждому файлу отводится по 32 (дес.) байта, соответствующие следующим информационным полям:
N п/п |
Длина |
Назначение |
1 |
11 |
Имя файла и расширение (без точки, дополненные при необходимости пробелами) |
2 |
1 |
Атрибут (не используется) |
3 |
10 |
Резервная зона (не используется) |
4 |
2 |
Адрес начала в ОЗУ |
5 |
2 |
Не используется |
6 |
2 |
Номер первого кластера |
7 |
4 |
Длина в байтах (для БК последние 2 байта не используются) |
Обилие неиспользуемых участков каталога, приводящее к некоторой неэкономичности хранения информации, объясняется необходимостью "подогнать" формат каталога под стандарт IBM.
Учитывая, что файлы в ANDOSe могут быть кластеризованы, а разобраться вручную в структуре FAT очень сложно, рассмотрим только простейший частный случай задачи по восстановлению диска — поиск и восстановление текстовых файлов. Здесь наша задача облегчается тем, что, если мы сумеем считать части текста, соответствующие нужному файлу, можно достаточно легко восстановить весь текст по его содержанию, независимо от того, в каком порядке эти части записаны на диске (т.е. нам не нужно будет обращаться к FAT). Кроме того, текст нетрудно исправить, просто его подредактировав, чего нельзя сказать об исполняемых программах.
Для такой работы автор предлагает программу, написанную на Ассемблере в формате M18. Эта программа, способная работать не только в ANDOSe, но и в Нортоне и прочих дисковых системах, позволяет считывать с диска отдельные сектора и просматривать их содержимое в виде текста (непечатаемые коды заменяются точкой), а при необходимости — записать содержимое сектора на другой диск в виде отдельного файла. Таким образом, после работы с этой программой вы получите ряд файлов, содержащих куски спасаемого текста. Останется только с помощью какого-либо текстового редактора соединить эти части в нужном порядке. Аналогичным образом можно спасать и любые другие файлы, если точно известен порядок следования частей друг за другом и имеется программа, позволяющая объединять несколько файлов в один.
Правила работы с программой восстановления текстов
Сразу же после запуска производится считывание нулевого сектора и его содержимое выводится на экран в текстовом представлении. После этого можно (сменив, если нужно, в дисководе дискету, т.к. программа работает с одним дисководом А:) выполнять следующие действия:
Содержимое секторов записывается в файлы с именами BLOCKxxx.TXT, где ххх - номер по порядку (000, потом 001 и т.д.). При запуске или рестарте программы устанавливается номер файла 000. После нажатия клавиши S на экран выдается сообщение: "Запись в файл. Вставьте другой диск и нажмите любую клавишу.". Диск можно оставить тот же, если есть гарантия, что вновь записываемые файлы не затрут собой спасаемые сектора. После нажатия клавиши на диск записывается очередной файл. После окончания записи нужно еще раз нажать клавишу, чтобы перейти к чтению следующего сектора (предварительно вставьте в дисковод прежний, "спасаемый" диск, если он был заменен).
При нажатии клавиши СТОП выводится еще одно меню команд:
В целом работа с программой очень проста, и после небольшой тренировки вы легко ее освоите.
; Усенков Д.Ю. МОСКВА 1993
; Поиск секторов диска, содержащих текст, и сохранение
; секторов как отдельных файлов.
MOV @#4,STOPP
MOV #NEWSTP,@#4
START: EMT 14
MOV #NEWSTP,@#4
MOV #232, R0
EMT 16
INCRO
EMT 16
CLR BLOCK
MOVB '0',NAMEF+5
MOVB '0',NAMEF+6
MOVB '0',NAMEF+7
REST: MOV #14,R0
EMT 16
MOV #TXTZAG,R1
CLR R2
EMT 20
JSR R7,READBL
MOV #1,R1
MOV #26, R2
EMT 24
MOV #233,R0
EMT 16
MOV #TXTZPR,R1
CLR R2
EMT 20
MOV #233, R0
EMT 16
Rl: EMT 6
BIC #177640, R0
CMPB R0,'B' ; ввод нового номера сектора
BNE Al
INTR1: JSR R7.NOMBLK
BR RETMN
Al: CMPB R0, 'S' ; сохранение сектора в файле
BNE A2
JSR R7,SAVER
EMT 6 ; пауза, чтобы установить прежний диск
INC BLOCK
BR RETMN
A2: CMPB R0,'R' ; читать заново тот же сектор
BNE A3
BR RETMN
A3: CMPB R0,'N' ; следующий сектор
BNE Rl
INC BLOCK
RETMN: MOV #1,R1
MOV #26, R2
EMT 24
MOV #23,R0
EMT 16
BR REST
;
STOPP: .#0
TXTZAG: .A: ___SCREW Sector Upper___
.E
BLOCK: .#0 NAMEF: .A:BLOCKOOO.TXT )
.E
TXTZPR:.A:Your command <Block, Save, Next, Reread, СТОП>:
.E
;
NEWSTP: EMT 14 ; драйвер клавиши СТОП
MOV #NEWSTP,@#4
MOV #232, RO
EMT 16
INC RO
EMT 16
MOV #TXTZAG,R1
CLR R2
EMT 20
MOV #12, RO
EMT 16
EMT 16
MOV #TXTMEN,R1
CLRR2
EMT 20
2: EMT 6
BIG #177640,RO
CMPB RO.'R' ; рестарт программы
BNE 3
JMP START
3: CMPB RO,I ; ввод номера сектора
BEQ INTR1
CMPB RO,'C' ; нулевой сектор
BNE 1
CLR BLOCK
BR RETMN
1: CMPB RO/E' ; выход
BNE 2
EMT 14
MOV STOPP,@#4
HALT
;
TXTMEN:.A: ___Select operation:___
.B:12.B:12
.A: [E] - Exit.
.B:12
.A: [R] - Restart programm.
.B:12
.A: (C] - Clear block number.
.B:12
.A: [I] - Input new block number.
.B:12.B:12
.A: Press selected hot key.
.E
READBL: MQV #10,R5 ; кол-во попыток чтения сектора
MOV #30000,R3
JSR R7,@#160010 ; подготовить рабочую зону диска
CLR @#30034 ; дисковод А:
MOV #3,R2 ' CLR Rl
ЕМТ 24
MOV #TXT1,R1
CLRR2
ЕМТ 20
JSR R7, BLONOM ; вывод номера блока
1: MOV BLOCK,RO
MOV #1000,Rl
MOV #31000,R2 ; буфер текста
MOV #30000,R3 ; рабочая зона
JSR R7,@#160004
BCC OKEY
SOB R5, 1
CLR @# 177130
MOV #2,R1
MOV #10,R2
EMT24
MOV #TXTERR,R1
CLR R2
EMT 20
RTS R7
OKEY: CLR @#177130
MOV #5,R2
CLRR1
EMT 24
MOV #31000,R1
MOV #1000,R2
Bl: MOVB(R1)+,RO
CMPB RO,' '
BLO POINT
CMPB RO.'B'
BLOS TYPE
CMPB R0,#240
BHIS TYPE
POINT: MOV '.',RO
TYPE: EMT 16
SOB R2,B1
RTS R7
;
TXTERR:.A: Disk error !
.E
TXT1: .A:___Text in block
.B:40.E
;
BLONOM: MOV BLOCK,R4 ; вывод номера блока
BIT #100000,R4
BEQ 1$
MOV T,RO
EMT 16
BR2$
1$: MOV '0',R0
EMT 16
2$: MOV #4,R5
MOV #31, RO
3$: EMT 16
SOB R5,3$
MOV #5,R5
4$: MOV R4,RO
BIC #177770,RO
ADD 'O'.RO
EMT 16
MOV #10,RO
EMT 16
EMT 16
ASRR4
ASRR4
ASR R4
SOB R5,4$
MOV #6,R1
MOV #31,RO
6$: EMT 16
SOB Rl,6$
MOV ' ',RO
EMT 16
MOV #3,R1
MOV '-',RO
5$: EMT 16
SOB Rl,5$
RTS R7
;
NOMBLK:MOV #1,R1
MOV #26,R2
EMT 24
MOV #23,RO
EMT 16
MOV #233,RO
EMT 16
MOV #TXT2,R1
CLR R2
EMT 20
MOV #233,RO
EMT 16
JSR R7,@#100472 ; ввод восьм. номера
MOV R5,BLOCK
RTS R7
;
TXT2: .A: Input new number:
:E
;
SAVER: MOV #320,Rl ; сохранение в файле BLOCKxxx.TXT
MOV #2,(R1)+
MOV #31000, (Rl)+
MOV #1000,(R1)+
MOV #NAMEF,RO
MOV #20,R2
1: MOVB (RO)+,(R1)+ ;
SOB R2,1
MOV #2,R1
MOV #20,R2
ЕМТ 24
MOV #233,RO
EMT 16
MOV #TXT3,R1
CLR R2
EMT 20
MOV #233,RO
EMT 16
EMT 6
MOV #320,R1
EMT 36
INCB NAMEF+7
CMPBNAMEF+7,':'
BNE REND
MOVB '0',NAMEF+7
INCB NAMEF+6
CMPB NAMEF+6,':'
BNE REND
MOVB '0',NAMEF+6
INCB NAMEF+5
REND: RTS R7
;
TXT3 .A: I-----------------------------------1
.B:12
.A: | Save this block in file '|
B:12
.A: "| Insert other disk |
.B:12
.A: | and press any key. |
.B:12 -.A: I-----------------------------------1
.B:12
.A:
.E
Распознавание и преобразование в гипертекст: Владислав М. Антонов
2004 г.