Баг имеется. Заставить исходник работать на всех версиях можно, установив нулевую страницу перед SAVESNA (т.е. PAGE 0, затем SAVESNA).
Вид для печати
Ну это-то само собой понятно... Фикс планируется?
Shadow Maker, да, конечно и соот-но будет выпущена стабильная 1.07 версия. Ориентировочно в начале февраля.
В разделе DISPLAY <bytes>
Написано:
Следует читать:Код:ORG 100h
TESTLABEL:
;...some code...
RET
DISPLAY "--the some program-- by me"
DISPLAY "TESTLABEL address is:",/A,TESTLABEL
/*
will be out to the console next strings:
> --the some program-- by me
> TESTLABEL address is:0x100,257
*/
Код:ORG 100h
TESTLABEL:
;...some code...
RET
DISPLAY "--the some program-- by me"
DISPLAY "TESTLABEL address is:",/A,TESTLABEL
/*
will be out to the console next strings:
> --the some program-- by me
> TESTLABEL address is:0x100,256
*/
слегка оффтоп... Недавно открыл для себя такое чудо (сабж), немного, правда, покоробило, что явно нигде не написано что за *.l файлы, как оно должно называться, где лежать. В доке асма только коротенько про labelslist, в доке к анреалу только быстрая кнопка ( просветление случайно наступило тут )...
Иногда генерятся такие метки вида:Не знаю нормально ли это... Еще анреалу (0.35.2) плохеет (тупо с исключением валится) от слишком длинных меток. Написал за пару минут перл-скрипт для обрезания имени меток до 10 символов и отсеивания меток вида 54.53.51.50 (на всякий случай). Терь жить мона.:)Код:05:27E3 54.53.51.50>l5
упс, сорри). 0.35.2Цитата:
[:\/\/\/\/\/\/\:]
ну вообще-то вы бы батенька уточняли версию анрила, ибо в старых, такая проблема присутствовала, в последних версиях такое давно пофикшено!
гы гы :) пока писал пост разобрался :) номер строки всё-таки должен быть 1, у меня было 0
было:
стало:Код:Basic db #00,#00 ; basic number string [#00,#01]
dw EndBasic-Begin ; size of basic string
Begin db #FD ; "CLEAR" token
db #30 ; "0" fake numeber
Код:Basic db #00,#01 ; basic number string [#00,#01]
dw EndBasic-Begin ; size of basic string
Begin db #FD ; "CLEAR" token
db #30 ; "0" fake numeber
SAVETRD "st_force.trd","ST_FORCE.B",16384,EndBasic-Basic,1
Вот так я записываю и у меня всё автостартует.
Логично.
Сижу, привожу код компилятора в порядок...
Думаю, что нужно выпустить две версии 1.07 Stable и 1.08 RC1. Последняя будет включать в себя код Kurles'a.
Обнаружено в версии 1.07 RC7:
- savebin с нулевой длиной записывает файл примерно 40кб размером
- если есть метка и на следующей строке equ, то не понимает.
в сорцах есть такое:
видимо, как результат:Код:if (length <= 0) {
length = 0x10000 - start;
}
savebin "file.bin", addr, 0
и
savebin "file.bin", addr
эквивалентны. Тость парсинг несущесвующего параметра - ноль.
явно нигде не написано, но это ошибка синтаксиса - должно быть в одной строке. Точно также не проканает вещь типа:
Код:ld
a,
10
а имхо вообще лучше это не трогать - это все-таки не аласм - а сорцы с аласма переделать каждому кому это надо самому. со Шторма тоже не все корректно перетаскивается - но это же не повод для изменения парсинга.
в Шторме .10 ldi:inc h компилится как dup 10 (ldi:inc h) edup
а в сиджасме ----- dup 10 (ldi) edup : inc h
нашел несовместимостей 5 когда перетаскивал свои сорцы в сиджасм - самое плохое, что в отличие от вышеуказанной "ошибки" с EQU никакого сообщения об ошибке нет - в результате получаем просто нерабочий бинарник =(
Условия: sjasm, unreal.
Проблема: если писать прогу, которая занимает больше 128 к, имеем некоторые затруднения с загрузкой программы в эмуль... которые можно обойти по-разному, как то: выгружать откомпилированное в трд-образ, потом при инициализации загрузить выгруженное в память... Ну тут уже каждый как хочет... Мне, например, не подходит время ожидания пока программа загрузится, даже когда эмуль настроен на мильон-мильардов тактов в секунду, это чуть дольше чем вообще без загрузки.
Решение: Имеем сорцы компилера и эмуля - и имеем поддержку снапшотов выше 128к.
Что с того вышло:
sjasm:
- savesna само выбирает размер снапшота в зависимости от device( в данный момент добавлены 256К, 512К, 1024К );
- какой бы не был установлен последний page - в снапшоте он всегда - 7.
- тип девайса ( атм, пентагон и тд ) не сохраняется в снапшот и не восстанавливается.
unreal:
- сделана только _загрузка_ снапшотов, выгрузка мне просто пока не нужна %);
- после загрузки размер снапшота ( те, что более 128К ) автоматом устанавливает размер памяти в эмуляторе ( не тип ). [В сорцах как альтернатива есть мессадж бокс].
может еще что забыл... сорцы ( только измененные файлы ) прилагаются.
столкнулся с неприятным багом =(
org #6300
snd incbin "test.dat",0,#10000-$-1
такая конструкция сделана для того, чтобы загрузить файл который не влазит в память целиком (-1 поставил уже в поисках избавления от глюка). после загрузки файл оказывается битым =((( судя по дампу с какого-то смещения начинаются дублироваться отдельные байты (не все). это начинается с адреса #8001 - видимо как-то связано с моделью страниц (???).
если порезать файл руками и загрузить часть, то все ок
org #6300
snd incbin "test.000"
в аттаче 2 файла - сохранял из анрыла часть памяти для сравнения.
cjasm 1.07 stable - если в более новых версиях исправлено, то извиняюсь.
psndcj, уезжаю на Украину на несколько дней, поэтому отвечу только через неделю.
А просит не Гасман, а другой человек. И программирует он не для спектрума :)
Попытался собрать 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.
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 и на экране:
http://zx.pk.ru/attachment.php?attac...1&d=1240160496
Готово! В приложении бинарный файл (в архиве ZIP еще архив TAR+GZIP, т.к. на форуме разрешены только определенные расширения, а ZIP не сохраняет права у файлов)
Aprisobal, да, именно так тоже все и делаю, но почему то вылетает с ошибкой. Вот в 1.07 RC8 Pre этот файл и остальные компилятся нормально (ну кроме ошибки в конце с SaveTAP) - мистика какая то :)
Вообщем пока буду пользовать готовый бинарник в ожидании фикса RC8 Pre
А вот этого бы крайне не рекомендовал. В 90% случаев предупреждение делается не зря и крайне стоит поправить код так, чтобы оно не возникало.
ЗЫ. У меня тоже не собирается:
Цитата:
[vitamin@vitamin-linux SJAsmPlus]$ make 2>&1 | grep error
sjasm/directives.cpp:1639: error: ‘system’ was not declared in this scope
sjasm/directives.cpp: In function ‘void _lua_showerror()’:
sjasm/directives.cpp:1897: error: ‘atoi’ was not declared in this scope
[vitamin@vitamin-linux SJAsmPlus]$ uname -a
Linux vitamin-linux 2.6.29-ARCH #1 SMP PREEMPT Wed Apr 8 12:39:28 CEST 2009 x86_64 AMD Turion(tm) 64 X2 Mobile Technology TL-60 AuthenticAMD GNU/Linux
Верните на родину тот пейдж, который был установлен последним, плыз. А то тут извратами приходится страдать из-за этого.
У меня собрался. Результат присобачен. К каждому исходнику, в котором gcc ругался на atoi, calloc и ещё что-то прибавил #include <stdlib.h>, ибо там они все скрываются. 1.0.7.rc7
ЗЫ: debian5.0 ведро 2.6.26-1-686 gcc 4.3.2
PS: И огромное спасибо RASMER'у за то, что пинал меня полгода, подбивая собрать весч, которой я не пользуюсь.
вот нет в жЫзни справедливости....
я СанСаныча пинал полгода гдето собрать под лялих.... а все спасибы ему... :(
Вижу, что deb и rpm пакеты интересны будут не только мне одному?
@Aprisobal, привет! =)
я тут нарисовал конфиги для синтаксической подсветки z80 (и директив sjasmplus) в XCode (IDE for MacOSX), можешь их добавить в Recommended Editors?
суть такова:
для установки подсветки - следует скопировать файлы a80.xclangspec и a80.xcspec в каталог /Developer/Library/Xcode/Specifications/,
для установки файлового темплейта - каталог "Z80 Assembly File.pbfiletemplate" скопировать в "/Developer/Library/Xcode/File Templates/Other".
либо можно воспользоваться автоматическим инсталлятором "Z80 Syntax Coloring for XCode.mpkg", который сделает ровно то же самое.
(нормальные темплейты для удобного build и build&run — ещё не готовы, если кто подсобит - будет круто =)
для единообразия - линк на XCode -> http://developer.apple.com/tools/xcode/