forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на MidletPascal (http://forum.boolean.name/forumdisplay.php?f=88)
-   -   gainOS (http://forum.boolean.name/showthread.php?t=15065)

PacMan 05.07.2011 18:01

gainOS
 
Вложений: 1
Версия 0.3
gainOS - очередной проект "ОС" для мобильных телефонов выполненного на MIDlet Pascal.

Разработчики:
Что примечательного:
  • Ядро
  • Системные сообщения
  • Процессы
  • Интерпретатор
  • Консоль

Вообще gainOS - это доказательство того, что две головы лучше чем одна. Ведь мы создали это "нечто" за сравнительно небольшой промежуток времени, переплюнув проекты других псевдо-ОС.

Что нового?

Версия 0.3
  • Исправлены многочисленные баги
  • Изменено Bootmenu (теперь на Canvas'е)
  • Добавлена визуализация процесса копирования и перемещения
  • Добавлено сворачивание окон

Версия 0.2
Система:
  • Добавлено Bootmenu
gASM:
  • добавлены функции для работы с файлами (подробная информация в файле gASMreadme.txt)
  • теперь можно обратиться к адрессу, который записан в другом ячейке памяти с помощью знака $ (подробно в gASMreadme.txt)
Терминал:
  • добавлена комманда ps
  • улучшена комманда help



Команды терминала:
install - выполнить инсталяцию системы
version - версия терминала
cd [путь] - выбрать текущую папку
ls - содержимое папки
help - список комманд терминала
kill [pid] - уничтожить процесс с указанным айди
create [приложение] - создать процесс
time - текущее время
pwd - путь к текущей папке
dl - список дисков
shutdown - завершение системы
clear - очистка экрана
edit [файл] - текстовый редактор
env [переменная="значение"]- переменные окружения
mkdir [имя папки] - создать папку
rename [имя] [новое имя] - переименовать файл или папку
rm [файл/папка]- удалить файл или папку ( если не пуста )
view [файл] - просмотр текстового файла
copy [адрес файла] [новый адрес файла] - копировать файл
move [адрес файла] [новый адрес файла] - переместить файл


Документация к интерпритатору:
Структура простого приложения
====================
1.| MODE #APPLICATION TYPE#
2.| $APP
3.| Start:
4.| hlt
====================
В 1 строчке идет объявление типа приложения. Всего существует 3 типа
Console - Консольное приложение. Можно запустить только из консоли (Terminal) ОС, запрещена работа с окнами
Window - Оконное приложение. Можно запускать только из графической оболочки (Descktop) ОС, запрещена работа с функциями консольного приложения
Deamon - Демон. Запуск возможен как из консоли (Terminal), так и графической оболочки (Desctop) ОС. Запрещена работа с функциями консольного и оконного приложения
Далее следует набор настроек программы. Настройка приложения идет с помощью специальных деректив, которые имеют следующий синтаксис
====================
1.| #code parameter
====================
Где:
# - обязательный символ, без которого деректива не будет восприниматься
code - имя директивы. Полный список директив смотрите ниже
parameter - список параметров для директивы (отделяются запятой)
Вот основной список директив
include - вставка заголовочного файла, находящегося по пути указанноу в параметрах.В этих файлах указывается список функций, упрощающих работу программиста со сложными функциями. Заголовочные файлы находятся в системной папке "headers" ОС. Пример: #include winapi.h
После того, как были указанны все нужные директивы пишется строка $APP, которая говорит о том, что объевлние настроек программы завершено. Далее следует непосредственный код программы.

! СИНТАКСИС gASM
Весь синтаксис состоит из меток и инструкций. Объевление меток происходит сл. образом
=====================
1.| LabelName:
=====================
Для того чтобы применить исструкцию требуется воспользоваться такой конструкцией
=====================
1.| code par1, par2, ...
=====================
Где:
code - имя инструкции (полный список смотрите ниже)
par1, par2, ... - список передаваемых параметров инструкции. Каждый параметр отделяется с помощью запятой

Для работы с адресами используется 2 символа # и $. Первый (#) - используется для поиска адреса по имени указанному после этого символа, второй - задает конкретный адресс ячейки. Для примера можно рассмотреть следующий листинг
=====================
1.| ...
2.| mov #myVar, $5
3.| ...
=====================
Здесь в переменную по адресу #myVar записывается значение из ячейки находящейся по адрессу 5.
У приложения есть регистры. Они сущуствуют для того, чтобы передавать параметры из-вне функций (подробности ниже). Всего на приложение выделяется 15 регистров. Доступ к ним обеспечивается с помощью имени rN, где N - это номер регистра, который должен находиться в диапозоне [0,14]
Так же gAsm поддерживает комментарии. Комментарий начинается с символа ; и идет на протяжении всей строчки. Например
=====================
1.| ...
2.| ;This is comment
3.| mov #r0, $1 ;This is comment too
4.| mov #r1, "my ;This is comment too string"
5.|
=====================
В четвертой строке мы видим, что ; находится внутри строки. Но в 1 регистр запишется лишь часть строки: my, т.к. остальная часть является комментарием

! ИНСТРУКЦИИ
Вот полный список инструкций
mov a1, a2 - записывает в ячейку по адресу a1, значение из ячейки a2 или же a2, если ячейка не существует. Так же можно записать адресс ячейки по имени, используя @varName. !!!Предупреждение: такая конструкция работает только в этой инструкции
db a1, a2, a3 - выделяет ячейку в памяти и назначеет ей имя a1, тип a2 {0 - integer; 1 - real; 2 - string} и записывает начальное значение a3 (именно значение, а не адресс ячейки)
uns a1 - очищает ячейку в памяти по адрессу a1
call - вызывает функцию по имени (список функций смотрите ниже)
jmp a1 - перемещение на метку или определенное кол-во шагов вперед\назад. Для того чтобы перейти на метку используется такая конструкция ^LabelName. Чтобы перейти на N шагов вперед используйте обычное число, на N шагов назад используйте отрицательное значение. !!!Предупреждение: в a1 пишется конкретное значение, а не адресс ячейки.
Пример:
=====================
1.| jmp ^Start ;переместиться на начало программы
2.| jmp 5 ;перейти на 5 шагов вперед
3.| jmp -3 ;перейти на 3 шага назад
=====================
cmp a1, a2 - сравнение 2 чисел из ячеек по адрессам a1 и a2. Сравнение происходит по методу вычитания из a1 a2. Если в результате получается 0, то пропускается ближняя инструкция jnz. В противном случаее пропускается инструкция jz. (Подробнее ниже)
jz a1 - аналог jmp, но срабатывает только в том случаее, когда cmp возвращает 0
jnz a1 - аналог jmp, но срабатывает только в том случае, когда cmp возвращает число отличное от 0
ret - возвращение к предыдущей точке скачка. Эта инструкция пригодится для создания собственный функций.
Пример:
=====================
1.| MyFunction:
2.| mov #r0, #r1 ;Здесь любые действия
3.| call debug
4.| ret ;возвращаемся к основной программе
5.| Start:
6.| mov #r1, "Hello"
7.| jmp ^MyFunction
=====================
hlt - корректное завершение программы
{В следующем списке инструкций результат записывается в ячейку по адрессу a1. Ячейки обязательно не должны иметь тип string}
sub a1, a2 - a1 - a2
add a1, a2 - a1 + a2
div a1, a2 - a1 / a2 !!!Предупреждение: ячейка по адрессу a1 должна иметь тип real
idiv a1, a2 - a1 div a2 !!!Предупреждение: ячейки по адрессу a1 и a2 должны иметь тип integer
mul a1, a2 - a1 * a2
dec a1 - a1 - 1 !!!Предупреждение: ячейка по адрессу a1 должна иметь тип integer
inc a1 - a1 + 1 !!!Предупреждение: ячейка по адрессу a1 должна иметь тип integer
and a1, a2 - a1 and a2 !!!Предупреждение: ячейки по адрессу a1 и a2 должны иметь тип integer
or a1, a2 - a1 or a2 !!!Предупреждение: ячейки по адрессу a1 и a2 должны иметь тип integer
shl a1, a2 - a1 shl a2 (Побитовое смещение влево) !!!Предупреждение: ячейки по адрессу a1 и a2 должны иметь тип integer
shr a1, a2 - a1 shr a2 (Побитовое смещение вправо) !!!Предупреждение: ячейки по адрессу a1 и a2 должны иметь тип integer
not a1 - not a1 !!!Предупреждение: ячейка по адрессу a1 должна иметь тип integer
neg a1 - смена знака значения ячейки по адрссу a1

! Функции
Функции вызываются с помощью инструкции call. Передача параметров происходит с помощью предварительного занесения значений в регистры. Имена функций не чувствительны к регистру
Список функций доступных только для консольных приложений:
write - вывод текста (r0) в консоль без перехода на новую строчку
writeln - вывод текста (r0) в консоль с переходом на новую строку
read - чтение строки (r1) из консоли с подсказкой (r0) без перехода на новую строчку
readln - чтение строки (r1) из консоли с подсказкой (r0) с переходом на новую строчку
clrscr - очистка экрана консоли
Список основных функций (доступны для любого типа приложения):
fileexists - существует ли файл по пути (r0). Возвращает (r1) 1 - существует; 0 - нет
getdirlist - возвращает (r1) список папок по пути (r0), разделенный символом |
getfilelist - аналогичен getdirlist, только список файлов
getdisklist - возвращает (r0) список дисков, разделенных символом |
sleep - подождать (r0) милисеккунд
strpos - возвращает (r2) позицию символа (r1) в строке (r0). Аналог Pos из MP
strcop - копирует все символы с r1 по r2 из строки r0 и записывает результат в r3. Аналог Copy из MP
strdel - аналогично strcop, только удаляет указанный промижуток из заданной строки
strcmp - сравнивает 2 строки r0 и r1, возвращает (r2) 1 - если равны и 0 - если разные
concat - склеивает 2 строки r0 и r1 и пишет в r2
cos - Принимает r0 в радианах и возвращает r1
sin - Принимает r0 в радианах и возвращает r1


Следующая версия:
В следующей версии будет пользовательский интерфейс.
Вот скриншот:



gainOS 0.3 [ Скачать ]

alexprey 05.07.2011 18:05

Ответ: gainOS
 
Вложений: 2
И так. Выкладываю новую версию
Огромная благодарность YellowAffterLife, а так же barsunduk
Что нового:
  • Добавлен API для работы с окнами в режиме WINDOW
  • Добавлен API для работы с AGL (работа с графикой)
  • Небольшие фиксы в GUI интерфейсе
  • Оптимизация gASM
  • Небольшие нововведения в синтаксисе gASM
Изменения в синтаксисе gASM:
  • Добавлены новые инструкции: gm, fm, jp, jnp, goto
  • Изменен принцип работы jmp, jnz, jz - теперь текущая позиция не сохраняется в стек положения, для этого служит инструкция goto
  • Более подробно по API и новым инструкциям читаем в мануале (gASMReadme.txt)
Как запускать приложения под GUI
  1. Открываем GUI (Из терминала: пишем gui start или же boot)
  2. Переключаемся на окно с полем ввода и кнопкой RUN
  3. Открываем полно экранный ввод (зажимаем курсор на поле ввода)
  4. Вводим полный путь приложения (например: /mmc/explorer.app)
Тестовые приложения для GUI
Explorer.app - простой ФМ с навигацией по папкам

MODE WINDOW
$APP
GetFirstWord:
; Get First word in string and remove
; #r2 - Result
; #r0 - String (var)
; #r1 - Separator
call strpos
mov #r1, 0
call strcop
mov #r4, #r3
inc #r2
call strdel
mov #r0, #r3
mov #r2, #r4
ret

RemoveLastWord:
;Remove last word in string
; #r0 - String (var)
; #r1 - Separator
db pos,0,0
db loc,2,""
db sep,2,""
mov #loc, #r0
mov #sep, #r1
call StrLen
mov #r2, #r1
dec #r2
mov #r1, 0
call StrCop
mov #r0, #r3
_while:
mov #r1, #sep
call StrPos
add #pos, #r2
cmp #r2, 0
inc #r2
mov #r1, 0
call StrDel
jp ^_while
mov #r0, #loc
mov #r1, 0
mov #r2, #pos
call StrCop
mov #r0, #r3
ust #loc
ust #sep
ust #pos
ret

BuildPathList:
; Build Path List and change label caption
; #r0 - path
; #pathlabel - label, where set current path
mov #r3, #r0
mov #r0, #pathlabel
mov #r1, "Text"
mov #r2, 11
call SetWindowData
mov #r0, #r3
db fList, 2, ""
call GetDirList
mov #r2, #r1
call GetFileList
mov #r0, #r2
call concat
mov #fList, #r2
while:
mov #r0, #fList
mov #r1, "|"
goto ^GetFirstWord
mov #fList, #r0
mov #r3, #r2
mov #r2, #list
mov #r0, "TListBox"
mov #r1, "AddItem"
call CallMethod
mov #r3, #r0
mov #r0, #fList
mov #r1, ""
call strcmp
cmp #r2, 0
jz ^while
ust #fList
ret

Start:
db mainwindow,0,0
db list,0,0
db path,2,""
db pathlabel,0,0
db btn,0,0
mov #path, "/"
;Create main form
mov #r0, "TForm"
mov #r1, "ExplrWindow"
mov #r2, 10
mov #r3, 20
mov #r4, 200
mov #r5, 200
mov #r6, 0
mov #r7, "caption=Explorer"
call CreateWindow
mov #mainwindow, #r8
;Create mini-help label
mov #r0, "TLabel"
mov #r1, "Label1"
mov #r2, 5
mov #r3, 15
mov #r6, #mainwindow
mov #r7, "caption=Current catalog:"
call CreateWindow
;Create btn for back directory
mov #r0, "TButton"
mov #r1, "BackDirBtn"
mov #r2, 8
mov #r3, 27
mov #r4, 30
mov #r5, 15
mov #r6, #mainwindow
mov #r7, "caption=Back&align=1&color=13164776"
call CreateWindow
mov #btn, #r8
;Create current catalog label
mov #r0, "TLabel"
mov #r1, "PathLabel"
mov #r2, 40
mov #r3, 30
mov #r6, #mainwindow
mov #r7, "caption=/"
call CreateWindow
mov #pathlabel,#r8
;Create List box
mov #r0, "TListBox"
mov #r1, "FileList"
mov #r2, 5
mov #r3, 45
mov #r4, 190
mov #r5, 145
mov #r6, #mainwindow
mov #r7, ""
call CreateWindow
mov #list, #r8
;Show form
mov #r0, #mainwindow
mov #r1, 1
call ShowWindow
mov #r0, "TListBox"
mov #r1, "Clear"
mov #r2, #list
call CallMethod
mov #r0, #path
goto ^BuildPathList
;Main procedure
MainProc:
call GetMessage
;if WM_CLICK
cmp #r0, 16
jnz ^EndClick
;IF Sender == BackBtn
cmp #r1, #btn
jnz ^btn_fail ;THEN
mov #r0, #path
mov #r1, "/"
goto ^RemoveLastWord
;IF #PATH == ""
mov #path, #r0
mov #r1, ""
call StrCmp
cmp #r2, 1 ; then #PATH = /
jz 1
mov #path, "/"
;ENDIF
mov #path, #r0
mov #r0, "TListBox"
mov #r1, "Clear"
mov #r2, #list
call CallMethod
mov #r0, #path
goto ^BuildPathList
jmp ^MainProc
;ENDIF
btn_fail:
;IF Sender == list
cmp #r1, #list
jnz ^EndClick
mov #r0, "TItem"
mov #r1, "GetText"
call CallMethod
mov #r0, #path
mov #r1, #r4
call concat
;IF NewPath.IsDirectory
mov #r0, #r2
call isDir
cmp #r1, 1
jnz ^EndClick
;THEN show NewPath
mov #path, #r2
mov #r0, "TListBox"
mov #r1, "Clear"
mov #r2, #list
call CallMethod
mov #r0, #path
goto ^BuildPathList
jmp ^MainProc
;ENDIF
EndClick:
;If WM_DESTROY
cmp #r0, 14 ;THEN hlt
jnz ^MainProc
hlt


aglGame.app - простенький пример с AGL. Гоняем прямоугольник по экрану. Управление:
1 - выход
2,4,6,8 - вверх \ влево \ вправо \ вниз

MODE WINDOW
$APP
;#r0 - код нажатой кнопки
func_Render:
;Чистим экран
mov #r0, #cl_black
call agl_SetColor
;Очищаем BackBuffer
call agl_ClearContext
;Рисуем пичальный кубик
;Записываем в структуру данных
mov #r0, #cl_red
call agl_SetColor
mov #r0, #objX
mov #r1, "|"
call concat
mov #r0, #r2
mov #r1, #objY
call concat
mov #r0, #r2
mov #r1, "|30|30"
call concat
mov #r3, #r2
mov #r0, "Rect"
mov #r1, "Draw"
call agl_Render2D
;Переносим BackBuffer на OutContext
call agl_Present
;Сканируем код
call ScanKeyPress
cmp #r0, 4 ;Смещение влево
jnz 2
sub #objX, 5
cmp #r0, 6 ;Смещение вправо
jnz 2
add #objX, 5
cmp #r0, 2 ;Смещение вверх
jnz 2
sub #objY, 5
cmp #r0, 8 ;Смещение вниз
jnz 2
add #objY, 5
ret

Start:
;Инициализация
db objX,0,0
db objY,0,0
mov #r5, 1
call agl_Init
;Создание стандартных цветов
mov #r0, 255
mov #r1, 0
mov #r2, 0
mov #r3, 0
db cl_black, 0, 0
call agl_GetColor
mov #cl_black, #r4
db cl_red, 0, 0
mov #r1, 255
call agl_GetColor
mov #cl_red, #r4
db cl_white, 0, 0
mov #r2, 255
mov #r3, 255
call agl_GetColor
mov #cl_white, #r4
LoopStart:
mov #r0, 10
call sleep
goto ^func_Render
cmp #r0, 1
jnz ^LoopStart
;Обязательно освобождаем устройство вывода
call agl_reset
hlt

JACUK 06.07.2011 01:03

Ответ: gainOS
 
А есть возможность сохранить скрипт и потом его выполнять? А также интер6сует наличия файловой системы(собственная или похожа на существующие?).

alexprey 06.07.2011 03:01

Ответ: gainOS
 
Программы запускаются из файла. А точнее ты их сам запускаешь из терминала, указывая имя файла. ФС есть. Смотри список функций терминала.

PacMan 06.07.2011 03:10

Ответ: gainOS
 
Чтобы создать свой файл выполняешь в нужной директории команду
Код:

edit myfile.app
потом пишешь свой код, сохраняешь и запускаешь
Код:

myfile

JACUK 06.07.2011 14:08

Ответ: gainOS
 
Было бы лутше-ввод команд в Canvas режиме! И если планируете создать граф. оболочку-, то можно замутить что то типа загрузчика:) Три пункта: ОС, Консоль, Выход.

alexprey 06.07.2011 14:17

Ответ: gainOS
 
Графическая оболочка уже начала разрабатываться. Ввод в режиме канвас удобно реализовать, если у тебя клавишный телефон. Но и с этим тоже могут быть проблемы. Например телефон с qwerty клавиатурой. Даже не представляю как там отлавливать нажатие каждой кнопки по отдельности. Для тач скринов придется писать виртуальную клавиатуру (в принципе её и так придется в скором времени писать для гуи).
Насчет твоего предложения про загрузчик не очень понял. Если запуск ГУИ через консоль, то так и есть
ПС. Если кто будет писать приложения на gASM прошу подать голос =) И желательно все тщательно протестировать, чтобы я это все поправил к сл версии

Igor 06.07.2011 14:58

Ответ: gainOS
 
А можно посмотреть исходники? Интересно, да и клавиатуру под сенсор потестирую.

alexprey 06.07.2011 15:27

Ответ: gainOS
 
Все исходники хранятся в строжайшем секрете под паролем. с 1024 битным шифрованием XD
А теперь представь что бы было, если MicroSoft раздавала свои исходники направо и налево?

impersonalis 06.07.2011 16:00

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 194567)
А теперь представь что бы было, если MicroSoft раздавала свои исходники направо и налево?

