Последний раз редактировалось OrionExt; 23.10.2016 в 20:47.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
это все понятно. А вод куда этот переход делается, что там за код по этому адресу и откуда он берется?
Выше ссылка уже была http://bulba.untergrund.net/PTxTools.7z интересует плеер из папки PTxPlay. В ней листинги под разные компиляторы. Хотелось бы код под TASM (The Telemark Assembler http://www.ticalc.org/archives/files...250/25051.html )переделать![]()
насколько я помню, автор просто имеет слабость к числу C3. Часто там где самомодифицирующийся код, он в регистры как бы загружает C3, C3C3, JP делает на этот на адрес С3С3. На самом, при выполнении деле адрес и константы в этих местах уже будут другими - такими которые туда сам плеер заранее подставит. Это легко понять по тому что перед тем оператором стоит
BLABLA .equ $+1 # текущий адрес компиляции +1
jp C3C3
а где-то ниже (или выше) по тексту, но раньше по времени выполнения:
ld hl, address # реальный адрес перехода
ld (BLABLA), hl
с константами аналогично
- - - Добавлено - - -
Там есть более другие интересные вещи, например загрузка в менонике в 8-битный регистр 16-битного значения ( ld a, address). Или например выражение
.db 1, 2, 1234h, address
где оба раза address - 16битное число (ну и 1234h, понятно, тоже)
М80 например не позволяет такого делать уже на этапе компиляции (надо писать ld a,byte, или DW, а DB - только для байтов и строк и т.п.), не говоря уж о том что там может быть при выполнении после компилера который такое позволяет.
Последний раз редактировалось Error404; 23.10.2016 в 21:50.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Ага.
Помню ради интереса в IDA один такой плеер работающий с $С000, разобрал. И катал его по всей памяти 0000…FFFF. Если не вдаваться в подробности кодирования формата муз. файла, это просто.
- - - Добавлено - - -
Это уже завтра, посмотрю
- - - Добавлено - - -
На вскидку. Ничего интересного в подпрограмме PTDECOD не нашел.
PTDECOD AND A …
Может в этом проблема понимания - run in RAM only (self-modified code). С такими подходами не один ассемблер не поможет.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Ага. Еще автор заныкал self-modifie (возможно. надо с трансляцией кода запускать). Ну да ладно. Кодеры 90г. А теперь кому интересно. Мучаются. Да и старичкам это не орех в дверном косяке расколоть![]()
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Мда, как все сложно…
Если ничего не получится с универсальным плеером PTxPlay, тогда для проигрывания .PT2 и .PT3 файлов придется писать прогу используя уже проверенные проигрыватели .PT2 и .PT3 файлов. Анализировать, какой файл грузим в память (.PT2 или .PT3) и после запускать соответствующий плеер. При этом немного вырастит объем кода, но это не страшно.
Но все же хотелось бы иметь и универсальный PTxPlay![]()
там же в архиве есть уже странслированный на C000 бинарь. Можно во-первых попробовать его запустить как проигрыватель (для проверки, сам по себе он на этих адресах не слишком удобен - нужна возможность транслировать на любые адреса), а во-вторых этот код можно использовать для сравнения истинности компиляции другими ассемблерами: добиваешься компилируемости "в принципе" (т.е. без ошибок), транслируешь на С000, сравниваешь по содержимому с Бульбовским, если побайтно не совпало разбирашься почему (где-то используемый ассемблер странслировал не как Бульбовский), подгоняешь.
Как то так.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
OrionExt, Error404, игрушки-это хорошо, но стоило отметить, что версия для ориона-z (или как он там правильно называется), а не для про. Возможно будет работать в доработанном (порт FB) про, но, например, emu такое не поддерживает (в итоге запустил в конфиге орион-sd).
Последний раз редактировалось ivagor; 25.10.2016 в 20:25.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)