home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Media Share 9
/
MEDIASHARE_09.ISO
/
pascal
/
tplib21.zip
/
INSTALL.EXE
/
CRTKB.ASM
< prev
next >
Wrap
Assembly Source File
|
1993-06-24
|
4KB
|
114 lines
; TURBO PASCAL LIBRARY 2.1
; Keyboard control module
TITLE UNIT ENHCON: Input routines module
PAGE 66,132
%BIN 12
BIOS_KB MACRO SERVICE ; Call BIOS keyboard service
MOV AH,&SERVICE
INT 16H
ENDM
CODE SEGMENT WORD
ASSUME CS:CODE
LOCALS
PUBLIC FLUSHKB,CAPSLOCK,NUMLOCK,SCROLLLOCK
PUBLIC INSERTLOCK,FORCEINSERT
; PROCEDURE FlushKB;
; Flushes keyboard buffer
FLUSHKB PROC FAR
PUSH BP
@@L1: BIOS_KB 01H ; Check whether chr. in buffer
JNZ @@L2
POP BP ; Exit when no character ready
RET
@@L2: BIOS_KB 00H ; Remove character from buffer
JMP SHORT @@L1
FLUSHKB ENDP
PAGE
; FUNCTION CapsLock: BOOLEAN;
; Returns true if capitals lock is active
CAPSLOCK PROC FAR
PUSH BP
BIOS_KB 02H ; Get shift status service
POP BP
MOV CL,6
SHR AL,CL ; Isolate required bit
AND AL,01H
RET
CAPSLOCK ENDP
; FUNCTION NumLock: BOOLEAN;
; Returns true if number lock is active
NUMLOCK PROC FAR
PUSH BP
BIOS_KB 02H ; Get shift status service
POP BP
MOV CL,5
SHR AL,CL ; Isolate required bit
AND AL,01H
RET
NUMLOCK ENDP
; FUNCTION ScrollLock: BOOLEAN;
; Returns true if scroll lock is active
SCROLLLOCK PROC FAR
PUSH BP
BIOS_KB 02H ; Get shift status service
POP BP
MOV CL,4
SHR AL,CL ; Isolate required bit
AND AL,01H
RET
SCROLLLOCK ENDP
PAGE
; FUNCTION InsertLock: BOOLEAN;
; Returns true if insert lock is active
INSERTLOCK PROC FAR
PUSH BP
BIOS_KB 02H ; Get shift status service
POP BP
ROL AL,1 ; Isolate required bit
AND AL,01H
RET
INSERTLOCK ENDP
; PROCEDURE ForceInsert (Ins: BOOLEAN);
; Force keyboard insert state (True=Insert, False=OverWrite)
FORCEINSERT PROC FAR
MOV AX,0040H
MOV ES,AX ; Point ES to low BIOS store
POP BX ; Get return address off stack
POP CX
POP AX ; Fetch required insert state
PUSH CX ; Restore return addr. to stack
PUSH BX
AND BYTE PTR [ES:0017H],07FH ; Clear ins. flag in KB stat.
ROR AL,1
OR BYTE PTR [ES:0017H],AL ; Set insert flag if required
RET
FORCEINSERT ENDP
CODE ENDS
END