Дело было вечером, делать было нечего, что называется. Хотя сделано оно было не за один вечер, да и до сих пор много недоработок. Часто называю системой, так что не удивляйтесь.
Все доступные команды - help.
Последние числа версии - количество строк кода.
Есть смена языков. В системе доступно написание скриптов, или программ. Называйте как хотите.
Вместе с консолькой не поставляется ровным счётом ничего. Дабы воспользоваться функциями скачивания чего-либо (языка на данный момент) - необходимо скачать и подключить специальную DLL. Скачиваем и распаковываем содержимое в core/ Прописываем в start.txt (если нет, то создаём в директории core/):
Code
dllLoad("downloadfile","df_init");
Берём любой установленный языковой файл. Изменяем всё, что есть внутри. Запихиваем в папку /core/languages/
[language] name=english DLL_ALREADY_LOADED=DLL already loaded! DLL_LOADED=DLL loaded! DLL_LOADED_NOW=Loaded DLL`s: DLL_NOT_EXISTS=DLL not exists! DLL_NOT_LOADED=DLL not loaded! DLL_NO_LOADED_DLLS=No loaded DLL`s! DLL_SCRIPT_INIT_NOT_EXISTS=Initialization script of DLL not exists! DLL_SCRIPT_NOT_EXISTS=DLL script not exists! DLL_UNLOADED=DLL unloaded! HELP_CLEAN=complete log cleanup HELP_DLL_LOAD=loads DLL lHELP_DLL_LOADED=shows loaded DLL`s HELP_DLL_UNLOAD=unloads DLL HELP_EXIT=closes console HELP_GET_HEIGHT=shows window height HELP_GET_WIDTH=shows window width HELP_LANGUAGE_CHANGE=changes language HELP_LANGUAGE_CURRENT=shows current language HELP_LANGUAGE_DELETE=deletes language HELP_LANGUAGE_DOWNLOAD=downloads language HELP_RUN=runs script HELP_SCRIPT_EXECUTE=executes GML-code HELP_SET_HEIGHT=sets window height HELP_SET_WIDTH=sets window width HELP_SWAP_COLORS=swaps colors HELP_TERMINATE=terminates running script LANGUAGE_ALREADY_EXISTS=Language already exists! LANGUAGE_ALREADY_LOADED=Language already loaded! LANGUAGE_CANT_DELETE=Can`t delete language! LANGUAGE_CANT_DOWNLOAD=Can`t download language! LANGUAGE_CURRENT=Current language - LANGUAGE_DELETED=Langauge deleted! LANGUAGE_DOWNLOADED=Language downloaded! LANGUAGE_FILE_NOT_EXISTS=Language file not exists! LANGUAGE_LOADED=Language loaded! LANGUAGE_WRONG_VERSION=Wrong version of language file! MAXLINES_SET=Number of displaying lines set! MAXLINES_TOOLITTLENUMBER=Too little number of displaying lines! SCRIPT_CANT_RUN=Can`t run script! SCRIPT_NO_RUNNING=No running scripts! SCRIPT_RUNNED=Script runned! SCRIPT_TERMINATED=Script terminated! SWAP_COLORS_SWAPED=Colors swaped! WINDOW_HEIGHT_SET=Window height set! WINDOW_SIZES_SET=Window sizes set! WINDOW_WIDTH_SET=Window width set!
Скрипты устанавливать, в принципе, и не надо. Единственное - скиньте .txt-файл в папку "scripts" в директории с системой. Не существует папки - создайте, в чём проблема? Запуск осуществляется командой "run название_скрипта", название скрипта без расширения. Он считается из папки "scripts" и внедрится в работу. Подробнее - в написании. Завершение скрипта (если он того не предполагает) осуществляется командой "terminate". Она удаляет скрипт из памяти (не с диска!).
Тут расписывать особо нечего, ибо написание скриптов ведётся на чистом GML. Создаётся .txt-файл в папке "scripts", в котором и записывается вся программа. Скрипт выполняется в событии Step системного объекта, следовательно доступны все системные переменные. Неизвестные переменные равны нулю, что позволяет создать своеобразный Create.
Code
if scriptLoaded=0 { addLine("Loaded!"); scriptLoaded=1; }
addLine(string) - добавление строки. Вместо строки можно прописать любую цифру. deleteLines(integer) - удаление строк с конца. -1 - удаление всех строк.
Code
draw_text_colored(16,16,"OLOLO",c_white);
//НЕТУ//
//УСТАРЕЛО// Загрузчик Скачивает файлы. Логично, не правда ли? Одновременно качает только один, но можно ставить закачку на паузу. add *ссылка* *файл-оутпут* - добавляет и начинает скачку status - выводит статус закачки (качается/пауза), размер файла, сколько скачано и скорость pause - ставит закачку на паузу resume - возобновляет закачку stop - останавливает закачку //УСТАРЕЛО//
Генератор паролей Генерирует пароли. Логично? Вводим help - получаем справку, exit - выходим из программы.
beta v0.1 - выход в свет
beta v0.1.1 - фикс команды terminate (зависела от регистра написания) - неизвестные переменные равняются нулю
beta v0.2 - чуть другое отображение консоли (удобнее) - мощная оптимизация (удалены лишние переменные, например) - поддержка специальных символов (Insert + любая буква), узнать символ буквы - ins *буква*. "ins q", например - поддержка Ctrl+V
beta v0.3 * папка с консолью - автосоздание всех директорий - всё системное теперь в подпапке core/ (кроме скриптов и настроек) * внешний вид - полоса продвижения по логу - можно обменять местами цвет фона и текста (swapcolors) - возможно изменение размеров окна (setwidth, setheight) * ввод - нормальный ввод специальных символов (никакого инсерта) - полное удаление левой или правой части введённой строки (Shift+Backspace, Shift+Delete) - перелистывание в самое начало в самый конец лога (PageUp, PageDown) - введенные к командам аргументы должны разделяться точкой с запятой (на конце и после команды не надо) - эти же агрументы могут содержать большие буквы и пробелы * языки - языки зависят от версии консоли (в языковом файле прописывается подходящая версия) - полная переработка загрузки языка - все фразы теперь цельные (не складываются из кусков) - английский языковой файл встроен * DLL - возможность добавления новых DLL - абсолютно новый принцип загузки DLL - возможность выгрузки DLL из памяти (пока что только путём исполнения скрипта) * другие фишечки - оптимизация - если создать файл start.txt в папке core/, то GML-код из него выполнится после прогрузки консоли - команда, выполняющая прямо в консоли GML-код (script) - консоль при запуске прописывает автора и версию в лог - получение текущих размеров окна (getwidth, getheight) - удобнейшая команда для скриптов (string_get_argument(строка,номер_аргумента) - получает из строки аргументы)
beta v0.3.1.894 - новая циферка в версиях (количество строк кода) - подправил языковые файлы - русский язык встроен и является языком по умолчанию - dllunload - выполняемая команда - подправил работу DLL - screen_refresh() вписан в конец Step`а, так что больше его писать не надо (если, конечно, была нужда) - языки не зависят от версий, они проверяются по присутствию всех ключей - консоль грузит меньше процессора, так как отображаются теперь не все строки, а какое-то количество - setmaxlines - максимальное количество отображаемых строк - убран баг, при котором размеры окна выше 640х480 не грузились - убран баг, при котором string_get_argument() выдавал пустую переменную, если полученный аргумент был длиной в один символ - нужно передавать в string_get_argument() тип данных, который хотим получить; string_get_argument(STRING,2,"real") - оптимизация
!WARNING! Всегда могу упустить некоторые изменения, уж не серчайте.
- Это что? - Консольная рабочая среда, которую я учу страдать фигнёй. Вспомни прошлое, работай в консоли!
Сообщение отредактировал: dyatel - Вторник, 03.04.2012, 23:52
Новая, чёрт возьми, версия! Будут баги - обязательно кидайте сюда код ошибки + скрин + как баг был вызван. А они быть должны, ибо была переписана половина кода.
Добавлено (26.01.2012, 22:28) --------------------------------------------- Предложите, что за софтинку мне запилить сюда? Каких функций добавить?
Ос не может работать из другой Ос, может работать только ее эмулятор. А так ОС минимум должна иметь: 1) работу с HDD больших размеров, соответственно уметь считывать информацию вообще с них. А это не FileOpen, FileClose..... 2) работать с ОЗУ и соответственно от своей разрядности иметь доступ к более "большой" памяти. 3) перевод процессора в защищенный и реальный режимы. 4) ну и шик сделать многопоточность (многозадачность). ... много, много аргументов....
Дата: Воскресенье, 04.03.2012, 17:09 | Сообщение # 20
( программюга )
Сообщений: [298]
Конструктор, а разве это не рабочая среда? А рабочая среда, если, конечно, не ошибаюсь - в общем виде представляет собой что-то вроде ОС, но намного слабее, причём запускается из-под другой системы. Не?