Koilbri box в Фантоме

Events from the world of KolibriOS and its developers
  • Прошу прощения, что пишу несколько постов подряд, но длинную простыню текста, особенно из не очень связанных кусков, читать неудобно.
    Смотрю на http://code.google.com/p/phantomuserlan ... /kolibri.c
    Понимаю, что это, вероятно, не самые новые исходники, и всё же.

    Функция 0 более сложная. Она определяет окна разных типов, в том числе "прозрачные". Это может вызвать ряд артефактов.
    Функция 4 предусматривает шрифт не просто разного начертания: один с постоянной шириной символа, другой - нет. Заданные жестко размеры символов в некоторых программах приведует к неправильному их отображению шрифтом 8x16.
    Кроме 7й функции есть 65я и 73я, они гораздо функциональнее, производительнее и получают все большее распространение. Фактически новые программы, использующие графику, немыслимы без 65й как минимум.
    70я функция используется почти каждой программой.
    Каталогизированный список системных функций с описаниями есть тут: http://wiki.kolibrios.org/wiki/SysFn-1/ru
  • Про 65 и 73 я знаю, список функций, конечно, прочёл не раз. :) Просто я их делаю по факту потребности прикладной программой.
    70-я там есть почти полностью, но пока тоже не могу проверить - пока что пробовал только board, но он почему-то передаёт пустой блок данных файлового запроса, в итоге это выглядит как попытка записать в файл 'MENUET01' :) - пока не понимаю, почему...

    Какой должен быть размер шрифта?
  • В архиве с исходными кодами 0.7.7.0, если я не ошибаюсь, есть файлы шрифтов char.mt и char2.mt без сжатия - в текстовом формате.
    Оба шрифта имеют высоту 9 пикселов, моноширинный имеет ширину 6 пикселов. Маленькие, конечно.
  • dzavalishin
    Привет.

    Тут конечно отвечали уже, но как-то неполно. Попробую что-то дополнить.
    загрузка приложения: можно ли проигнорировать адрес стека и сделать стек просто выше, чем конец данных?
    Кроме адреса стека есть еще указатели на конец образа и конец адресного пространства приложения. Нужно учитывать что в другие адреса приложение может что-то писать и обычно адрес стека задан не просто так, а со злобным умыслом.
    Где-то проскакивала информация о том, что один из указателей заголовка смотрит на иконку приложения. Верно ли? Какой? Что с форматом иконки?
    Никакой иконки нет. Это задумывалось вероятно автором Menuet давным давно, но так и не было реализовано. Впоследствии я решил использовать пропадающее впустую поле как указатель на область с полным путем к запущенной программе.
    видео через gs: - кто-то это реально использует, или фича неактуальна? (и почему 24-битный, а не aligned 32-bit цвет? - риторический вопрос)
    После того как Kolibri перешла на FLAT модель памяти - это все неактуально. Подробности лучше у Serge узнавать, как он уже упоминал LFB_BASE.
    у функции считывания информации о треде есть в возвращаемой структуре третье поле, которое номер слота процесса, которому принадлежит окно номер ECX. Скажите мне, что это реально не используется?
    Функция 9 используется многими программами и менять ее структуру быть ССЗБ.
    Какую версию ядра мне лучше отдавать? Сейчас 0.7.7.0, так как я ориентируюсь на него.
    Пока не вышел следующий дистрибутив остается 0.7.7.0
    Почему 12.1 (начать перерисовку) убивает баттоны? За что??! Где вообще почитать про логику работы графики - обязано ли приложение звать 12.1 и 12.2? Если нет - зачем они?
    Геноцид был еще автором Menuet предусмотрен, зачем не спрашивали - просто наследовали.
    "-Что ты делаешь сын?
    -Наследую тебя отец!" WarCraft3
    Без 12.2 окно не будет изменять свое положение - проверено на опыте.
    Логику работы можно прочитать в основном в коде ядра - как уже говорилось документации у нас мало.
    не хочет ли сообщество стандартизовать коды возврата и внедрить их во все вызовы? Ноль в EAX вернуть несложно...
    Лично я не хочу - это куча лишней работы по переписыванию over 200 программ, либо код раздуется если использовать хитрые обертки.
  • А вообще есть вот такая информация на форуме Ядро - концепция работы
  • Однакож 4 целых поста в ЖЖ об ОС которая "не надо" и как результат пишется эрзац колибри-вайн. :lol:
  • Mario, Колибри "не надо" пока не попробуешь. Когда я ее на Линукс-фесте в индивидуальном порядке показывал, до нажатия enter в загрузчике высказывались предположения "Оно же на ассемблере, будет тормозить" и "Да у них даже картинки посмотреть нельзя".
  • Mario wrote: Тут конечно отвечали уже, но как-то неполно. Попробую что-то дополнить.
    загрузка приложения: можно ли проигнорировать адрес стека и сделать стек просто выше, чем конец данных?
    Кроме адреса стека есть еще указатели на конец образа и конец адресного пространства приложения. Нужно учитывать что в другие адреса приложение может что-то писать и обычно адрес стека задан не просто так, а со злобным умыслом.
    Я догадываюсь. Но вопрос был не в том, чтобы залудить стек куда попало, а в том, чтобы просто выделить для него ещё памяти, поверх той, что запрошена. Впрочем, это не будет работать, если приложение реально пользуется вызовом brk (64), так что вопрос снят.
    Mario wrote:
    у функции считывания информации о треде есть в возвращаемой структуре третье поле, которое номер слота процесса, которому принадлежит окно номер ECX. Скажите мне, что это реально не используется?
    Функция 9 используется многими программами и менять ее структуру быть ССЗБ.
    Вопрос был не про функцию, а про конкретное поле, которое я лично рекомендовал бы объявить как deprecated, и - если оно реально надо - ввёл бы отдельный сисколл. Напомню - функция в целом получает данные о треде, а именно ЭТО поле - об окне, что как-то диковато.
    Mario wrote:
    не хочет ли сообщество стандартизовать коды возврата и внедрить их во все вызовы? Ноль в EAX вернуть несложно...
    Лично я не хочу - это куча лишней работы по переписыванию over 200 программ, либо код раздуется если использовать хитрые обертки.
    Зачем? Я предлагаю стандартизовать в ядре метод возврата кода результата, а уж использовать его в каждой программе - дело опциональное. К сожалению, ни одного регистра, который был бы свободен во всех вызовах, я не нашёл, так что простого способа генерализовать API не вижу. Вижу такой вариант - если нить желает, она может специальным вызовом установить адрес переменной, в которую после каждого системного вызова будет помещаться код возврата. Коды возврата стандартизовать и возвращать в каждом сисколле, если переменная данным тредом установлена. Для ядра Колибри это пара команд на функцию.
  • Mario wrote:А вообще есть вот такая информация на форуме Ядро - концепция работы
    Я видел, спасибо. Я тут почти всё прочёл, что есть существенного. :)
  • Mario wrote:Однакож 4 целых поста в ЖЖ об ОС которая "не надо" и как результат пишется эрзац колибри-вайн. :lol:
    :) Я всегда знаю, зачем я что-то делаю.
  • Я тут почти всё прочёл, что есть существенного. :)
    o_O тут сотни две существенных тем, ИМХО. Может, они к текущим вопросам и не относятся, но они есть.
  • Дима мой старший камрад (который упоминается в подписи) как бы намекает, что форум Димой читается очень давно. :wink:
  • Не очень. Но - я быстро читаю, пользуюсь поиском и знаю, что искать. Кроме того, у меня на даче есть gprs, достаточный, чтобы читать форум. :)

    Ещё комментарий по API:

    Вызов IPC, конечно, довольно изящен, но вынуждает поллить на предмет освобождения места или отпирания флажка. Может быть, добавить вызовы

    ipc_send_blocking( void *data, size_t size, pid_t pid ) - не возвращается, пока не пошлёт и
    ipc_recv_blocking( void *data, size_t size, size_t *recv_size, tid_t *tid )?

    при этом они могут работать на той же самой структуре данных, если она определена (тогда будут совместимы со старыми вызовами), или на ядерной синхронизации - тогда не нужно выделенного буфера в приложении...

    в обоих случаях поллинг отменяется и в приложении не нужно думать ни о чём
  • К сожалению я в терминологии IPC плохо подкован - к стыду своему даже Таненбаума так и не дочитал. :?
    Может чего Serge тут ответит - он обычно занимается передиранием всякого разного из *nix.
  • Who is online

    Users browsing this forum: No registered users and 5 guests