Page 4 of 21

Posted: Mon Mar 20, 2006 12:16 pm
by diamond
Очередное обновление эмулятора. Поддержка чтения и запуска программ с жесткого диска (папка/папки, которая/ые будет восприниматься как жесткий диск, настраиваются в ini-файле). Поддержка системных функций 32 и 33 (удаление файла с рамдиска, запись файла на рамдиск). Теперь работает mfar.

Posted: Mon Mar 20, 2006 4:32 pm
by Ghost
Будь добр, добавь работу с порами ВВ, я делал это для MeDebug с помощью GiveIO (для NT), для функции 43 я сделала просто заглушку возвращаюшую всегда успешный результат.

Posted: Mon Mar 20, 2006 6:47 pm
by diamond
Вообще-то работу с портами ввода-вывода операционные системы запрещают не зря - а если два приложения одновременно полезут на один и тот же порт? В Kolibri этого нет, поскольку там порты требуется резервировать перед использованием. GiveIO предоставляет доступ к одним и тем же портам ввода-вывода для всех приложений. GiveIO требует прав админа (впрочем, с этим можно примириться). Разрешать доступ ко всем портам все-таки нехорошо (программы могут и глючить, а могут и выполнять злонамеренные действия, а работа некоторых портов вообще должна управляться системой, иначе появятся страшные глюки). А какие конкретно порты имеются в виду? Или это был абстрактный вопрос?

Posted: Tue Mar 21, 2006 10:08 am
by Ghost
Конкретно интересуют 0x295 и 0x296 (они используются в моём GMon), а вообше эмулятор используют в основном для быстрого тестирования написаных программ, и если автор обращается к портам, то он сам отдаёт себе отчёт о возможных проблемах. На край можно не давать доступа к интерфейсу ATA (0x1f0-0x1f7, 0x170-0x177, 0x1e8-0x1ef, 0x168-0x16f, 0x3f6-0x3f7, 0x376-0x377, 0x3ee-0x3ef, 0x36e-0x36f), (наверное это самое критичное), или предупреждать пользователя.

Posted: Tue Mar 21, 2006 2:33 pm
by diamond
Логично. Будет сделано.

Posted: Fri Mar 24, 2006 7:45 pm
by diamond
Готово. В ini-файл добавлен параметр EnablePorts - порты, указанные в этом параметре, можно зарезервировать функцией 46, после чего (только после резервирования!) использовать. По умолчанию он пуст, и в абсолютном большинстве случаев его следует оставлять пустым. В приведенном выше случае следует написать "EnablePorts=295 296" или, что эквивалентно, "EnablePorts=295-296". В принципе можно написать "EnablePorts=0-ffff", но я так делать крайне не рекомендую. При непустом значении параметра под NT/2k/XP+ требуются права админа.

Posted: Mon Mar 27, 2006 8:14 am
by Ghost
Отлично, всё работает!
Есть ещё идея : во время работы программы следить за ESP (точнее запоминать его минимальное значение), по завершению сообщать размер используемого стека, это сможет помочь уменьшить размер занимаемой памяти в некоторых программах.

Posted: Tue Mar 28, 2006 5:37 pm
by diamond
Идея хорошая, но обращаться стоит скорее к mike.dld и halyavin'у: MeOSEmul и MeOsDebug полностью эмулируют программу, включая и эмуляцию процессора; KlbrInWin исполняет программу на реальном процессоре, а эмулирует только системные функции (потому он, собственно говоря, и быстрый и весит поменьше MeOSEmul и тем более Delphi'йского MeOsDebug). Так что максимум, что может KlbrInWin, - отслеживать esp при вызове системных функций, а это не совсем то, что требуется.
В принципе можно ещё выдавать список страниц памяти (0x1000 = 4 Кб), к которым было обращение, без существенного увеличения накладных расходов. Но это довольно далеко от заданного вопроса.

Posted: Wed Mar 29, 2006 1:42 am
by mike.dld
diamond
Глянул сегодня на последнюю версию. В режиме возврата сканкодов не работают управляющие клавиши и цифровая клавиатура. Проверял на Tinypad4 и MFAR9.

Posted: Mon Apr 03, 2006 5:11 pm
by diamond
fixed (я забивал на префикс 0xE0) Теперь tinypad и mfar9 работают (так же, как и в самой Kolibri)

Posted: Mon Apr 03, 2006 5:24 pm
by Veliant
Теперь VirtualKolibri ругается Cannot open input file

Posted: Mon Apr 03, 2006 6:11 pm
by Heavyiron
В .ini файле заново внеси изменения (наверняка ты просто заменил его новым, когда архив распаковал)

Posted: Fri May 05, 2006 4:02 pm
by diamond
Эмулятор переехал на
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

Posted: Fri May 05, 2006 5:08 pm
by Veliant
небольшой недочет: при нажатии слеша на дополнительной клавиатуре выводятся символы "p/" а не просто "/". В предыдущей версии все ок

Posted: Sat May 06, 2006 10:27 am
by mike.dld
При чтении с разделов >1 читается с первого, т.е. если читать с /hd0/2, то прочитается /hd0/1