их бы не воровали?

Igor 06.07.2011 16:07

Ответ: gainOS
 
Цитата:

А теперь представь что бы было, если MicroSoft раздавала свои исходники направо и налево?
linux раздают

PacMan 06.07.2011 17:29

Ответ: gainOS
 
Всему свое время...

_Nox_ 06.07.2011 18:32

Ответ: gainOS
 
WTF?!?!? It is kernel!!! lol xD
Представьте если бы Windows выдавала такие сообщения

PacMan 06.07.2011 18:56

Ответ: gainOS
 
хД Ну а зачем убивать ядро?)

JACUK 07.07.2011 05:25

Ответ: gainOS
 
Говоря о загрузчике, я имел ввиду меню где будут отдельно пункт запустить гуи и работать там, запустить чисто консоль или же просто выйти.
Ну откроют они исходники..и что? появлятся новые проэкты на этой основе-и он уже не будет таким уникальным!

alexprey 07.07.2011 15:42

Ответ: gainOS
 
Нокс это была пасхалка =)

alexprey 07.07.2011 16:43

Ответ: gainOS
 
Ну теперь понял, что ты хочешь. Возможно реализуем такую штуку

ffinder 07.07.2011 16:58

Ответ: gainOS
 
в чем смысл этого проекта? кому он может быть полезен? для чего это вообще можно использовать?

JACUK 07.07.2011 17:20

Ответ: gainOS
 
Проект чисто для себя, для опыта и ради интереса!:) Вот и всё:)

_Nox_ 07.07.2011 19:22

Bugs Bugs Bugs
 
Вложений: 1
ЫУ Л800ш (SE K800i)

1. Я так и не разобрался что надо чтобы появилось окно ввода, но обычно если беспорядочно и много нажимать на все клавиши то оно всё же появляется, но это не всегда.
2. Если оно уж появилось, то закрываться оно уже не спешит, но если много раз нажать на GO всё же закрывается, по моему это не очень хорошо.
3. Строчку типа "installOK := true" надо вставлять в самом конце процедуры установки, смотреть изображение внизу.
Надо написать защиту от разнообразных ошибок, если при установке не правильно указать диск, то просто будут вот такие ошибки и больше нельзя будет установить заново, а если например ввести вместо буквы диска например '.' (точку) то приложение заходит в ступор.

alexprey 07.07.2011 19:38

Ответ: gainOS
 
Для сенсора надо просто нажать на экран. Для Кнопочных телефонов придется немного потанцевать с бубном. Сперва жмем *, затем нажимаем ОК или 5.

_Nox_ 07.07.2011 19:47

Ответ: gainOS
 
Вложений: 1
Цитата:

