Page 8 of 21

Posted: Tue Nov 07, 2006 10:11 pm
by Wildwest
Спасибо, Женя!

Posted: Fri Nov 17, 2006 3:49 pm
by diamond
Поддержка функций работы с кучей процесса (выделение/освобождение памяти) 68.11, 68.12, 68.13. Ссылки всё те же:
http://diamondz.land.ru/KlbrInWin.7z
http://diamondz.land.ru/KlbrInWin_src.7z

Posted: Mon Nov 20, 2006 5:03 pm
by diamond
Поддержка функции загрузки DLL (в том числе упакованных) 68.19.

Posted: Mon Dec 04, 2006 5:06 pm
by diamond
Поддержка функций работы с курсорами 37.4 и 37.5. Добавлена иконка (автор - goglus) для самого exe-шника и для создаваемых окон.

Posted: Mon Dec 04, 2006 5:25 pm
by Mario79
diamond
Эмулятор не поддерживает F18/11, меня терзают смутные сомнения, что из ядра она когда-нибудь исчезнет...
Или я не прав?

offtop:
В винде я использую расширение kex для запуска приложений через эмулятор, может и в Колибри пора ввести какое нибудь расширение?

Posted: Mon Dec 04, 2006 7:30 pm
by diamond
Mario79 wrote:Эмулятор не поддерживает F18/11, меня терзают смутные сомнения, что из ядра она когда-нибудь исчезнет...
Эмулятор поддерживает краткую версию таблицы, на 10 байт, потому что это нужно для работы sysxtree. Эмулятор не поддерживает полную версию таблицы, поскольку она нигде не используется.
А вообще использование полной версии чревато головной болью в будущем, правда, неясно, у кого: то ли у автора программы, использующей эту функцию, то ли у ядерщика, собравшегося добавить очередную файловую систему или улучшить поддержку существующей. Даже если ограничиться первыми двумя полями - начальный/конечный сектор раздела (как между строк рекомендуется в документации), всё равно появятся проблемы, если в ядре появится поддержка 64-битных номеров секторов (aka LBA48).
В винде я использую расширение kex для запуска приложений через эмулятор
Во-первых, в винде можно ассоциировать пустое расширение с программой, правда, единственный известный мне способ - лезть ручками в реестр (HKEY_CLASSES_ROOT) и делать по аналогии с каким-нибудь уже существующим расширением. Во-вторых, лично я работаю в Far, используя собственный плагин, и мне вообще пофиг расширение - хоть пустое, хоть .bin, хоть .kex. kfar'у тоже пофиг - если расширение файла не находится в списке известных, он недолго думая передаёт файл функции запуска 70.7. В-третьих, есть доводы за пустое расширение: во-первых, привычка, во-вторых, это экономит 4 байта при записи имени запускаемого приложения в программах (/rd/1/tinypad короче, чем /rd/1/tinypad.kex) - мелочь, конечно, но факт.
Обнаружил в эмуляторе особенность - можно два раза вызывать mcall 2 (для обработки расширенного набора клавиш), а на реальной машине должен присутвовать mcall 10 между ними, иначе не будет обработки клавиш (например стрелок).
А зачем бы это там mcall 10? Вроде бы mcall 2 просто считывает клавишу из буфера, а нажатие стрелок помещает в буфер сразу два кода. Разве что обработка сообщения о первом приходе irq1 -> нажатии клавиши происходит так быстро, что клавиатура просто не успевает послать второй байт - но полагаться на это слишком ненадёжно. (В винде на каждое нажатие стрелок приходит только одно сообщение, соответственно эмулятор вынужден помещать сообщения парой).

Posted: Tue Dec 05, 2006 8:16 am
by Mario79
diamond
Эмулятор поддерживает краткую версию таблицы, на 10 байт, потому что это нужно для работы sysxtree.
Странно я не смог получить нормальные результаты, может в конфигурации нужно что-то прописать?
А зачем бы это там mcall 10? Вроде бы mcall 2 просто считывает клавишу из буфера, а нажатие стрелок помещает в буфер сразу два кода. Разве что обработка сообщения о первом приходе irq1 -> нажатии клавиши происходит так быстро, что клавиатура просто не успевает послать второй байт - но полагаться на это слишком ненадёжно. (В винде на каждое нажатие стрелок приходит только одно сообщение, соответственно эмулятор вынужден помещать сообщения парой).
Я писал о различиях между реальной системой и эмулятором - на реальной системе не работает, а в эмуляторе работает.

Posted: Tue Dec 05, 2006 7:06 pm
by diamond
Mario79
sysxtree работает? Если да, то функция 18.11 работает нормально.
Я писал о различиях между реальной системой и эмулятором - на реальной системе не работает, а в эмуляторе работает.
Так и я про то же. Точнее, в первой части я описывал поведение на реальной системе - если причина именно в этом, то а) иногда работать всё же будет (зависит от загруженности процессора, механизма переключения потоков и т.д.) и б) необязательно делать mcall 10, можно, например, mcall 5,1 или просто выполнить любую долгую операцию (что означает "долгую", очень сильно зависит от компа и текущего состояния).

Posted: Tue Dec 12, 2006 12:26 am
by Heavyiron
Последняя версия эмулятора (если не запускать kiwntf.exe) как-то слишком подозрительно замедлилась в работе. Есть еще одна странность: если запустить kiwntf.exe, то gmon перестает запускаться в эмуляторе (AllowReadMSR=true и EnablePorts=295 296 у меня прописаны)

Posted: Mon Dec 18, 2006 5:00 pm
by diamond
gmon у меня на XP нормально запускается (и с kiwntf, и без). Впрочем, под 98й gmon отказывался обновлять своё окно, так что один глюк исправлен. Задержка при запуске почему-то сильно зависит от условий запуска: так, из-под Far'а при запуске через плагин и через командную строку в одном случае получалось ~1.5c, в другом ~3с. Удалось выяснить, что при загрузке драйвера задержка идёт от вызова NtFlushKey в глубинах services.exe (WinAPI-эквивалент именуется RegFlushKey), причём этот вызов там не по существу. В результате переписал загрузку драйвера на NtLoadDriver/NtUnloadDriver, в результате задержка при запуске с AllowReadMSR=true и/или непустым EnablePorts вообще исчезла.
Добавлена поддержка функции удаления курсора 37.6. Ссылки всё те же.

Posted: Tue Dec 19, 2006 12:16 am
by Heavyiron
Задержка при запуске почему-то сильно зависит от условий запуска: так, из-под Far'а при запуске через плагин и через командную строку в одном случае получалось ~1.5c, в другом ~3с.
У меня замедлился не запуск, а работа эмулятора в целом без kiwntf.exe. Окна отрисовываются около секунды, trantest рисует что-то около 700 треугольников в секунду (после запуска kiwntf фпс вырастают до 22 тысяч). Проверил новую версию: все в точности так же, как в предыдущем посте.

Posted: Wed Dec 20, 2006 2:39 pm
by YELLOW
Заметил глюк: функция 70.1 в эмуляторе работает не совсем корректно. Например попытка прочитать виртуальную директорию "/" проходит успешно, "/rd/" - тоже, а вот в "/rd/1/" читаются только папки, а файлы - нет. С "/hd0/1/" тоже самое.

Posted: Wed Dec 20, 2006 4:09 pm
by Mario79
А у меня для RD в эмуляторе папки не работают. KFAR выдает ошибку.

Posted: Wed Dec 20, 2006 5:14 pm
by YELLOW
Примерно то же самое... Корневая папка читается, а любая папка второго уровня нет.

Posted: Thu Dec 21, 2006 2:57 pm
by diamond
Баг с вылетом gmon исправлен. Прочих багов повторить пока не удалось.