Перед новогодним праздником 2023 года, представляю вашему вниманию новый проект: Эмулятор ядра ОС Windows.
Ниже немного лирики, а потом по делу.
По моему личному мнению, сочетание ОС Колибри и эмулятора, написанных на языке ассемблере, обеспечат безусловное конкурентное преимущество над другими проектами типа Wine и прочие.
Если я не ошибаюсь, все участники сообщества Колибри ОС желают, чтобы наша операционная система стала популярным среди пользователей настольных ПК и ноутбуков.
Первая проблема заключается в том, что почти все пользователи поголовно сидят под ОС Windows. И я в том числе

Вторая проблема. Обычный пользователь неохотно меняет свои привычки. Я сам такой.

Эмулятор позволит решить эти проблемы. К финальной доработке эмулятора мы сможем предложить пользователю такой вариант: «Хочешь, чтобы твоя стрелялка, перделка, свистелка работала быстрее — переключись!!»

Если пользователь переключается на ОС Колибри и запускает этот эмулятор ему будут предлагаться два варианта — Запуск его приложения или запуск рабочего стола Винды.
Пользователь запускает то, что ему надо и как бы ничего не изменится для него, только его Винда и его приложение стали работать явно быстрее.
В итоге, в перспективе, весь мир IT , основанный на платформе ОС Windows, окажется в лапке (под лапкой) нашей птички!

А теперь перейдем к реалиям.

1. Обеспечить запуск системных модулей Винды (ntdll, kernel32, gdi32, user32) в среде ОС Колибри. Эти системные модули сами автоматически сформируют среду окружения обеспечивающий запуск приложения.
2. Все вызовы системных функций API, которые обращаются в ядро Винды, замкнуть на свой эмулятор и написать обработчики этих функций.
3. Запустить стандартное приложение из дистрибутива Винды
4. Окончательно отладить межмодульное взаимодействие по стандартам Винды
5. Полностью отладить функциональность приложения Винды
6. Сделать адаптацию эмулятора с этим приложением под все версии Винды, начиная от Window XP и выше.
7. Запустить Explorer (Рабочий стол) Винды и отладить его.
8. Разработать и отладить механизм работы с драйверами, входящих в состав приложений.
9. Сделать адаптацию под 64 бит версию (Предполагается работа эмулятора в совместимом режиме х86 32-64.
В качестве исходного ОС был выбран Windows XP SP-2 (Меньше мегатонн кода для изучения).
В качестве стандартного приложения Винды был выбран Notepad,так как он имеется во всех дистрибутивах Винды и есть его аналог в Колибри — Tinypad, что позволяет мне быстрее адаптировать Notepad к особенностям Колибри.
Проект я начал в сентябре 2021 года. Решил специально ничего не сообщать здесь, пока не достигну результата, на которое можно посмотреть. На данный момент идет работа по п 4-5 и частично п.2. Уже запускается Notepad (см. ниже скрин).
У кого есть установленный Windows XP SP-2 на жестком диске и если Колибри читает этот диск, то вы можете проверить запуск эмулятора. Должно появиться окно Notepad с мигающим кареткой (то есть типа приложение готово к работе).
Примечание по Notepad :
1. Курсор в Notepad временно установлен в виде изображении ручки из ресурсов Винды, так как стандартный курсор Винды, в виде двутавровой балки, Функция 37,5 от Колибри не хочет отображать.
2. Шрифт временно выбран из стандарта Колибри, так как векторный шрифт от Винды пока не поддался мне: Прямые линии шрифта норм отображает, но кривые неправильно — возможно неправильно применил формулу Безье для кривых..
«»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
Внимание:
1.Так как конфигфайлы у Windows XP могут достигать размера более 50МБт, то эмулятор НЕ загрузится из-за ограничения размера загрузки файла в 16МБт, в системном файле ОС Колибри - dll.inc. (строка 472)
Предлагаю модератору изменить ограничение максимального размера загрузки файла в dll.inc до 1ГБт на перспективу.
Например прописать в файле dll.inc так: cmp eax,1024*1024*1024 (строка 472)
2. В целях безопасности, эмулятор пока ничего не сохраняет на диск с Виндой и не меняет данные в конфигфайлах Винды, даже если это требуют системные модули Винды.
«»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
Примечание:
Если выполнены выше условия и после запуска вами эмулятора в течение 3-5 сек. не появилось окно Notepad, то сообщите мне ниже в теме форума с приложением скрина сообщения Board
(Запустите Board. Нажмите кнопку – User. )
Выкладываю сам файл и исходник к нему.
Если у кого есть конструктивные предложения или замечания по исходнику — коды, алгоритмы и структуры хранения данных — сообщайте.
На данный момент у меня действует принцип — пусть кривой, косой код и тупые алгоритмы, но главное запустить приложение. И уже потом, в том числе на основе ваших предложений, оптимизировать алгоритмы и код.