Gothiq #01
14 января 2003

                                                                                                                    ...Directory System for TR-DOS..:
...................(c)CityAceE..:

...................Документация на систему.....................

     Этот  документ  предназначен  для  программистов,  желающих
поддержать систему каталогов для TR-DOS в своих программах.

......................Возможности системы.......................

     Directory  System  (DS) представляет из себя надстройку над
популярной  системой TR-DOS, и снимает ограничение на отсутствие
в  TR-DOS  каталогов.  DS позволяет хранить на стандартном диске
системы  TR-DOS  до  128 файлов и одновременно до 128 каталогов,
включая  корневой  каталог.  Каталоги  могут иметь любую степень
вложенности, а так же любое содержимое. В одной директории может
располагаться  до  127 каталогов и до 128 файлов. DS находится в
свободных  секторах  нулевой  дорожки  и не использует для своих
целей другого дискового пространства.

.........................Совместимость..........................

     DS   полностью   совместима   с  большинством  программного
обеспечения  и  самой  системой  TR-DOS.  Это  значит, что любая
программа, не поддерживающая DS увидит все файлы, находящиеся на
диске,  в  том числе и находящиеся в каталогах, сами же каталоги
видны не будут. Это же касается стандартных команд TR-DOS LIST и
CAT.  Можно копировать, стирать и переименовывать файлы на диске
с  DS любыми коммандерами, а также стандартными командами TR-DOS
COPY,  ERASE  и NEW. В этом случае при переименовании файла, его
расположение  в  каталоге  не  изменится,  а  при  создании  или
копировании файла, новый файл будет помещен в корневой каталог.

..........................Ограничения...........................

     Ограничения  использования другого программного обеспечения
совместно  с  DS связано прежде всего с использованием свободных
секторов  нулевой  дорожки.  Поэтому  конфликты могут возникнуть
лишь  с  теми программами, которые используют эти сектора. Хотя,
например,   теневой  сервис-монитор  компьютера  Scorpion  может
хранить  свои настройки на дискете с DS без конфликта с системой
до  тех  пор,  пока количество каталогов не будет превышать 115.
Запись  программ  на диск с DS при помощи кнопки MAGIC уничтожит
систему,   тем   не   менее,   часть   информации   можно  будет
восстановить.

     Еще  одно  ограничение  на  систему накладывают стандартная
команда  TR-DOS MOVE и уплотнение диска обычными коммандерами. В
этом  случае  будет нарушена сортировка файлов по каталогам. Для
уплотнения    диска    необходимо    пользоваться   программами,
поддерживающими DS и учитывающими ее особенности.

.............Возможности по восстановлению системы..............

     При  повреждении  системы,  но  не  полном  ее  уничтожении
(должен быть не тронутым как минимум 10 сектор нулевой дорожки),
система  частично может быть восстановлена. А именно, сохранится
сортировка  всех  файлов по каталогам, а также сортировка первых
117 каталогов.

...................Детальное описание системы...................

     Система  начинается  в  начале  10-го  сектора  сразу же за
системным  сектором (сдвиг указан относительно начала 10 сектора
нулевой дорожки):

Дескриптор системы. 11 байт:

