Новый эмулятор

Running Kolibri and its programs in other OSes
  • Будь добр, добавь работу с порами ВВ, я делал это для MeDebug с помощью GiveIO (для NT), для функции 43 я сделала просто заглушку возвращаюшую всегда успешный результат.
  • Вообще-то работу с портами ввода-вывода операционные системы запрещают не зря - а если два приложения одновременно полезут на один и тот же порт? В Kolibri этого нет, поскольку там порты требуется резервировать перед использованием. GiveIO предоставляет доступ к одним и тем же портам ввода-вывода для всех приложений. GiveIO требует прав админа (впрочем, с этим можно примириться). Разрешать доступ ко всем портам все-таки нехорошо (программы могут и глючить, а могут и выполнять злонамеренные действия, а работа некоторых портов вообще должна управляться системой, иначе появятся страшные глюки). А какие конкретно порты имеются в виду? Или это был абстрактный вопрос?
  • Конкретно интересуют 0x295 и 0x296 (они используются в моём GMon), а вообше эмулятор используют в основном для быстрого тестирования написаных программ, и если автор обращается к портам, то он сам отдаёт себе отчёт о возможных проблемах. На край можно не давать доступа к интерфейсу ATA (0x1f0-0x1f7, 0x170-0x177, 0x1e8-0x1ef, 0x168-0x16f, 0x3f6-0x3f7, 0x376-0x377, 0x3ee-0x3ef, 0x36e-0x36f), (наверное это самое критичное), или предупреждать пользователя.
  • Логично. Будет сделано.
  • Готово. В ini-файл добавлен параметр EnablePorts - порты, указанные в этом параметре, можно зарезервировать функцией 46, после чего (только после резервирования!) использовать. По умолчанию он пуст, и в абсолютном большинстве случаев его следует оставлять пустым. В приведенном выше случае следует написать "EnablePorts=295 296" или, что эквивалентно, "EnablePorts=295-296". В принципе можно написать "EnablePorts=0-ffff", но я так делать крайне не рекомендую. При непустом значении параметра под NT/2k/XP+ требуются права админа.
    Ушёл к умным, знающим и культурным людям.
  • Отлично, всё работает!
    Есть ещё идея : во время работы программы следить за ESP (точнее запоминать его минимальное значение), по завершению сообщать размер используемого стека, это сможет помочь уменьшить размер занимаемой памяти в некоторых программах.
  • Идея хорошая, но обращаться стоит скорее к mike.dld и halyavin'у: MeOSEmul и MeOsDebug полностью эмулируют программу, включая и эмуляцию процессора; KlbrInWin исполняет программу на реальном процессоре, а эмулирует только системные функции (потому он, собственно говоря, и быстрый и весит поменьше MeOSEmul и тем более Delphi'йского MeOsDebug). Так что максимум, что может KlbrInWin, - отслеживать esp при вызове системных функций, а это не совсем то, что требуется.
    В принципе можно ещё выдавать список страниц памяти (0x1000 = 4 Кб), к которым было обращение, без существенного увеличения накладных расходов. Но это довольно далеко от заданного вопроса.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Глянул сегодня на последнюю версию. В режиме возврата сканкодов не работают управляющие клавиши и цифровая клавиатура. Проверял на Tinypad4 и MFAR9.
  • fixed (я забивал на префикс 0xE0) Теперь tinypad и mfar9 работают (так же, как и в самой Kolibri)
    Ушёл к умным, знающим и культурным людям.
  • Теперь VirtualKolibri ругается Cannot open input file
  • В .ini файле заново внеси изменения (наверняка ты просто заменил его новым, когда архив распаковал)
  • Эмулятор переехал на
    http://diamondz.land.ru/KlbrInWin.7z
    http://diamondz.land.ru/KlbrInWin_src.rar
    Обновление, теперь поддерживаются новые подфункции 70-й функции (чтение файлов и папок с длинными именами). Попутно пофиксена пара мелких багов.
    VirtualKolibri не изменилась, можно использовать адреса, указанные выше, но на всякий случай также доступна с
    http://diamondz.land.ru/VirtualKolibri.exe
    http://diamondz.land.ru/VirtualKolibri.asm
    Ушёл к умным, знающим и культурным людям.
  • небольшой недочет: при нажатии слеша на дополнительной клавиатуре выводятся символы "p/" а не просто "/". В предыдущей версии все ок
  • При чтении с разделов >1 читается с первого, т.е. если читать с /hd0/2, то прочитается /hd0/1
  • Who is online

    Users browsing this forum: No registered users and 3 guests