Не один раз и не одним человеком предпринимались попытки создать систему каталогов на TR-DOS дисках. Самая известная попытка - это DirSys by Станислав Юдин. Но попытавшись поддержать ее в своей программе программист столкнется с трудностью вывода каталог диска (из-за того, что каталоги и файлы хранятся отдельно), необходимостью загружать не первые 9 секторов 0-ой дорожки, а 15 (хотя можно загрузить только 11 секторов, но куда тогда денутся "обрезанные" каталоги и как правильно подсчитать CRC?). Также не следует забывать про то что кнопка Magic или boot в 0-ой дорожке быстро и надежно уничтожат все ваши каталоги. Таким образом нехватка памяти под хранение двух 15-и секторных каталогов дисков с одной стороны и сложность вывода каталога диска с другой стороны, вынудило придумать новую систему хранения каталогов, лишенную этих недостатков. На данный момент 2-я людьми (Pawel Kyslyak и Andrey Bogdanovich), известными как авторы популярных Real Commander и Quick Commander составлено черновое описание новой системы каталогов. Рабочее название "TRDIR". В ближайшем будущем именно эту систему будут поддерживать 2 самых популярных коммандера (согласно опросу в соседней ветке). Приглашаем всех желающих обсудим детали и внести свои предложения для создания единого стандарта хранения каталогов.
Я понимаю что у многих возникнет мысль: "А зачем вообще нужны каталоги на дисках со 128-ю файлами?". Моя точка зрения в том, что стандарт нужен хотя-бы потому что 128 файлов это не так уж мало, а также на будущее, когда 1-2Мб RAM-диск или 1Мб раздел на винчестере будут распространены. Наше дело содать и внедрить стандарт, а уже пользователи пускай решают пользоваться каталогами или нет. Поэтому прошу в этой ветке воздержаться от фраз "Это не никому нужно", а попробовать найти и указать недостатки, а также пути исправления недостатков в новой системе.
Описание системы каталогов TRDIR
Чтобы не было путаницы: каталог - это каталог диска, директория - это каталог созданный на диске.
Информация о системе директорий хранится в неиспользуемом месте системного сектора (8-ой сектор 0-ой дорожки). Имена директорий создаются как файлы нулевой длины. В таблице отношений каждому байту соответствует свой файл в каталоге TR-DOS. Значение из соответствующей файлу ячейки ссылается на номер директории (файла пустышки) к которому он принадлежит. Значение #ff в ячейке означает что файл принадлежит корневой директории.
Код HTML:
Формат системного сектора:
+#20 (128 байт) таблица отношений файлов и директорий.
+#A0 (2 байта) CRC области #20 - #9F.
+#A2 (5 байт) идентификатор системы "TRDIR".
+#A7 (1 байт) номер версии "1" (#31).
Директории (при их создании) всегда помещаются в начало каталога, а имена файлов после них. Благодаря этому директории легко отслеживаются по нулевой длине и указателю на 0-ой сектор 1-ой дорожки. Пример каталога с директориями:
Код HTML:
Имя Старт Длина(байт.) Длина(сек.) Сектор Дорожка
(дата изм.)
Music 0000 00 00 01
Programms! 1105 00 00 01
boot B 0250 01 00 01
screen scr 6912 1b 01 01
Поле длины директорий содержит дату изменения. Дата меняется если в директорию дописывают или удаляют файлы. Если происходит переименование дата не меняется. Формат даты (полубайтами): день+месяц и мл.байт+ст.байт года, берется из CMOS часов. Если CMOS часов у пользователя нет или программа не умеет с ними работать, тогда в поле сохраняется число #0000. При печати имени это отслеживается и не выводится дата если там нули.
Код HTML:
Формат имен директорий:
+#00 (11 байт) имя
+#0B (2 байта) дата создания каталога
+#0D (3 байта) длина_в_секторах/сектор/дорожка = #00 #00 #01
Параметр длина в секторах, сектор и дорожка файла содержат правильные параметры для обеспечения корректного рассчёта длины файлов.