Solid C - компилятор Си для Спринтера

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

dhau
Maniac
Posts: 233
Joined: 12 Oct 2004 13:49

Post by dhau »

Vasil Ivanov wrote:У него можно получить сорцы SOLID C или это глухое дело ?.
Представления не имею. Если найдешь SOLiD-а, обязательно свистни мне :) Он всплыл на пару сообщений в Фидо-эхе RU.MSX где-то в 2001-м году, но потом опять пропал :(
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Post by Vasil Ivanov »

dhau wrote:
Vasil Ivanov wrote:У него можно получить сорцы SOLID C или это глухое дело ?.
Представления не имею. Если найдешь SOLiD-а, обязательно свистни мне :) Он всплыл на пару сообщений в Фидо-эхе RU.MSX где-то в 2001-м году, но потом опять пропал :(
Свисну ;)
Vasil Ivanov
vasil-i@yandex.ru
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Vasil Ivanov wrote:
Shaos wrote:Напомни какие файлы надо переводить на английский в первую очередь?
readme.rus - первое, что надо перевести. Здесь особенности
пакета, портированного на Спринтер.

bugs.! - он совсем маленький ;)

cc.rus - дока по си-компилятору.

devel-1.rus - некоторая инфа по сборке проги из нескольких
исходников.

devel-2.rus - создание своих библиотек (irl-формата),
для юзания с линкером ld.exe.

ld.rus - дока линкера.

ol.rus - дока библиотекаря.

whatsnew.rus - история версий программ пакета.

Очень не помешала бы дока по си-функциям (clib.rus) данного
пакета, потому, что в некоторых функциях встречаются отличия
от стандартных (PC-шных), например функции перемещения
указателя в файле. Но она объемистая.
Да я фактически все доки и перечислил ;). По .rel/.irl
форматам и по асму, уже есть англицкий вариант.
Вобщем все доки, кроме cc.rus и clib.rus ты переведешь за
час, а может и быстрей ;).
Вопрос - как перевести слово "библиотекарь", чтобы было правильно в том смысле, в котором оно тут используется?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
cr0acker
God
Posts: 1078
Joined: 03 Feb 2003 13:53

Post by cr0acker »

Shaos wrote:
Vasil Ivanov wrote:
Shaos wrote:Напомни какие файлы надо переводить на английский в первую очередь?
readme.rus - первое, что надо перевести. Здесь особенности
пакета, портированного на Спринтер.

bugs.! - он совсем маленький ;)

cc.rus - дока по си-компилятору.

devel-1.rus - некоторая инфа по сборке проги из нескольких
исходников.

devel-2.rus - создание своих библиотек (irl-формата),
для юзания с линкером ld.exe.

ld.rus - дока линкера.

ol.rus - дока библиотекаря.

whatsnew.rus - история версий программ пакета.

Очень не помешала бы дока по си-функциям (clib.rus) данного
пакета, потому, что в некоторых функциях встречаются отличия
от стандартных (PC-шных), например функции перемещения
указателя в файле. Но она объемистая.
Да я фактически все доки и перечислил ;). По .rel/.irl
форматам и по асму, уже есть англицкий вариант.
Вобщем все доки, кроме cc.rus и clib.rus ты переведешь за
час, а может и быстрей ;).
Вопрос - как перевести слово "библиотекарь", чтобы было правильно в том смысле, в котором оно тут используется?
Librarian
dhau
Maniac
Posts: 233
Joined: 12 Oct 2004 13:49

Post by dhau »

User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

dhau wrote:Archiver
А вот то что на спм делает LBR-каталоги как называется?
Я тут за главного - если что шлите мыло на me собака shaos точка net
dhau
Maniac
Posts: 233
Joined: 12 Oct 2004 13:49

Post by dhau »

Shaos wrote:А вот то что на спм делает LBR-каталоги как называется?
LBR = Librarian?
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

dhau wrote:
Shaos wrote:А вот то что на спм делает LBR-каталоги как называется?
LBR = Librarian?
LBR = Library, а тот кто их делает, по идее, должен называться Librarian ;)
А тут речь идет о другом "библиотекаре" - OL, который делает IRL библиотеки. Вот его описание на английском http://www.seasip.demon.co.uk/Cpm/irl.html

И я собственно спрашивал как его назвать, т.к. в первом варианте я недолго думая написал "Library Maker", а потом cr0acker посоветовал назвать это "Librarian", т.е. непосредственный аналог первоначального слова "Библиотекарь", но я сильно подозреваю, что это должно уже как-то называться по английски, т.к. английский язык вроде как родной для CP/M и термины должны быть устоявшимися.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
Shaos wrote:
Vasil Ivanov wrote:
Shaos wrote: В данном случае нам не нужен массив чаров - нам нужен первый элемент массива, т.к. 0x%02X. Далее, чтобы подучить первый элемент массива надо разыменовать указатель на него, т.е. *buffer. Ты говоришь, что компилятор это не просекает, т.е. надо писать (char)*buffer, но никак не (char*)*buffer, т.к. последнее означает преобразовать первый символ по указателю к указателю...
В папке Examples-ов в bin2c.c, откуда этот пример, обращение идет
именно как к чар-массиву.

Твои рассуждения правильны, но в отношении к данной версии Солида они не подходят. Только что проверил:
...
Да - это глюк. А если попробовать вот так:

printf("0x%02X\n", *(char*)buffer);

