PDA

Просмотр полной версии : TR-DOS-загрузчик и более 255 секторов



TomCaT
10.01.2010, 14:49
Прочитав тут (http://zx.pk.ru/showpost.php?p=247267&postcount=635), задумался, как все-таки правильно должен поступать загрузчик, если ему нужно работать с более, чем 255 секторами.

Понятно, если секторов меньше 256, данные в TR-DOS-файловой системе можно объединить в файл <B> соответствующих размеров, и этот файл лего копировать и даже переименовывать, потому что при загрузке и запуске указатель дорожки-сектора 5CF4 уже находится внутри этого единственного файла, и все места данных поэтому легко вычисляются загрузчиком.

Если данных больше 255 секторов - то вынуждена разбивка на несколько файлов, один из которых <B>, содержащий загрузчик. При запуске загрузчика по 5CF4 ему известны все места данных из этого же файла загрузчика. Но как правильно поступать с выяснением мест остальных файлов?

Представляется несколько вариантов:
1. Фиксированный порядок без проверок - загрузчик предполагает определенный порядок следования файлов (часто идущих сразу за <B> файлом, имеющих одинаковое с ним имя, но написанное строчными буквами и с цифрой, указывающей порядок).
+++: крайне прост в реализации, минимальная длина загрузчика, независимость от имен файлов (их можно переименовывать, но сохраняя порядок следования).
---: отсутствие "защиты от дурака", нарушение порядка пользователем при копировании или еще из-за чего нибудь, обычно приводит к сбросам, а теоретически - может привести и к худшим последствиям, вроде порчи дискеты ("дискетная порча" :) ).

2. Фиксированный порядок с проверкой порядка имен файлов перед загрузкой - как в (1), но в любом месте до обращения к дополнительным файлам (чем раньше, тем лучше) загрузчик проверяет порядок их следования. При неправильном порядке выводит предупреждение о невозможности загрузки и подсказку о нужном порядке файлов.
+++: достаточно простая реализация, защита от неправильного порядка файлов.
---: в случае нарушения порядка продолжение загрузки невозможно, необходимость приведения файлов в правильный порядок вызывает неудобства, зависимость от имен всех файлов, кроме <B>.

3. Фиксированный порядок с проверкой порядка файлов перед загрузкой по различным их признакам - как в (2), но загрузчик проводит проверку наличия файлов по различным признакам (проверяются только файлы, следующие за <B>-файлом, по полям имени-типа, полям старт-длина в заголовке, контрольной сумме или хэш коду...). Может проверяться один или несколько признаков, но не только лишь "имя-тип" (как было в (2) ).
Если проверяется 1 признак, загрузчик проверяет только наличие-отсутствие файла, при отсутствии выдает соотв. сообщение (хотя 1 признака явно мало, например, странное выходит сообщение "не найден файл с контрольной суммой такой-то" - ведь имя его не проверяется).
Если проверяется несколько признаков, и имя в том числе, то загрузчик принимает решение о том, нужный ли это файл или какой-то случайно похожий, автоматически - и тогда либо грузит данные, либо выдает сообщение (в котором можно указать и имя файла + требуемые его признаки).
+++: защита от неправильного порядка файлов, независимость от имен файлов.
---: несколько сложный загрузчик, проверки занимают время и требуют "езды по диску", в случае нарушения порядка продолжение загрузки невозможно, необходимость приведения файлов в правильный порядок вызывает неудобства, проверки содержимого и других частей файла, кроме имени, осложняют модификацию файлов.

4. Произвольный порядок с проверкой имен файлов перед загрузкой - как в (2), но загрузчик проверяет не порядок следования определенных имен файлов, а только наличие файлов с данными именами на диске. При успешной проверке расположение файлов запоминается загрузчиком (в таблице, или вписываются в нужные места кода). Загрузчик выдает предупреждение о не найденных файлах.
+++: независимость от порядка файлов.
---: несколько сложный загрузчик, зависимость от имен всех файлов, кроме <B>.

5. Произвольный порядок с поиском файлов по различным признакам - как в (3), но загрузчик сперва проверяет файлы с заданными именами, а затем ищет недостающие файлы с похожими другими признаками по всему диску. Загрузчик может спросить пользователя, принять ли "похожий" на нужный файл как свой, но переименованный. Правда, в этом случае такой вопрос будет задаваться при каждой загрузке. Или загрузчик должен сам переименовать файл или "запомнить" на будущее его новое имя (в обоих вариантах загрузчик должен писать на дискету).
+++: независимость от порядка файлов, независимость от имен файлов.
---: очень сложной и объемистый загрузчик, проверки могут занять много времени и "заелозить" дискету, проверки содержимого и других частей файла, кроме имени, осложняют модификацию файлов.

Так как вариантов не очень много, интересно было бы узнать мнение общественности...

psb
10.01.2010, 15:57
вариант 1. не надо придумывать лишние сложности. если спортивный интерес (как например экономия места в остатке секторов) - другое дело.

Orionsoft
10.01.2010, 16:03
всё от наличия свободного места в памяти завист . это если адаптация .
а если свой код - то делай как считаешь правельным . Дискета не за елозится.
А от звуков дисковода все получают эстетичкое удовольствие ..

TomCaT
10.01.2010, 17:07
:)


а если свой код - то делай как считаешь правельным . Дискета не за елозится.

смотря какая дискета и какой дисковод, особенно при пятом способе

Shadow Maker
10.01.2010, 17:47
Располагаем все друг за другом и всё. Не понимаю эстетства, ты чего, одну игру раскидаешь по разным дискам чтоли, чтобы подольше грузить? Не надо изобретать велосипед, всё давно придумано :)

null_device
10.01.2010, 17:51
А еще, можно чекалку-ресторилку вонзить, для восстановления испорченых участков диска. Или как в УФОшке продублировать данные. Или все данные по риду-соломону, чтобы уж наверняка.:v2_wink2:
------------------------------
Желателен, более "интиллектуальный" загрузчик и вместе с тем простой и короткий. Максимально не требующий вмешательства извне. Как вариант: приложение к игре файла *.txt с порядком расположения частей. Мануал и FAQ, т.с.:v2_confu:

psb
10.01.2010, 18:06
А еще, можно чекалку-ресторилку вонзить, для восстановления испорченых участков диска.
нельзя.

TomCaT
10.01.2010, 18:17
Располагаем все друг за другом и всё. Не понимаю эстетства, ты чего, одну игру раскидаешь по разным дискам чтоли, чтобы подольше грузить?

Странно тогда, почему за фиксированный порядок никто не голосует? Ради Юмора :) ?

Про разные диски, кстати, речь и не шла. При копировании файлы можно потерять, недокопировать, или скопировать не в том порядке. Конечно, это редкий случай, когда файлы игры лежат в перемежку с файлами другой программы, не подряд. Но даже когда подряд, три файла игры можно расположить 6-ю способами. Иногда встречалось - сперва кодовые блоки, а потом Бэйсик-файл...

Особенно с нынешней модой давать кодовым файлам странные имена. Сам так начал грешить. Вот, например, Dizzy S.A.C.K. - там имена файлов вообще как одна длинная строка в 8*n символов. Перепутать - можно, а что из этого выйдет при загрузке?