Всем привет! Блуждая в инете набрёл на ЭТО: http://dz.livejournal.com/675037.html#comments
Попытка сделать в Фантоме поддержку исполняемого формата и API Колибри.
Ваше мнение?
(на картинке приложение Arcanoid (Kolibri OS), которое работает в ОС Фантом )
Koilbri box в Фантоме
-
- Attachments
-
-
0_52c84_812df085_L.png (139.84 KiB)Viewed 13757 times
-
Last edited by some_man on Mon Sep 26, 2011 1:01 pm, edited 1 time in total.
Это он после Chaos Constructions сделал
Уу, до полноценного запуска приложений Колибри еще далеко. Хотя есть KlbrInWin - в Windows более-менее работало когда-то. Видели мы и Miraculix. Арканоид использует далеко не все возможности API.
Предрекаю сложности с библиотеками и низкоуровневой работой, а так же infinity. А вообще прикольно, я не против - пусть себе Фантом запускает программы Колибри.
Предрекаю сложности с библиотеками и низкоуровневой работой, а так же infinity. А вообще прикольно, я не против - пусть себе Фантом запускает программы Колибри.
Просит помощи:
есть вопросы по реализации. Если это читает кто-то из команды Колибри - отзовитесь, пожалуйста. Из документации не вполне ясна семантика некоторых полей заголовка исполняемого файла, и нигде не могу найти описания алгоритма (а лучше - кода на си) распаковки.
Пытался ответить, но у меня нет учетки на LJ, через другие сервисы комментировать lj не дает. Так что не судьба.
Кинул ответ.
Все-таки человек все воскресенье посвятил Колибри - надо оценить
Другой вопрос - а нужен ли Фантом нам? Какие бонусы от симбиоза двух (прямо скажем) малоизвестных OCей?
Насчет того, что он собирается портировать Фантом на АРМ вместе с эмулятором API Колибри -- улыбнуло.
Все-таки человек все воскресенье посвятил Колибри - надо оценить
Другой вопрос - а нужен ли Фантом нам? Какие бонусы от симбиоза двух (прямо скажем) малоизвестных OCей?
Насчет того, что он собирается портировать Фантом на АРМ вместе с эмулятором API Колибри -- улыбнуло.
Привет.
Вопросы и предложения:
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 вернуть несложно...
Вопросы и предложения:
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 вернуть несложно...
1)256 байт для командной строки и 1024 для полного пути. I_ICON это путь к программе.
Номер формата имеет значение. Структуры заголовков есть в taskman.inc
2)24 - устаревшая документация, формат соответствует формату первичной поверхности.. Фича тоже устарела. Есть прямой доступ к видеопямяти по адресу LFB_BASE.
Номер формата имеет значение. Структуры заголовков есть в taskman.inc
2)24 - устаревшая документация, формат соответствует формату первичной поверхности.. Фича тоже устарела. Есть прямой доступ к видеопямяти по адресу LFB_BASE.
Спасибо.
А формат icon?
А формат icon?
Иконки на рабочем столе ? Они сами себя рисуют.
>>8. Почему 12.1 (начать перерисовку) убивает баттоны? За что??! Где вообще почитать про логику работы графики - обязано ли приложение звать 12.1 и 12.2? Если нет - зачем они?
Если нет 12.2 окно не будет отображаться. Обязательно 12.1 потом окно потом 12.2, потом может идти отрисовка всего чего угодно, или же 12.2 в конце. Пока что 12.1 и 12.2 условности и толку в них нет никакого - это на будущее когда оконная подсистема станет круче.
Если нет 12.2 окно не будет отображаться. Обязательно 12.1 потом окно потом 12.2, потом может идти отрисовка всего чего угодно, или же 12.2 в конце. Пока что 12.1 и 12.2 условности и толку в них нет никакого - это на будущее когда оконная подсистема станет круче.
Из хаоса в космос
I_ICON - фактически рабочая папка программы, как я понимаю.dzavalishin wrote:Спасибо.
А формат icon?
I_ICON - argv[0], рабочий каталог задаётся другой функцией.
Правильно ли я понимаю, что вызов 12.2 не обязателен? Я в настоящее время по нему делаю апдейт окна в видеопамять, но по факту часть программ его не зовут.
Опять же - действительно ли 12.1 убивает кнопки (8), и за что она это делает? В чём идея?
Опять же - действительно ли 12.1 убивает кнопки (8), и за что она это делает? В чём идея?
AFAIK 12.2 как раз-таки обязателен.
12.1 действительно убивает все кнопки.
Фантазии на тему "зачем":
Другой вариант. Есть только окно (по сути канва, на которой можно рисовать и писать текст) и кнопки. Функция 12.1 очищает холст перед перерисовкой - вместе со всеми элементами. Соответственно все кнопки требуется перерисовать. Хрен его знает, в общем, зачем все сделано именно так.
Третий вариант. Изображение в окнах не кэшируется. Соответственно если окно ушло на задний план, а затем вышло на передний - его целиком нужно перерисовать, вместе с кнопками.
12.1 действительно убивает все кнопки.
Фантазии на тему "зачем":
Spoiler:
В системе нет процедуры "изменить параметры кнопки". Создание множества кнопок с одним id приведет к фактическому созданию множества кнопок с одним id. Возможно, задумка автора (а я уверен, это еще со времент Menuet) была в том, чтобы быстро удалить все кнопки.Другой вариант. Есть только окно (по сути канва, на которой можно рисовать и писать текст) и кнопки. Функция 12.1 очищает холст перед перерисовкой - вместе со всеми элементами. Соответственно все кнопки требуется перерисовать. Хрен его знает, в общем, зачем все сделано именно так.
Третий вариант. Изображение в окнах не кэшируется. Соответственно если окно ушло на задний план, а затем вышло на передний - его целиком нужно перерисовать, вместе с кнопками.
Who is online
Users browsing this forum: No registered users and 3 guests