Board.KolibriOS.org

Official KolibriOS board
It is currently Fri Jun 25, 2021 7:53 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 102 posts ]  Go to page Previous 13 4 5 6 7 Next
Author Message
 Post subject: Re: FreePascal
PostPosted: Fri Feb 12, 2021 9:46 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
Попытался реализовать модуль для работы с сокетами. Примеры сервера и клиента не работают(сервер завершает работу при связывании с адресной структурой, клиент почти не тестировался, но тоже 0 результата). Вывод сервера происходит в доску отладки(работает криво, через раз). Всё компилировал из КОС


Attachments:
test_client_for_sockets.pp [1.44 KiB]
Downloaded 79 times
test_server_for_sockets.pp [1.93 KiB]
Downloaded 78 times
test_sockets.pp [5.33 KiB]
Downloaded 76 times
Top
   
 Post subject: Re: FreePascal
PostPosted: Sat Feb 13, 2021 2:24 am 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 440
Привет.
Гляну до конца следующей недели.

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Sat Feb 13, 2021 2:51 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
просмотрел 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, пока ещё не тестировал


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Feb 21, 2021 12:47 am 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
В реализации сокетов ошибки(во всех функциях) в передаче параметров для вызова сисфункции,
а также провёл несколько тестов, в которых сервер завершает работу при вызове функции bind, код ошибки,
который записан в регистре ebx равен 4


Top
   
 Post subject: Re: FreePascal
PostPosted: Fri Mar 05, 2021 5:15 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 440
! fpc.kex не работает (ppc386.kex рабочий) !
! ${apptype gui} не работает !

Немного обновлений:

Терминал

Реализован примитивный и кривой терминал, который доступен при сборке консольных приложений (по-умолчанию): {$apptype console}. Что-бы этой дряни не было, нужно собирать в режиме GUI: {$apptype gui}.

Терминал создаётся первым консольным fpc-приложением, все остальные (консольные fpc-приложения), запускаемые через ExecuteProcess или TProcess, используют его, а не создают свой экземпляр.

Особенности:
  • запускается в отдельном потоке и для завершения требует явного закрытия, иначе процесс приложения продолжит работать (ждать завершения потока терминала);
  • ввод отсутствует;
  • при завершении процесса (главного потока) в заголовок окна выводится код завершения, информация о других процессах, использующих этот терминал не доступна;
  • закрытие окна выполняется кнопкой, Alt-F4 или Ctrl-Q, при этом все потоки и процессы завязанные на этот терминал продолжат работать (вероятно, подвисая на выводе, не проверялось), никаких сигналов никому не посылается;
  • связь с терминалом (как можно догадаться) строго одностороняя.

См. реализацию в RTL в "kolibri/sysinitconsole.pp" и "kolibri/kos_term.inc". Кроме RTL, изменения вносились и в сам компилятор.
См. примеры "misc/xpc1.pp" и "misc/xpc2.pp" (xpc1.kex запускает xpc2.kex и оба выводят в один терминал).

Переменные окружения

Переменные либо передаются через TProcess при запуске, либо читаются из файлов "/sys/settings/.environ" и из ".environ", находящегося в корне диска с приложением, при этом значения из последнего файла имеют больший приоритет.
Поддерживается элементарная sh-подобная подстановка, пример файла "/hd0/1/.environ":

Code:
FPCROOT=/hd0/1/fpckos-2.4.4
FPCDIR=$FPCROOT/lib/fpc/2.4.4
PATH=/sys:$FPCROOT/bin:$FPCDIR


Из бонусов: теперь можно пользоваться "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


Last edited by bw on Tue Mar 16, 2021 8:54 pm, edited 1 time in total.

Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 4:35 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
Добрый вечер, компилятор последней версии падает в кос при попытки компиляции тестовой программы.
команду вводил такую: ./bin/fpc.kex test_client_for_sockets.pp
в самом файле компилируемой программы ошибок нет(на 95%),
но консоль запустилась, это очень хорошо

возможно я компилировал неправильно


