Очень функциональный шелл

...
  • Сделал поддержку консольных приложений через именованную область. Т.е. это обычное приложение для КОС, которое может быть написано на любом языке программирования.
    Сейчас отлаживаю работу связи "приложение-шелл", потом допишу пример и напишу доки.
    Пока что будут доступны функции putc, puts, getc, gets, exit. Если нужны ещё какие-нибудь функции или есть идеи, пишите.
  • Ну, вот, собственно, и к pipes приближаемся.
    Думаю, можно будет определять, запущен тот же Lua из shelll, или нет, и в зависимости от этого передавать данные через именованную память или же создавать свое окно console.
  • 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) Программа должна САМА заботиться о закрытии именованной области.
  • А может надежней написать процедуру в proc_lib, для работы с именованной памятью? Как я это сделал для OpenDialog.
  • Написать вполне реально. Возможно, так и сделаю в ближайшее время.
    Кстати, ничего, что количество функций в proc_lib существенно увеличится? Вообще, не хочу раздувать API шелла, для этого и выбрал размер команды 1 байт, но функций 20-30, думаю, со временем будет реализовано.
  • Там функций в либе - кот наплакал, вот открой box_lib - вот это уже не мало, но не настолько и много.
    Единственное ограничение - библиотека асмовская, так что и другие функции придется исключительно на ассемблере делать.
  • Albom пожалуйста, пока не поздно, смени десятичные цифры на шеснадцатеричные.
    Аргументация очевидная, надеюсь.
  • Nable
    Не очевидная. Какая разница - 6 или - 0x06? Тем более, что всё равно будут использоваться имена констант.
    Кстати, номера системных функций тоже десятичные.


    + Начал переписывать консольную программу на ассемблер. Это первый шаг к добавлению функций в proc_lib.
    + Придумал, как сделать проверку на то, запущена программа из шелла или нет.
  • Скорее всего Nable подумал, что данные передаются в текстовом виде.
  • > Консольное приложение после своего запуска В ПЕРВУЮ ОЧЕРЕДЬ должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса с заглавными нулями,
    > С именем,
    > с заглавными нулями
    т.е. текстом там будет написано. Что именно я не так подумал?
  • Все ты правильно подумал, но не учел что скилл телепатии слабо прокачан у остальных и требуется более подробное разжевывание твоего замечания - к чему именно оно относилось.
  • Думал что в console.obj не обрабатываются escape-последовательности, в частности установка цветов, однако был неправ - все там присутствует. Однако команда echo -e "\e[0;31;40mTest" или echo "^[[0;31;40mTest" не выводит слово Test красным цветом
    Причем во втором случае используются нажатие клафиш <Ctrl-V><Esc> или <Ctrl-[>
    Судя по коду console.obj - он считает Escape последовательностями все, что начинается с символа 27, он же 0x1B (и имеет правильный формат, есстественно)
  • Esc-последовательности выводятся. Просто фильтруется их ввод с клавиатуры. Если запускать скрипты - всё ОК.
    Attachments
    .shell.zip (171 Bytes)
    Downloaded 219 times
    esc.png
    esc.png (3.62 KiB)
    Viewed 4924 times
  • Возможно ли вывести такое? http://www.frexx.de/xterm-256-notes/dat ... table16.sh
    Или хотя бы его аналог на SHS
  • Who is online

    Users browsing this forum: No registered users and 3 guests