Spectrum-совместимые компьютеры «Байт»,«Байт-01» и прочие раритеты

4 / 6 841

Проблемы с совместимостью различных версий систем iS-DOS на файловом уровне

Предполагаю, что пользователь знает хотя бы в минимальном объёме как пользоваться системой iS-DOS (TASiS). Если нет - читайте умные книжки по iS-DOS (они в интернете есть), статьи по использованию iS-DOS в первых номерах журнала ZX-Format, или на худой конец изучите хелпы ко всем программам системы, их пишут не для красоты!

В версиях системы iS-DOS от различных годов может проявляться некоторая несовместимость на файловом уровне. Она проявляется в том, что система одной версии может не "видеть" дискеты от системы другой версии. Это проявляется в виде различных эффектов начиная от банальных ошибок и заканчивая забавными глюками. В этой статье я попробую классифицировать некоторые моменты несовместимости и дать рекомендации что же делать, когда произошла такая беда.

В системе iS-DOS нет чёткой классификации по версиям (версии Chic и Classic сюда не относятся, это по сути разные системы). Принятая нумерация версий скорее условность. Правильнее будет различать системы по дате трансляции ядра системы (файл is_dos.sys). Суть в том, что всеми делами заправляет ядро системы, поэтому нам нужно только оно. Дату трансляции ядра можно посмотреть в программе show.com. Эта программа есть на любом системном диске iS-DOS в каталоге UTIL:

Дата трансляции ядра этой системы 14.10.1999г.

С датой трансляции ядра системы разобрались. Это я к тому, что для определения понятий "старая" и "новая" системы надо сравнивать их по дате. Теперь перехожу к конкретным примерам несовместимости.

Пример №1 - На новой системе пытаемся прочитать дискету со старой системой

Как проявляется: при попытке прочитать из-под более новой системы дискету с более старой системой появляется ошибка №9 ("не iS-DOS диск") и вслед за ней ошибка №87 ("нет устройства").

 

Суть несовместимости: в системе iS-DOS для идентификации, что это устройство именно iS-DOS, служат три байта по смещению +10(dec) от начала самого первого блока на устройстве. Эти байты имеют текстовое значение "DSK". При попытке чтения диска система считывает первый блок и проверяет эти байты на соответствие сигнатуре "DSK". Если там нет требуемых значений, то появляется та самая ошибка №9.

Видно, что по смещению +10(dec) находится "DSK":

Так вот, до 22.01.1997 всё так и было, как описано выше. Однако с указанной даты формат первого блока несколько изменился. Разработчики решили увеличить длину имени устройства с 8 до 11 символов. А так как имя устройства находится в том же первом блоке устройства и как раз перед сигнатурой "DSK", то дополнительные 3 символа имени "налезли" на "DSK". Поэтому сигнатуру сместили на три байта вперёд - по смещению +13(dec), что мы и видим на "новых" системах:

Эта беда решаема. В старой системе после сигнатуры "DSK" зарезервировано целых 5 байт для различных целей. В новой системе три байта из этих пяти заняла перенесенная сигнатура "DSK". Необходимо через дисковый доктор добавить в первый блок устройства старой системы на своё место сигнатуру "DSK", и после этого диск будет читаться в новых системах. Для этого потребуется программа demon.com. Она есть на любой дискете с базовым комплектом iS-DOS. Загружаем программу, нажимаем последовательно два раза CS+C и попадаем в меню выбора устройства:

Выбираем дисковод, куда вставлен диск со старой системой. Система, естественно, не найдёт там устройства iS-DOS, но у дискового доктора есть хорошее свойство - он позволяет читать блоки устройств не iS-DOS, поэтому с легкостью прочтёт нужный блок. Программа выведет меню для уточнения правильности определения формата устройства:

Ничего не меняем и выбираем пункт меню "продолжить". Программа прочитает первый блок устройства:

Нам нужно по смещению +13(dec) вписать сигнатуру "DSK" (подробности работы с программой я описывать не стану - на это есть подробный help к программе, где и без меня красочно расписано как менять байты на диске):

Не забываем сохранить изменения на устройстве:

Выходим из программы, перечитываем диск со старым устройством - и диск распознаётся!

Пример №2 - Снова на новой системе работаем с каталогами старой системы

Гораздо более серьёзен другой аспект несовместимости. Речь идёт о строении каталогов. С 24.12.1996г изменён стандарт описания каталога - уровень вложенности каталога перенесён из 16-го байта описателя файла в 23-й байт, потому что вообще-то 16-й байт является старшим байтом длины файла, и размещение там байта уровня вложенности не есть хорошо. В принципе можно всё оставить как есть, но лучше не нужно.

Одним их характерных признаков при работе новой системы на "старых" каталогах является то, что не сохраняется позиция курсора при возврате на каталог вверх.

Подручными средствами эту проблему решить сложно, но создатели системы пошли навстречу пользователю - написали утилиту new_cats.com. Она сканирует диск и правит описатели каталогов на новый стандарт. При её помощи можно привести в порядок каталоги на диске со "старой" системой. Программа new_cats.com есть на всех дисках с "новой" системой, находится в каталоге SHELL.

 

Естественно, это касается только тех случаев, когда действительно надо работать с диском со старой системой. Специально переводить все "старые" диски на новый формат каталогов не следует, пусть для истории остаётся всё как есть.

Пример №3 - На старой системе пытаемся прочитать дискету со новой системой

Во-первых, "старая" система не найдёт на дискете с "новой" на своём месте сигнатуру "DSK", и ругается ошибками №9 и №87. Тут проблема, обратная описанной ранее. Для её решения делаем то же самое, что и в первом пункте, только сигнатуру "DSK" вставляем по смещению +10(dec) от начала блока. Придётся пожертвовать последними тремя символами (из 11) имени диска - вместо них будет "DSK". Но это не страшно.

А вот из-за изменённого строения каталогов старая система не сможет работать с каталогами новой системы. Для систем от 25.12.1995г мы получим ошибку 223 при открытии каталога от "новой" системы, а для ещё более старых версий системы будем наблюдать забавные глюки.

Сия проблема нерешаема. Единственно, что могу посоветовать - не пользоваться старыми версиями систем iS-DOS. Им место в архиве, для истории. Лучше работать на новых версиях. Там и глюков меньше будет.