Шелл с историей (новый SYSTEM.EXE) и далее...

Компьютер "Спринтер" http://sprinter.nedopc.org

Moderator: Shaos

User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Шелл с историей (новый SYSTEM.EXE) и далее...

Post by Vasil Ivanov »

Нужен кому-нить шелл, имеющий историю введенных команд ?.
Могу кинуть (Шаосу). Лично мне всегда не хватало данной фитчи у system.exe от ПП.
Vasil Ivanov
vasil-i@yandex.ru
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Шелл (system.exe) с историей

Post by Shaos »

Vasil Ivanov wrote:Нужен кому-нить шелл, имеющий историю введенных команд ?.
Могу кинуть (Шаосу). Лично мне всегда не хватало данной фитчи у system.exe от ПП.
Давай
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Re: Шелл (system.exe) с историей

Post by Vasil Ivanov »

Shaos wrote:
Vasil Ivanov wrote:Нужен кому-нить шелл, имеющий историю введенных команд ?.
Могу кинуть (Шаосу). Лично мне всегда не хватало данной фитчи у system.exe от ПП.
Давай
Кинул архив тебе на e-mail

Файл README:

Это стандартный шелл + история команд. Размер буфера истории 256 байт. Перемещение по истории:

Code: Select all

   Esc        - очистить ком. строку
   Ins        - смена режима ввода (вставка/замена)
   курс. клавиши вверх/вниз  - прокрутка истории
   PageUp      - в начало истории
   PageDown    - в конец истории
   Ctrl+Del    - стереть историю
Фитчи:

- Из дополнительных bat-команд вставил только "ECHO.", для вставки пустой строки (на экране).

- Доработана команда "DIR". Теперь она выводит метки дисков и их серийные номера.

- В команде CLS (очистка экрана) можно задавать также и цвет очистки, например: CLS 2 (черный фон/зеленые символы).


Попутно пофиксил замеченные глюки стандартного шелла (от ПП):

1. Исправлен баг обработки команды "echo" в bat-файлах, при котором строка, длиннее ширины экрана, обрезалась по ширине экрана и остаток строки не выводился.

2. Исправлен баг, при котором по команде "dir" строка выводимого пути имела максимум 15 символов (при слишком длинном пути).

3. Пофиксено изменение текущего диска/пути после ошибок выполнения команд (например при неверном имени файла).



P.S. Данный шелл расчитан на обновленную функцию #32 ДОС (ожидание нажатия клавиатуры с эхом), которая выводит нормальный курсор. Поэтому прилагаю на всякий случай последнюю версию файла "system.dos".
Vasil Ivanov
vasil-i@yandex.ru
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

В связи с возможным полным открытием проекта Sprinter для народа предлагаю таки организовать у нас архив софта для Спринтера. Вышли мне пожалуйста последнюю версию системы и дай ей какой-то отличный от официальной версии номер, также можешь своё имя вписать внутрь как соавтора петерсплюсов ;)

P.S. Кстати если появятся официальные исходники системы - сможешь туда теже изменения внести?
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Post by Vasil Ivanov »

Shaos wrote:В связи с возможным полным открытием проекта Sprinter для народа предлагаю таки организовать у нас архив софта для Спринтера. Вышли мне пожалуйста последнюю версию системы и дай ей какой-то отличный от официальной версии номер, также можешь своё имя вписать внутрь как соавтора петерсплюсов ;)

P.S. Кстати если появятся официальные исходники системы - сможешь туда теже изменения внести?
Только сейчас, фактически случайно, на форуме ZX.PK.RU наткнулся на топик И.Мака по Опен-Сорц Спринтера. Это определенно радует, давно было пора это сделать!. Надо Рому агитировать, чтобы бросал свой АТМ ;) и переводил стрелки на проект Спринтера.

1. Последнюю версию ДОС-а вышлю на днях, я очень давно вообще не включал Спринтер.
2. Могу по-фиксить официальные сорцы.
Vasil Ivanov
vasil-i@yandex.ru
User avatar
CHRV
God
Posts: 1101
Joined: 29 Dec 2003 01:00
Location: Москва

Post by CHRV »

