Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %define KEYB_ENTER 0x1C
- %define KEYB_BACKSPACE 0x0E
- %define KEYB_RSHIFT 0x36
- %define KEYB_LSHIFT 0x2A
- ;------------------------------------
- ; Gestion de l'interruption clavier
- ;------------------------------------
- kbd_interrupt:
- xor eax,eax
- checkp:
- ; On attend une entrée au clavier
- in al,0x64
- xor al,0x01
- JZ checkp
- ;On lit le scancode de la touche
- in al,0x60
- ;up key?
- cmp al,0x81
- jnb upc
- ;enter?
- cmp al, KEYB_ENTER
- JZ .enter
- ;back Space?
- cmp al,KEYB_BACKSPACE
- JZ .backspace
- ;rshift?
- cmp al,KEYB_RSHIFT
- JZ .shift
- ;lshift?
- cmp al, KEYB_LSHIFT
- JZ .shift
- jmp .normal
- .enter:
- call enter
- jmp fin
- .backspace:
- call back
- jmp fin
- .shift:
- mov byte [shift],1
- jmp fin
- .normal:
- dec al ;premier code en 0x01
- MOV DH,0x0F
- xor ebx,ebx
- xor ecx,ecx
- mov cl, [shift]
- mov DL, [KeyTable+eax*4+ecx]
- ; Doit mettre le caractère dans un buffer et incrémenter !
- ; Affichage du caractère
- call putchar
- upc:
- sub eax,0x80
- ;rshift?
- cmp al,KEYB_RSHIFT
- JZ .shiftup
- ;lshift?
- cmp al,KEYB_LSHIFT
- JZ .shiftup
- jmp fin
- .shiftup:
- mov byte [shift],0
- jmp fin
- nop
- fin:
- RET
- shift: db 0
- %include "KeybAzertyBelge"
Advertisement
Add Comment
Please, Sign In to add comment