Новый эмулятор
-
Спасибо, Женя!
Поддержка функций работы с кучей процесса (выделение/освобождение памяти) 68.11, 68.12, 68.13. Ссылки всё те же:
http://diamondz.land.ru/KlbrInWin.7z
http://diamondz.land.ru/KlbrInWin_src.7z
http://diamondz.land.ru/KlbrInWin.7z
http://diamondz.land.ru/KlbrInWin_src.7z
Ушёл к умным, знающим и культурным людям.
Поддержка функции загрузки DLL (в том числе упакованных) 68.19.
Поддержка функций работы с курсорами 37.4 и 37.5. Добавлена иконка (автор - goglus) для самого exe-шника и для создаваемых окон.
diamond
Эмулятор не поддерживает F18/11, меня терзают смутные сомнения, что из ядра она когда-нибудь исчезнет...
Или я не прав?
offtop:
В винде я использую расширение kex для запуска приложений через эмулятор, может и в Колибри пора ввести какое нибудь расширение?
Эмулятор не поддерживает F18/11, меня терзают смутные сомнения, что из ядра она когда-нибудь исчезнет...
Или я не прав?
offtop:
В винде я использую расширение kex для запуска приложений через эмулятор, может и в Колибри пора ввести какое нибудь расширение?
Эмулятор поддерживает краткую версию таблицы, на 10 байт, потому что это нужно для работы sysxtree. Эмулятор не поддерживает полную версию таблицы, поскольку она нигде не используется.Mario79 wrote:Эмулятор не поддерживает F18/11, меня терзают смутные сомнения, что из ядра она когда-нибудь исчезнет...
А вообще использование полной версии чревато головной болью в будущем, правда, неясно, у кого: то ли у автора программы, использующей эту функцию, то ли у ядерщика, собравшегося добавить очередную файловую систему или улучшить поддержку существующей. Даже если ограничиться первыми двумя полями - начальный/конечный сектор раздела (как между строк рекомендуется в документации), всё равно появятся проблемы, если в ядре появится поддержка 64-битных номеров секторов (aka LBA48).
Во-первых, в винде можно ассоциировать пустое расширение с программой, правда, единственный известный мне способ - лезть ручками в реестр (HKEY_CLASSES_ROOT) и делать по аналогии с каким-нибудь уже существующим расширением. Во-вторых, лично я работаю в Far, используя собственный плагин, и мне вообще пофиг расширение - хоть пустое, хоть .bin, хоть .kex. kfar'у тоже пофиг - если расширение файла не находится в списке известных, он недолго думая передаёт файл функции запуска 70.7. В-третьих, есть доводы за пустое расширение: во-первых, привычка, во-вторых, это экономит 4 байта при записи имени запускаемого приложения в программах (/rd/1/tinypad короче, чем /rd/1/tinypad.kex) - мелочь, конечно, но факт.В винде я использую расширение kex для запуска приложений через эмулятор
А зачем бы это там mcall 10? Вроде бы mcall 2 просто считывает клавишу из буфера, а нажатие стрелок помещает в буфер сразу два кода. Разве что обработка сообщения о первом приходе irq1 -> нажатии клавиши происходит так быстро, что клавиатура просто не успевает послать второй байт - но полагаться на это слишком ненадёжно. (В винде на каждое нажатие стрелок приходит только одно сообщение, соответственно эмулятор вынужден помещать сообщения парой).Обнаружил в эмуляторе особенность - можно два раза вызывать mcall 2 (для обработки расширенного набора клавиш), а на реальной машине должен присутвовать mcall 10 между ними, иначе не будет обработки клавиш (например стрелок).
Ушёл к умным, знающим и культурным людям.
diamond
Странно я не смог получить нормальные результаты, может в конфигурации нужно что-то прописать?Эмулятор поддерживает краткую версию таблицы, на 10 байт, потому что это нужно для работы sysxtree.
Я писал о различиях между реальной системой и эмулятором - на реальной системе не работает, а в эмуляторе работает.А зачем бы это там mcall 10? Вроде бы mcall 2 просто считывает клавишу из буфера, а нажатие стрелок помещает в буфер сразу два кода. Разве что обработка сообщения о первом приходе irq1 -> нажатии клавиши происходит так быстро, что клавиатура просто не успевает послать второй байт - но полагаться на это слишком ненадёжно. (В винде на каждое нажатие стрелок приходит только одно сообщение, соответственно эмулятор вынужден помещать сообщения парой).
Mario79
sysxtree работает? Если да, то функция 18.11 работает нормально.
sysxtree работает? Если да, то функция 18.11 работает нормально.
Так и я про то же. Точнее, в первой части я описывал поведение на реальной системе - если причина именно в этом, то а) иногда работать всё же будет (зависит от загруженности процессора, механизма переключения потоков и т.д.) и б) необязательно делать mcall 10, можно, например, mcall 5,1 или просто выполнить любую долгую операцию (что означает "долгую", очень сильно зависит от компа и текущего состояния).Я писал о различиях между реальной системой и эмулятором - на реальной системе не работает, а в эмуляторе работает.
Последняя версия эмулятора (если не запускать kiwntf.exe) как-то слишком подозрительно замедлилась в работе. Есть еще одна странность: если запустить kiwntf.exe, то gmon перестает запускаться в эмуляторе (AllowReadMSR=true и EnablePorts=295 296 у меня прописаны)
gmon у меня на XP нормально запускается (и с kiwntf, и без). Впрочем, под 98й gmon отказывался обновлять своё окно, так что один глюк исправлен. Задержка при запуске почему-то сильно зависит от условий запуска: так, из-под Far'а при запуске через плагин и через командную строку в одном случае получалось ~1.5c, в другом ~3с. Удалось выяснить, что при загрузке драйвера задержка идёт от вызова NtFlushKey в глубинах services.exe (WinAPI-эквивалент именуется RegFlushKey), причём этот вызов там не по существу. В результате переписал загрузку драйвера на NtLoadDriver/NtUnloadDriver, в результате задержка при запуске с AllowReadMSR=true и/или непустым EnablePorts вообще исчезла.
Добавлена поддержка функции удаления курсора 37.6. Ссылки всё те же.
Добавлена поддержка функции удаления курсора 37.6. Ссылки всё те же.
У меня замедлился не запуск, а работа эмулятора в целом без kiwntf.exe. Окна отрисовываются около секунды, trantest рисует что-то около 700 треугольников в секунду (после запуска kiwntf фпс вырастают до 22 тысяч). Проверил новую версию: все в точности так же, как в предыдущем посте.Задержка при запуске почему-то сильно зависит от условий запуска: так, из-под Far'а при запуске через плагин и через командную строку в одном случае получалось ~1.5c, в другом ~3с.
Last edited by Heavyiron on Fri Feb 23, 2007 12:20 am, edited 2 times in total.
Заметил глюк: функция 70.1 в эмуляторе работает не совсем корректно. Например попытка прочитать виртуальную директорию "/" проходит успешно, "/rd/" - тоже, а вот в "/rd/1/" читаются только папки, а файлы - нет. С "/hd0/1/" тоже самое.
А у меня для RD в эмуляторе папки не работают. KFAR выдает ошибку.
Примерно то же самое... Корневая папка читается, а любая папка второго уровня нет.
Баг с вылетом gmon исправлен. Прочих багов повторить пока не удалось.
Who is online
Users browsing this forum: No registered users and 5 guests