Vasil Ivanov wrote:Надо Рому агитировать, чтобы бросал свой АТМ ;) и переводил стрелки на проект Спринтера.
Рома переводит стрелки на проект посильнее Спринтера. Спринтер хорош был три года назад. Сейчас он откровеннно технологически слабоват.
АТМ снят с производства в прошлом году.
User avatar
Vasil Ivanov
Doomed
Posts: 413
Joined: 11 Dec 2003 14:34

Post by Vasil Ivanov »

CHRV wrote:
Vasil Ivanov wrote:Надо Рому агитировать, чтобы бросал свой АТМ ;) и переводил стрелки на проект Спринтера.
Рома переводит стрелки на проект посильнее Спринтера. Спринтер хорош был три года назад. Сейчас он откровеннно технологически слабоват.
АТМ снят с производства в прошлом году.
Этот проект связан с производством компов ?. Давай колись ;)
Vasil Ivanov
vasil-i@yandex.ru
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Шелл (system.exe) с историей

Post by Shaos »

Vasil Ivanov wrote:
Shaos wrote:
Vasil Ivanov wrote:Нужен кому-нить шелл, имеющий историю введенных команд ?.
Могу кинуть (Шаосу). Лично мне всегда не хватало данной фитчи у system.exe от ПП.
Давай
Кинул архив тебе на e-mail
Наконец-то дошли руки выложить это дело в составе обновлённого ДОС 1.61 (кстати почему новый system.dos имеет ту же версию, а размер имеет другой?):

http://nedopc.org/nedopc/sprinter/download/dos_1_61.zip (15K)

Code: Select all

DSS v1.61 PATCH2 (Oct 2006)
===========================
Автор патча: Vasil Ivanov

Версию ДОС обозвал как 1.61 (обновление 2006 года назовем PATCH2).
Установка: заменить оригинальный файлы "system.dos" и "system.exe".

1. Исправлена фирменная ошибка, при которой происходило зависание
системы (непредсказуемое поведение) при превышении макс. числа
открытых дескрипторов. Однажды, во времена портирования M80.EXE,
из-за данного бага и конечно неудачного расположения звезд на небе,
был снесен весь логический диск "C".

2. Появилась новая функция:

 Функция #08 (DSS_RESCAN). Пересканировать девайсы системы.
 вход: нет
 выход: A - номер последнего лог. диска в системе

Предназначена для создателей RAM-дисков. Для доступа к созданному
RAM-диску не нужно перезагружать компьютер.

3. В отличии от оригинала, функции 0Ah/0Bh (Create file/New create file)
перед созданием файла проверяют на переполнение таблицу свободных
дескрипторов.

4. Обновленная функция ДОС 32h (ожидание нажатия клавиатуры с эхом),
которая выводит нормальный курсор.

5. В стандартный шелл добавлена история команд. Размер буфера
истории - 256 байт.

Перемещение по истории:

   Esc        - очистить ком. строку
   Ins        - смена режима ввода (вставка/замена)
   курс.клавиши вверх/вниз - прокрутка истории
   PageUp     - в начало истории
   PageDown   - в конец истории
   Ctrl+Del   - стереть историю

Фитчи:

 - Из дополнительных bat-команд вставил только "ECHO.", для вставки
   пустой строки (на экране).

 - Доработана команда "DIR". Теперь она выводит метки дисков и их
   серийные номера.

 - В команде CLS (очистка экрана) можно задавать также и цвет очистки,
   например: CLS 2 (черный фон/зеленые символы).

Попутно пофиксил замеченные глюки стандартного шелла (от ПП):

А. Исправлен баг обработки команды "echo" в bat-файлах, при котором строка,
   длиннее ширины экрана, обрезалась по ширине экрана и остаток строки не
   выводился.

Б. Исправлен баг, при котором по команде "dir" строка выводимого пути
   имела максимум 15 символов (при слишком длинном пути).

В. Пофиксено изменение текущего диска/пути после ошибок выполнения команд
   (например при неверном имени файла).

P.S. Данный шелл расчитан на обновленную функцию #32 ДОС (ожидание нажатия
клавиатуры с эхом), которая выводит нормальный курсор.
P.S. Уже когда запустил увидел что оно печатает версию 1.61.9
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Шелл (SYSTEM.EXE) с историей

