У меня как раз "более общий случай".
128 - маловато, ну пусть будет столько. Файлы предполагалось маленькие, в пределах 1-1,5 кБ. Хотя если всего 128 штук - ну тогда ~3-5кБ.
Хорошо. Попробую разобраться с чтением каталога.
Вид для печати
У меня как раз "более общий случай".
128 - маловато, ну пусть будет столько. Файлы предполагалось маленькие, в пределах 1-1,5 кБ. Хотя если всего 128 штук - ну тогда ~3-5кБ.
Хорошо. Попробую разобраться с чтением каталога.
Ничто не мешает хранить данные на диске и грузить последовательно. Хоть 120 файлов, хоть 400 "файлов", для последовательной загрузки это значения не имеет.
Просто берется номер следующих сектора/трека из #5CF4 и все. Как же записать 400 штук? Да аналогично, последовательно отгружать на диск.
Главное, чтобы общий объем файлов программы совпадал с ее размером, и если это больше 255 секторов (что очевидно) - ее файлы должны лежать друг за другом.
Если же планируется непоследовательная загрузка (или запись) из программы - без таблицы смещений уже не обойтись.
Либо, если все блоки будут одного размера (скажем, 2Кб), то и таблицы не надо. Сдвигом регистров устанавливаем смещение от начала и плюсуем стартовое.
Не нужна таблица смещений. Нужен только размер каждого файла и всё (но да, таблица размеров файлов нужна), файлы лежат последовательно, поэтому достаточно сложить размеры всех предыдущих (предположим размер в секторах, ну и в байтах там разницы почти никакой) с трек-сектором из #5cf4 и загрузить.
Если бы размер файлов был одинаковый, либо была бы таблица с размерами, то такого вопроса и не возникло.
Ну так-то и правильно, 32-битные системы отжили свое. В 64-битных системах по умолчанию 64-битный unixtime и там 292 миллиарда лет - хватит небось, там по гипотезам ученых уже через миллиард лет Солнце погаснет :)
- - - Добавлено - - -
Ну так почему не сделать таблицу с размерами при записи файлов? Раз их количество превышает размер каталога. Кстати там еще свободное место в нулевом треке с 10 по 15 сектора, туда тоже можно накидать дескрипторов файлов. В общем какие-то надуманные проблемы. И кстати у автора вопрос возник, ты ему сказал. что максимум 128 файлов, что не является истиной, этот момент и разъяснили, как именно с файлами работать без каталога.
Может поэтому
А вообще не зная цели загрузки такого количества файлов, и их происхождения, трудно предложить что-то оптимальное.
К примеру, если это фиксированный набор некоторых данных в файлах, ту же таблицу их размеров можно генерировать в процессе компиляции.
Ну это мне лично показалось указанием на то, что "я не знаю как сделать считалку, расскажите". Ну мы и рассказали.
О чем и речь. А нефиксированный набор - или не запишешь на дискету (тк 128 файлов) или если ты их сам и сохраняешь - можешь и таблицу сам сохранить. В общем решение есть в любом случае.Цитата:
К примеру, если это фиксированный набор некоторых данных в файлах, ту же таблицу их размеров можно генерировать в процессе компиляции.
Ну это и подразумевалось под таблицей смещений в секторах. Либо да, хранить размер каждого в секторах, разница невелика.
Если дискету копировать не потреково - при первом же копировании файлов эти сектора улетят в никуда =) Так что не стоит.
Нее, плохо получается. Рандомно, чаще зависает, но может и загрузить правильно. Поэтому фиг с ими, с лишними двумя командами.
Тут вот какое дело.
Для чипа SAA1099 существует, грубо говоря, 600 треков. Размер , ну пусть от 1кб до 4-5кБ. В исходном виде и так ясно, что на диск TRD не влезут, но если их пожать пакером - то каждый файл уже будет 1-1,5 кБ. Хорошо, пусть чуть больше 1,5кБ в идеале. Вопросы . Как пакетно сжать сразу 600 файлов, как их потом выровнять до 2кБ все (8 секторов). Если их решить - то 300 файлов по идее можно на диске разместить.
У формата .etc нет как такового признака окончания мелодии, поэтому или играем определенное время и грузим след., или по клавише грузим след.
Ну и так, для информации. Под EsxDOS есть довольно хороший плейер .ETC, из ограничений - в каталоге не видит больше определенного количества, 240 примерно файлов видит, точно не помню.
Поэтому в идеале было бы просто на тр-дос диск файлов накидать, ну или пожать и выровнять.