FreePascal
-
Попытался реализовать модуль для работы с сокетами. Примеры сервера и клиента не работают(сервер завершает работу при связывании с адресной структурой, клиент почти не тестировался, но тоже 0 результата). Вывод сервера происходит в доску отладки(работает криво, через раз). Всё компилировал из КОС
- Attachments
-
-
test_client_for_sockets.pp (1.44 KiB)Downloaded 263 times
-
test_server_for_sockets.pp (1.93 KiB)Downloaded 278 times
-
test_sockets.pp (5.33 KiB)Downloaded 268 times
-
Привет.
Гляну до конца следующей недели.
..bw
Гляну до конца следующей недели.
..bw
просмотрел kos.inc и составил список сисфункций, которые там отсутствуют:
74, 75, 76, 77, 80, 73, 72, 71, 70(4,6,8,9), 69, 68(0,2,3,4,14,17,18,19,20,22,23,24,25,26,27,28),66(3,4,5,6,7),
62(0,2,8,9,10){не точно}, 61(1,2,3), 54(0,1,2,3,4), 50, 49, 48(0,1,2,3,4,5,6,7,8,9,10,11,12,13), 47, 46(ebx=1),
39(1,2,4), 37(3,4,5,6,7,8), 36, 35, 34, 30(3,4,5), 26(1,2,5,10,11,12), 25, 24(4,5), 22, 21(1,2,5,11), 20(1,2),
18(1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25), 16, 15(1,2,3,4,5,6,7,8,9), 11, 8
я пытался уже реализовать сисфункции 74, 54, пока ещё не тестировал
74, 75, 76, 77, 80, 73, 72, 71, 70(4,6,8,9), 69, 68(0,2,3,4,14,17,18,19,20,22,23,24,25,26,27,28),66(3,4,5,6,7),
62(0,2,8,9,10){не точно}, 61(1,2,3), 54(0,1,2,3,4), 50, 49, 48(0,1,2,3,4,5,6,7,8,9,10,11,12,13), 47, 46(ebx=1),
39(1,2,4), 37(3,4,5,6,7,8), 36, 35, 34, 30(3,4,5), 26(1,2,5,10,11,12), 25, 24(4,5), 22, 21(1,2,5,11), 20(1,2),
18(1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,22,23,24,25), 16, 15(1,2,3,4,5,6,7,8,9), 11, 8
я пытался уже реализовать сисфункции 74, 54, пока ещё не тестировал
В реализации сокетов ошибки(во всех функциях) в передаче параметров для вызова сисфункции,
а также провёл несколько тестов, в которых сервер завершает работу при вызове функции bind, код ошибки,
который записан в регистре ebx равен 4
а также провёл несколько тестов, в которых сервер завершает работу при вызове функции bind, код ошибки,
который записан в регистре ebx равен 4
! fpc.kex не работает (ppc386.kex рабочий) !
! ${apptype gui} не работает !
Немного обновлений:
Реализован примитивный и кривой терминал, который доступен при сборке консольных приложений (по-умолчанию): {$apptype console}. Что-бы этой дряни не было, нужно собирать в режиме GUI: {$apptype gui}.
Терминал создаётся первым консольным fpc-приложением, все остальные (консольные fpc-приложения), запускаемые через ExecuteProcess или TProcess, используют его, а не создают свой экземпляр.
Особенности:
См. примеры "misc/xpc1.pp" и "misc/xpc2.pp" (xpc1.kex запускает xpc2.kex и оба выводят в один терминал).
Переменные окружения
Переменные либо передаются через TProcess при запуске, либо читаются из файлов "/sys/settings/.environ" и из ".environ", находящегося в корне диска с приложением, при этом значения из последнего файла имеют больший приоритет.
Поддерживается элементарная sh-подобная подстановка, пример файла "/hd0/1/.environ":
Из бонусов: теперь можно пользоваться "PATH", эта переменная обрабатывается в ExecuteProcess и в TProcess (так по задумке, но особо не проверял).
См. реализацию в RTL в "kolibri/sysinitkos.inc" и "kolibri/kos_xpc.inc", и в пакете "fpc-process".
См. примеры "misc/xpc1.pp" и "misc/xpc2.pp" (xpc1.kex запускает xpc2.kex с набором переменных окружения).
Windows ресурсы
Для компиляции RC в RES всё так же нужен windres, в Linux его можно найти в пакетах mingw32, для Windows утилита входит в состав FPC. Компилятору можно явно указать на эту утилиту ключём "-FC". В примерах RC предварительно был конвертирован в RES руками, а в самих исходниках в директиве {$r ...} указывается не RC, а RES.
API реализован (спустя рукава). Поддержки языков нет.
См. реализацию в RTL в "inc/fpintres.pp", "int/sysres.inc" и "kolibri/kos_winres.inc". Кроме RTL, изменения вносились и в сам компилятор.
См. примеры "misc/resdevel.pp" и "misc/resapp.pp".
..bw
! ${apptype gui} не работает !
Немного обновлений:
- ftp://ftp.kolibrios.org/users/bw/fpc/fp ... ce.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/fp ... ry.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/ex ... ce.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/ex ... ry.tar.bz2
- https://bitbucket.org/fpckos/
- Местный SVN больше не поддерживается, не вижу смысла, файлов дохрена, а обновления бывают очень редко (раз в 10 лет :-), может даже стоит снести, что бы не вводить людей в заблуждение.
Реализован примитивный и кривой терминал, который доступен при сборке консольных приложений (по-умолчанию): {$apptype console}. Что-бы этой дряни не было, нужно собирать в режиме GUI: {$apptype gui}.
Терминал создаётся первым консольным fpc-приложением, все остальные (консольные fpc-приложения), запускаемые через ExecuteProcess или TProcess, используют его, а не создают свой экземпляр.
Особенности:
- запускается в отдельном потоке и для завершения требует явного закрытия, иначе процесс приложения продолжит работать (ждать завершения потока терминала);
- ввод отсутствует;
- при завершении процесса (главного потока) в заголовок окна выводится код завершения, информация о других процессах, использующих этот терминал не доступна;
- закрытие окна выполняется кнопкой, Alt-F4 или Ctrl-Q, при этом все потоки и процессы завязанные на этот терминал продолжат работать (вероятно, подвисая на выводе, не проверялось), никаких сигналов никому не посылается;
- связь с терминалом (как можно догадаться) строго одностороняя.
См. примеры "misc/xpc1.pp" и "misc/xpc2.pp" (xpc1.kex запускает xpc2.kex и оба выводят в один терминал).
Переменные окружения
Переменные либо передаются через TProcess при запуске, либо читаются из файлов "/sys/settings/.environ" и из ".environ", находящегося в корне диска с приложением, при этом значения из последнего файла имеют больший приоритет.
Поддерживается элементарная sh-подобная подстановка, пример файла "/hd0/1/.environ":
Code: Select all
FPCROOT=/hd0/1/fpckos-2.4.4
FPCDIR=$FPCROOT/lib/fpc/2.4.4
PATH=/sys:$FPCROOT/bin:$FPCDIR
См. реализацию в RTL в "kolibri/sysinitkos.inc" и "kolibri/kos_xpc.inc", и в пакете "fpc-process".
См. примеры "misc/xpc1.pp" и "misc/xpc2.pp" (xpc1.kex запускает xpc2.kex с набором переменных окружения).
Windows ресурсы
Для компиляции RC в RES всё так же нужен windres, в Linux его можно найти в пакетах mingw32, для Windows утилита входит в состав FPC. Компилятору можно явно указать на эту утилиту ключём "-FC". В примерах RC предварительно был конвертирован в RES руками, а в самих исходниках в директиве {$r ...} указывается не RC, а RES.
API реализован (спустя рукава). Поддержки языков нет.
См. реализацию в RTL в "inc/fpintres.pp", "int/sysres.inc" и "kolibri/kos_winres.inc". Кроме RTL, изменения вносились и в сам компилятор.
См. примеры "misc/resdevel.pp" и "misc/resapp.pp".
..bw
Last edited by bw on Tue Mar 16, 2021 8:54 pm, edited 1 time in total.
Добрый вечер, компилятор последней версии падает в кос при попытки компиляции тестовой программы.
команду вводил такую: ./bin/fpc.kex test_client_for_sockets.pp
в самом файле компилируемой программы ошибок нет(на 95%),
но консоль запустилась, это очень хорошо
возможно я компилировал неправильно
команду вводил такую: ./bin/fpc.kex test_client_for_sockets.pp
в самом файле компилируемой программы ошибок нет(на 95%),
но консоль запустилась, это очень хорошо
возможно я компилировал неправильно
- Attachments
-
-
Снимок экрана 2021-03-16 182655.png (339.48 KiB)снимок доски отладки Viewed 11304 times
-
Покажи, что в ".environ" (он должен быть в корне ФС, хотя его отсутствие не должно приводить к падению) и "build.sh". И какая ревизия ОС (у меня 8329)? Там никакого вывода в терминале и [User] нет?
Я особо под Kolibri не тестировал. Просто проверил факт запускаемости "fpc.kex" из под KFar. Собираю всё под Linux через fpcmake и make.
Завтра посмотрю.
p.s. У меня тоже не работает. А до этого обновления работало :-) ?
..bw
Я особо под Kolibri не тестировал. Просто проверил факт запускаемости "fpc.kex" из под KFar. Собираю всё под Linux через fpcmake и make.
Завтра посмотрю.
p.s. У меня тоже не работает. А до этого обновления работало :-) ?
..bw
во вкладке user доски отладки ничего, ядро версии 8552, если без без файла загружать fpc.kex то в доске отладки будет сообщение об отсутствии файла(не точно),ppc386.kex вроде работает
- Attachments
-
-
Снимок экрана 2021-03-16 221848-3.png (128.97 KiB)Viewed 11288 times
-
Снимок экрана 2021-03-16 220856-1.png (262.26 KiB)Viewed 11288 times
-
а консоль же не через console.obj написана?
Это не поможет с fpc.kex, но так правильнее (FPCDIR должен указывать на директорию с ppc386.kex и units):
p.s. Сейчас у режима ${apptype gui} есть косяк, не используй его.
p.p.s. Консоль (терминал) самодельный. Это fallback до лучших времён.
..bw
Code: Select all
#.environ
FPCROOT=/hd0/1/fpckos-2.4.4
FPCDIR=$FPCROOT/lib/fpc/2.4.4
FPC=$FPCDIR/ppc386.kex
PATH=/sys:$FPCROOT/bin:$FPCDIR
p.p.s. Консоль (терминал) самодельный. Это fallback до лучших времён.
..bw
а где в fpc для винды(линукса) находится реализация сокетов Беркли? , просто свой костыль для сети , криво переписанный с СИ,
работает не совсем корректно.
с консолью можно сделать как gui приложение, но в котором будет загружаться console.obj, и при {$apptype console} просто добавлять в программу модуль kos_console и вызов загрузочной функции ?
работает не совсем корректно.
с консолью можно сделать как gui приложение, но в котором будет загружаться console.obj, и при {$apptype console} просто добавлять в программу модуль kos_console и вызов загрузочной функции ?
Code: Select all
function load_dll(var path:string):pointer;
var path_pointer:pointer;
begin
path:=path+#0;
path_pointer:=@path;
inc(path_pointer);
asm
pushl %ebx
pushl %ecx
movl path_pointer,%ecx
movl $68,%eax
movl $19,%ebx
int $0x40
movl %eax,path_pointer
end;
load_dll:=path_pointer;
end;
В основном исправления:
Для переменных окружения появилось магическое слово __HERE__, это директория, в которой находится ".environ":
..bw
- ftp://ftp.kolibrios.org/users/bw/fpc/fp ... ce.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/fp ... ry.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/ex ... ce.tar.bz2
- ftp://ftp.kolibrios.org/users/bw/fpc/ex ... ry.tar.bz2
- https://bitbucket.org/fpckos/
- ./fpc.cfg
- $HOME/fpc.cfg
- $PPC_CONFIG_PATH/fpc.cfg
- /sys/settings/fpc.cfg
Code: Select all
# Write always a nice FPC logo ;)
-l
# Display Info, Warnings and Notes
-viwn
Code: Select all
FPCROOT=$__HERE__/fpckos-2.4.4
FPCDIR=$FPCROOT/lib/fpc/2.4.4
PPC_CONFIG_PATH=$FPCROOT
PATH=/sys:$FPCROOT/bin:$FPCDIR
что нужно для порта FPC сделать?
что-то опять не работает))
версия: Последняя(210317)
не компилится программа
версия: Последняя(210317)
не компилится программа
- Attachments
-
-
code_1.pas (11.85 KiB)
- //вот эта программа
Downloaded 239 times
-
Снимок экрана 2021-04-26 034432.png (157.57 KiB)Viewed 10512 times
-
Who is online
Users browsing this forum: No registered users and 0 guests