Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 54

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

  1. #1
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию SDCC: Автоматизация

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

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

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

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

    P.S. Для тех, кто в танке: для работы скрипта требуется наличие установленного интерпретатора Regina REXX.
    Вложения Вложения
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вариант на cmake. Правда пока без автоматизации. Прикручу чуть позже.
    Вложения Вложения

  4. #3
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,193
    Спасибо Благодарностей отдано 
    422
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    130 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я как-то попробовал, ничего не получилось. Вот это:
    Код:
    /* SCLView */
    
    parse arg scl
    if scl='?' then do
    options prompt 'FILE/A: '
    parse pull scl
    end
    if scl='' then do
    say 'required argument missing'
    say 'No file to view'
    exit
    end
    scl=strip(scl,,' "')
    if ~open(file,scl,'R') then do
    say 'No file to view'
    exit
    end
    
    if readch(file,8)~='SINCLAIR' then do
    say 'File is not SCL format'
    exit
    end
    
    say 'SCLView (R)  View Utility  Version 1.0  03-Dec-2000'
    say ' (c) 2000  Alex Kovrigin, 2:5000/28.19'
    say
    say 'Name        Start  Length  Sector'
    say '----------  -----  ------  ------'
    
    do c2d(readch(file))
    say readch(file,8) readch(file)||right(c2d(reverse(readch(file,2))),7)||right(c2d(reverse(readch(file,2))),8)||right(c2d(readch(file)),8)
    end
    На Амиге пашет как танк.
    Или так:
    Код:
    /* TAPView */
    
    PARSE ARG TAPFILE
    IF TAPFILE='?' THEN DO
    OPTIONS PROMPT 'FILE/A: '
    PARSE PULL TAPFILE
    END
    IF TAPFILE='' THEN DO
    SAY 'required argument missing'
    SAY 'No file to view'
    EXIT
    END
    TAPFILE=STRIP(TAPFILE,,' "')
    IF ~OPEN(FILE,TAPFILE,'R') THEN DO
    SAY 'No file to view'
    EXIT
    END
    FILELENGTH=SEEK(FILE,0,'E')
    SEEK(FILE,0,'B')
    SAY 'TAPView (R)  View Utility  Version 1.0  10-Dec-2000'
    SAY ' (c) 2000  Alex Kovrigin, 2:5000/28.19'
    SAY
    SAY 'Type             Name        Length  Start   Size'
    SAY '---------------  ----------  ------  -----  -----'
    
    LOOP:
    BLOCKLENGTH=C2D(REVERSE(READCH(FILE,2)))-2
    FLAG=C2D(READCH(FILE,1))
    IF FLAG=0&BLOCKLENGTH=17 THEN DO
    TYPE=C2D(READCH(FILE,1))
    SELECT
    WHEN TYPE=0 THEN TYPE='Programm'
    WHEN TYPE=1 THEN TYPE='Number Array'
    WHEN TYPE=2 THEN TYPE='Character Array'
    WHEN TYPE=3 THEN TYPE='Bytes'
    OTHERWISE
    END
    NAME=READCH(FILE,10)
    SIZE=C2D(REVERSE(READCH(FILE,2)))
    START=C2D(REVERSE(READCH(FILE,2)))
    IF TYPE='Program'&START>32767 THEN START=NONE
    LENGTH=C2D(REVERSE(READCH(FILE,2)))
    IF TYPE='Bytes' THEN LENGTH=''
    SAY LEFT(TYPE,15)||RIGHT(NAME,12)||RIGHT(LENGTH,8)||RIGHT(START,7)||RIGHT(SIZE,7)
    END
    ELSE DO
    SAY '-----Headerless--block-----'RIGHT(FLAG,15)||RIGHT(BLOCKLENGTH,7)
    SEEK(FILE,BLOCKLENGTH)
    END
    IF SEEK(FILE,1)=FILELENGTH THEN EXIT
    SIGNAL LOOP
    Последний раз редактировалось creator; 06.07.2014 в 21:06.
    В правильно заданном вопросе содержится половина ответа

  5. #4
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от creator Посмотреть сообщение
    Я как-то попробовал, ничего не получилось.
    1. В функции STRIP третий аргумент должен быть одиночным символом, а у тебя строка из пробела и кавычки.
    2. То же самое, плюс баг Regina: "бесхозное" значение функции выводится в консоль, поэтому приходится значение функции чему-то присваивать.
    3. Чтобы включить все "плюшки" АмигаRexx, в начало программы нужно добавить строчки:
    OPTIONS AREXX_SEMANTICS
    OPTIONS AREXX_BIFS


    Подправил - работает отлично, в том числе в Linux.

    P.S. На усмотрение модератора, сообщения по поводу программирования на REXX можно переместить в отдельную тему "REXX на службе ZX".
    Вложения Вложения
    Последний раз редактировалось Sergey; 11.07.2014 в 15:50.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  6. #5
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Автоматизация, не обязательно, чтоб совсем полная, но ОБЛЕГЧАЮЩАЯ нудные процессы И для cmake, надо бы версию указать, а то там у каждой свои прибамбасы, как я понял.
    Да надо-бы таргеты для создания образа прикрутить, просто некогда.
    Насчет версии:
    Обычно прямо в CMakeLists.txt пишется минимальная требуемая версия.
    В данном случае:
    cmake_minimum_required(VERSION 2.8)

    Никаких заморочек которые сломались-бы в пост-идущих версиях там нет. Все просто как валенки. Ну и в теме с линковкой был выложен полный архив с проектом где все собирается cmake'ом. Лучше, наверное, посмотреть туда, т.к. там еще есть модули для сборки библиотек. Да и просто понятнее вариант.

  7. #6
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,193
    Спасибо Благодарностей отдано 
    422
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    130 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Подправил - работает отлично.
    Спасибо! Похоже сейчас мне масть и попрёт. Я ещё не знаю как, но какой-то прилив сил ощущаю. Ещё раз спасибо!
    В правильно заданном вопросе содержится половина ответа

  8. #7
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Как раз тот тулчейн и отказался собирать под cmake 3.0 - уж не знаю почему. Так что, тут аккуратней надо.
    Хм. Возможно там поменялись названия переменных. Надо проверить. Мне пока не на чем. У меня 2.8.

  9. #8
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Всё не тестировал, но прилагаемый пример компилится и работает. Об ошибках прошу докладывать незамедлительно.
    Вложения Вложения
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

  10. #9
    Guru Аватар для creator
    Регистрация
    02.07.2006
    Адрес
    Новосибирск
    Сообщений
    2,193
    Спасибо Благодарностей отдано 
    422
    Спасибо Благодарностей получено 
    219
    Поблагодарили
    130 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да что ж это такое творится с функцией seek()?
    Она работает, указатель по хэндлеру передвигает куда надо, но возвращает всегда 0 (а должна возвращать установленную позицию от начала). TAPView из-за этого косяка только первый заголовок и показывает т.к.:
    FILELENGTH=SEEK(FILE,0,'E') => FILELENGTH=0
    ...
    IF SEEK(FILE,1)=FILELENGTH THEN EXIT => 0=0 вот оно из цикла и выходит

    Я уже всю голову сломал.
    В правильно заданном вопросе содержится половина ответа

  11. #10
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    473
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    12
    Поблагодарили
    8 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от creator Посмотреть сообщение
    Да что ж это такое творится с функцией seek()?
    Она работает, указатель по хэндлеру передвигает куда надо, но возвращает всегда 0 (а должна возвращать установленную позицию от начала). TAPView из-за этого косяка только первый заголовок и показывает т.к.:
    FILELENGTH=SEEK(FILE,0,'E') => FILELENGTH=0
    ...
    IF SEEK(FILE,1)=FILELENGTH THEN EXIT => 0=0 вот оно из цикла и выходит

    Я уже всю голову сломал.
    Есть вещи, которые работают не так как должны или не работают
    Но это можно обойти другими средствами REXX. Сейчас на работе. Позже подумаю, как решить твой вопрос.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card
    Amiga A1200/Blizzard 1230@50/32/60GB
    Amiga A1200/Apollo 1260@66/32/60GB
    UnAmiga (C5) AGA GM7123 VideoDAC

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. SDCC: библиотеки для ZX
    от Sergey в разделе Программирование
    Ответов: 10
    Последнее: 25.10.2015, 19:30
  2. Бага SDCC версии 3.3.0
    от TSL в разделе Программирование
    Ответов: 37
    Последнее: 20.04.2014, 17:31
  3. sdcc. с чего начать.
    от ALKO в разделе Программирование
    Ответов: 42
    Последнее: 16.09.2012, 15:49
  4. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •