I want to do a driver that acts like this: Note: the code isn't optimized nor finnished. [code] ; ;The binary keyboard driver version 2.1 ; ;For now it's only a simple program that looks like a driver. ; ;I'll make it a driver when I know how... ; ; format mz org 100h start: call PrintInfo mov al, 06 ;makes the input buffer not to be full mov ah, 0Ch mov dl, 0FFh int 21h xor ax, ax IN al, 60h ;get input from keyboard ;nop ;something, dont have to be there. cmp ax, cx ;loop until input change mov cx, ax je start ; ;checking all chars ; ;beginning with makecodes ; cmp cx, 1EH je makea cmp cx, 1FH je makes cmp cx, 20H je maked cmp cx, 21H je makef cmp cx, 24H je makej cmp cx, 25H je makek cmp cx, 26H je makel cmp cx, 27H je makeo cmp cx, 39H je makespace cmp cx, 1 je exit ; ;the brake codes ; cmp cx, 9EH je brakea cmp cx, 9FH je brakes cmp cx, 0A0H je braked cmp cx, 0A1H je brakef cmp cx, 0A4H je brakej cmp cx, 0A5H je brakek cmp cx, 0A6H je brakel cmp cx, 0A7H je brakeo ; ;make codes for each input key ; make brake ; dec hex hex ;a = 30 1E 9E ;s = 31 1F 9F ;d = 32 20 A0 ;f = 33 21 A1 ;j = 36 24 A4 ;k = 37 25 A5 ;l = 38 26 A6 ;ö = 39 27 A7 ; = 57 39 B9 ;(space) ; ;brake codes are make code + 128 ; endOfChecking: jmp start exit: mov ah, 4Ch int 21h ; ;actions of the make and brake codes ; makea: or bx, 10000000b jmp endOfChecking makes: or bx, 01000000b jmp endOfChecking maked: or bx, 00100000b jmp endOfChecking makef: or bx, 00010000b jmp endOfChecking makej: or bx, 00001000b jmp endOfChecking makek: or bx, 00000100b jmp endOfChecking makel: or bx, 00000010b jmp endOfChecking makeo: or bx, 00000001b jmp endOfChecking brakea: and bx, 01111111b jmp endOfChecking brakes: and bx, 10111111b jmp endOfChecking braked: and bx, 11011111b jmp endOfChecking brakef: and bx, 11101111b jmp endOfChecking brakej: and bx, 11110111b jmp endOfChecking brakek: and bx, 11111011b jmp endOfChecking brakel: and bx, 11111101b jmp endOfChecking brakeo: and bx, 11111110b jmp endOfChecking makespace: and bx, 11111111b jmp endOfChecking char: db ? PrintNumInCl: ;convert ax to number and print push ax push dx xor ax, ax mov al, cl ;2 char mov