С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Не набежит. Диспетчер синхронизации модульного API рассчитывает виртуальное время каждого следующего периодического события не относительно времени предыдущего события, а относительно времени первого события + [ число предыдущих событий * интервал между событиями ], поэтому максимальная ошибка синхронизации не превышает 1 нс для любого числа предыдущих периодических событий.
При абстрактной эмуляции событием процессора является исполнение одной команды. Остальные события могут произойти либо до начала выполнения команды, либо после завершения её выполнения.
Эмулировать не отдельные команды, а (например) отдельные циклы шины или отдельные такты - для абстрактной эмуляции избыточно.
Можно сделать движок дискретной эмуляции, где событием будет изменение логического уровня на отдельной линии шины, но в абстрактной эмуляции ничего этого нет.
Для абстрактной может быть и избыточно, а для абсолютно точной - в самый раз)
---------- Post added at 17:14 ---------- Previous post was at 16:59 ----------
Кстати, об эмуляции, когда я переделал клавиатуру с DirectInput на обработчик хуков, плохо стала работать комбинация из трех нажатых клавиш PrintScr+Scroll+Pause (по ним ресет на спектруме делался у меня). Приходится теперь несколько раз на них нажимать, нажимать, пока сработает. На DirectInput'е такого не было)
Я сделал для модульного API имитацию DirectInput через хуки - вроде всё работает, даже если нажать эти три клавиши:
Правда у меня почему-то нажатие клавиши <PrintScreen> не сопровождается вызовом WM_KEYDOWN ( лень разбираться почему - просто делаю скриншоты по WM_KEYUP ).Код:vkCode[0x2C] ; wParam[ 44] ; uScan[311] ; cFlags[0x1] vkCode[0x91] ; wParam[145] ; uScan[ 70] ; cFlags[0x0] WM_KEYDOWN uScan:[ 70] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00] vkCode[0x13] ; wParam[ 19] ; uScan[ 69] ; cFlags[0x0] WM_KEYDOWN uScan:[ 69] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x80] vkCode[0x13] ; wParam[ 19] ; uScan[ 69] ; cFlags[0xFFFFFF80] WM_KEYUP uScan:[ 69] ; DIK_SYSRQ[0x80] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00] vkCode[0x2C] ; wParam[ 44] ; uScan[311] ; cFlags[0xFFFFFF81] WM_KEYUP uScan:[311] ; DIK_SYSRQ[0x00] ; DIK_SCROLL[0x80] ; DIK_PAUSE[0x00] vkCode[0x91] ; wParam[145] ; uScan[ 70] ; cFlags[0xFFFFFF80] WM_KEYUP uScan:[ 70] ; DIK_SYSRQ[0x00] ; DIK_SCROLL[0x00] ; DIK_PAUSE[0x00]
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_07.01.14_00-00
Изменения:
1. Исправлены ошибки, обнаруженные в предыдущем релизе.
2. Теперь процессор КМД может обращаться к любым устройствам на шине ДВК.
3. Теперь, если имя файла прошивки содержит "91" или "93" - на шине КМД эмулируется микросхема 1809РУ1, если имя файла прошивки содержит "92" - на шине КМД эмулируется микросхема 537РУ11. Если ни одного из указанных сочетаний символов в имени файла прошивки нет - на шине КМД эмулируется 4 Кбайт памяти в диапазоне 020000..027777.
4. Теперь КМД никак не реагирует на чтение его регистра данных.
...
Последний раз редактировалось Patron; 07.01.2014 в 00:36.
Если бы еще Titus сделал отдельно эмулятор 15-ИЭ на СОМ порт
Эту тему просматривают: 4 (пользователей: 0 , гостей: 4)