Условия: sjasm, unreal.
Проблема: если писать прогу, которая занимает больше 128 к, имеем некоторые затруднения с загрузкой программы в эмуль... которые можно обойти по-разному, как то: выгружать откомпилированное в трд-образ, потом при инициализации загрузить выгруженное в память... Ну тут уже каждый как хочет... Мне, например, не подходит время ожидания пока программа загрузится, даже когда эмуль настроен на мильон-мильардов тактов в секунду, это чуть дольше чем вообще без загрузки.
Решение: Имеем сорцы компилера и эмуля - и имеем поддержку снапшотов выше 128к.
Что с того вышло:
sjasm:
- savesna само выбирает размер снапшота в зависимости от device( в данный момент добавлены 256К, 512К, 1024К );
- какой бы не был установлен последний page - в снапшоте он всегда - 7.
- тип девайса ( атм, пентагон и тд ) не сохраняется в снапшот и не восстанавливается.
unreal:
- сделана только _загрузка_ снапшотов, выгрузка мне просто пока не нужна %);
- после загрузки размер снапшота ( те, что более 128К ) автоматом устанавливает размер памяти в эмуляторе ( не тип ). [В сорцах как альтернатива есть мессадж бокс].
может еще что забыл... сорцы ( только измененные файлы ) прилагаются.
Последний раз редактировалось Antipod; 20.02.2009 в 17:50.
столкнулся с неприятным багом =(
org #6300
snd incbin "test.dat",0,#10000-$-1
такая конструкция сделана для того, чтобы загрузить файл который не влазит в память целиком (-1 поставил уже в поисках избавления от глюка). после загрузки файл оказывается битым =((( судя по дампу с какого-то смещения начинаются дублироваться отдельные байты (не все). это начинается с адреса #8001 - видимо как-то связано с моделью страниц (???).
если порезать файл руками и загрузить часть, то все ок
org #6300
snd incbin "test.000"
в аттаче 2 файла - сохранял из анрыла часть памяти для сравнения.
cjasm 1.07 stable - если в более новых версиях исправлено, то извиняюсь.
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
psndcj, уезжаю на Украину на несколько дней, поэтому отвечу только через неделю.
А просит не Гасман, а другой человек. И программирует он не для спектрума
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Попытался собрать SjASMPlus под Linux - не собирается
1.07 RC7 выдает:
1.07 RC8 PreКод:тут вначале куча строк с deprecated conversation ... sjasm/directives.cpp:2181: предупреждение: deprecated conversion from string constant to ‘char*’ sjasm/directives.cpp: In function ‘bool LuaSetPage(long unsigned int)’: sjasm/directives.cpp:2186: предупреждение: deprecated conversion from string constant to ‘char*’ sjasm/directives.cpp: In function ‘bool LuaSetSlot(long unsigned int)’: sjasm/directives.cpp:2199: предупреждение: deprecated conversion from string constant to ‘char*’ make: *** [sjasm/directives.o] Ошибка 1
Код:sjasm/directives.o: In function `dirSAVETAP()': directives.cpp:(.text+0x307b): undefined reference to `SaveTAP_ZX(char*, unsigned short)' collect2: выполнение ld завершилось с кодом возврата 1 make: *** [all] Ошибка 1
Spir0, для версии 1.07 RC7 используйте Makefile, который идет вместе с исходниками - успешно компилируется под Ubuntu и CentOS. На предупреждения не обращать внимания - если нет ERROR'ов, то значит все скомпилировалось и ищите бинарный файл "sjasmplus".
Для 1.07 RC8 Pre в Makefile видимо не подключен один из заголовочных файлов, нужно проверить, что передается в параметрах к GCC.
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
Error есть , при компиляции directives.cpp. Приведу фрагмент до ошибки сначала:
Т.е. не компилируется этот файл и sjasmplus нигде не создается.Код:g++ -O2 -DLUA_USE_LINUX -DMAX_PATH=PATH_MAX -Ilua5.1 -Itolua++ -o sjasm/directives.o -c sjasm/directives.cpp sjasm/directives.cpp: In function ‘int ParseDirective(bool)’: sjasm/directives.cpp:64: предупреждение: deprecated conversion from string constant to ‘char*’ тут куча всяких deprecated conversion from string constant to ‘char*’ и заканчивается как цитировал выше sjasm/directives.cpp: In function ‘bool LuaSetPage(long unsigned int)’: sjasm/directives.cpp:2186: предупреждение: deprecated conversion from string constant to ‘char*’ sjasm/directives.cpp: In function ‘bool LuaSetSlot(long unsigned int)’: sjasm/directives.cpp:2199: предупреждение: deprecated conversion from string constant to ‘char*’ make: *** [sjasm/directives.o] Ошибка 1
Компилятор - g++ --version
g++ (GCC) 4.3.3
Только что проверил - все ок. Действия были такие (Ubuntu):
1. Открыл терминал
2. Далее: mkdir SjASMPlus && cd SjASMPlus
3. Далее: wget http://switch.dl.sourceforge.net/sou...c-1.07-rc7.zip
4. Далее: unzip sjasmplus-src-1.07-rc7.zip
5. Далее: make (куча предупреждений)
6. Далее: ./sjasmplus и на экране:
Готово! В приложении бинарный файл (в архиве ZIP еще архив TAR+GZIP, т.к. на форуме разрешены только определенные расширения, а ZIP не сохраняет права у файлов)
ATW4GS / BIN2SNA / SquareMania <ТИ-3> / Ужасм+
ATM-Turbo 512 v4.50, Commodore 64G + TAC-2, Retro-Bit Super Retro TRIO
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)