ZX Review
#1-2
31 декабря 1996 |
|
Читатель-читателю - Востановление утерянной информации.
А.Шуравин, г.Воткинск ВОССТАНОВЛЕНИЕ УТЕРЯННОЙ ИНФОРМАЦИИ. Хотя и не часто, но случается, что ценные данные, доставшиеся пользователям ЭВМ с большим трудом, утеряны. Обидно! Но все-же, так ли уж безвыходно положение? Рассмотрим несколько случаев повреждения информации. 1. Случайное стирание файла. Это самое безобидное явление, если Вы, конечно, не сделали ко манду MOVE. Дело в том, что в отличие от системы MS-DOS, в TR-DOS файлы не фрагментированы, и поэтому стоят строго друг за другом. Так что, при удалении файла на диске останется незанятое место, которое заполнено содержимым стертого файла. Файл никуда не девался. Однако, по команде САТ или LIST Вы его не увидите. Что же произошло? Сотрем файл, например, t13++ <C>. Просмотрите в каком-нибудь диск-докторе содержание первых восьми секторов системного (нулевого) трека. Вы сможете увидать примерно такую картину: 54 4C 57 2E 52 42 54 20 TLW.RBT 42 AE 02 92 02 03 0E 03 B 01 6C 33 2B 2B 20 20 20 13++ 43 86 BB 7A 44 45 0F 03 C zDE Как видим, первый символ файла t13++ оказался замененный кодом 01 (если файл последний, то символ заменяется кодом 00 - конец каталога). То есть, чтобы восстановить его, нужно просто исправить этот код. И байт номер 244 восьмого логического сектора системного трека уменьшить на единицу (здесь хранится информация о количестве удаленных файлов ). В случае, когда файл оказался последним, сложнее. Тогда придется исправить байты 225, 226 - номер первого свободного сектора дорожки; 228 - количество файлов на диске, и 229, 230 - количество свободных секторов. Для этого необходимо знать структуру заголовка файла: Структура заголовка файла ┌───────────┬──────────────────────────────────────────────┐ │ БАЙТЫ │ НАЗНАЧЕНИЕ │ │ │ │ ├───────────┼──────────────────────────────────────────────┤ │ 0...7 │ ИМЯ ФАЙЛА ( 8 СИМВОЛОВ ) │ │ 8 │ ТИП ФАЙЛА ( B, C, D, # ) │ │ 9 - 10 │ АДРЕС НАЧАЛА ФАЙЛА │ │ 11 - 12 │ ДЛИНА ФАЙЛА │ │ 13 │ КОЛИЧЕСТВО СЕКТОРОВ │ │ 14 - 15 │ СЕКТОР / ТРЕК НАЧАЛА ФАЙЛА │ │ │ │ └───────────┴──────────────────────────────────────────────┘ Есть и более быстрый способ восстановить стертый файл - воспользоваться программой CONVER COMMANDER, которая позволяет видеть удаленные файлы в файловой панели. Для их восстановления просто переименуйте файл, подведя к нему курсор и нажав вместе CAPS SHIFT и SYMBOL SHIFT, выбрать пункт меню "переименовать". При включенном режиме "+del файлы" стертые файлы начинаются с красного знака вопроса. 2. Порча системной дорожки. В этом случае можно поступить двумя способами. Или найти где на диске размещены данные файлы и скопировать их, или попытаться восстановить системный трек. Последнее, к сожалению, не всегда возможно. Несколько советов тем, кто пользуется первым способом. 1. Начните с текстовых файлов. Их найти гораздо легче. 2. Файлы формата GENS обычно начинаются с ORG. 3. Если Вы ищите BASIC - файлы, то обращайте внимание на номера строк. которые имеют такой вид: 1 байт - номер строки/256 2 байт - остаток от деления на 256. 4. Скопировать файл Вам поможет следующая программа: LD DE,#NNNN; NNNN - НОМЕР ТРЕКА (СТАРШИЙ РАЗРЯД), НОМЕР СЕКТОРА НАЧАЛА ФАЙЛА LD HL,50000 LD BC,#NN05; ГДЕ NN - КОЛИЧЕСТВО СЕКТОРОВ ФАЙЛА LD A,255 CALL 15635 RET После ее запуска Вам следует войти в TR DOS и дать следующую команду: SAVE "FILENAME"CODE START, LENGHT, где FILENAME - имя вновь созданного файла, START - адрес начала файла (в данном случае 50000), LENGHT - длина файла. Если Вам необходимо восстановить файл BASICа, данных или ВВОДА/ВЫВОДА, то поменяйте расширение при помощи диск-доктора. Если Вам не понятен смысл этих закорючек, то наберите в BASICе следующие строки: 10 DATA 17,N1,N2,33.80,195,1,5,N3,62,255,205,19,61,201 20 FOR I=0 TO 14: READ A: POKE (50000 + I),A:NEXT I 30 RANDOMIZE USR 50000 и запустите программу командой RUN. Вместо N1 следует подставить номер сектора, N2 - номер трека, N3 - количество секторов в файле. Восстановить саму системную дорожку зачастую бывает сложнее. Если имеет место порча ДЕВЯТОГО физического сектора, то при его восстановлении можно воспользоваться таблицей: Структура 9-го физического сектора системного трека. ┌───────────────────┬───────────────────────────────────────┐ │ номер байта │ назначение │ │ │ │ ├───────────────────┼───────────────────────────────────────┤ │ 225 │ номер первого свободного сектора │ │ 226 │ номер первой свободной дорожки │ │ 227 │ тип диска #16 - двусторонний, │ │ │ #18 - односторонний │ │ 228 │ количество файлов на диске │ │ 229,230 │ количество свободных секторов │ │ 231 │ количество секторов в дорожке, │ │ │ всегда 16 │ │ 232,233 │ #00 │ │ 234...242 │ #20 │ │ 243 │ #00 │ │ 244 │ количество стертых файлов │ │ 245...252 │ имя диска ( 8 символов ) │ └───────────────────┴───────────────────────────────────────┘ Впрочем, системная дорожка занимает всего 2 килобайта, так что не будет расточительстом сохранить ее где-нибудь в свбодном месте, например, на 160 физическом треке. Это можно сделать, набрав в каком-нибудь ассемблере такую программу: LD HL,50000 LD DE,0 LD BC,#905 LD A,255 CALL 15635 LD HL,50000 LD DE,#9F07 LD BC,#906 XOR A CALL 15635 RET Восстановить сохраненную системную дорожку можно при помощи такой программы: LD HL,50000 LD DE,#907 LD BC,#906 XOR A CALL 15635 LD HL,50000 LD DE,0 LD BC,#905 LD A,255 CALL 15635 RET На бейсике они будут выглядеть вот так: 10 DATA 33,80,195,17,0,0,1,5,9,62,255,205,19,61,33,80,195,17 20 DATA 7,159,1,6,9,175,201 20 FOR I=0 TO 24: READ A: POKE (50000+I),A: NEXT I 30 RANDOMIZE USR 15619: REM: SAVE "MIRROR" CODE 50000,100 10 DATA 33,80,195,17,7,159,1,6,9,175,205,19,61,33,80,195,17 20 DATA 0,0,1,5,9,62,255,201 20 FOR I=0 TO 24: READ A: POKE (50000+I),A: NEXT I 30 RANDOMIZE USR 50000 Чтобы автоматически сохранять системную дорожку, создайте файл объектного кода MIRROR, и переименовав фойл boot в BOOT, создайте новый файл автозагрузки: 10 RANDOMIZE USR 15619: REM: LOAD "MIRROR" CODE 50000 20 RANDOMIZE USR 50000 30 RANDOMIZE USR 15619: REM: RUN "BOOT" набрав в TR DOS команду SAVE "boot". 3. Порча отдельного сектора. Здесь Вас может выручить разве что специальная программа восстановления размагниченных секторов (принцип: считать, отформатировать, записать). Такую возможность имеют утилиты типа FUT, ADS, DCU. Это, к сожалению, не всегда помогает, поэтому всегда желательно делать хотя бы раз в неделю копию файлов, над которыми Вы работаете. Иногда такое копирование лучше делать несколько раз в день: никто не гарантирует, что в процессе работы не может произойти сбой, в результате которого испортится диск. Бывают случаи, когда не читается сектор системного трека. Тогда, если Вы воспользовались рекомендациями n2, сохранив системную дорожку на 160 физическом треке, просто скопируйте весь диск посекторным копировщиком типа D-D FULL COPY, игнорируя копирование запорченного сектора, а затем восстановите системный трек. И, самое главное, не ленитесь делать резервные копии! Это сэкономит Ваши время и нервы.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября