Эмуляция KolibriOS API

Running Kolibri and its programs in other OSes
  • Leency, ты хотя бы тему почитал что ли ...
    Хотя ты не единственный не читатель :mrgreen:
    Вот в этом сообщении http://board.kolibrios.org/viewtopic.ph ... =30#p70153 я ответил на подобный твоему комментарий, сказав, что об этом уже было написано ещё раньше в этой же теме.
  • 0CodErr wrote:Добавил загрузку библиотек.
    Может сначала искать библиотеки (директорию LIB) для загрузки в текущей директории запускаемой программы, затем на директорию выше, далее в корневой папке где находится запускаемая программа,
    далее в корне диска и если это не получилось, то в путях в ключах реестра.

    P.S. Сейчас у меня, если никак не изменять ключи реестра программы путь выводится примерно такой

    Code: Select all

    /rd/1E:/kolibrios 
    При реддактировании

    Code: Select all

    ""
    и OpenDialogFile не запускается.
    А kFar ещё не стартует? Из игрушек ещё + удачно запустился Bomber
    из эмуляторов EZ-80 запускается :)
  • Kopa wrote:P.S. Сейчас у меня, если никак не изменять ключи реестра программы путь выводится примерно такой
    Их надо изменять.
    Kopa wrote:А kFar ещё не стартует?
    Он стартует, но там вывод изображения через SysFn65:DrawImageEx, она ещё не поддерживается. И ещё не все файловые функции поддерживаются.
    Kopa wrote:Из игрушек ещё удачно запустился Bomber :)
    Да ладно :) Раньше он не запускался, а в этот раз я ещё не проверял. Ну хорошо тогда.
  • 0CodErr wrote:
    Kopa wrote:Из игрушек ещё удачно запустился Bomber :)
    Да ладно :) Раньше он не запускался, а в этот раз я ещё не проверял. Ну хорошо тогда.
    Ещё DosBox и PokeMini запустились. :)

    P.S. В классическом Питоне есть "задержка" реакции при смене направления движения.
    Bomber, похоже, запускается, если не указывать пути в ключах реестра,
    А Snake (0.7) если пути прописаны.
  • 0CodErr,
    в Win8.1-64 эта штука с реестром не работает. Программа не меняет реестр, даже если запустить от имени администратора. Если же изменить реестр вручную и запустить от имени администратора, то

    FilePath = ""

    Вообще, насколько важно записывать это в реестр? Может лучше простой ini-файл?
  • akron1 wrote:штука с реестром не работает
    Там важен регистр, потому что сравнение строк сейчас происходит так:

    Code: Select all

    If MemCmp(ValueName, KOSPath^, ValueLen - 1) = 0 Then 

    Code: Select all

    If MemCmp(Data, WinPath^, DataLen - 1) = 0 Then 
    Можно дополнительно посмтреть, что возвращает RegOpenKey, но вообще должно работать.
  • 0CodErr, я извиняюсь, работает.
    Ключи реестра создаются в разделе Wow6432Node, поэтому я их не сразу заметил.
    А не работало, потому что эмулятор у меня находится в папке D:\KEm и этот путь я прописал в реестре, а для запуска я написал командный файл с такой строкой:

    KEm.exe -base 65536 D:\Kem\HW.kex 123 456

    Естественно, функция MemCmp показала неравенство строк "D:\KEm" и "D:\Kem".
    Путь приложения и параметры передаются правильно, файловые функции пока не тестировал.
    Вот только запускать программу надо всегда от имени администратора, что несколько напрягает...
  • Добавил поддержку файловых путей непосредственно в структуре и относительных файловых путей.
    Можно, например, в LodeRunner теперь поиграть.
    Или в LaserTank.
    calcplus, кстати, тоже ещё работает.
    Пример со скроллбаром на FreeBasic http://board.kolibrios.org/viewtopic.ph ... 202#p47749
    Пример со скроллбаром на Modula-2 http://board.kolibrios.org/viewtopic.ph ... 371#p47919
    tinygl примеры, gears, например.
    Возможно, ещё какие-то игры стали запускаться.

    Интересную вещь обнаружил.
    Когда выбираешь мышкой цвета в Colorref, то они меняются сразу в нескольких копиях запущенной программы.
    Если запустить 3 копии хоть даже во всех трёх эмуляторах(MeOSEmul, KlbrInWin, KEm).
    А в настоящей KolibriOS не так.

    Интересно, кто-нибудь пробовал из-под Wine запускать?
    Хотя, возможно, будет проблема как с ReactOS.
    Там, вероятно, VirtualProtect не отрабатывает.
    Из KEm.asm:

    Code: Select all

      Invoke VirtualProtect, 0x0010000, MEM_SIZE, PAGE_EXECUTE_READWRITE, Offset X
    Windows считает память, начиная с Header и включая data одним регионом:
    Spoiler:
    1.PNG
    1.PNG (14.13 KiB)
    Viewed 10841 times
    Похоже, что ReactOS так не считает.
    KEm.7z (54.01 KiB)
    Downloaded 347 times
  • 0CodErr wrote:Интересную вещь обнаружил.
    Когда выбираешь мышкой цвета в Colorref, то они меняются сразу в нескольких копиях запущенной программы.
    В моём эмуляторе под линукс всё нормально, меняется только в одном окне. Хотя поначалу тоже были проблемы (не реагировала на клик).
    В нескольких программах (в том числе и в этой) есть проверка, является ли окно активным. Это делается анализом zpos.
    0CodErr wrote:Интересно, кто-нибудь пробовал из-под Wine запускать?
    Я пробовал, всё тот же "Read File error".
  • 0CodErr wrote:Возможно, ещё какие-то игры стали запускаться.
    Doom, Quake запустились :)

    P.S. Периодическая таблица ещё не до конца функциональна.
  • Путь через реестр не очень удобно, лучше через ini.
    Из хаоса в космос
  • tsdima wrote:
    0CodErr wrote:Интересно, кто-нибудь пробовал из-под Wine запускать?
    Я пробовал, всё тот же "Read File error".
    Значит в linux нельзя выделить память в нуле.
    Kopa wrote:Под ReactOS эти тесты не заработaли. Выводит ошибку доступа к памяти Write only.
    0CodErr wrote:Там, вероятно, VirtualProtect не отрабатывает.
    Из KEm.asm:

    Code: Select all

      Invoke VirtualProtect, 0x0010000, MEM_SIZE, PAGE_EXECUTE_READWRITE, Offset X
    Windows считает память, начиная с Header и включая data одним регионом ... Похоже, что ReactOS так не считает.
    Первая версия в ReactOS работала.
    Немного переделал код, может теперь снова заработает.

    Добавил загрузку скина и ещё некоторые функции.
    KEm.7z (67.57 KiB)
    Downloaded 363 times
  • Отлично! А как прописать путь к /rd/1/ ?
    Если не использовать .ini файл, то хоть поставлять .reg файл, чтобы юзер мог изменить его и запустить.
    Из хаоса в космос
  • 0CodErr wrote:Первая версия в ReactOS работала.
    Немного переделал код, может теперь снова заработает.
    Да, проверил заработало. :)

    В ReactOS при запуске Колибри программ окно приложения мерцает до момента пока мышью не активизируешь фокус на нём. (также и при разворачивании приложения из трея)

    P.S. Мерцание приложения в XP наблюдается, например, Web-demo (из-за скина перекрывающего изображение?)
    Приложение Table, при изменении его размера не перерисовывается.
    Если окно приложения подвигать за пределы рабочего стола, то окно искажается.
    Еolite не запускает приложения?
  • Who is online

    Users browsing this forum: No registered users and 2 guests