PDA

Просмотр полной версии : trdetz -- утиль для работы с трдами



boo_boo
10.10.2007, 01:41
написал вот сабж. выдержка из фирменной документации:

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

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

живет на соурсфорже (win32 бинарник и исходники подо всё на свете)
http://sourceforge.net/projects/trdetz/

Sinus
11.10.2007, 11:19
и всё таки мне кажется что использование либ которые юзают longjump для эмуляции исключений, когда в C++ они есть нативно - это излишне.

кому-нибудь интересен будет нормальный C++ порт?

----

кстати я писал похожую утилиту для работы с писишными образами дискеток (там вроде FAT12).
хотя оффтопично, но тоже может интересно будет кому-нибудь?

breeze
11.10.2007, 13:31
кому-нибудь интересен будет нормальный C++ порт?

да :rolleyes:

boo_boo
11.10.2007, 14:38
и всё таки мне кажется что использование либ которые юзают longjump для эмуляции исключений, когда в C++ они есть нативно - это излишне.

кому-нибудь интересен будет нормальный C++ порт?
чего-то я не понимаю :v2_blink:
чем плох С и его longjump? это идеологический момент? программы на С портабельней и легче, а юзать С++ имеет смысл только если писать в ООП-стиле (btw, простое обьединение данных и методов с помощью класса или использование исключений ООП-стилем не является :v2_tong2:)

к тому же это ведь готовая утилита, а не библиотека (которую и впрямь имело бы смысл переписать на С++ при необходимости использования в сиплюсплюснутом проекте).
вощем, я в недоумении -- обьясните, ЗАЧЕМ? :v2_crazy:

Sinus
11.10.2007, 18:36
чем плох С и его longjump? это идеологический момент?
ага ;)
цэ всем хорош, но вот longjump мне не нравится. наверное дело вкуса.


к тому же это ведь готовая утилита, а не библиотека
так вот собственно к чему я веду, может быть кому-нибудь захочется использовать это в качестве либы (а почему бы и да?).

а вообще на самом деле конечно же это чисто идеологический момент.

boo_boo
11.10.2007, 21:52
цэ всем хорош, но вот longjump мне не нравится. наверное дело вкуса. а... :)
ну осиплюсьплюсивай, если есть такое загадочное настроение :rolleyes:
тока название как-нить поменяй, чтоб путаницы не было, ок?

ЗЫ в основе внутренней реализации переходов по ексепшну в Ц++ лежит тот же лонгджамп ващето

Vitamin
12.10.2007, 22:39
ЗЫ в основе внутренней реализации переходов по ексепшну в Ц++ лежит тот же лонгджамп ващето
Ничего подобного. Там лежит механизм раскрутки стека. Или longjump вызывает деструкторы локальных объектов?

boo_boo
13.10.2007, 00:46
Ничего подобного. Там лежит механизм раскрутки стека. Или longjump вызывает деструкторы локальных объектов? стек раскручивает, но деструкторы не вызывает. сорри, неправильно выразился: я имел в виду что принцип тот же, только с поддержкой обьектов, а не что C++шный переход по ексепшну это в точности longjmp

Vitamin
14.10.2007, 16:30
стек раскручивает, но деструкторы не вызывает. сорри, неправильно выразился: я имел в виду что принцип тот же, только с поддержкой обьектов, а не что C++шный переход по ексепшну это в точности longjmp
Ну принцип во всем одинаковый- берем со стека адрес и... :)

В экспшенах есть еще много вкусных штук, которые реализовать с помощью longjmp стоит большого геморроя

boo_boo
15.10.2007, 00:54
новая версия
слегка поменял синтаксис вызова
+ уплотнение диска (move)
+ множественные глюкфиксы
+ убрал-таки лонгджампанутые эксепшны (действительно, нафига козе баян :) )

архив в 1м посте

boo_boo
19.10.2007, 22:41
+ поддержка hobeta при копировании файлов (fread/fwrite)
и пара мелких глюкфиксов

архив в 1м посте

breeze
20.10.2007, 12:59
хм ;) может и поддержкой DirSys порадуете ;)

boo_boo
20.10.2007, 13:46
хм ;) может и поддержкой DirSys порадуете ;) а оно реально надо? неплохая в общем-то штука, но то, что в разных каталогах не может быть файлов с одинаковыми именами здорово портит малину ИМХО..

