IBM PC CONVERTIBLE Technical Reference page 64

Table of Contents

Advertisement

ASSUME
OS: DATA
ASSUME
ES: DATA
SCAN CODE BUFFER PROCESSING
0319
XL TlO:
0319
E8 0000 E
CALL
; DISABLE ALL INTERRUPTS
031C
F6 06 00B4 R 80
TEST
JNZ
KB_NMLCNTL, P60_LOADED ; IS PORT 60 CURRENTLY LOADED?
0321
75 00
XL Tl3
; YES THEN EXIT THE ROUTINE
,
;
PORT 60 IS NOT LOADED SO CHECK QUEUE FOR ANY KEYS
0323
8A IE OOBB R
0327
3A IE OOBC R
; BUFFER HEAD DISPLACEMENT
; I S BUFFER EMPTY
032B
75 06
MOV
CMP
JNE
BL, KLNMLHEAD
BL,KB_NMLTAIL
XL Tl4
; YES, GO TO BUFFER EMPTY ENTRY
PORT 60 IS NOT LOADED AND NO KEYS IN QUEUE SO FIX NUM_LOCK STATUS
AND EXIT
0320
E8 0524 R'
CALL
RE-ENABLE KEYBOARD NMIS AND EXIT THE ROUTINE
0330
E9 0523 R
XLTl3:
JMP
XL T100
DEQUEUE THE SCAN CODE FROM THE NMI QUEUE
0333
80 OE 00B4 R 10
XLTl4:
OR
KB_NMLCNTL,XLATLBUSY ; SET KEY XLATE IN PROCESS
0338
B7 00
MOV
BH,O
; CLEAR BH - BL IS BUFFER HEAD DISP
033A
8A 87 OOBD R
MOV
AL,KB_NMLBUFFER[BXl ; GET SCAN CODE FROM BUFFER
033E
FE C3
INC
BL
INCREMENT HEAD POINTER
0340
80 FB 10
CMP
BL,KB_NMLBLTH
IS BL
=
END OF BUFFER +1
0343
72 02
JB
XL Tl5
JUMP I F NOT PAST END OF BUFFER
0345
B3 00
MOV
BL,O
PAST END - SET TO START
0347
XLTl5:
0347
88 IE OOBB R
MOV
KB_NMLHEAD,BL
UPDATE BUFFER HEAD
;
START OF SCAN CODE TRANSLATION
ENABLE NMIS AND RESTORE INTERRUPT STATE TO PRE-NMI CONDITION
;
-
-
-
----
--------
--------
-
--------
- -- - - - -
-
-- - - - -- - - - - - -- - - - -
- -
- -- - ---
034B
E8 076E R
CALL
NMLCYCLE
CYCLE NMI MASK, RESTORE INT FLAGS
034E
8A EO
MOV
AH,AL
AH
<===
ORIGINAL NMI SC
0350
3C FF
CMP
AL,OFFH
KEYBOARD OVERRUN ?
0352
75 14
JNE
XL Tl8
NO, GO LOOK FOR FUNCTION KEY
KEYBOARD OVERRUN DETECTED
0354
C7 06 00B5 R 0000
MOV
B_PENDl,O
; RESET BREAK PENDING FLAGS
035A
C7 06 00B7 R 0000
MOV
B_PEND2,0
; RESET BREAK PENDING FLAGS
0360
80 26 00B4 R BF
AND
K B_NM LCNTL, NOT FUNCSTATE ; CLEAR FUNCTION STATE
0365
E9 050C R
JMP
XL T90
; OVERRUN, GO WRITE PORT 60
; CHECK IF SC IS FOR A BAS E KEY ONLY
0368
XLTl8:
0368
80 E4 80
AND
AH , BR EALB IT
AH
<===
BREAK BIT OF NMI SC
036B
8A DO
MOV
DL,AL
DL
<===
ORIGINAL NMI SC
036D
24 7F
AND
AL,NOT BREALBIT
AL
<===
NMI SC W/O BREAK BIT
036F
8D IE 0000
LEA
BX, KBNMLTBL
SCAN CODE TABLE - NMI TO PCl
0373
2E: D7
XLAT
KBNMLTBL
XLATE NMI SC TO PC! SC
0375
A8 80
TEST
AL ,80H
BASE KEY ONLY?
0377
75 03
JNZ
XL Tl9
NO, JUMP AROUND
0379
E9 04DE R
JMP
XL T60_1
YES, JUMP TO BASE KEY PROCESS
IF THIS IS THE FUNCTION KEY, SET/RESET FUNCTION STATE
ROM BIOS 2-39

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents