1

Тема: Диски ОС Спрайт

Я неспешно делаю утилиту работы с дисками для Агата. Сейчас она умеет читать DSK 140, 840 с файлами DOS33 и ОС Спрайт. Пишет DSK, NIC, NIB, HFE. Файлы пока можно только смотреть, добавление/удаление в процессе.

Возник такой вопрос относительно ОС Спрайт. В ней, насколько я понимаю, нестандартные первые две дорожки с системой. Если сейчас создать HFE-файл обычным образом, то загрузка работать не будет. Там, как я понял, данные зашифрованы (что некритично) плюс нестандартные CRC у некоторых секторов (что критично).

Так вот вопрос, если взять эталонный диск ОС Спрайт в формате AIM или HFE и вставлять первые две дорожки из него неизменными, а с остальным уже работать обычным образом, то пройдет ли такой трюк? Получится ли рабочий диск?

Post's attachments

Attachment icon DISKCommander_9qbPsCuLP9.png 85.59 kb, 4 downloads since 2025-02-05 

2 Отредактировано Voldemar0 (09-02-2025 10:33)

Re: Диски ОС Спрайт

Со спрайтом две тонкости:

1) Номера томов во всех адресных полях должны быть определёнными и совпадать со значением байта из сектора 0/0, смещение 4. Я не знаю точно, как используется эта штука операционкой, возможно так же, как задумывалось в dos3.3: т.е. если том в адресном поле не совпадает с ожидаемым, значит пользователь сменил диск и нужно сказать ему, чтобы вернул всё обратно (в ситуации, когда есть открытые файлы на этом диске!).

Это не защита от копирования, просто особенность ОС. Проверка делается при загрузке ОС, но, возможно, и при работе прог.


2) И для загрузочного диска есть правило (не во всех версиях ОС!):

if ((t = 0) and (s >= 16)) or ((t = 1) and (s <=  8)) XOR_CRC() else GENERIC_CRC().

Т.е. контрольная сумма для этих секторов считается не суммированием, а Исключающим ИЛИ по всем 256 байтам поля данных.

--

Как синтезировать диск - дело хозяйское, зависит от задачи.

-- Если есть aim и нужно внести поправки в него, то логичнее не трогать адресные поля, а переписывать только поля данных изменяемых файлов. Тогда область загрузки гарантированно сохраняется.

-- Если есть dsk и нужно создать aim (или hfe...) то придётся вникать в номер версии операционки и использовать при синтезе только п1 (для версий до 1.5) или п1 и п2 (для версий после и включая 1.5, но это не точно).

--

Насчёт шифрования данных не припомню такого, но точно помню, что там была мощная обфускация кода. Прямо начиная с загрузчика. Со всеми прелестями вроде исполнения команд, размещённых на стеке и прочих игр, усложняющих изучение исполняющегося кода в сисмоне. Но это, действительно, не имеет значения, так как расшифровка не требует каких-то особых свойств от записи на диске (что, пожалуй, даже странно).

--

> Так вот вопрос, если взять эталонный диск ОС Спрайт в формате AIM или HFE и вставлять первые две дорожки из него неизменными, а с остальным уже работать обычным образом, то пройдет ли такой трюк? Получится ли рабочий диск?

Должен получится, если не забывать про п1.

Только сколько придётся тогда собрать эталонных дисков ?
Есть несколько версий Спрайт под девятку и никакой информации об их совместимости с различным ПО.
Возможно, есть версии под семёрку.

3 Отредактировано ptr314 (10-02-2025 14:38)

Re: Диски ОС Спрайт

Я хочу сделать универсальную программу, поэтому любой файл сначала преобразуется, по сути, в dsk, потом идет работа с файловой системой, далее экспорт в нужный формат.

В этой модели мне бы не хотелось повторно реализовывать все эти заморочки, поэтому я вижу выход в использовании первых двух треков рабочих дисков. Сколько всего работающих версий Спрайт? Неужели прям так много? Ну и при использовании утилиты, мне кажется, нагенерить дисков и протестировать их будет не особо сложно, по крайней мере, для основного ПО.

Нюанс с номерами томов учту, спасибо.

4 Отредактировано Voldemar0 (11-02-2025 06:15)

Re: Диски ОС Спрайт

> поэтому любой файл сначала преобразуется, по сути, в dsk,

Но он же преобразуется из чего-то ?
В чём уже должны быть эти первые треки.


> Сколько всего работающих версий Спрайт?

Их счётное количество и сейчас мы имеем штук 5, но проблема в том, что их больше одной.

1) нужно будет выбрать какую-то конкретную, но как выбрать ?
2) у нас разбор даже имеющихся коллекций не закончен, кто знает сколько их ещё найдётся.