Клавиатура, запрет приёма скан-кодов

Тема в разделе "WASM.BEGINNERS", создана пользователем vtv, 25 май 2006.

  1. vtv

    vtv New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    2
    Адрес:
    Latvia
    Есть такой код:


    Код (Text):
    1. begin                
    2.                      
    3. asm                  
    4.                      
    5. @m:   IN al,64h      
    6.       AND al,00000010b
    7.       JNZ @m          
    8.       MOV al,0ADh    
    9.       OUT 64h,al      
    10.       PUSH ds        
    11.       MOV cx,40h      
    12.       MOV ds,cx      
    13.       MOV cl,[6Ch]    
    14.       ADD cl,180      
    15. @m1:  CMP cl,[6Ch]    
    16.       JNZ @m1        
    17. @n:   IN al,64h      
    18.       AND al,00000010b
    19.       JNZ @n          
    20.       MOV al,0AEh    
    21.       OUT 64h,al      
    22.                      
    23. end;                  
    24.                      
    25. end.




    Главная в нём команда 0ADh, которая должна запрещать контроллеру клавиатуры принимать скан-коды с самой клавиатуры. Программа работает и если нажимать кнопки во время её работы, сканы действительно не проходят. Я одного понять не могу - почему после завершения программы вываливаются символы, которые были нажаты во время запрета?



    Насколько я понимаю буффер клавиатуры находится в общей памяти, а стало быть при запрете приёма скан-кодов должен оставаться пустым. Но если так, то откуда символы?



    Может быть я что-то путаю?
     
  2. PROFi

    PROFi New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2003
    Сообщения:
    690
    vtv



    Клавиатура имеет буфер клавиатуры не в системной памяти, причем размер зависит от цены на клавиатуру :)
     
  3. vtv

    vtv New Member

    Публикаций:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    2
    Адрес:
    Latvia
    PROFi



    Спасибо за ответ!