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

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: SDCC: библиотеки для ZX

  1. #1
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию SDCC: библиотеки для ZX

    Предлагаю выкладывать/обсуждать в этой теме библиотеки SDCC для работы c ZX.
    Для затравки привожу библиотеку-обёртку для функций TR-DOS. Заголовочный файл нужно поместить в SDCC/include/, библиотеку - в SDCC/lib/z80/.
    25.10.2015г. Добавлена библиотека Like REXX strings.
    Вложения Вложения
    Последний раз редактировалось Sergey; 25.10.2015 в 19:29. Причина: обновлено приложение
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

  2. Эти 5 пользователя(ей) поблагодарили Sergey за это полезное сообщение:
    Alcoholics Anonymous (15.04.2014), alone (10.06.2014), Eltaron (21.02.2014), perestoronin (15.08.2013), Valen (14.04.2014)

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

  4. #2
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Из наименований всех функций, кроме Init, убран префикс "trdos" во избежание громоздкости.

    Добавлена функция ReadSectorsDMA.
    Читает данные с дискеты с указанных дорожки/сектора в буфер, а затем пребрасывает с помощью ПДП в память с заданной страницы.
    Буфер фиксированный: 4кб с адреса 0x6000. Когда не пользуется чтение с дискеты, там можно держать что-угодно.
    Добавлены функции CloseTRDOS и OpenTRDOS.
    CloseTRDOS() включает в CPU0 и 1 ОЗУ, OpenTRDOS() возвращает ПЗУ TR-DOS и RAM5 на место.

    Вполне не плохая, думаю, получается модель памяти:
    непрерывно 32кБ под сишный код в CPU2 и 3. С 0x6000 8кБ под всякие буферы, которые можно использовать безопасно для Си и назначать им ЧЕТНЫЕ адреса, так необходимые для ПДП. И TR-DOS под боком
    В разделы CPU0 и 1 можно смело врубать паги для использования из программы на Си.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

  5. #3
    Member
    Регистрация
    21.05.2006
    Адрес
    Canada
    Сообщений
    69
    Благодарностей: 99
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sergey,

    Является TRDOS способны потокового ввода / вывода или будет, что должно быть сделано вручную?

    Я искал для кода к вождению TRDOS на пару недель, поэтому я прошу. Я не был в состоянии найти ничего подходящего для потокового ввода / вывода в C еще.

    Извините за плохой перевод.

  6. #4
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    Sergey,

    Является TRDOS способны потокового ввода / вывода или будет, что должно быть сделано вручную?

    Я искал для кода к вождению TRDOS на пару недель, поэтому я прошу. Я не был в состоянии найти ничего подходящего для потокового ввода / вывода в C еще.

    Извините за плохой перевод.
    Hi! You may write in English. I understand a little

    Sorry, stream i/o is not yet implemented. I hope soon to write the "fread"/"fwrite" functions. (I'm not a professional programmer).
    Now my library is a simple interface to standard TR-DOS procedures based on 0x3d13 point.

    By the way, have You ZX-Evolution?
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

  7. #5
    Member
    Регистрация
    21.05.2006
    Адрес
    Canada
    Сообщений
    69
    Благодарностей: 99
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sergey Посмотреть сообщение
    Hi! You may write in English. I understand a little
    Ха, спасибо Sergey. Я буду держать плохой русский наверху здесь для всех остальных.

    Хорошо, я надеялся подтолкнуть вас к мысли о реализации потоков Я на самом деле один из разработчиков для z88dk и у нас есть подмножество С11, который включает поток ввода / вывода, так что мы искали заднем конце для дисковых устройств . Как вы можете себе представить, существует не так много доступны, так это выглядит, как нам придется написать все это: (

    По крайней мере, имея некоторые примеры кода, как ваша помогает понять устройство. Английские руководства не настолько хороши.

    Нет, к сожалению моя машина Синклер (Timex Sinclair 2068) умер много лет назад, когда я замкнут несколько строк случайно при подводилась мощность, так что я все эмуляции сейчас. Но у меня есть интерес ко всем Z80 машин, особенно Синклер, связанных с. Будучи из СУВ, мы не знаем, слишком много о ZX-Evo, лишь кое-что из того, что Alone Coder отправил.

    =======

    Sorry, stream i/o is not yet implemented. I hope soon to write the "fread"/"fwrite" functions. (I'm not a professional programmer).
    Now my library is a simple interface to standard TR-DOS procedures based on 0x3d13 point.
    Ok, I was hoping to prod you toward thinking of a streams implementation I am actually one of the devs for z88dk and we have a C11 subset that includes stream i/o so we're looking for the back-end for disk devices. As you can imagine, there isn't much available so it looks like we will have to write it all

    At least having some sample code like yours helps to understand the device. The English manuals are not that good.

    By the way, have You ZX-Evolution?
    No, unfortunately my Sinclair machine (a Timex Sinclair 2068) died many years ago when I shorted a few lines by accident while power was applied, so I am all emulation now. But I have an interest in all z80 machines, particularly Sinclair-related. Being from WOS, we don't know too much about ZX-Evo, only a few things from what Alone Coder has posted.

  8. #6
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Раньше я библиотеки собирал с помощью досовских бат-файлов, каждый раз вручную добавляя в батник сведения о новой написанной функции.
    Со временем осозналось, что это как-то "не по-возролому", в связи с чем было принято решение процесс хоть как-нибудь автоматизировать.
    После безуспешной возни с убогими Code::Blocks и Eclipse захотелось чего-то необычного и одновременно простого, для души.

    Итак, REXX-скрипт для автоматизированного создания SDCC-библиотеки из набора исходников.

    Работает так:
    1. Помещаем его в папку с исходниками функций будущей библиотеки..
    2. Запускаем с аргументом "имя_будущей_библиотеки_без_расширения", например:
    Код:
    makelib.rx trdos
    Теперь не надо заботиться о содержимом батника. Просто складываю все функции в одну папку со скриптом, и он сам мне собирает либу в лучшем виде.

    Интерпретатор Regina REXX брать отсюда:
    http://sourceforge.net/projects/regi...gina-rexx/3.8/

    ОБНОВЛЕНИЕ 10-06-2014
    Сделал версию скрипта для "умной" линковки библиотеки SDCC из монолитного исходника, задействовав утилиту Oleg N. Cher "smartlib.exe".
    То есть, скрипт предварительно режет монолитный исходник на отдельные исходники для каждой функции, а затем компилит их.
    Скрипт должен лежать (пока) в папке с исходником. Утилита smartlib - там же, или же должна быть добавлена в PATH.
    Прилагаю архивы: скрипт сам по себе и тестовый пример с библиотекой "evo.c". В ней, как раз, и увидите как "разрезать" исходник.
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	makelib_.png 
Просмотров:	215 
Размер:	14.1 Кб 
ID:	48334  
    Вложения Вложения
    Последний раз редактировалось Sergey; 10.06.2014 в 18:49.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

  9. #7
    Member
    Регистрация
    16.01.2009
    Адрес
    г. Днепропетровск
    Сообщений
    129
    Благодарностей: 30
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Чёт я не до конца понял. Это так было изобретено VCS и make?

  10. #8
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Думаю, можно к Code::blocks в качестве make для SDCC прикрутить скрипт на REXX, который будет парсить файл.project и компилить перечисленные в нём файлы.

    ---------- Post added at 19:47 ---------- Previous post was at 19:40 ----------

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    У меня тоже есть собственное решение - утилита smartlib...
    Здорово, - можно её заюзать, и хранить исходник либы одним файлом - это удобней. А скрипт всё разрежет, откомпилит и соберёт.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    "Умная" линковка (smart linking) в ZXDev/SDCC.
    Да-да, умная линковка рулит. Переделал так либу EVO-SDK - выигрыш по памяти в конечном продукте на лицо.
    http://www.zx.pk.ru/showpost.php?p=704377&postcount=23
    Последний раз редактировалось Sergey; 10.06.2014 в 14:23.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

  11. #9
    Activist
    Регистрация
    21.12.2005
    Адрес
    Kyiv/Ukraine
    Сообщений
    412
    Благодарностей: 48
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Когда делал SDCC framework для v6z80p,
    то долго думал, как бы попроще и по эффективнее решить задачу сборки проектов SDCC.

    Сначала юзал обычный make, но походу, при добавлении либ и других сорцов, мэйк файлы уже превращались в некие "непроходимые джунгли".
    Плюс, была необходимость собирать и под Линуксом и под Виндой (два юзера на линухе, а другие юзера то на винде были).

    Долго выбирал - хотелось, что по проще, перебрал кучу всяких lua сборщиков. Главная проблема - это сложно вставить внутрь поддержку sdcc, плюс ещё и баги могут вылазить, в самом сборщике.

    Вернулся, "к истокам" - cmake или scons - стабильные системы.
    cmake - слишком тяжеловесен для такого небольшого проекта и там M4 подобный язык, мне не понравился

    scons
    - мульти платформер (Linux, Windows)
    - хорошо-читаемый язык python 2
    - легко вставить/прописать новый компилер, линковщик, асм
    (прописал два асма sdasz80 и pasmo)

    Принцип работы scons, такой же как у makefile:
    1. строится дерево зависимостей
    2. дерево собирается

    Только scons строит это дерево, исполняя скрипт на питоне.
    Но, если заюзаете scons, приготовитесь потратить немного времени именно на написание питон кода + чтение доков.

    Пример: питон файлы sdcc для для scons
    sdcclib.py
    sdasz80.py
    sdcc.py
    pasmo.py
    http://sourceforge.net/p/v6z80p/code...ns/site_tools/

    И собственно мои файлы, там где сборка реализована. (может пригодится)
    http://sourceforge.net/p/v6z80p/code...ms/site_scons/
    Последний раз редактировалось Valen; 10.06.2014 в 15:11.
    V6Z80P - Back for Good

  12. Этот пользователь поблагодарил Valen за это полезное сообщение:
    Sergey (10.06.2014)

  13. #10
    Activist Аватар для Sergey
    Регистрация
    23.12.2006
    Адрес
    Славный город Самара
    Сообщений
    405
    Благодарностей: 101
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Добавил скрипт для автоматической умной линковки. См сообщение №6
    http://zx.pk.ru/showpost.php?p=715781&postcount=6

    ---------- Post added at 20:55 ---------- Previous post was at 20:52 ----------

    Цитата Сообщение от Valen Посмотреть сообщение
    И собственно мои файлы, там где сборка реализована. (может пригодится)
    http://sourceforge.net/p/v6z80p/code...ms/site_scons/
    Круто! Поражаюсь лаконичностью.
    С уважением,
    Gris / Red Triangle.
    _____________________________________
    ZX-EVO/TS-Labs config/NGS/HDD/SD-card

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. sdcc. с чего начать.
    от ALKO в разделе Программирование
    Ответов: 42
    Последнее: 16.09.2012, 13:49
  2. Библиотеки
    от Vitamin в разделе Unsorted
    Ответов: 2
    Последнее: 11.01.2009, 17:09
  3. SDCC вокруг да около
    от andrews в разделе Программирование
    Ответов: 8
    Последнее: 26.03.2008, 08:16

Ваши права

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