 |  |  |
 | Shaos wrote: Формат квазидисков операционки ShaOS: Cтруктура аналогична ордосу - у каждого файла есть 16-байтовый заголовок (есть возможность иметь 32-байтовый - с меткой времени), среди файлов могут попадаться подкаталоги. Формат простого заголовка: где name - имя файла или каталога ext - однобайтовое представление расширения файла (есть стандартная таблица перекодировки), для имени подкаталога оно 00 len - длина файла в параграфах (т.е. кратно 16 байтам), для подкаталога - 0000 (используется при пробегании по файлам для поиска следующего файла) adr - адрес загрузки файла, для подкаталога - FFFF atr - атрибуты файла kc - контрольная сумма для файла, а для подкаталога это является указателем в параграфах (т.е. кратно 16 байтам) внутри образа диска на цепочку файлов-подкаталогов этого подкаталога также описатель может быть не только файлом или каталогом, но и так называемым "ответвителем", когда цепочка файлов-подкаталогов прерывается и перескакивает в другое место ром-диска... |  |
 |  |  |
Вместо ответвителя я наверное просто файлы-пустышки сделаю - это файлы у которых имя начинается с нуля. С другой стороны как-то надо отличать друг от друга стёртые файлы и файлы закрывающие собой битые части ПЗУ...
Вот "осовремененный" список стандартных расширений ShaOS (добавил специфические для ZX форматы в конец и SHJ):
0 - (три пробела) будет означать имя директория (точка при этом не печатается);
1 - .BAT для пакетных файлов;
2 - .SYS для перемещаемых "системных" программ (точность перемещения 1 байт, могут быть перенесены после загрузки);
3 - .COM для неперемещаемых программ, оттранслированных для какого-то конкретного адреса;
4 - .OVL для оверлеев, оттранслированных в какой-то конкретный адрес (загружаются из COM);
5 - .EXE для перемещаемых программ (точность перемещения 256 байт, не могут быть перенесены после загрузки);
6 - .DLL для перемещаемых библиотек (точность перемещения 256 байт, не могут быть перенесены после загрузки);
7 - .TXT для обычных досовских текстовых файлов в альтернативной кодировке;
8 - .CFG для текстовых файлов конфигурации;
9 - .BAK для копий текстовых файлов;
A - .TMP для временных файлов;
B - .BIN для бинарных данных, не привязанных к конкретным адресам;
C - .SCR для ZX-экранов;
D - .SNA для ZX-образов;
E - .TAP для ZX-лент;
F - .SHJ для скриптов SHJob (используется в nedoPC SDK).
Потом можно ещё 16 кодов добавить - от #10 до #1F.
Кроме того если код расширения файла представляет из себя код печатного символа, то он будет считаться однобуквенным расширением - примеры:
.A - текст программы для RASM;
.B - бейсик программа ZX;
.C - код для ZX;
.D - данные для ZX;
.L - файл статической библиотеки (для будущих версий nedoPC SDK);
.O - объектный файл (для будущих версий nedoPC SDK);
.R - текст программы на языке Robby (для nedoPC SDK);
.Z - ZX-образ в формате Z80?
В будущем могут быть .c и .h (для программ на языке Си), но пока ограничимся только большими буквами...
P.S. Атрибуты файла (по состоянию на 1996 год):
бит 0 - R (только для чтения);
бит 1 - H (скрытый);
бит 2 - C (закодирован?);
бит 3 - P (находитя на своём месте в памяти?);
бит 4 - F (фрагментирован?);
бит 5 - L (файл имеет расширенный заголовок в 32 байта вместо 16);
биты 6 и 7 - C0,C1 (совместимость кода - 00 для 8080, 01 для 8085, 10 для Z80, 11 - см.расширенный заголовок).
Расширенный заголовок с датой и временем создания файла пока не предполагается...