Сообщение от alexprey (Сообщение 194676)
Для сенсора надо просто нажать на экран. Для Кнопочных телефонов придется немного потанцевать с бубном. Сперва жмем *, затем нажимаем ОК или 5.

Надо заранее это обговаривать, вот кто подумает что чтобы включить ввод надо нажать какую-то хитрую комбинацию клавиш, такой подход отпугнёт пользователей.

Напишите чтобы можно было вызывать help вот так:
help [команда о которой мы хотим узнать больше]
И после этого выводилось на экран описание команды и её синтаксис

например:
$Help Edit
Edit - запуск текстового редактора
Edit [Файл]

Вижу что объекты запрограммировали неплохо, правда чтобы окно пришло в нормальный вид надо сначала по нему щёлкнуть, надо вам над скоростью работы этих красивостей поработать ещё

PacMan 07.07.2011 21:08

Ответ: gainOS
 
Дык в этой версии это вообще не документировано)

alexprey 07.07.2011 21:12

Ответ: gainOS
 
Ого. Ты пролез в ГУИ. Не ноормально, потому что в начале задается один и тот же Z задается. Я еще работаю над графической оболочкой

_Nox_ 07.07.2011 21:19

Ответ: gainOS
 
Вложений: 1
сделайте чтобы курсор быстрее на пару пикселей бегал. Когда все окошки закрываешь, то прога нето виснет, нето просто не знает что делать дальше, нет перехода обратно в консоль.

