Интерфейс X-Shell для консольных приложений
=======================================

Обмен информацией между Shell и консольными приложениями осуществляется через именованную разделяемую область памяти.

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

Консольное приложение после своего запуска в первую очередь должно создать именованную область с именем pid-SHELL, где pid - идентификатор процесса без заглавных нулей,
например: 6, 42 или 204.

Первый байт области - команда (т.е. максимум 255 команд, что вполне достаточно), далее - данные (могут отсутствовать).

Список реализованных команд:
SC_OK		0	ничего не делать
SC_EXIT		1	выход
SC_PUTC		2	вывести на экран символ
SC_PUTS		3	вывести на экран строку
SC_GETC		4	считать с клавиатуры символ
SC_GETS		5	считать с клавиатуры строку
SC_CLS		6	очистить экран
SC_PID		7	получить PID Shell'а
SC_PING		8	проверка связи (пинг)

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

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

Команды Shell
=======================================
В угловых скобках указаны параметры команд

about	выводит версию программы shell

alias	без параметра выводит список синонимов команд,
		с параметром вида newprg = old_name определяет синоним newprg
		если есть пробелы, нужно значение закавычить newprg = "old name"
cd		сменить текущий каталог на указанный параметром <каталог>
clear	очистка экрана
cp		копирование файла <источник> <результат>
date	показывает дату и время
echo	Выводит <данные> на экран
exit	завершение работы Shell
free	показывает объём оперативной памяти: всей, свободной и используемой
help	показать перечень команд shell. С параметром <команда> справка по команде
history	cписок последних использованных команд
kill	убивает процесс по <PID>. kill all убивает все процессы, слоты >=2
ls		выводит список файлов в текущем каталоге или указанном <каталоге>
        ключ '-1' выводит список в одну колонку, иначе многоколоночный вывод
mkdir	cоздает <каталог>. Поддерживаются абсолюные и относительные пути
more	выводит содержимое <файла> на экран
ps		показывает список процессов и их PID,
		если задать <имя>, покажет %CPU, используемую память и запомнит
		внутреннюю переменную LASTPID (полезно для команды waitfor)
		<имя> - это первые 11 букв имени исполняемого файла без расширения
pwd		показывает имя текущего каталога
reboot	перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
rm		удаляет <файл>
rmdir	удаляет <каталог>
shutdown	выключает компьютер
sleep	приостанавливает работу Shell'а на заданное <время в сотых долях секунды>
touch	создаёт пустой <файл> или изменяет дату/время создания файла
uptime	показывает время работы системы с момента загрузки
ver		показывает версию Shell, ver kernel - версию и номер ревизии ядра OS,
		ver cpu - информацию о процессоре
waitfor	если перед этим была запущена программа, приостанавливает
		выполнение командного файла до ее завершения по LASTPID
		или до завершения явно указанного параметра <PID>

Скрипты и запуск на исполнение
=======================================
Если имя исполнимого файла начинается с / то считается что путь является абсолютным.
В противном случае, поиск сначала проводится в текущем каталоге, а затем в /sys.

Далее, если файл найден, проверяются первые 4 байта на сигнатуру #SHS.
С этой сигнатуры начинается командный (пакетный) файл.
В командном файле допустимы все команды приведенные выше, а комментарии
начинаются с символа # в первой позиции строки.

Если на выполнение был задан исполняемый файл, запомнит LASTPID