Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Nov 01, 2020 4:34 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 195 posts ]  Go to page Previous 15 6 7 8 913 Next
Author Message
PostPosted: Thu Dec 15, 2011 9:07 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
New SVN revision #2323 by Albom in /programs/system/shell: Shell: cd command fixed


Top
   
PostPosted: Thu Mar 22, 2012 11:31 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Сделал поддержку консольных приложений через именованную область. Т.е. это обычное приложение для КОС, которое может быть написано на любом языке программирования.
Сейчас отлаживаю работу связи "приложение-шелл", потом допишу пример и напишу доки.
Пока что будут доступны функции putc, puts, getc, gets, exit. Если нужны ещё какие-нибудь функции или есть идеи, пишите.


Top
   
PostPosted: Fri Mar 23, 2012 9:47 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Ну, вот, собственно, и к pipes приближаемся.
Думаю, можно будет определять, запущен тот же Lua из shelll, или нет, и в зависимости от этого передавать данные через именованную память или же создавать свое окно console.


Top
   
PostPosted: Fri Mar 23, 2012 9:56 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Shell 0.5 // 23.03.2012 // Albom
=======================================
* Добавлена поддержка консольных приложений, которые общаются с шеллом через именованную область

Консольное приложение может быть написано на любом языке программирования - это обыкновенная программа для КолибриОС.

1) Консольное приложение после своего запуска В ПЕРВУЮ ОЧЕРЕДЬ должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса с заглавными нулями,
например: 42 -> 0042 (т.е. сейчас ограничение до 9999).
+ нужно сделать, чтобы программа корректно завершалась, если запущена не из шелла (СЕЙЧАС НЕ РЕАЛИЗОВАНО!!!)

2) Первый байт области - команда (т.е. максимум 255 команд), далее - данные (могут отсутствовать).
Список команд для версии 0.5:
SC_OK 0 ничего не делать
SC_EXIT 1 выход
SC_PUTC 2 вывести на экран символ
SC_PUTS 3 вывести на экран строку
SC_GETC 4 считать с клавиатуры символ
SC_GETS 5 считать с клавиатуры строку
SC_CLS 6 очистить экран

3) Программа должна САМА заботиться о рациональном использовании процессорного времени.

4) Программа должна САМА заботиться о закрытии именованной области.


Top
   
PostPosted: Fri Mar 23, 2012 10:31 pm 
А может надежней написать процедуру в proc_lib, для работы с именованной памятью? Как я это сделал для OpenDialog.


Top
   
PostPosted: Fri Mar 23, 2012 11:34 pm 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Написать вполне реально. Возможно, так и сделаю в ближайшее время.
Кстати, ничего, что количество функций в proc_lib существенно увеличится? Вообще, не хочу раздувать API шелла, для этого и выбрал размер команды 1 байт, но функций 20-30, думаю, со временем будет реализовано.


Top
   
PostPosted: Fri Mar 23, 2012 11:38 pm 
Там функций в либе - кот наплакал, вот открой box_lib - вот это уже не мало, но не настолько и много.
Единственное ограничение - библиотека асмовская, так что и другие функции придется исключительно на ассемблере делать.


Top
   
PostPosted: Mon Mar 26, 2012 5:17 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Albom пожалуйста, пока не поздно, смени десятичные цифры на шеснадцатеричные.
Аргументация очевидная, надеюсь.


Top
   
PostPosted: Tue Mar 27, 2012 6:53 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Nable
Не очевидная. Какая разница - 6 или - 0x06? Тем более, что всё равно будут использоваться имена констант.
Кстати, номера системных функций тоже десятичные.


+ Начал переписывать консольную программу на ассемблер. Это первый шаг к добавлению функций в proc_lib.
+ Придумал, как сделать проверку на то, запущена программа из шелла или нет.


Top
   
PostPosted: Tue Mar 27, 2012 7:16 am 
Скорее всего Nable подумал, что данные передаются в текстовом виде.


Top
   
PostPosted: Wed Mar 28, 2012 7:37 pm 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
> Консольное приложение после своего запуска В ПЕРВУЮ ОЧЕРЕДЬ должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса с заглавными нулями,
> С именем,
> с заглавными нулями
т.е. текстом там будет написано. Что именно я не так подумал?


Top
   
PostPosted: Wed Mar 28, 2012 7:41 pm 
Все ты правильно подумал, но не учел что скилл телепатии слабо прокачан у остальных и требуется более подробное разжевывание твоего замечания - к чему именно оно относилось.


Top
   
PostPosted: Sun May 13, 2012 10:01 am 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 797
Думал что в console.obj не обрабатываются escape-последовательности, в частности установка цветов, однако был неправ - все там присутствует. Однако команда echo -e "\e[0;31;40mTest" или echo "^[[0;31;40mTest" не выводит слово Test красным цветом
Причем во втором случае используются нажатие клафиш <Ctrl-V><Esc> или <Ctrl-[>
Судя по коду console.obj - он считает Escape последовательностями все, что начинается с символа 27, он же 0x1B (и имеет правильный формат, есстественно)


Top
   
PostPosted: Sun May 13, 2012 11:00 am 
Offline
Mentor
User avatar

Joined: Tue Jan 15, 2008 11:27 am
Posts: 756
Esc-последовательности выводятся. Просто фильтруется их ввод с клавиатуры. Если запускать скрипты - всё ОК.


Attachments:
.shell.zip [171 Bytes]
Downloaded 105 times
esc.png
esc.png [ 3.62 KiB | Viewed 2363 times ]
Top
   
PostPosted: Mon May 14, 2012 10:39 pm 
Offline
User avatar

Joined: Tue Aug 25, 2009 4:45 pm
Posts: 797
Возможно ли вывести такое? http://www.frexx.de/xterm-256-notes/dat ... table16.sh
Или хотя бы его аналог на SHS


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 195 posts ]  Go to page Previous 15 6 7 8 913 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