Page 1 of 1

SDCC: Автоматизация

PostPosted: Sun, 06.07.2014 13:44:58
by amixgris
Предлагается публиковать всяческие утилитки, так или иначе автоматизирующие процесс создания программ в SDCC от компиляции до конечного продукта.
Также приветствуются настройки CMAKE, Code::Blocks, Eclipse, иных сред разработки, для работы с SDCC.

Прилагаю sdccscl.rex - скрипт, автоматизирующий процесс компиляции исходника на Си и преобразование в готовое к запуску приложение.
В общем, игла в яйце, яйцо в утке... откомпиленный код в BASIC-монолодере, BASIC-монолодер в православном (crc) SCL`е, SCL - в папке с исходным текстом. Целевой исходник относительно скрипта может размещаться где-угодно.

В начале скрипта есть настройки, но реально из них можно менять только адрес стэка и список подключаемых библиотек, потому что иначе надо переделывать генерацию scl-файла.

К скрипту прилагается пример: scr.c. Программка заполняет спектрумовский экран кодом 0xAA.

Re: SDCC: Автоматизация

PostPosted: Sun, 13.07.2014 23:00:39
by amixgris
Готово: magicwc.rex, собиралка плагинов для WC по типу make.
Должна лежать в папке с исходниками плагина. Параметров не требует. Всё задаётся статично внутри скрипта.
На входе имена исходных файлов (Си, ассемблер, данные), а на выходе - плагин.WMF.
Имя плагина определяется по файлу для 0-й страницы.
Более подробно - памятка в конце скрипта.

Всё не тестировал, но прилагаемый пример компилится и работает. Об ошибках прошу докладывать незамедлительно.
P.S.
Продублировано в теме про Wild Commander.

Re: Wild Commander

PostPosted: Thu, 04.09.2014 22:33:30
by zboszor
I just wanted to compile the ROM writer module using that Rexx file from "magicwc.zip".
Code: Select all
$ rexx magicwc.rex
   157 *-* IF ~OPEN("O0", pluginname, "WRITE") THEN DO ;
REX0035E: Error 35 running /home/zozo/zxevo-files/magicwc/magicwc.rex line 157:  Invalid expression
REX0340E: Error 35.1:  Incorrect expression detected at "~"

I suppose the "~" character meant to be negated logic, I replaced it with "\" and my Rexx interpreter accepted that. The next problem is:
Code: Select all
$ rexx magicwc.rex
 
-----------------------------------------------------
   MAGICWC (R)  WildCommander plugin make utility   
              Version 1.0  13-Jul-2014               
          (c) 2014, Amixgris / Red Triangle         
-----------------------------------------------------

   133 *-*                   CALL sjasmplus "--raw="t_name||".bin" DataPg
REX0043E: Error 43 running /home/zozo/zxevo-files/magicwc/magicwc.rex line 133:  Routine not found
REX0417E: Error 43.1:  Could not find routine "SJASMPLUS"

I have sjasmplus and sdcc installed, the Rexx interpreter is oorexx.

Re: SDCC: Автоматизация

PostPosted: Fri, 31.10.2014 16:25:45
by amixgris
Hi, zboszor!
Sorry for the late reply.
We have a problem with the SJASMPLUS: the "--raw=" key is not working.
So we need:
1) to comment line of the rexx-script with "CALL sjasmplus "--raw="t_name||".bin" DataPg" (-> /* CALL sjasmplus "--raw="t_name||".bin" DataPg*/
2) to turn to the end of the source file next lines:
@endcode:
SAVEBIN "project_name.bin", 0x8000, endcode-0x8000

3) to compile our source file separately manually;
4) to place the compiled file in a folder with rexx-script.
5) to run script

All files must be placed in same folder with rexx-script

If you plan to use only sjasmplus, I modify REXX-script for you.