Когда Service Pack выйдет?)

Вот ещё что, есть
kill [pid] - уничтожить процесс с указанным айди
вообще-то перед тем как думать уничтожать процесс надо бы увидеть список их: Напишите процедуру ProcList например которая построит список всех работающих процессов, ведь это на 5 минут работы.

create [приложение] - создать процесс

Что к чему, что запускать, чем вообще обозначается приложение PID или название какое-то

Всё это надо описать в справке help [команда], ведь посути сделать так совсем не сложно

env [переменная="значение"]- переменные окружения --- с этим тоже ничего не понятно

Кстати, а почему gainOS

Вот ещё заметил недочёт, пишет что файл сохранён, хотя на самом деле то он не сохранён

PacMan 07.07.2011 22:20

Ответ: gainOS
 
kill [pid] - убить "демон" созданный коммандой create
create [app] - запустить "демон"
Демоны - это программы которые работают в фоновом режиме(у которых MODE DAEMON).
env [переменная="значение"] - переменные окружения. Одна из них BIN_DIR, в которой храниться путь к папке bin. Когда хочешь запустить программу то значала файл с нужным именем ищется в текущей папке, а его такого нет то в папке BIN_DIR.

gainOS - gainOS is not OS

_Nox_ 07.07.2011 22:25

Ответ: gainOS
 
