Вложенность define / макросов более 20 уровней. Это на какой версии? Свежая из гитхаба или нет?
Вложенность define / макросов более 20 уровней. Это на какой версии? Свежая из гитхаба или нет?
Да, прям свежак.
Для воспроизведения проблемы проект git@github.com:asve79/z80-ftp.git ветка wc_plugin.
Перед запуском билза ./_make.sh нужно выполнить ./get_depencies.sh
Сейчас ругается так:
==
**** Compile wc_ftp ****
SjASMPlus Z80 Cross-Assembler v.2019xxyy-WiP
main.asm(640): error: Over 20 defines nested
==
Причем у меня там явно нет вложенности 20. Может быть 3.
Последний раз редактировалось asve79; 01.03.2019 в 15:43.
ZX Evolution rev C4 + ZiFi
GIT: https://github.com/asve79
On-line:
https://t.me/z80_q11 - Канал общения около тем спека и Z80
https://t.me/speccymusic - Канал speccy music
https://t.me/speccy_hard - Канал speccy hardware
Проблема была из за того что параметр макроса и аргумент одинаковы. Это вызывало бесконечную рекурсию. Древний баг. В последнем коммите исправлено.
Код:MACRO _mkfile filestruct ; параметр 'filestruct' LD HL,filestruct ; здесь происходила бесконечная замена 'filestruct' на 'filestruct' CALL fs.mkfile ENDMКод:_mkfile filestruct ; и параметру 'filestruct' выше присваивается значение аргумента='filestruct'
Последний раз редактировалось mastermind; 02.03.2019 в 00:56.
Кстати, а пробовал ли кто компилировать код по адресу 0? У меня со старой версии фигня вышла какая-то.
по текущей пожелания по .SNA : сделать опционально включенными прерывания. И установить BC=адресу запуска(тоже по выбору)
Код:# org0.asm: lab1: jp lab1 $ sjasmplus --raw --lst=org0.lst org0.asm # org0.lst: 1 0000 lab1: 2 0000 C3 00 00 jp lab1 3 0003 # org0.out (hex): 00000000 C3 00 00
Почему именно BC=адресу запуска? Это с чем-то связано? Можно в принципе сделать все что угодно (кастомизацию заголовка SNA как угодно), но сначала я хочу парсер радикально переделать.по текущей пожелания по .SNA : сделать опционально включенными прерывания. И установить BC=адресу запуска(тоже по выбору)
- - - Добавлено - - -
Подробнее плз, зачем такое нужно? Что за юзкейс?
По мне так лучше поменьше в исходник таких вещей запихивать, наоборот лучше все что можно относительно вывода в файлы вынести в параметры ком. строки. (чтоб можно было менять эти параметры не правя исходник) А если нужно в разные файлы, так лучше и выводить из разных (т.е. разделить исходник).
Есть какая-то серьезная причина делать иначе?
Чтобы можно было определенные результаты компиляции использовать извне, например.
Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.
Seamos realistas y hagamos lo imposible!
Ernesto Che GuevaraПереехал сюда: SteinBlume (ex ATM CP/M Explorer)
http://era-cg.su
Новый релиз: 20190304
Бинарники для винды и мака брать здесь: https://github.com/sjasmplus/sjasmplus/releases
Для Linux/Unix несложно собрать самостоятельно, инструкция в README.
Для пользователей Arch Linux есть пакет в AUR. (устанавливается, например, с помощью yaourt -S sjasmplus)
- - - Добавлено - - -
Отправил pull-request в репо Homebrew: https://github.com/Homebrew/homebrew-core/pull/37576
Пользователям Маков и всем заинтересованным в распространении данной софтины, стоит зайти на репо sjasmplus (--> https://github.com/sjasmplus/sjasmplus ) и ткнуть в правом верхнем углу "Star", "Watch" или "Fork" если это кому нужно. Это может повысить вероятность включения пакета с нулевой, т.к. админы Homebrew по этим показателям оценивают популярность софта. (на данный момент тамошний бот ругается что GitHub repository not notable enough (<30 forks, <30 watchers and <75 stars) )
Что нового (ниже на русском), ChangeLog:
Added
- New option: --output-dir
- Smart positioning of stack in 128K .sna snapshots
- --raw option without a parameter enables generation of default *.out files
- --lst and --sym now also work as expected without parameters
- New option --target=i8080 to restrict instruction set to be compatible with i8080
- --labels to dump UnrealSpeccy-compatible labels without polluting the source code with external file names (via the existing directive)
Fixed
- RST 10h calls in 128K .sna snapshots
- Writing to address 0xFFFF was broken
- ORG was broken if DISP was active
- No more "Forward reference" error messages in EQU/DEFL
- Fixed .(expression) prefix (acts like DUP/REPT for a single line)
- Fixed include search order, including angle bracketed includes as documented
- Fixed infinite recursion in macro expansion when a parameter and substitution are the same
- HIGH(expr) / LOW(expr) / NOT(expr) now do not require the argument to be separated by whitespace
- INCBIN, INCTRD, INCHOB & INCLUDELUA now use the same file path resolution mechanism as INCLUDE
- Fixed per file output of exports by default (unless overriden by --exp)
Кратко по-русски:
- Добавлена опция --output-dir для принудительного вывода выходных файлов в заданную директорию.
- "Умное" расположение стека при создании 128К .sna (в т.ч. для решения проблемы в данной теме описанной, с выводом по RST #10)
- *.out по умолчанию не создаются, опция --raw без параметра включает вывод *.out (с параметром работает как и раньше)
- --lst и --sym теперь можно указывать без параметра, имена файлов генерируются автоматически на основе имени первого исходного файла.
- --target=i8080 - для генерации кода, совместимого с i8080.
- --labels (с параметром или без) - для вывода файла меток (для UnrealSpeccy и т.п.), теперь можно не засорять исходники вещами которым там не место, типа имен файлов меток
- "Ссылки вперед" в EQU/DEFL теперь работают без ошибок.
- Префикс .(выражение) не работал (работает как DUP/REPT) для одной строки - исправлено.
- Порядок поиска инклюдов приведен в порядок.
- Исправлена упомянутая несколькими постами выше проблема с зацикливанием разворачивания макросов.
- HIGH(выражение) / LOW(выражение) / NOT(выражение) можно теперь использовать без пробела перед скобкой
- INCBIN, INCTRD, INCHOB & INCLUDELUA теперь ищут файлы по той же логике что и INCLUDE
- экспорты пишутся теперь как задумано, по умолчанию в файлы с именами соответствующими именам исходников верхнего уровня. (если не использована опция --exp)
Тестирование приветствуется. Баги, реквесты и предложения лучше всего писать сюда (можно на русском): https://github.com/sjasmplus/sjasmplus/issues
Последний раз редактировалось mastermind; 04.03.2019 в 07:01.
Последний раз редактировалось Bedazzle; 04.03.2019 в 10:50.
У мнУ на первом проверенном исходнике уже "застряло"
и лог компиляцииКод:jp pe,FastLDIR_Loop
---------- Capture Output ----------
> "D:\Program Files\Crimson Editor SVN286M\sjasmplus-win32-1.07-rc7\sjasmplus.exe" kva4bis.asm
SjASMPlus Z80 Cross-Assembler v.20190304
Pass 1 complete (0 errors)
Pass 2 complete (0 errors)
kva4bis.asm(757): error: Label not found: pe
Pass 3 complete
Errors: 1, warnings: 0, compiled: 1004 lines
> Terminated with exit code 1.
Причем pe - это не метка как быКод для Z80, уточ нюю на всяк. случай
Profi v3.2 -=- Speccy2010,r2
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)