Я перенёс в систему редактор линий и редактор текста, их вид не менял, но код был сильно доработан. Теперь можно редактировать текст и линии в QEMU без тормозов, т.к. вариант полной перересовки при любом изменении я доработал отрисовкой элементов на экран по кратчайшему пути, т.е. воспользовался алгоритмом Лесенка. У каждого графического элемента есть хозяин на котором он рисуется, и их может быть несколько, но при изменении его можно нарисовать сразу на экране пропуская всех и изменяя координаты вывода, а его функции отрисовке не важно где рисоваться, т.к. все объекты имеют для этого одни поля(адрес картинки и размер). Этот метод опишу потом в доке. Теперь думаю доработать жизнь задачи в своей задаче(в своём виртуальном пространстве) с получением от неё памяти и доступ к ресурсам и процессорам. Кстати формат запускаемого файла возьму COFFовский, в нём есть бинарник и таблица адресов. Код приложения будет копироваться в общее пространство и объекты будут создаваться том же, как и модули. Во первых модули всё равно надо запускать так, а для прог не нужно будет второй загрузчик городить, тем более, что код это величина постоянная и его грузить не сложно, а объекты будут тоже в этом месте, но для них будет дополнительно выделена память. А вот все данные и файлы будут в собственных областях как и у прог, так и у системы. Об этом тоже поподробнее в доке. У кого нить есть подробный формат COFFа. Устройства кстати работают с реальными адресами и данные от них нужно грузить в страницы и передавать по пространствам задач, тоже не простая задачка. После доработки с памятью думаю портировать FASM и в своём редакторе текста работать в своей системе. Редактор кстати доработан и сейчас есть указатель мигающий и стрелками можно его в право и в лево, или мышкой нажать на букву и он туда встанет. Протестировать можно в новом бинарнике.
|