Post by Shaos »

В версии DSS 1.62 от Саймана всё ещё содержится этот самый SYSTEM.EXE (я сверил MD5) и я планирую его расширить в соответствии с планом :mrgreen:

Вот какие команды поддерживаются на данный момент:

PAUSE (только в BAT)
REM (только в BAT)
CD и CHDIR - смена текущего каталога
CLS - очистка экрана (Василий Иванов добавил опциональный параметр - цвет)
DATE - получение и установка текущей даты (надо поддержать стандартный досовский формат mm-dd-yyyy наряду с теперешним dd.mm.yyyy)
DEL - удаление файла
DIR - вывод содержимого текущего каталога (расширена Василием)
ECHO - вывод текстового сообщения на экран, а также On/Off
ERASE - алиас DEL
EXIT - выход из командного процессора
HELP - вывод списка поддерживаемых команд (захардкодено - надо бы чтобы выводилось по факту что есть)
MD и MKDIR - создание директория
PATH - вывод содержимого переменной окружения PATH
REN и RENAME - переименование файла
RD и RMDIR - удаление директория
SET - вывод всех переменных окружения или установка нового значения переменной по имени
TIME - получение и установка текущего времени
VERSION и VER - вывод версии DSS

Я планирую добавить к этому COPY, которая на данный момент является внешней командой, и возможно даже с опциями, повторяющими MS-DOS:
/Y - всегда отвечать ДА если происходит копирование поверх существующего файла;
/V - произвести верификацию файла после копирования (это сейчас важно).

Также планирую добавить алиасы для некоторых существующих команд, чтобы сымитировать "unix experience" :)

LS для DIR
CP для COPY
RM для DEL

Далее надо будет подумать над добавлением MV и MOVE
Наверное TYPE (и его алиас CAT) нужна будет и может быть даже MORE :)
В будущем поддержку батников надо будет довести до приемлиемого уровня (CALL, FOR, GOTO, IF)

По ходу включения функционала динамических библиотек LIBMAN скорее всего придётся добавить команды специфические для либмана - например:
LL и LIBS - может выводить список загруженных библиотек с ID и reference-counter-ами
RL и RMLIB - может удалять библиотеку по ID (например приложение забыло удалить её при выходе)

Ну и так как версия SYSTEM.EXE может отличаться от версии SYSTEM.DOS можно добавить команду вывода версии шелла с датой сборки и списком авторов и назвать её скажем CREDITS
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Шелл с историей

Post by Shaos »

Кто-то помнит чем отличаются Primary Command Processor от Secondary?

Code: Select all

; /P Primary command processor
; /S Secondary command processor
; /C Execute batch file
P.S. Ок, судя по исходникам, Primary сначала запускает батник system.bat, а потом уходит в консоль, а Secondary сразу уходит в консоль. Batch режим запускает батник и возвращается (без консоли). Будучи запущенным без параметров шелл работает как Secondary.

P.P.S. В новой версии при старте Primary Command Processor будет устанавливать хук в DSS v1.62 на точку входа RST #20 (которая в данный момент не используется, как и RST #28), чтобы через неё разрешать приложениям делать некоторые вещи, в частности работать с DLL-ками через встроенный в шелл LIBMAN. Secondary Command Processor этого делать небудет, т.к. он вызывается заведомо после Primary. Соответственно Batch режим тоже ничего не будет менять в DSS. Также очевидно, что Primary Command Processor не должен иметь логики по возврату DSS в первоначальное состояние, потому что выйти из него невозможно (как минимум по команде EXIT) - т.е. Primary Command Processor пускается бутом, хачит DSS и остаётся работать с хакнутым DSS до следующего ребута или выключения питания.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Шелл с историей (новый SYSTEM.EXE)

Post by Shaos »

Когда подменял шрифт, то обратил внимание на то, что SYSTEM.EXE использует символ с кодом 0 вместо #20 (пробел) в строке приглашения на ввод (у меня там точка в правом-нижнем углу знакоместа):

Image

Надо будет исправить шелл...
Я тут за главного - если что шлите мыло на me собака shaos точка net