home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PROGRAMS / UTILS / TECLADO / NOREPEAT.ZIP / NOREPEAT.ASM next >
Encoding:
Assembly Source File  |  1987-02-13  |  1.4 KB  |  58 lines

  1. ; NOREPEAT.ASM - DISABLES TYPEMATIC KEY REPETITIONS
  2. ; =================================================
  3. CSEG    SEGMENT
  4.     ASSUME    CS:CSEG
  5.     ORG    100H
  6. ;
  7. START:    JMP SHORT INITIALIZE
  8. ;
  9. OLDINT9        DD    ?
  10. LAST_KEY    DB    0FFH    ;INITIALLY SET TO A USED SCAN CODE
  11. ;
  12. ; NEW INTERRUPT 9 (KEYBOARD ROUTINE)
  13. ; ----------------------------------
  14. NEWINT9    PROC    FAR
  15.     STI
  16.     PUSH    AX
  17. ;
  18.     IN    AL,60H        ;GET SCAN CODE FROM KEYBOARD
  19.     CMP    AL,CS:LAST_KEY    ;IS IT SAME AS LAST KEY
  20.     JE    IGNORE        ;IF IT IS, IGNORE IT
  21. ;
  22.     MOV    CS:LAST_KEY,AL    ;NOW THIS BECOMES THE LAST KEY
  23.     POP    AX        ;RESTORE THE STACK
  24.     JMP    CS:[OLDINT9]    ;ALLOW THE ROM TO PROCESS THE KEY
  25. ;
  26. IGNORE:    IN    AL,61H        ;GET KEYBOARD STATUS
  27.     MOV    AH,AL
  28.     OR    AL,80H
  29.     OUT    61H,AL        ;RESET KEYBOARD
  30.     XCHG    AL,AH        ;GET BACK ORIGINAL KEYBOARD STATUS
  31.     OUT    61H,AL        ;RESTORE KEYBOARD STATUS
  32. ;
  33.     MOV    AL,20H
  34.     OUT    20H,AL        ;RESET INTERRUPT CONTROLLER
  35. ;
  36.     POP    AX
  37.     IRET            ;RETURN FROM INTERRUPT
  38. NEWINT9    ENDP
  39. ;
  40. ; PROGRAM INSTALLATION
  41. ;---------------------
  42.     ASSUME    DS:CSEG
  43. INITIALIZE:
  44.     MOV    AX,3509H    ;SETUP TO GET OLD INT9 VECTOR
  45.     INT    21H
  46.     MOV    WORD PTR [OLDINT9],  BX
  47.     MOV    WORD PTR [OLDINT9+2],ES
  48. ;
  49.     MOV    DX,OFFSET NEWINT9
  50.     MOV    AX,2509H    ;SETUP TO THANGE VECTOR
  51.     INT    21H        ;DOS FUNCTION TO CHANGE VECTOR
  52. ;
  53.     MOV    DX,OFFSET INITIALIZE    ;BYTES TO STAY RESIDENT
  54.     INT    27H        ;TERMINATE AND STAY RESIDENT
  55. ;
  56. CSEG    ENDS
  57.     END    START
  58.