# TRDETZ - супирутилита для работы с TRD-образами!!!

(ц) Бу-бу
Trdetz (читается "Тырдец") это консольная утилита для работы с TRD-образами дисков компутера ZX-Spectrum. Тырдец оптимизирован для использования в скриптах (например мэйкфайлах -- шоб собрать бинарники кросс-ассемблером и автоматически запихнуть их на диск). Работает он практически в любой ОС для которой есть компилятор ANSI-C, тестировал я в Линухе и Винде(тм). Все операции производимые Тырдецом "атомарны" -- за раз он может записать/считать только один файл, или одну непрерывную группу секторов, или изменить один атрибут файла и тп. Это так специально, чтобы в скриптах Тырдец вёл себя органичнее.
Фичи:

- Чтение/запись группы секторов из/в TRD
- Чтение/запись бинарного файла из/в TRD (также поддерживаются hobeta-файлы)
- Удаление файла
- Изменение атрибутов файла (имя, расширение, длина и тд)
- Чтение информации о файле или всех файлах в TRD-каталоге
- Чтение информации о TRD-диске
- Уплотнение диска
- Вывод пафосного хелпа

Тырдец вызывается так:

    trdetz [флаги] имя_трд_образа команда [аргументы]

Флаги бывают такие:

- `-df[=del_file_marker]` : Работать также и с удаленными файлами. без этого флага Тырдец удаленных файлов замечать не будет. С помощью этого флага можно восстанавливать удаленные файлы, путем их переименования. Необязательный параметр del_file_marker задаёт символ, который будет использоваться для обозначения 1го символа имени удаленного файла, по умолчанию это вопросительный знак. Вощем, с удаленными файлами можно работать в точности как с обычными если этот флаг включен.
- `-fs` : Считать длину файла в байтах не по соответствующему полю каталога, а как кол-во секторов помноженное на 256. Это влияет на операции чтения файла из TRD-образа. ВНИМАНИЕ! этот флаг необходимо указывать при чтении с TRD-образа файлов, реальная длина которых не соответствует указанной в каталоге, например, программ, упакованных в один блок с бейсик-загрузчиком.
- `-hob` : Работа с форматом hobeta при экспорте и импорте TR-DOS файла. Работает для команд fread и fwrite. То есть, в fread можно вместо простого бинарного файла извлекать с TRD-образа hobeta-файл, а в fwrite записывать данные из hobeta-файла в TRD.

Теперь про команды. Сразу имейте в виду, что команды принимают всякие параметры, которые бывают текстовыми или числовыми. Числовые параметры можно писать в 10-чной, 16-чной или 8-ичной системах счисления. Если перед числом стоит префикс "0x" то оно значит 16-иричное, а если оно начинается с нуля, то восьмеричное. Ага, и еще если никакой воще команды не писать, то Тырдец покажет хелп.
Команды Тырдеца ("имя_файла" означает файл на TRD-образе, а "имя_файла_ОС" -- файл операцыонной системы):

- `dinfo` : Показывает инфу о образе -- имя диска и прочую муть. выдается по одному полю на строку.
- `cat [имя_файла]` : Если задано имя файла показывает инфу об этом файле, иначе обо всех файлах на диске. Формат инфы такой же, как в TR-DOSной команде LIST, только в конце еще кажутся начальный трек и начальный сектор.
- `secread имя_файла_ОС начальный_трек начальный_сектор кол-во_секторов` : Чтение группы секторов из TRD-образа.
- `secwrite имя_файла_ОС начальный_трек начальный_сектор кол-во_секторов` : Запись группы секторов на TRD-образ.
- `fread имя_trd_файла [имя_файла_ОС]` : Чтение файла с TRD-образа. Если задан параметр имя_файла_ОС, файл будет записан с этим именем, а не тем, что в каталоге.
- `fwrite имя_файла_ОС [имя_файла]` : Запись файла на TRD-образ. Если задан параметр имя_файла, он будет записан под этим именем, иначе имя будет сформировано из имени файла-источника.
- `del имя_файла` : Удаление файла. Если файл находится в конце каталога, его уже после этого не вернешь, иначе можно потом восстановить.
- `move` : Уплотнение диска (как TRDOSная команда move).
- `ren старое_имя_файла новое_имя_файла` : Переименование файла, а также восстановление удалённых (см флаг -df).
- `fprop имя_файла имя_атрибута значение_атрибута` : Изменение атрибута файла. атрибуты бывают такие:
  - `start` : Начальный адрес кодового файла (а для васика это полная длина).
  - `flen` : Длина файла (для васика тут длина только программной части).
  - `nsec` : Скока секторов файл занимает.

Компиляция Тырдеца:
Как я уже наверно говорил, Тырдец должен компилироваться любым ANSI-C компилятором. Однако я пробовал только GCC (и, соответственно, MinGW под Виндовсом). В случае использования этих компиляторов и GNU make, достаточно сказать "make all" и все скомпилится. Если у вас другие компиляторы/мейки/девстудии, курите их мануал, создавайте проекты и всякую такую бадягу сами. Юзаются тока стандартные сишные либы, так что порблем быть не должно :)
Ну и если вам достался Тырдец без исходников, или нашелся глюк, пишите мне на адрес который гдето вверху этого хелпа.
Speccy фарева! Ура!