Новая версия какая-нибудь сегодня будет?

alexprey 07.07.2011 22:42

Ответ: gainOS
 
Возможно, но не факт

PacMan 07.07.2011 22:51

Ответ: gainOS
 
Цитата:

Вот ещё заметил недочёт, пишет что файл сохранён, хотя на самом деле то он не сохранён
Судя по всему ты в корне, перейди в какой нибудь диск, и повтори процедуру.

Выложена версия 0.2 (в первом посту).

alexprey 08.07.2011 00:08

Ответ: gainOS
 
Выкладываю очередную программу на gASM "Сканер памяти". Сканирует ячейки памяти, начиная с 0 по 20 и выводит список их значений во время сканирования
MemScan.app

MODE CONSOLE
$APP
const MaxCount,0,20
Start:
db memPos,0,0
db memCount,0,0
;Вносим данные в память
mov $5, "Hello world!!!"
mov $11, "This is a lie"
mov $19, "gASM FOREVER!!!!"
;Сканируем память
while:
mov #r0, $memPos
call WriteLn
inc #memCount
inc #memPos
cmp #memCount, #MaxCount
jnz ^while
mov #r1, #memCount
mov #r0, "Mem Scan Count: "
call concat
mov #r0, #r2
call WriteLn
hlt

_Nox_ 08.07.2011 02:40