+ [#00]...+ [#01]   CRC системы, обсчитываются байты с +[#02]
                    до +[N*#0B+#10B] включительно, где N -
                    порядковый номер последнего заданного
                    каталога;
+ [#02]...+ [#07]   сигнатура "DirSys" - идентификатор системы;
+ [#08]             сигнатура "1" - целая часть номера версии
                    системы;
+ [#09]...+ [#0А]   сигнатура "00" - дробная часть номера версии
                    системы;
                    Текущая версия системы 1.00

Таблица размещения файлов и каталогов. 256 байт:

+ [#0B]    порядковый номер каталога, к которому принадлежит
           0-ой файл;
+ [#0С]    порядковый номер каталога, к которому принадлежит
           1-ый файл;
...
+ [#89]    порядковый номер каталога, к которому принадлежит
           126-ой файл;
+ [#8A]    порядковый номер каталога, к которому принадлежит
           127-ой файл;

+ [#8B]    порядковый номер каталога, к которому принадлежит
           1-ый каталог;
+ [#8C]    порядковый номер каталога, к которому принадлежит
           2-ой каталог;
...
+ [#108]   порядковый номер каталога, к которому принадлежит
           126-ой каталог;
+ [#109]   порядковый номер каталога, к которому принадлежит
           127-ой каталог;

+ [#10А]   #00 - байт зарезервирован;

Список имен каталогов. Размер варьирует:

+ [#10B]...+ [#115]   11 символов - имя 1-го каталога;
+ [#116]...+ [#120]   11 символов - имя 2-го каталога;
...
+ [N*#0B+#100]...+ [N*#0B+#10A]  11 символов - имя
                   последнего, заданного каталога с порядковым
                   номером N;

+ [N*#0B+#10B]   #00 - конец системы.

     Размер списка имен каталогов зависит от количества заданных
каталогов. Минимальный размер - 1 байт, при отсутствии каталогов
на диске (единственный нулевой байт указывает на конец системы).
Максимальный размер - 1398 байт, при 127 заданных каталогах плюс
один нулевой байт указатель конца системы.

     Порядковые  номера каталогов и файлов нигде явно не заданы,
а  определяются  простым  счетом  по  порядку:  файлы от 0-го до
127-го,  каталоги  от  1-го  до  127-го.  Корневой каталог имеет
порядковый номер 0.

     Система  инициализируется  путем  записи  в 10 и 11 сектора
нулевой     дорожки    (сразу    после    системного    сектора)
последовательности байт: #19, #D0, DirSys100, 257 байт нулей

     Имена  каталогов должны содержать символы с кодами ASCII от
#20  до  #7F  (в  соответствующем  plag-in'е  by HalfElf для FAR
Manager'a  на  PC, в  именах  каталогов  разрешено использование
русских символов в DOS-кодировке, это было согласовано с автором
DirSys). Если первый символ имени каталога равен коду #01, такой
каталог  считается  удаленным. Незначащие символы имени каталога
заполняются кодом ASCII #20 (пробел). Например, имя каталога "My
Dir",    будет    задана    в    списке   имен   каталогов   как
последовательность байт: #4D #79 #20 #44 #69 #72 #20 #20 #20 #20
#20.

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

     В  своем  минимуме DS занимает два сектора и при этом может
хранить  полную информацию о 22 каталогах. Дальнейшее увеличение
количества   каталогов   вызовет   увеличение   числа  секторов,
занимаемых системой.

     Наличие  системы  на  диске  определяется  по  наличию в 10
секторе  нулевой дорожки сигнатуры "DirSys" со сдвигом он начала
сектора  +02.  Целостность  системы  проверяется  по  совпадению
рассчитанной CRC с записанной CRC в самом начале 10 сектора.

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

CRC подсчитывается следующей программой:

;Входные параметры:
;HL -начальный адрес блока
;DE -конечный адрес блока
;Выходные данные:
;BC -контрольная сумма блока

CRC     PUSH HL
        INC  DE
        LD BC,#0000
CRC1    PUSH DE
        LD A,C
        XOR (HL)
        LD E,A
        PUSH BC
        PUSH HL
        LD BC,#0000
        LD D,#08
CRC2    PUSH BC
        LD A,C
        RRA
        LD A,B
        RRA
        LD B,A
        LD A,C
        RRA
        LD C,A
        POP HL
        LD A,E
        XOR L
        AND 1
        JR Z,CRC3
        LD A,B
        XOR #A0
        LD B,A
        LD A,C
        XOR #01
        LD C,A
CRC3    LD A,E
        RRCA
        AND #7F
        LD E,A
        DEC D
        JR NZ,CRC2
        POP HL
        POP DE
        LD A,D
        XOR C
        LD C,A
        LD A,E
        XOR B
        LD B,A
        INC HL
        POP DE
        LD A,H
        CP D
        JR NZ,CRC1
        LD A,L
        CP E
        JR NZ,CRC1
        DEC DE
        POP HL
        RET

.......................Координаты автора........................

     По   всем   вопросам,   возникшим   по  описанной  системе,
обращайтесь по следующим координатам:

690078 г. Владивосток
       ул. Союзная 17-35
       Юдину Станиславу Анатольевичу

Тел. (4232) 42-99-35 разница с Москвой + 7 часов

e-mail: speccy@softhome.net
FidoNet: 2:5045/78.4
ZXNet: 500:4232/1.1

................................................................
(С) 2000 Станислав Юдин
(С) 2000 Дмитрий Пьянков
(С) 2000 SIMM


...end...



Other articles:


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Advertising - Advertising and announcements.
News TashZXNet - the local news.
Glance - A view from the platform (on the game of 8-DEPARTMENT ").
Advertising - Advertisements and announcements ...

В этот день...   21 November