Page 5 of 14

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

Posted: Sun May 09, 2010 8:15 pm
by XVilka
Сейчас работаю над микрореализацией curses библиотеки. Покак на си, как закончу (около месяца) - сконвертирую в ассемблер. Думаю тогда имеет смысл добавить ее в console.obj

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

Posted: Sat May 15, 2010 4:27 pm
by XVilka
По поводу sh - можно портировать вот это http://gitorious.com/0xdroid/system_cor ... master/ash
Создан для работы с убогой libc - bionic
Поэтому будет легче перенести на Колибри.

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

Posted: Sat May 15, 2010 7:02 pm
by Albom
XVilka wrote:Вот добавил возможность нормальной сборки под GCC(MinGW)
Компилируется, но не так, как надо. Даже
Скомпилированный бинарник
не запускается (в принципе понятно почему).
1) в compile.bat после set XCFLAGS= нужно убрать кавычки
2) i586-mingw32msvc-gcc лучше заменить на просто gcc. Это же касается ld и objcopy.
3) так как start.asm был изменён (добавлена секция ".aheader"), но необходимо изменить и kolibri.ld (так, чтобы заголовок был в начале файла). Типа такого:

Code: Select all

/*OUTPUT_FORMAT("binary")*/
ENTRY(Start)
SECTIONS
{
  .text 0x000000:
   {
   *(.aheader)
   *(.text)
   }
  
  .data : {
    *(.data)
    hEnd = . ;
   }
   
  .bss :
   {
    *(.bss)
   }
   Memory = . ;
}
Но всё равно в KlbrInWin пока не запускается (ошибка "Not enough memory").
Компилировал с помощью MinGW-5.1.6 (gcc 3.4.5).
Под Линуксом такие же проблемы и ещё кой-чего (что именно пока сказать не могу - не было времени разбираться).

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

Posted: Tue May 18, 2010 1:01 am
by XVilka
Ок. Спасибо, учел :)

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

Posted: Sun Aug 15, 2010 11:31 pm
by Nasarus
Хотелось бы узнать общего мнения насчет консольных программ для шелла. Должны ли по вашему мнению такие программы иметь доступ к GUI-функциям ядра (например sysfn0, sysfn4, sysfn13) или нет?

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

Posted: Mon Aug 16, 2010 1:48 am
by Nasarus
Наверное всё-таки такие ограничения вводить не придется, т.к. это слишком усложнит реализацию и скорость выполнения таких программ Shell'ом.

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

Posted: Mon Aug 16, 2010 11:51 am
by XVilka
Я думаю не стоит вводить такие ограничения, чтобы была возможность запуска граф программ без всяких дополнительных сложностей из командной строки

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

Posted: Mon Aug 16, 2010 1:05 pm
by Nasarus
2 XVilka
Имеются в виду консольные программы (специально предназначенные для работы в среде шелла)

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

Posted: Mon Aug 16, 2010 2:59 pm
by Albom
думаю, что вводить ограничения на вызов системных функций из консольных приложений (каковых до сих пор нет) нецелесообразно, потому что:
1) программист должен понимать, что он пишет;
2) технически, если даже получится реализовать, то это будет коряво и ненадёжно.

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

Posted: Wed Aug 18, 2010 3:57 am
by Asper
На мой взгляд для поддержки консольных программ shell должен научиться назначать таким программам буфер для ввода данных и буфер для вывода данных.
Например:
1.) программа A передает shell'у указатели для своих буферов.
2.) программа B передает shell'у указатели для своих буферов.
3.) shell читает указатели и записывает в них адреса реальных буферов данных по своему усмотрению.
Например:

Code: Select all

  shell# ls 
Shell записывает адрес своего собственного буффера ввода в указатель буфера вывода у ls.

Code: Select all

  shell# ls > more

Shell записывает адрес буффера ввода more в указатель буфера вывода у ls.

и т.д. Правда тут ещё надо будет отдельно реализовывать вывод информации в файл.

Code: Select all

 shell# ls > log.txt
Указатели на буферы можно передавать либо через IPC, либо через расшаренную память.

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

Posted: Wed Aug 18, 2010 9:25 am
by Mario
Можно передавать название области именованной (расшаренной памяти) при запуске, например как я реализовал в OpenDialog. В области памяти будет содержаться дескриптор со всеми остальными указателями и просто данными.

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

Posted: Thu Aug 19, 2010 8:28 pm
by Albom
Версия 0.4.3.

Смесь версий 0.4.1 и 0.4.2. Теперь в архиве все исходные файлы, необходимые для компиляции (раньше использовались объектники с моими обёртками, исходники я с шеллом не выкладывал). Прошу залить исходники на SVN.

diamond
В этой версии есть глюк с завершением работы путём закрытия окна. как его пофиксить? можешь написать, а то я не совсем понял, что ты в версии 0.4.2 сделал, чтобы шелл корректно завершался.

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

Posted: Fri Aug 20, 2010 8:17 am
by SoUrcerer
А можно потом в архив к исходникам еще и makefile включать? Оно мне конечно не трудно его написать на основе батнега...

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

Posted: Fri Aug 20, 2010 11:00 am
by Albom
к следующей версии постараюсь мейкфайл сделать.

а пока что версия 0.4.4.

1) шелл корректно завершается при закрытии окна
2) исправлено ещё 2 ошибки
3) добавлены 2 команды:
sleep - ждать. параметр - время в сотых частях секунды. только целое число.
ccpuid - вывод в консоль информации (пока скудно) о процессоре. пользы мало, но давно хотел с командой cpuid разобраться (в следующем семестре буду студентам курс читать, включил разбор команды в программу).

есть много идей. некоторые легко реализуются, некоторые сложнее. если интересно:
1) добавить переменную (одну!), в которую будет результат в текстовой форме (не то что возвращает ф-ция) записываться. с ней можно будет работать из командной строки.
2) внедрить простую стековую машину для вычислений с вещественными числами.

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

Posted: Thu Oct 07, 2010 4:50 pm
by Nasarus
Теперь последняя версия, включая бинарник, лежит на SVN-сервере (ревизия 1647).