Attachments:
File comment: снимок доски отладки
Снимок экрана 2021-03-16 182655.png
Снимок экрана 2021-03-16 182655.png [ 339.48 KiB | Viewed 2230 times ]
Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 7:36 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 440
Покажи, что в ".environ" (он должен быть в корне ФС, хотя его отсутствие не должно приводить к падению) и "build.sh". И какая ревизия ОС (у меня 8329)? Там никакого вывода в терминале и [User] нет?
Я особо под Kolibri не тестировал. Просто проверил факт запускаемости "fpc.kex" из под KFar. Собираю всё под Linux через fpcmake и make.
Завтра посмотрю.

p.s. У меня тоже не работает. А до этого обновления работало :-) ?

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 8:20 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
во вкладке user доски отладки ничего, ядро версии 8552, если без без файла загружать fpc.kex то в доске отладки будет сообщение об отсутствии файла(не точно),ppc386.kex вроде работает


Attachments:
Снимок экрана 2021-03-16 221848-3.png
Снимок экрана 2021-03-16 221848-3.png [ 128.97 KiB | Viewed 2214 times ]
Снимок экрана 2021-03-16 220856-1.png
Снимок экрана 2021-03-16 220856-1.png [ 262.26 KiB | Viewed 2214 times ]
Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 8:22 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
а консоль же не через console.obj написана?


Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 8:32 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 440
Это не поможет с fpc.kex, но так правильнее (FPCDIR должен указывать на директорию с ppc386.kex и units):
Code:
#.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.s. Сейчас у режима ${apptype gui} есть косяк, не используй его.
p.p.s. Консоль (терминал) самодельный. Это fallback до лучших времён.

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 9:27 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
а где в fpc для винды(линукса) находится реализация сокетов Беркли? , просто свой костыль для сети , криво переписанный с СИ,
работает не совсем корректно.
с консолью можно сделать как gui приложение, но в котором будет загружаться console.obj, и при {$apptype console} просто добавлять в программу модуль kos_console и вызов загрузочной функции ?


Top
   
 Post subject: Re: FreePascal
PostPosted: Tue Mar 16, 2021 9:35 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
Code:
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;


не тестил


Top
   
 Post subject: Re: FreePascal
PostPosted: Wed Mar 17, 2021 6:43 pm 
Offline
User avatar

Joined: Thu Mar 01, 2007 4:16 pm
Posts: 440
В основном исправления:

Файл с конфигурацией "fpc.cfg" будет искаться по следующим путям (или не будет):
  • ./fpc.cfg
  • $HOME/fpc.cfg
  • $PPC_CONFIG_PATH/fpc.cfg
  • /sys/settings/fpc.cfg

Пример конфига (есть в бинарном архиве):
Code:
# Write always a nice FPC logo ;)
-l
# Display Info, Warnings and Notes
-viwn

Для переменных окружения появилось магическое слово __HERE__, это директория, в которой находится ".environ":
Code:
FPCROOT=$__HERE__/fpckos-2.4.4
FPCDIR=$FPCROOT/lib/fpc/2.4.4
PPC_CONFIG_PATH=$FPCROOT
PATH=/sys:$FPCROOT/bin:$FPCDIR

..bw


Top
   
 Post subject: Re: FreePascal
PostPosted: Sun Apr 25, 2021 8:37 pm 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
что нужно для порта FPC сделать?


Top
   
 Post subject: Re: FreePascal
PostPosted: Mon Apr 26, 2021 1:55 am 
Offline

Joined: Tue Nov 03, 2020 5:47 pm
Posts: 44
что-то опять не работает))
версия: Последняя(210317)
не компилится программа


Attachments:
File comment: //вот эта программа
code_1.pas [11.85 KiB]
Downloaded 43 times
Снимок экрана 2021-04-26 034432.png
Снимок экрана 2021-04-26 034432.png [ 157.57 KiB | Viewed 1438 times ]
Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 102 posts ]  Go to page Previous 13 4 5 6 7 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited