Автор блога ответил, что возможен глюк со старой кассетой. Что касается TF-COPY, то он и давился на проблемных блоках. Так я сделал защиту - поменял код копировщика Н.Родионова, который дописывал мусорный байт к записи, и прокатило - копировщик не справлялся.
Так, ну нет, давайте не будем крошить батон на TF-COPY, что он там где-то на чем-то давился. Я не понял, с чем, по-вашему, должен "справляться" или "не справляться" TF-COPY. С первоначальным чтением блока со сломанным контрольным байтом четности? Вы дописали к блоку мусорный байт. Копировщик, в отличие от программы-загрузчика, НЕ ЗНАЕТ и НЕ МОЖЕТ ЗНАТЬ размера блока, который вы в него загружаете, чтение заканчивается только по таймауту, что как раз делает копировщик всеядным. После загрузки блока копировщик считает последний прочитанный байт - байтом четности, но при этом для кастомного загрузчика копировщика он является неотъемлемой частью блока, загруженного в память, рядовым байтом блока. Если байт четности не соответствует вычисленной четности (в итоге тупо ноль должен получиться в регистре, в котором накапливается четность в процедуре загрузки, т.е., другими словами, если этот регистр != ноль), а у вас будет именно такой случай, вы же сами своими руками сломали последний байт, TF-COPY просигнализирует вам ошибкой "PARITY", причем Load будет со знаком вопроса, обратите на это внимание. Можете нажать клавишу "Y", и копировщик оставит вам файл в таком виде, дописав к нему новый байт четности. Можете его потом сохранить, а потом даже проверить, VERIFY будет сравнивать прочитанные данные с тем, что у него в памяти, и выдаст ошибку только при несоответствии. Любые мусорные данные, будь то ваш мусорный байт, или байты системы защиты, будут дотошно сохранены, и, если это часть защиты, подготовленная к этому программа-загрузчик не заметит разницы. И потом сохраненные таким образом данные будут даже скорее всего всегда КОРРЕКТНО грузиться, несмотря на ваш мусорный байт, потому что копировщик допишет за вашим мусорным байтом новый байт четности. Точно не уверен, но процентов на 99 уверен. В любом случае, программой-загрузчиком будет загружено старое количество байтов из этого блока, потому что она знает, сколько ей нужно загрузить байтов, и для контроля ошибок ею будет использован старый байт четности, остальная же часть блока будет проигнорирована, но при последующей загрузке в копировщик этого нового блока, старый байт четности будет лишь очередным байтом блока, после которого будет идти ваш мусорный байт, после которого будет идти новый байт четности, в накопительном регистре получится ноль, и опять же ошибки уже не будет. Максимально корректная реализация, к которой не может быть предъявлено никаких претензий, с моей точки зрения.
Исходя из разъяснений, не вытекает, что TF-COPY с чем-то "не справляется". Со всем справился, ну разве что вы своими же действиями потеряли возможность установить, корректно ли считался блок в копировщик, собственноручно сломав средство контроля ошибок. Ну это ваш косяк, ваша зона ответственности, а не копировщика. Сорян, но копировщик не занимается магией, телепатией и угадываниями, где в блоке находилась контрольная сумма до вашего в этот порядок вмешательства. Это вы 1) не поняли сути происходящих процессов, 2) сами сломали байт четности, ожидаемо получили ошибку, но это, по-вашему, почему-то плохо и неправильно, виноват почему-то TF-COPY, и 3) не знали, что конкретно это сообщение об ошибке носит информационный характер, что можно принять блок, нажав "Y".Ну спустя 30 лет узнали. -) Ой, какие 30, 38 лет. Забавно.
Как средство защиты это тоже не сработало, как видите, если это можно скопировать с помощью TF-COPY, и это будет потом корректно грузиться. Ну или я просто не понял, от чего вы защищались. От дурака?![]()
Последний раз редактировалось cafedead; 24.07.2025 в 19:45.
SoftLight(25.07.2025)
эх... не уверен тот ли это TF-COPY который я последний раз загружал где-то 33 года назад...
Подумалось - как время летит 33 года... 100 лет назад только радио начало появляться, 33 года это треть от 100. А кажется так много...
у меня помоемому немного другой был, без опций при запуске
насчет блоков с битым crc - понимает, просто спрашивает принять блок или нет:
![]()
Последний раз редактировалось ZXMAK; 31.07.2025 в 17:08.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
"тысячи их" (С)
Последний раз редактировалось cafedead; 01.08.2025 в 19:17.
Ну... До тебя мне далеко в этом смысле. Займись лучше своими проблемами, потому что я лишь указал на твои ошибки, а у тебя почему-то сгорела задница, хотя нет никаких причин для этого. Ну не знал, и не знал, бывает. Ни к чему так остро реагировать.
Чел, у меня опыт программирования 30+ лет, куда уж мне. Копание в чужих продуктах с целью изучения их работы - это этап развития специалистов с меньшим стажем, все этим когда-то занимались. Но если интересно, как специалист я оцениваю этот продукт как качественный и сложный, особенно учитывая время, когда он создавался, когда я был малышком, и про Спектрум ничего даже не знал. Это сейчас, с доступной каждому документацией, в эмуляторе легко все отладить и такты посчитать, но тогда это было не так просто, на конкретной платформе в доступных на тот момент топорных средах разработки это был ад. Я так попытался в GENS3 что-то делать спустя 20 лет, чуть с ума не сошел. Ну и сжатие в процессе загрузки, разжатие в процессе сохранения, все чувствительное ко времени исполнения - сам понимаешь, это сложная и комплексная работа, требующая от автора компетенций, которых на момент создания в Интернете не найдешь, от чатаГПТ не узнаешь. Это не простой человек, котел у него варил что надо. Я сам писал и алгоритмы сжатия, и кастомные лоадеры, поэтому мне не очень нравится, когда в сторону такого продукта, который я вот таким образом оцениваю, кто-то начинает что-то моросить не по делу, причем кто-то, не имеющий для этого достаточно компетенций. Это не говоря даже о том, что в итоге этот копировщик предоставил всем его пользователям. Благодарю за понимание.
Последний раз редактировалось cafedead; 07.08.2025 в 13:29.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)