Page 1 of 3

Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 11:43 am
by some_man
Всем привет! Блуждая в инете набрёл на ЭТО: http://dz.livejournal.com/675037.html#comments
Попытка сделать в Фантоме поддержку исполняемого формата и API Колибри. 8)
Ваше мнение? :)
(на картинке приложение Arcanoid (Kolibri OS), которое работает в ОС Фантом :roll: )

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 12:06 pm
by XVilka
Это он после Chaos Constructions сделал :D

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 12:09 pm
by SoUrcerer
Уу, до полноценного запуска приложений Колибри еще далеко. Хотя есть KlbrInWin - в Windows более-менее работало когда-то. Видели мы и Miraculix. Арканоид использует далеко не все возможности API.
Предрекаю сложности с библиотеками и низкоуровневой работой, а так же infinity. А вообще прикольно, я не против - пусть себе Фантом запускает программы Колибри.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 12:34 pm
by XVilka
Просит помощи:
есть вопросы по реализации. Если это читает кто-то из команды Колибри - отзовитесь, пожалуйста. Из документации не вполне ясна семантика некоторых полей заголовка исполняемого файла, и нигде не могу найти описания алгоритма (а лучше - кода на си) распаковки.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 12:52 pm
by SoUrcerer
Пытался ответить, но у меня нет учетки на LJ, через другие сервисы комментировать lj не дает. Так что не судьба.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 1:51 pm
by art_zh
Кинул ответ.
Все-таки человек все воскресенье посвятил Колибри - надо оценить :)
Другой вопрос - а нужен ли Фантом нам? Какие бонусы от симбиоза двух (прямо скажем) малоизвестных OCей?
Насчет того, что он собирается портировать Фантом на АРМ вместе с эмулятором API Колибри -- улыбнуло.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 3:31 pm
by dzavalishin
Привет.

Вопросы и предложения:

1. загрузка приложения: можно ли проигнорировать адрес стека и сделать стек просто выше, чем конец данных? Каков объём буферов имени программы и командой строки? Что туда пишется? Значит ли что-то номер версии формата в заголовке программы? Где-то проскакивала информация о том, что один из указателей заголовка смотрит на иконку приложения. Верно ли? Какой? Что с форматом иконки?

2. видео через gs: - кто-то это реально использует, или фича неактуальна? (и почему 24-битный, а не aligned 32-bit цвет? - риторический вопрос)

3. думаю, полезно задокументировать фичу с отрицательными позициями окна (== отсчёт от правого края)

4. у функции считывания информации о треде есть в возвращаемой структуре третье поле, которое номер слота процесса, которому принадлежит окно номер ECX. Скажите мне, что это реально не используется? :)

5. Какую версию ядра мне лучше отдавать? Сейчас 0.7.7.0, так как я ориентируюсь на него.

6. Какой сетевой (tcp/ip) API реально надо эмулировать - тот, что в документации, или новый?

7. загружаемые драйвера я пока не трогал, не нашёл документации. где почитать?

8. Почему 12.1 (начать перерисовку) убивает баттоны? За что??! :) Где вообще почитать про логику работы графики - обязано ли приложение звать 12.1 и 12.2? Если нет - зачем они?

9. В чём считается загрузка CPU - каково максимальное значение (числа тиков)?

10. не хочет ли сообщество стандартизовать коды возврата и внедрить их во все вызовы? Ноль в EAX вернуть несложно...

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 4:04 pm
by Serge
1)256 байт для командной строки и 1024 для полного пути. I_ICON это путь к программе.
Номер формата имеет значение. Структуры заголовков есть в taskman.inc
2)24 - устаревшая документация, формат соответствует формату первичной поверхности.. Фича тоже устарела. Есть прямой доступ к видеопямяти по адресу LFB_BASE.

Икона

Posted: Mon Sep 26, 2011 4:13 pm
by dzavalishin
Спасибо.
А формат icon?

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 4:21 pm
by Serge
Иконки на рабочем столе ? Они сами себя рисуют.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 4:41 pm
by Leency
>>8. Почему 12.1 (начать перерисовку) убивает баттоны? За что??! Где вообще почитать про логику работы графики - обязано ли приложение звать 12.1 и 12.2? Если нет - зачем они?

Если нет 12.2 окно не будет отображаться. Обязательно 12.1 потом окно потом 12.2, потом может идти отрисовка всего чего угодно, или же 12.2 в конце. Пока что 12.1 и 12.2 условности и толку в них нет никакого - это на будущее когда оконная подсистема станет круче.

Re: Икона

Posted: Mon Sep 26, 2011 4:50 pm
by SoUrcerer
dzavalishin wrote:Спасибо.
А формат icon?
I_ICON - фактически рабочая папка программы, как я понимаю.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 5:34 pm
by Serge
I_ICON - argv[0], рабочий каталог задаётся другой функцией.

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 5:39 pm
by dzavalishin
Правильно ли я понимаю, что вызов 12.2 не обязателен? Я в настоящее время по нему делаю апдейт окна в видеопамять, но по факту часть программ его не зовут.

Опять же - действительно ли 12.1 убивает кнопки (8), и за что она это делает? В чём идея?

Re: Koilbri box в Фантоме

Posted: Mon Sep 26, 2011 6:11 pm
by SoUrcerer
AFAIK 12.2 как раз-таки обязателен.
12.1 действительно убивает все кнопки.
Фантазии на тему "зачем":
Spoiler:В системе нет процедуры "изменить параметры кнопки". Создание множества кнопок с одним id приведет к фактическому созданию множества кнопок с одним id. Возможно, задумка автора (а я уверен, это еще со времент Menuet) была в том, чтобы быстро удалить все кнопки.
Другой вариант. Есть только окно (по сути канва, на которой можно рисовать и писать текст) и кнопки. Функция 12.1 очищает холст перед перерисовкой - вместе со всеми элементами. Соответственно все кнопки требуется перерисовать. Хрен его знает, в общем, зачем все сделано именно так.
Третий вариант. Изображение в окнах не кэшируется. Соответственно если окно ушло на задний план, а затем вышло на передний - его целиком нужно перерисовать, вместе с кнопками.