Page 1 of 1

Библиотеки для SDCC

PostPosted: Thu, 15.08.2013 22:49:28
by amixgris
Предлагаю выкладывать/обсуждать в этой теме библиотеки SDCC для работы с TS-Config и (или) стандартным ZX.
1) TR-DOS.LIB
2) LikeREXXstr.LIB

Re: Библиотеки для SDCC

PostPosted: Mon, 14.04.2014 09:27:49
by amixgris
Из наименований всех функций, кроме Init, убран префикс "trdos" во избежание громоздкости.

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

Вполне не плохая, думаю, получается модель памяти:
непрерывно 32кБ под сишный код в CPU2 и 3. С 0x6000 8кБ под всякие буферы, которые можно использовать безопасно для Си и назначать им ЧЕТНЫЕ адреса, так необходимые для ПДП.
В разделы CPU0 и 1 можно смело врубать паги для использования из Си.

Re: Библиотеки для SDCC

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

Итак, держите REXX-скрипт для автоматизированного создания SDCC-библиотеки из набора исходников.
(Возможно, конечно, я изобрёл велосипед, но мне, откровенно, пох... :) )

Работает так:
1. Помещаем его в папку с исходниками функций будущей библиотеки..
2. Запускаем с аргументом "имя_будущей_библиотеки_без_расширения", например:
Code: Select all
makelib.rx trdos

Теперь не надо заботиться о содержимом батника. Просто складываю все функции в одну папку со скриптом, и он сам мне собирает либу в лучшем виде.
(Кажется, просмотр рекламы не прошел бесследно для моего мозга :morse: )

Вот так выглядит пример результата его деятельности.
makelib.png
makelib.png (61.56 KiB) Viewed 30915 times


Естественно, этот скрипт будет работать только если у вас установлен интерпретатор REXX. Я себе поставил Regina REXX. Скачать эту замечательную программу
можно отсюда:
http://sourceforge.net/projects/regina-rexx/files/regina-rexx/3.8/

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

Re: Библиотеки для SDCC

PostPosted: Tue, 10.06.2014 21:34:46
by amixgris
Добавил скрипт, см. предыдущее сообщение.

Re: Библиотеки для SDCC

PostPosted: Wed, 11.06.2014 15:55:09
by Q-Master
cmake не пробовал?

Re: Библиотеки для SDCC

PostPosted: Thu, 12.06.2014 09:45:31
by amixgris
Q-Master wrote:cmake не пробовал?

Нет. Мы не ищем лёгких путей. В ночь перед наступлением мы меняем ландшафты, причём вручную, - утром противник теряется на незнакомой местности и приходит в полную небоеготовность! (с) не я. :)
Тем более, кто-то же должен в этом мире знать REXX. Так это буду я. :))))

Re: Библиотеки для SDCC

PostPosted: Fri, 13.06.2014 14:53:49
by Q-Master
amixgris wrote:Нет. Мы не ищем лёгких путей. В ночь перед наступлением мы меняем ландшафты, причём вручную, - утром противник теряется на незнакомой местности и приходит в полную небоеготовность! (с) не я. :)
Тем более, кто-то же должен в этом мире знать REXX. Так это буду я. :))))

Боюсь тебя расстроить, но в этом мире рекс знает куда больше народу. 8) У меня на нем фидонода крутилась, точнее кусок фидоноды. В 1998-2005.

Ну и на цмэйке таки писать сурово проще.

Re: Библиотеки для SDCC

PostPosted: Sun, 25.10.2015 19:05:27
by amixgris
Добавил в первый пост библиотеку Like REXX string. - Реализация РЕКСовых функций работы со строками для Z80 (SDCC). Пока 17 функций. Работоспособность ПРОВЕРЕНА. Планируется еще 15. Далее по обстоятельствам.
Итак:
Code: Select all
void CHANGESTR(char* dest, char* needle, char* haystack, char* newneedle);
void UPPER(char* d, char* s);
void COMPRESS(char* d, char* s, char* list);
void COPIES(char* d, char* s, unsigned char num);
void DELSTR(char* d, char* s, int start, int lenght);
void LEFT(char* d, char* s, unsigned char lenght, char pad);
void REVERSE(char* d, char* s);
void SPACE(char* d, char* s, unsigned char len, char pad);
void TRIM(char* d, char* s);
int  COMPARE(char* s1, char* s2, char pad);
int  WORDINDEX(char* string, int WordNum);
int  WORDS(char* string);
void WORD(char* dst, char* string, int WordNum);
int  WORDLENGHT(char* string, int WordNum);
int  WORDPOS(char* phrase, char* string, int startpos);
int  LENGHT(char* string);
int  COUNTSTR(char* needle, char* haystack);


Добавил пример работы некоторых функций.

Re: Библиотеки для SDCC

PostPosted: Sun, 25.10.2015 20:13:53
by g0blinish
Что-то твоя демка кисло выглядела..

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 07:40:37
by amixgris
Увы :(

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 09:01:09
by g0blinish
тогда неясно, зачем проект? типа just4fun?

А как это будет работать?
amixgris wrote:int  LENGHT(char* string);

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 12:09:54
by amixgris
g0blinish wrote:тогда неясно, зачем проект? типа just4fun?

Ну да. Захотелось, - и написалось. Пока писал испытывал определённое удовольствие от процесса.
Может, кому-нибудь пригодится когда для парсинга текстовиков всяких на ZX.

g0blinish wrote:А как это будет работать?

amixgris писал(а):
int LENGHT(char* string);


Ну как...
типа:
Code: Select all
int n;
char txtbuf[100];
void main(void)
{
blablabla();

COMPRESS(txtbuf, "   My    very 777 nice  string!!!!     ", "7!");
n = LENGHT(txtbuf);

blablabla();

}

так узнаём, какой длинны получилась сжатая строка.

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 13:52:00
by psb
не хватает функции PARSE :)

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 14:00:59
by g0blinish
psb wrote:не хватает функции PARSE

ага, заодно match()

непонятно с длиной строки.

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 15:01:31
by amixgris
g0blinish wrote:непонятно с длиной строки.
- длина без завершающего нуля.

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 15:08:45
by amixgris
psb wrote:не хватает функции PARSE
Всему свое время. Может, и до неё дойду.

Re: Библиотеки для SDCC

PostPosted: Mon, 26.10.2015 15:49:55
by g0blinish
coming soon PARSE megademo!

ААА спрятался в угол и рыдает от зависти...