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 Колибри.
Ваше мнение?
(на картинке приложение Arcanoid (Kolibri OS), которое работает в ОС Фантом
)
Re: Koilbri box в Фантоме
Posted: Mon Sep 26, 2011 12:06 pm
by XVilka
Это он после Chaos Constructions сделал
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 очищает холст перед перерисовкой - вместе со всеми элементами. Соответственно все кнопки требуется перерисовать. Хрен его знает, в общем, зачем все сделано именно так.
Третий вариант. Изображение в окнах не кэшируется. Соответственно если окно ушло на задний план, а затем вышло на передний - его целиком нужно перерисовать, вместе с кнопками.