кол-во звездочек такое же, но они переставлены и код является верным с точки зрения любого компилятора Си
Только что проверил сам - похоже, что %X вообще неработает с типами char - ни с *buffer, ни с buffer[0], ни просто с переменной типа char - прибавляется еще старший байт, НО если предварительно сделать присвоение int i = *buffer и именно этот int скормить принтфу - то все будет ок.
Положил переведенный bugs.txt в Sprinter (ENG) с комментарием про то что char не работает c %X в этом компиляторе.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Shaos wrote:
dhau wrote:
Shaos wrote:А вот то что на спм делает LBR-каталоги как называется?
LBR = Librarian?
LBR = Library, а тот кто их делает, по идее, должен называться Librarian ;)
Блин - они его называют "Archiver" (LAR - Library Archiver)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Vasil Ivanov wrote:
Shaos wrote:Напомни какие файлы надо переводить на английский в первую очередь?
readme.rus - первое, что надо перевести. Здесь особенности
пакета, портированного на Спринтер.

bugs.! - он совсем маленький ;)

cc.rus - дока по си-компилятору.

devel-1.rus - некоторая инфа по сборке проги из нескольких
исходников.

devel-2.rus - создание своих библиотек (irl-формата),
для юзания с линкером ld.exe.

ld.rus - дока линкера.

ol.rus - дока библиотекаря.

whatsnew.rus - история версий программ пакета.

Очень не помешала бы дока по си-функциям (clib.rus) данного
пакета, потому, что в некоторых функциях встречаются отличия
от стандартных (PC-шных), например функции перемещения
указателя в файле. Но она объемистая.
Да я фактически все доки и перечислил ;). По .rel/.irl
форматам и по асму, уже есть англицкий вариант.
Вобщем все доки, кроме cc.rus и clib.rus ты переведешь за
час, а может и быстрей ;).
Перевел devel-1.txt - см. форум Sprinter (ENG)
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Post by Vasil Ivanov »

Shaos wrote: Перевел devel-1.txt - см. форум Sprinter (ENG)
Спасибо. Положу себе в солид-пакет.
Vasil Ivanov
vasil-i@yandex.ru
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

DLL library for Solid C

Post by Shaos »

http://nedopc.org/nedopc/sprinter/download/sc_dll.zip
Автор: Vasil Ivanov
LOADDLL

#include <stdlib.h>

int loaddll("name.ext");

Описание.

Функция загружает указанную dll-библиотеку в 3-е окно.
Возвращает дескриптор библиотеки или -1 при ошибке.


FREEDLL

#include <stdlib.h>

int freedll(handle);

Описание.

Функция выгружает из памяти библиотеку handle.
Возвращает 0, если не было ошибок и -1 при ошибке.


CALLDLL

#include <stdlib.h>

int calldll(handle, func, &inregs);

Описание.

Функция вызывает процедуру библиотеки handle, на исполнение.
Номер процедуры указывается в func, параметры вызываемой процедуре
передаются через объединение REGS inregs. Передавать параметры можно
через любые (не альтернативные) регистры или рег. пары.
Функция возвращает дескриптор библиотеки или -1 при ошибке.


INFODLL

#include <stdlib.h>

int infodll(handle, buffer);

Описание.

Получить информацию о загруженной библиотеке handle. Функция
заполняет буфер buffer размером 32 байта, первыми 32-мя байтами заго-
ловка dll-библиотеки.
Функция возвращает дескриптор библиотеки или -1 при ошибке.
P.S. Эта разработка поддерживает Libman v1.3, изменённый Василием:

http://nedopc.org/nedopc/sprinter/download/libman13.zip

Про LIBMAN как таковой существует отдельная тема, созданная в декабре 2020:

http://www.nedopc.org/forum/viewtopic.php?f=60&t=20252
Я тут за главного - если что шлите мыло на me собака shaos точка net
Shiru Otaku
Retired
Posts: 490
Joined: 16 Mar 2002 17:00

Solid C и память

Post by Shiru Otaku »

Интересует, насколько реально юзание сабжа. Есть вопросы. Скажем, что и как там с банками памяти? Программа может быть больше 16к (64к)? Как с asm-вставками? Как с прерываниями?

Версии кросс-компилятора на PC нет, как я понимаю? А в SPRINT`е компилер будет работать?

Понятно, что я и сам могу всё узнать и проверить. Но это время...

Я примеряюсь, реально-ли поюзать Solid C для написания спринтеровской части линка Sprinter<->PC. Чтобы шибко много времени не тратить. Мне для программы нужно: чтение входных параметров exe-файла; работа с файлами на диске (чтение и запись); вывод в консоль (printf, как я понимаю, уже есть?); асм-вставки с возможным юзанием дополнительного обработчика IM2 (чтобы с портом через прерывание работать).
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Solid C

Post by Shaos »

Shiru Otaku wrote:Интересует, насколько реально юзание сабжа. Есть вопросы. Скажем, что и как там с банками памяти? Программа может быть больше 16к (64к)? Как с asm-вставками? Как с прерываниями?
Могу ответить по части памяти. Как я понял ввиду того, что компилятор портировался с CP/M ни о каких банках памяти речи нет (во всяком случае стандартными средствами языка). Для больших данных можно использовать прямое переключение окон. Для большого кода можно заюзать DLL-либы. Так как libman может их рассовывать хоть по всей памяти Спринтера мы можем получить более чем достаточно памяти для кода.
Я тут за главного - если что шлите мыло на me собака shaos точка net