Ответ: gainOS
 
Yes, I am! :))

cherepets 08.07.2011 22:12

Ответ: gainOS
 
Было бы неплохо писать программы на языке чуть более высокого уровня, чтобы потом они неким "компилятором" переводились в gasm.

alexprey 08.07.2011 23:47

Ответ: gainOS
 
Я планирую написать компилятор из паскалеподобного в gASM. Но это дело не одно из легких. В принципе писать на gASM не очень сложно

PacMan 11.07.2011 19:24

Ответ: gainOS
 
Версия 0.3 в первом посту!

DIMMON4IK 11.07.2011 23:12

Ответ: gainOS
 
Панель запущенных приложений напоминает unity launcher из ubuntu, только там он слева

Igor 12.07.2011 00:42

Ответ: gainOS
 
Я в GUI закрыл два окошка (они кстати сначала неправильно отображались, элементы первого окошка загадочно переплетались с элементами второго)
и вдруг понял что не могу ничего сделать(( все тыканья в красивый синий экран оказались безрезультатны. Панелька справа исчезла((
Ещё - она очень неудобно расположена сбоку, экран телефона и так высокий и узкий, панель задач ещё более его сужает, значительно сокращая рабочее пространство. Стоит перенести её вниз или вверх, или сделать настраиваемой и/или прячущейся.
На сенсоре я даже не подозревал что картинка мышки существует, после тыканья кнопок она внезапно появилась.
P.S. На больших экранах 640*360 не помешало бы растянуть фоновую картинку.
Я бы и сам это сделал, если бы располагал исходным кодом. (Весь не нужен, достаточно той части что отвечает за GUI)

alexprey 12.07.2011 01:46

Ответ: gainOS
 
GUI версия еще в разработке. Это все что я успел за пару часов

kizup 18.07.2011 18:31

Ответ: gainOS
 
Ваша ОС конечно прекрасна, но так и не понял как в ней работать, делал все по инструкции! Телефон ноква 5610-d XM захожу в консоль, хочу чтото написать а меня выкидывает!!!!

alexprey 18.07.2011 22:21

Ответ: gainOS
 
Хммм... Интересно. Подробно распиши свои шаги. Телефон тач скрин?

im_zorg 24.07.2011 04:37

Ответ: gainOS
 
Nox и прочие os'естроители курят в сторонке))

PacMan 09.08.2011 16:45

Ответ: gainOS
 
Вложений: 1
Версия 0.4

Что нового?
  • Динамическая память в gAsm
  • Добавлено Popup-меню
  • Увеличена скорость работы gAsm
  • Оптимизирована прорисовка объектов
  • Перенесена панель вниз
  • Поправлен install

Igor 27.09.2011 20:27

Ответ: gainOS
 
Проект заморожен?
P.S. всё-таки мне хочется взглянуть на исходники

alexprey 27.09.2011 22:37

Ответ: gainOS
 
Проект заморожен по самой нелепой причине.
Я забыл флешку со всеми исходниками у себя дома. Поеду только около 3 ноября

PacMan 28.09.2011 16:49

Ответ: gainOS
 
Вложений: 1
Igor, да пожалуйста!)
Правда исходники далеко не последней версии (последних у меня нет в наличии).

alexprey 28.09.2011 18:45

Ответ: gainOS
 
Хах. Ну смотрите на наш быдло код =)

_Nox_ 28.09.2011 22:04

Ответ: gainOS
 
Всё, это последняя стадия, исходники выложены, проект умирает.

PacMan 29.09.2011 01:09

Ответ: gainOS
 
Ты мне тут не выпендривайся, ведь и так сказали что проект заморожен.
Опыт получен, и это главное. И откуда ты знаешь что проект умер?
Вдруг сейчас Igor или кто-либо другой после
получения исходников начнет ваять "ОС" с новыми силами?

alexprey 29.09.2011 01:13

Ответ: gainOS
 
"Всё, это последняя стадия, исходники выложены, проект умирает."
Проект с самого начала планировался быть OpenSource, просто я не хотел на начальной стадии это делать. Проект сейчас заморожен по той причине, что я зыбыл новые исходники 0.4 версии дома

Hurrit 29.09.2011 18:47

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 203724)
Хах. Ну смотрите на наш было код =)

