Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Dec 08, 2021 12:32 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 53 posts ]  Go to page Previous 1 2 3 4 Next
Author Message
 Post subject:
PostPosted: Fri Sep 15, 2006 11:16 am 
Offline
User avatar

Joined: Thu Oct 13, 2005 12:00 pm
Posts: 298
Eto budet konsol' kak v quake? T.e., nazal til'du - vyvalilas' konsol'? Bylo by interesno.


Top
   
 Post subject:
PostPosted: Fri Sep 15, 2006 3:15 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
неее... сначала надо OpenGL добавить :)


Top
   
 Post subject:
PostPosted: Fri Sep 15, 2006 4:19 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Речь идёт о библиотеке, которую могут использовать все программы, которые этого хотят. Типа подключаем её и становятся доступными функции типа (любителям Си и *nix) printf/scanf или (любителям Windows) ReadConsole/WriteConsole и некоторые более продвинутые. Плюс стандартный интерфейс окна консоли.
По поводу 3, наверное, стоит уточнить: вопрос был про изменение размера окна консоли, которое нельзя сделать в винде (разве только через изменение параметров через меню), но есть в иксах под Linux.
Ну и стандартное приложение CMD, которое этот интерфейс будет использовать. При желании уже сейчас можно "навесить" на тильду вызов CMD (немного изменив пример @numcalc).


Top
   
 Post subject:
PostPosted: Mon Sep 18, 2006 5:37 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Консоль нужна.
Это позволит писать платформенно-независимую программу на языке высокого уровня(к примеру вычислительную программу).

Вывод текста нужно сделать через 7-ю функцию.Это позволит менять размер шрифта.Если человек плохо видит,то он сможет увелить его(шрифт).


Top
   
 Post subject:
PostPosted: Mon Sep 18, 2006 6:15 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
Кросплатферменные проги можно писать не только для консоли... Единственное что сейчас это самый простой вариант


Top
   
 Post subject:
PostPosted: Fri Sep 22, 2006 3:58 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Можно конечно и SDL и OpenGL(это вообще тема отдельного разговора) использовать,но нам до них ещё долековато.Пока компилятор не портируем в Колибри,пока libc не напишем(её платформенно зависящую часть) - не видать нам SDL или OpenGL(хотя OpenGL можно и на чистом ассемблере писать).



P.S.
Есть ещё куча других платформенно независимых библиотек,но я сказал про самые распрострвненные.


Top
   
 Post subject:
PostPosted: Tue Oct 03, 2006 5:58 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Предварительная версия:
http://diamondz.land.ru/console.7z
Оформлено как inc-файл. Все желающие динамическую библиотеку в каком-нибудь формате - действуйте.


Top
   
 Post subject:
PostPosted: Wed Oct 04, 2006 3:45 pm 
Offline
User avatar

Joined: Thu May 19, 2005 4:43 pm
Posts: 896
Мне консоль понравилась.

А ввод в ней будет ?


Top
   
 Post subject:
PostPosted: Wed Oct 04, 2006 5:38 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
А как же!


Top
   
 Post subject:
PostPosted: Mon Oct 09, 2006 3:59 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Добавлена функция con_printf в стиле Сишной printf. Floating-point не поддерживается, возвращаемого значения нет, дополнительный первый аргумент, в остальном всё как в ANSI C.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Wed Nov 22, 2006 6:51 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Обновление, исправлена пара ошибок в con_printf. Ссылка та же. Теперь библиотека оформлена как DLL, прилагаются примеры использования testcon.asm и testcon2.asm (собственно, они со времени дистрибутива не изменились). Загрузка DLL в testcon.asm несколько эффективнее, но в testcon2.asm несколько нагляднее.


Top
   
 Post subject:
PostPosted: Mon Feb 19, 2007 5:47 pm 
Offline
Kernel Developer
User avatar

Joined: Mon Nov 28, 2005 8:00 pm
Posts: 1600
Убрал первый аргумент у функций вывода, поскольку в большинстве случаев управление цветами и вывод специальных символов как обычных не нужно. Программы, которым это всё-таки нужно, могут либо использовать con_set_flags/con_get_flags, либо выводить Esc-последовательности.
con_printf теперь возвращает количество напечатанных символов, в случае передачи NULL при спецификаторе %s выводится строка (null), теперь от ANSI C отличие разве что в отсутствии поддержки вещественных чисел.

_________________
Ушёл к умным, знающим и культурным людям.


Top
   
 Post subject:
PostPosted: Wed Feb 21, 2007 3:25 pm 
Offline

Joined: Wed Feb 21, 2007 3:03 pm
Posts: 188
Предлагаю на рассмотрение 2 варианта консольных приложений.
1) windows вариант
2) nix вариант
в первом ваианте все происходит как. В пе-заголовке есть флаг который указывает что это консольноеприложение. Собсно загрузчик создает консольное окошко и весь вывод приложение направляет туда и ввод получает оттуда.
во втором нет разделения консольный ты или нет. Зато есть понятия потоки(впринципе как и в 1 варианте). Просто какой-нить шел(баш и подобные) пускают приложения подключаясь к их потокам(ввода, вывода и stderr).
Не спорю, возможно я все описал в грубой форме.
По сему есть такое предложение(по типу 2), правда которое затрагивает ядро. Нужно реализовать систему потоков. То есть с помощью какой-нибудь функции реализуется запуск приложения с подключением к потокам. допустим получаем какой-нить дескриптор(ы) и работаем с ним(и), то есть посылаем/получаем байты. В тоже время любое приложение имеет доступ к другим функциям отправить/прочитать символ в/из потока.
И теперь пишется какой-нить шелл. Допустим он пускает приложение и подключается к потокам. Все что получил шелл - идет в stdin запущеного приложения, все что пришло из stdout приложения - показываем. Сразу получаем преимущество. Пишем в шелле prog >1.txt, пускается приложение prog....его stdin заполняется из шелла, а весь stdout шелл не выводит а направляет в файл...
Жду пинков и одобрений:)


Top
   
 Post subject:
PostPosted: Wed Feb 21, 2007 4:00 pm 
Offline

Joined: Mon May 01, 2006 10:12 pm
Posts: 349
[offtop] Маладец, хорошо "разобрался" как работают консольные преложения [/offtop]


Top
   
 Post subject:
PostPosted: Wed Feb 21, 2007 5:30 pm 
Offline

Joined: Wed Feb 21, 2007 3:03 pm
Posts: 188
:) первый пинок есть

Еще в исходниках ядра не копался, поэтому не знаю реально ли такое реализовать.
Что-то вроде: под каждое приложение запущеное этим волшебным способом выделяется 2 буфера stdin и stdout. Пускателю отдается дескриптор потоков или же просто по ПИДу обращаться.
Это 1 дополнительная функция....я так представляю ничего сверхестественного.
+ еще 4 функции:
для пускателя:
- (1)отдать символ в stdin процесса
- (2)взять символ из stdout процеса
(наверное лучше дескрипторы, в плане защиты, чтоб чужие процессы не могли подключаться к потокам чужих приложений)
для приложения:
- (3)отдать символ в stdout (а на основе ее составить putc,puts,printf,print и т.д.)
- (4)получить символ из stdin (а тут scanf,gets,getc...)

Сразу вижу проблемы:
- как быть с приложениями запущеными обычным способом(то есть без потоков), а именно поведение функций 3 и 4

думал потоки через IPC делать - ну уж больно как-то через жопу


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 53 posts ]  Go to page Previous 1 2 3 4 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 3 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