Меню сайта
   Главная   
   Обо мне   
   Статьи   
   Дневник   
   Картинки   
   Файлы   
   Форум   
   Гостевая книга   

Категории раздела
Куклы и игрушки [60]
Личное [116]
Музыка [19]
Общее [304]
Японский язык [12]
ZX Spectrum [71]
Субмарины [98]
Настольные игры [34]
Го (碁) [11]
Книги [16]
Япония [26]
Таро [4]
Запертый шкаф [17]
CSA (КША) [15]
GNU/Linux [134]
Ubuntu [103]
Manjaro Linux [40]
Python [3]
Магнитольное [44]
Commodore64 [15]
Игровые приставки [2]


 
Дневник (2015 » Август » 14 в 01:57)
ZX Spectrum iS-DOS: ремонт каталога файловой системы

iS-DOS
Случилась у меня неприятность, попробовал сделать непрерывный каталог SHELL сегментированным, чтобы скопировать туда больше файлов. Но каталог вскоре упал, погребя с собой полсистемы и мой Norton Menu Commander, изменённые файлы которого мне терять совсем бы не хотелось.

Признаки - при открытии диска "С" повреждённый каталог SHELL сперва виден. Но стоит попытаться войти в него, или нажать 6 (переименовать), как на экране появляется абракадабра. Данные описателя не верны..

Поэтому тут я буду разбираться в файловой системе iS-DOS и пытаться его восстановить со всеми данными.
Структура 32х байтовых описателей файлов и каталогов (источник):

+--------+-----+-----------------------------------------------+
|СМЕЩЕНИЕ|ДЛИНА|ОПИСАНИЕ                                       |
+--------+-----+-----------------------------------------------+
|0       |8    |Имя файла                                      |
|8       |3    |Тип файла                                      |
|11      |1    |Регистр состояния файла:                       |
|        |     |бит (0/1)                                      |
|        |     |0 - удалён/существует                          |
|        |     |2 - защищён от чтения (1)                      |
|        |     |3 - защищён от записи (1)                      |
|        |     |4 - видимый/скрытый файл                       |
|        |     |5 - файл/каталог (корневой файл)               |
|        |     |6 - сегментированный/несегментированный        |
|        |     |7 - защищён от удаления (1)                    |
|12      |2    |Адрес загрузки по умолчанию                    |
|14      |3    |Длина                                          |
|17      |2    |Номер Блока Описателя Сегмента или 0-го блока  |
|        |     |файла - если файл непрерывен                   |
|19      |1    |"Special"                                      |
|20      |6    |Резерв                                         |
|26      |2    |Контрольная сумма файла                        |
|28      |2    |Время                                          |
|30      |2    |Дата                                           |
+--------+-----+-----------------------------------------------+
   Дата и время кодируются,как в MS-DOS. Контрольная сумма, воз-
можно, тоже.
   Вот что известно про описатель внутреннего каталога:
+--------+-----+-----------------------------------------------+
|СМЕЩЕНИЕ|ДЛИНА|ОПИСАНИЕ                                       |
+--------+-----+-----------------------------------------------+
|0       |8    |Имя текущего каталога.                         |
|8       |3    |Его тип (пробелы).                             |
|11      |1    |CSR (атрибуты ???) каталога.                   |
|12      |2    |CBNN (похоже, начальный блок) каталога -       |
|        |     |прародителя.                                   |
|14      |2    |Размер каталога (в байтах).                    |
|16      |1    |Уровень вложенности каталога (до 6)            |
|        |     | [или 0 для iS-DOS 2000].                      |
|17      |2    |Номер блока описателя сегмента. (Это интересно.|
|        |     |Каталог может быть непрерывным, тогда здесь    |
|        |     |может быть и номер первого блока. Но тогда для |
|        |     |определения в CSR должны быть биты состояния.) |
|19      |2    |Номер 0-го блока каталога (это тогда зачем|).  |
|21      |1    |Общее число файлов.                            |
|        |     |(включая сам каталог и удалённые).             |
|22      |1    |Число файлов                                   |
|        |     |(без каталога и удалённых).                    |
+--------+-----+-----------------------------------------------+
   Ред.: Структура  каталогов на дисках iS-DOS поздних версий (к
ним относятся "Open Letters" ) несколько изменилась. Плагин xISD
HalfElf'а  к  Far'у  понимает  "новый" iS-DOS (2000) и позволяет
копировать с/на него файлы. Дополнение по исходникам xISD:
|23      |1    |levelChic (уровень вложенности каталогов до 32)|
|24      |6    |Резерв.                                        |
|30      |2    |Дата.                                          |
+--------+-----+-----------------------------------------------+
Цитата из А. Леонтьева: "24.12.96  уровень  вложенности каталога
перенесен из 16-го байта описателя файла в 23-ий,т.к.16-ый байт,
строго говоря, является старшим байтом длины файла и, хотя ката-
логи и не бывают длиной более 16 блоков, но при отладке программ
бывали случаи,когда это совмещение изрядно вредило. <...> в ста-
рой системе  через открытый как файл каталог становятся доступны
для  чтения и, что самое страшное, для записи блоки, находящиеся
далеко за пределами каталога!"


Вот мой потерянный главным каталогом каталог SHELL, с абсолютным смещением 35 блоков по адресу #2380:


Я так полагаю, надо что-то вписать в описатель SHELL корневого каталога? Вот пока не очень получается..

А вот для примера исправный каталог МОИ_ДОК. Описатели из корневого и самого каталога:




Как восстановить каталог SHELL?

Добавлено позже ночью:

Удалось починить путем замены в описателе бита 6 - сегментированный/несегментированный каталог. С #21 на #61. Как я понял, при изменении каталога на сегментированный бит изменился, а каталог остался непрерывным, отсюда и ошибка.
Категория: ZX Spectrum | Просмотров: 1182 | Добавил: harushima | Рейтинг: 0.0/0 |
Всего комментариев: 0.
В целях защиты от спама, добавлять комментарии могут только зарегистрированные пользователи. Если Вы не хотите регистрироваться под своим именем, войдите под логином: anonymous, паролем: anonymous.   ( Регистрация,   Вход).
Авторизация
Анонимный вход:
anonymous / anonymous

Календарь
«  Август 2015  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31

Поиск

Облако тэгов
JGSDF игрушки Брюнетки Кладбище сайты Ярость Дракулы Древний Египет девушки кошки Cthulhu Вампиры Kitsune Ужас Аркхема инструмент комиксы Lovecraft готика Submarine submarine rc toy Hosting игротека Ужас Аркхэма book uboat мобильная связь го Edgar Poe swf Mansions of Madness Nightmares персоны Synergy linux-hardware bash youtube Storages Python Мастер-рукожоп Магнитофоны Entropy Grub2 loglevel WiFi Beeline ОПСОСЫ sharp939 Аудиокассеты Windows linuxwork Хочуны ImageMagick топБарыг C64c Commodore

Статистика
Яндекс.Метрика
Онлайн всего: 9
Гостей: 8
Пользователей: 1
harushima

Page QR code


Перепечатка материалов сайта без активной ссылки запрещена. Следить за RSS
(c) hermitlair.ucoz.com 2009-2024
Лучший браузер!
Блокировка рекламы