было код и не стало код.

alexprey 29.09.2011 22:59

Ответ: gainOS
 
Опечатался. С кем не бывает

Hurrit 01.10.2011 01:30

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 203848)
Опечатался. С кем не бывает

да я так, петросянил, без обид.

_Nox_ 01.10.2011 21:26

Ответ: gainOS
 
Цитата:

Сообщение от PacMan (Сообщение 203784)
Ты мне тут не выпендривайся, ведь и так сказали что проект заморожен.
Опыт получен, и это главное. И откуда ты знаешь что проект умер?
Вдруг сейчас Igor или кто-либо другой после
получения исходников начнет ваять "ОС" с новыми силами?

Да не обижайся ты.

PacMan 02.10.2011 19:39

Ответ: gainOS
 
Цитата:

Сообщение от _Nox_ (Сообщение 204106)
Да не обижайся ты.

Было бы на что обижаться...)
И вообще... Мама мне в детстве говорила чтобы я на дурачков не обижался.

_Nox_ 07.11.2011 18:18

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 203586)
Проект заморожен по самой нелепой причине.
Я забыл флешку со всеми исходниками у себя дома. Поеду только около 3 ноября

Съездил?

alexprey 07.11.2011 20:32

Ответ: gainOS
 
Да съездил. Флешку забрал, исходники при мне. На выходных может быть что нибудь даже и напишу

JACUK 17.11.2011 04:48

Ответ: gainOS
 
Цитата:

Да съездил. Флешку забрал, исходники при мне. На выходных может быть что нибудь даже и напишу
Уже несколько месяцев ждем...
P.Sнимаю безнадежнесть моего сообщения, но всетаки интресно посмотреть на исходники.

alexprey 17.11.2011 19:12

Ответ: gainOS
 
Они выше, если что. Сейчас ведется дебаг новых плюшек gASM'а

alexprey 02.12.2011 21:48

Ответ: gainOS
 
Смотрим 2 пост
http://forum.boolean.name/showpost.p...10&postcount=2

barsunduk 03.12.2011 16:41

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 194410)
Как запускать приложения под GUI
  1. Открываем GUI (Из терминала: пишем gui start или же boot)
  2. Переключаемся на окно с полем ввода и кнопкой RUN
  3. Открываем полно экранный ввод (зажимаем курсор на поле ввода)
  4. Вводим полный путь приложения (например: /mmc/explorer.app)

следовал инструкции. ни один пример не запускается. пользовался эмулятором KEmulator097. сохранил в "c:\KEmulator097\file\root" (и для проверки в "c:\KEmulator097\file") файл explorer.app, скопировал в него текст из примера во втором посте. далее перепробовал все варианты из инструкции.
"/root/explorer.app", "/explorer.app", "root/explorer.app", "\root\explorer.app"...
ничего не происходит. где ошибка?

настоящая операциока получается - хер поставишь, хер запустишь, хер победишь ..)

alexprey 03.12.2011 18:11

Ответ: gainOS
 
Хммм. А в логе что-нибудь пишет? И еще в терминале работает команда ls?

barsunduk 03.12.2011 19:11

Ответ: gainOS
 
Цитата:

Сообщение от alexprey (Сообщение 212160)
Хммм. А в логе что-нибудь пишет? И еще в терминале работает команда ls?

>>Kernel -> "/root/explorer.app" started
>>Interpreter -> Exception: Program type not found in program code
>>Kernel -> "/root/explorer.app" closed

alexprey 03.12.2011 19:39

Ответ: gainOS
 
Странно. Ладно ща залью так программы

barsunduk 03.12.2011 19:51

Ответ: gainOS
 
заменил в примерах MODE WINDOW на MODE #WINDOW# и эксплорер пошел. а в гаме не все пробелы в начале строк убрал. теперь и она пошла, без пробелов.

ls работает

rus21d 19.12.2011 21:20

Ответ: gainOS
 
в чем смысл этого проекта?


Часовой пояс GMT +4, время: 10:03.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot