User Tag List

Показано с 1 по 10 из 1842

Тема: Эмулятор ДВК

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    И наносекунда - это не показатель точности.
    Показатель точности это квант, кратный минимальному интервалу в эмулируемой системе. Во всех иных случаях, каким бы не был мелким квант, набежит погрешность.
    Не набежит. Диспетчер синхронизации модульного API рассчитывает виртуальное время каждого следующего периодического события не относительно времени предыдущего события, а относительно времени первого события + [ число предыдущих событий * интервал между событиями ], поэтому максимальная ошибка синхронизации не превышает 1 нс для любого числа предыдущих периодических событий.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,402
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Не набежит. Диспетчер синхронизации модульного API рассчитывает виртуальное время каждого следующего периодического события не относительно времени предыдущего события, а относительно времени первого события + [ число предыдущих событий * интервал между событиями ], поэтому максимальная ошибка синхронизации не превышает 1 нс для любого числа предыдущих периодических событий.
    Допустим, частота процессора 10.05МГц (99.5 1нс квантов).
    Как он будет отсчитывать по 99.5 квантов на такт?

  4. #3

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Допустим, частота процессора 10.05МГц (99.5 1нс квантов). Как он будет отсчитывать по 99.5 квантов на такт?
    При абстрактной эмуляции событием процессора является исполнение одной команды. Остальные события могут произойти либо до начала выполнения команды, либо после завершения её выполнения.

    Эмулировать не отдельные команды, а (например) отдельные циклы шины или отдельные такты - для абстрактной эмуляции избыточно.

    Можно сделать движок дискретной эмуляции, где событием будет изменение логического уровня на отдельной линии шины, но в абстрактной эмуляции ничего этого нет.

  5. #4

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,402
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    При абстрактной эмуляции событием процессора является исполнение одной команды. Остальные события могут произойти либо до начала выполнения команды, либо после завершения её выполнения.

    Эмулировать не отдельные команды, а (например) отдельные циклы шины или отдельные такты - для абстрактной эмуляции избыточно.

    Можно сделать движок дискретной эмуляции, где событием будет изменение логического уровня на отдельной линии шины, но в абстрактной эмуляции ничего этого нет.
    Для абстрактной может быть и избыточно, а для абсолютно точной - в самый раз)

    ---------- Post added at 17:14 ---------- Previous post was at 16:59 ----------

    Кстати, об эмуляции, когда я переделал клавиатуру с DirectInput на обработчик хуков, плохо стала работать комбинация из трех нажатых клавиш PrintScr+Scroll+Pause (по ним ресет на спектруме делался у меня). Приходится теперь несколько раз на них нажимать, нажимать, пока сработает. На DirectInput'е такого не было)

  6. #5

    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,806
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    147
    Поблагодарили
    78 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    когда я переделал клавиатуру с DirectInput на обработчик хуков, плохо стала работать комбинация из трех нажатых клавиш PrintScr+Scroll+Pause (по ним ресет на спектруме делался у меня). Приходится теперь несколько раз на них нажимать, нажимать, пока сработает. На DirectInput'е такого не было)
    Я сделал для модульного API имитацию DirectInput через хуки - вроде всё работает, даже если нажать эти три клавиши:

    Код:
    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]
    Правда у меня почему-то нажатие клавиши <PrintScreen> не сопровождается вызовом WM_KEYDOWN ( лень разбираться почему - просто делаю скриншоты по WM_KEYUP ).

  7. #6

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,402
    Спасибо Благодарностей отдано 
    1,703
    Спасибо Благодарностей получено 
    2,223
    Поблагодарили
    875 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    Я сделал для модульного API имитацию DirectInput через хуки - вроде всё работает, даже если нажать эти три клавиши


    Правда у меня почему-то нажатие клавиши <PrintScreen> не сопровождается вызовом WM_KEYDOWN ( лень разбираться почему - просто делаю скриншоты по WM_KEYUP ).
    У меня тоже идет эмуляция DirectInput.

    Понятно, у меня при нажатии этих трех клавиш проверяется, что они нажаты и отжаты. Значит это глюк хуков какой-то.

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 2 (пользователей: 0 , гостей: 2)

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 20
    Последнее: 03.09.2024, 13:24
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •