ZX Review #1-2
31 декабря 1996

Читатель-читателю - Востановление утерянной информации.

<b>Читатель-читателю</b> - Востановление утерянной информации.
А.Шуравин, г.Воткинск

          ВОССТАНОВЛЕНИЕ   УТЕРЯННОЙ   ИНФОРМАЦИИ.

   Хотя и не часто, но случается, что ценные данные, доставшиеся
пользователям ЭВМ с большим трудом, утеряны. Обидно!  Но все-же,
так ли уж безвыходно положение?  Рассмотрим несколько случаев повреждения 
информации.

          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, игнорируя копирование запорченного сектора, а затем восстановите 
системный трек.
   И, самое главное, не ленитесь делать резервные копии! 
   Это сэкономит Ваши время и нервы. 




Другие статьи номера:

Визитная карточка - обзор электронных журналов для ZX Spectrum.

Компьютерная новелла - По игре " The Saga"

Компьютеры, которые мы выбираем - Доработка компьютера "ATM-TURBO".

Спектрум в школе - статья о численных методах "Метод Зейделя решения СЛАУ".

Вступление - приветствие от редакции журнала.

Новые программы - копировщик ABCDcopy и утилита для форматирования гибких дисков Floppy Format.

Форум - вопросы и ответы по играм: Jungle Warrior, Buratino, Streaker, Paris Dakar, Bloodwych, Hero Quest, Apollo, Cliff Hanger, Cyber Hordes, Paradise Valley, Star Drive, Laser Platoon, Movie, Where Time Stood Still, The Sceptre, Carrier Command и т.д.

Советы экспертов - по стратегической игре Wellingsto at Waterloo.

Советы экспертов - по стратегической игре Napoleon.

Советы экспертов - по игре Star Fox.

Перекресток драконов - Dungeons & Dragons (первая глава книги об адвентюрных играх).

TR-DOS для начинающих - 5-я глава книги "Общие сведения по дисковой системе ТР ДОС".

Возвращаясь к напечатанному - последний файл диззасемблера TR-DOS.

Читатель-читателю - О железе, софте и прочем компьютера Profi...

Читатель-читателю - Востановление утерянной информации.

Читатель-читателю - Спектрум и Экспертная система.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Говорят дети - 13 фенечек...
Zoom - новости: создатели газеты Абзац делают игру, Phantom Family cвалили на pc, новый состав группы 4D, Вячеслав Медноногов потерян для спектрума окончательно, Davos забил на спектрум, Lynx работает над HTML вьювером, у группы Sage "полный негативизм", Kvazar прекращает выпуск газеты "Полесье" и т.д.
Спекутрум изнутри - логические элементы.
Вступление - Беларусские новости из мира Спектрума.
Программистам - The hacker club: Mortal combat описание жащиты.

В этот день...   18 апреля