там грузится заголовок в три байта (номер части и длина блока)
и это в оригинале версия от Васильева Антона https://zxaaa.net/get.php?id=3827&f=...a282906f043664
там грузится заголовок в три байта (номер части и длина блока)
и это в оригинале версия от Васильева Антона https://zxaaa.net/get.php?id=3827&f=...a282906f043664
Последний раз редактировалось goodboy; 22.11.2025 в 10:48.
И ещё там загрузчик ожидает нестандартные интервалы, там мало просто подсунуть нужные куски кода в нужном формате, там ещё надо подобрать настройки блока 0x11 для TZX, ну, и заворачивать всё в TZX, а не в TAP.
Upd: 2025 11 23
TL;DR: Покрутил немножко. Кажется, расколол я это орешек, правда, частично. Первый блок от оригинала подошёл. Я не смог понять, что происходит после того, как первый загруженный блок отработал. Оно начинает что-то странное пытаться грузить, такого блока явно нет в оригинале и в кусочке, что сохранился, его тоже нет. MARKER/FLAG: 0xff, длина 0x40EF (16623₁₀), заXORеный 0x34. Судя по дальнейшему коду, это какой-то вариант заставки-загрузчика, но его нет… И, в целом, у меня только первый оригинальный блок заработал.
Не знаю, имеет ли смысл рассчитывать параметры турбо загрузки, если непонятно, где взять блоки собственно демо.
Быстро попробовать без подбора турбо режима можно поставив break на 0x6200 и заменить код в банке 0 по абсолютному адресу 0xF000 на 0xC3 0x56 0x05 (JP LD-BYTES). Это сработает только первый раз… До загрузчиков 2-го и далее блоков я не дошёл (не по номеру, а по последовательности).
Оно там, кстати, спрашивает, «IS TIMA YUNAEV A BEST ? (Y/N)» и если ответил «неправильно», сбрасывает – починить, это записать NOP на 0xf161 банк 0. Ну, или нажать Y.
Блок(и?) зашифрованы «XOR’ом c R», после загрузки на 0xF000 копируется ключ шифрования, а по 0xF001 два байта длины блока (тут я не понял, как будут загружаться последующие блоки, при этом же загрузчик затирается, банк всё время нулевой Upd: похоже, там должен был быть ещё какой-то «промежуточный» загрузчик). Расшифровывается область памяти с 0x5fb4, длина – что загружено. Ключ шифрования, похоже – FLAG (MARKER) блока. «шаг» XOR’а (длина цикла в «R») – 9, то есть первый ключ: MARKER+2, последующие: + 9, плюс сложности с седьмым битом регистра R.
MARKER’ы блоков, они же ключи XOR, вроде 0x7f, 0x80, 0x81 и т.д., просто 0x7e+номер блока, в загрузчике индивидуальная инициализация каждого блока прописана.
P.S. В целом, там явно собрано из готовых кусков, прямо видно, как правили «наживую», забивая ненужный / непонятный код NOP’ами, не особо вникая в детали – там масса простора для оптимизации и достаточно много неиспользуемых / ненужных фрагментов.
Последний раз редактировалось Chwe; 23.11.2025 в 18:19.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)