Koilbri box в Фантоме

Events from the world of KolibriOS and its developers
  • Это он после Chaos Constructions сделал :D
  • Уу, до полноценного запуска приложений Колибри еще далеко. Хотя есть KlbrInWin - в Windows более-менее работало когда-то. Видели мы и Miraculix. Арканоид использует далеко не все возможности API.
    Предрекаю сложности с библиотеками и низкоуровневой работой, а так же infinity. А вообще прикольно, я не против - пусть себе Фантом запускает программы Колибри.
  • Просит помощи:
    есть вопросы по реализации. Если это читает кто-то из команды Колибри - отзовитесь, пожалуйста. Из документации не вполне ясна семантика некоторых полей заголовка исполняемого файла, и нигде не могу найти описания алгоритма (а лучше - кода на си) распаковки.
  • Пытался ответить, но у меня нет учетки на LJ, через другие сервисы комментировать lj не дает. Так что не судьба.
  • Кинул ответ.
    Все-таки человек все воскресенье посвятил Колибри - надо оценить :)
    Другой вопрос - а нужен ли Фантом нам? Какие бонусы от симбиоза двух (прямо скажем) малоизвестных 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)256 байт для командной строки и 1024 для полного пути. I_ICON это путь к программе.
    Номер формата имеет значение. Структуры заголовков есть в taskman.inc
    2)24 - устаревшая документация, формат соответствует формату первичной поверхности.. Фича тоже устарела. Есть прямой доступ к видеопямяти по адресу LFB_BASE.
  • Спасибо.
    А формат icon?
  • Иконки на рабочем столе ? Они сами себя рисуют.
  • >>8. Почему 12.1 (начать перерисовку) убивает баттоны? За что??! Где вообще почитать про логику работы графики - обязано ли приложение звать 12.1 и 12.2? Если нет - зачем они?

    Если нет 12.2 окно не будет отображаться. Обязательно 12.1 потом окно потом 12.2, потом может идти отрисовка всего чего угодно, или же 12.2 в конце. Пока что 12.1 и 12.2 условности и толку в них нет никакого - это на будущее когда оконная подсистема станет круче.
    Из хаоса в космос
  • dzavalishin wrote:Спасибо.
    А формат icon?
    I_ICON - фактически рабочая папка программы, как я понимаю.
  • I_ICON - argv[0], рабочий каталог задаётся другой функцией.
  • Правильно ли я понимаю, что вызов 12.2 не обязателен? Я в настоящее время по нему делаю апдейт окна в видеопамять, но по факту часть программ его не зовут.

    Опять же - действительно ли 12.1 убивает кнопки (8), и за что она это делает? В чём идея?
  • AFAIK 12.2 как раз-таки обязателен.
    12.1 действительно убивает все кнопки.
    Фантазии на тему "зачем":
    Spoiler:В системе нет процедуры "изменить параметры кнопки". Создание множества кнопок с одним id приведет к фактическому созданию множества кнопок с одним id. Возможно, задумка автора (а я уверен, это еще со времент Menuet) была в том, чтобы быстро удалить все кнопки.
    Другой вариант. Есть только окно (по сути канва, на которой можно рисовать и писать текст) и кнопки. Функция 12.1 очищает холст перед перерисовкой - вместе со всеми элементами. Соответственно все кнопки требуется перерисовать. Хрен его знает, в общем, зачем все сделано именно так.
    Третий вариант. Изображение в окнах не кэшируется. Соответственно если окно ушло на задний план, а затем вышло на передний - его целиком нужно перерисовать, вместе с кнопками.
  • Who is online

    Users browsing this forum: No registered users and 6 guests