вообще, если нужно, могу присобачить. но тогда, плз, подскажи алгоритм расчета дирсисевской CRC (ломает разбираться, что делается в соотв ассемблерной процедуре)

breeze
20.10.2007, 19:11
а оно реально надо?

знаешь, если так смотреть, то вообще мало чего надо в этой жизни :|


неплохая в общем-то штука, но то, что в разных каталогах не может быть файлов с одинаковыми именами здорово портит малину ИМХО..

чеееееееееегооооо ?????? :mad: это что бред ???


вообще, если нужно, могу присобачить. но тогда, плз, подскажи алгоритм расчета дирсисевской CRC (ломает разбираться, что делается в соотв ассемблерной процедуре)

знал бы сказал бы :( может авторы подскажут ?

http://zx.pk.ru/showthread.php?t=5998

boo_boo
20.10.2007, 19:23
чеееееееееегооооо ?????? это что бред ??? ну я глянул доки которые с TRDN шли. имена файлов берутся из тырдос-каталога, сталбыть, файлы с одинаковыми именами в разных каталогах = файлы с одинаковыми именами в каталоге тырдос = возможность работать стандартными командами тырдос только с первым из этих файлов. то есть васик-загрузчики (через 15619) в случае файлов с одинаковыми именами идут лесом. а юзая каталоги фиг заметишь, что такие файлы есть, кроме как по глюкам васик-загрузчика.

Добавлено через 11 минут

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

breeze
21.10.2007, 18:07
ну я глянул доки которые с TRDN шли...
честно сказать, что-то я не совсем понял о чём речь :(


не, ну фичи можно наворачивать до бесконечности, тока зачем...


мыслю понял, я предложил вариант, твоё дело согласиться или отказаться... :cool:

boo_boo
21.10.2007, 19:00
честно сказать, что-то я не совсем понял о чём речь о том, что совместимость с трдос у дирсис неполная -- если в 2х разных директориях будут 2 файла с одинаковыми именами, из бейсика (через рандомизе уср 15619) можно будет обратиться только к одному из этих файлов. это ИМХО не позволяет серьезно работать с каталогами (у многих прог бейсиковские лоадеры, или в кодах, но которые инфу о файле из каталога берут), разве что коллекции софта составлять, где все по полочкам. инфу о дирсисе я черпал из описания, которое идет в комплекте с тырдос-навигатором, если чето не так понял, поправь плз

мыслю понял, я предложил вариант, твоё дело согласиться или отказаться... вариантов я и сам себе могу напридумать скока угодно ;)
ты скажи толком, ты этой штукой будешь пользоваться, тестировать ее и тп, если я напишу? если будешь, сделаю.

boo_boo
25.10.2007, 05:18
залил сабж на соурсфорж
http://sourceforge.net/projects/trdetz/

Vinnny
25.10.2007, 10:57
порт под MorphOS тут (http://aminet.net/package/misc/emu/trdetz-mos).

boo_boo
25.10.2007, 13:56
порт под MorphOS тут (http://aminet.net/package/misc/emu/trdetz-mos). это порт 1-ой, довольно глючной версии, лучше им не пользоваться...
BTW, не знаешь, как до автора порта достучаться? он там пишет про какие-то проблемы при компиляции, хотелось бы узнать, какие

Vinnny
25.10.2007, 14:42
это порт 1-ой, довольно глючной версии, лучше им не пользоваться...
BTW, не знаешь, как до автора порта достучаться? он там пишет про какие-то проблемы при компиляции, хотелось бы узнать, какие
lanch tiscali it
собаку и точку поставь в нужном месте :)

Q-Master
26.10.2007, 08:44
это порт 1-ой, довольно глючной версии, лучше им не пользоваться...
BTW, не знаешь, как до автора порта достучаться? он там пишет про какие-то проблемы при компиляции, хотелось бы узнать, какие

Давай я последнюю форумную версию скомпиляю и тебе скажу в чем трабла, если будет.

boo_boo
26.10.2007, 16:01
Давай я последнюю форумную версию скомпиляю и тебе скажу в чем трабла, если будет. давай :)

Q-Master
29.10.2007, 07:33
давай :)

Трабла в pragma(push,1) и pragma(pop)
Если заменить их на
pragma(1) и pragma() соответственно, то все цомпилируется.