Guest User

keyb.asm

a guest
Nov 7th, 2011
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. %define KEYB_ENTER  0x1C
  2. %define KEYB_BACKSPACE  0x0E
  3. %define KEYB_RSHIFT 0x36
  4. %define KEYB_LSHIFT 0x2A
  5.  
  6. ;------------------------------------
  7. ; Gestion de l'interruption clavier
  8. ;------------------------------------
  9. kbd_interrupt:
  10.     xor eax,eax
  11. checkp:
  12.     ; On attend une entrée au clavier
  13.     in al,0x64
  14.     xor al,0x01
  15.     JZ checkp
  16.  
  17.     ;On lit le scancode de la touche
  18.     in al,0x60
  19.    
  20.     ;up key?
  21.     cmp al,0x81
  22.     jnb upc
  23.    
  24.     ;enter?
  25.     cmp al, KEYB_ENTER
  26.     JZ .enter
  27.    
  28.     ;back Space?
  29.     cmp al,KEYB_BACKSPACE
  30.     JZ .backspace
  31.    
  32.     ;rshift?
  33.     cmp al,KEYB_RSHIFT
  34.     JZ .shift
  35.  
  36.     ;lshift?
  37.     cmp al, KEYB_LSHIFT
  38.     JZ .shift
  39.    
  40.     jmp .normal
  41.  
  42. .enter:
  43.     call enter
  44.     jmp fin
  45. .backspace:
  46.     call back
  47.     jmp fin
  48. .shift:
  49.     mov byte [shift],1
  50.     jmp fin
  51.    
  52. .normal:
  53.     dec al      ;premier code en 0x01
  54.    
  55.     MOV DH,0x0F
  56.    
  57.     xor ebx,ebx
  58.     xor ecx,ecx
  59.     mov cl, [shift]
  60.     mov DL, [KeyTable+eax*4+ecx]
  61.  
  62.     ; Doit mettre le caractère dans un buffer et incrémenter !
  63.  
  64.     ; Affichage du caractère
  65.     call putchar
  66.  
  67. upc:
  68.     sub eax,0x80
  69.    
  70.     ;rshift?
  71.     cmp al,KEYB_RSHIFT
  72.     JZ .shiftup
  73.  
  74.     ;lshift?
  75.     cmp al,KEYB_LSHIFT
  76.     JZ .shiftup
  77.    
  78.     jmp fin
  79. .shiftup:
  80.     mov byte [shift],0
  81.     jmp fin
  82.    
  83.     nop
  84. fin:
  85.     RET
  86.    
  87.  
  88. shift: db 0
  89.    
  90. %include "KeybAzertyBelge"
  91.  
  92.  
Advertisement
Add Comment
Please, Sign In to add comment