IBM PC CONVERTIBLE Technical Reference page 67

Table of Contents

Advertisement

0463
0463
0468
046A
046F
0471
0476
0478
0478
047D
047F
0482
0484
0484
0487
048A
048A
048D
0492
0494
0496
0498
049B
KEYPAD KEYS PROCESSING
DETERMINE I F THE KEYPAD TABLE IS TO BE SEARCHED. THE KEYPAD TABLE
SEARCH/NO SEARCH DECISION IS MADE USING THE FOLLOWING RULES:
THE SEARCH IS ALWAYS MADE IF THERE ARE ANY BREAK PENDING FLAGS AND
THIS KEY IS A BREAK KEY. THE FUNCTION AND KEYPAD STATES ARE MUTUALLY
EXCLUSIVE. THE SEARCH IS PERFORMED IF EITHER STATE IS ACTIVE BUT
NOT BOTH STATES ACTIVE.
XLT40 :
F6 06 00B4 R 44
TEST
KB_NMLCNTL, FUNCSTATE+KEYPAD_STATE
74 OE
JZ
XL T41
; BOTH OFF - GO TEST BREAK PENDING
F6 06 00B4 R 40
TEST
KB_NMLCNTL, FUNCSTATE ; ONE OR BOTH ARE ON
74 13
JZ
XLT42
; OFF - ONLY ONE ON - GO SEARCH
F6 06 00B4 R 04
TEST
KB_NMLCNTL,KEYPAD_STATE ; ONE OR BOTH ARE ON
74 OC
JZ
XLT42
; OFF - ONLY ONE ON - GO SEARCH
BOTH FUNCSTATE & KEYPAD_STATE ARE OFF OR ON ..•. KEYPAD INACTIVE
XL T41:
83 3E 00B5 R 00
CMP
B_PEND1,O
BREAK PENDING?
74 57
JE
XLT60
NO, SKIP KEYPAD SEARCH
F6 C4 80
TEST
AH,BREAILBIT
YES, TEST FOR BREAK KEY
74 52
JZ
XLT60
MAKE KEY - SKI P KEYPAD SEARCH
XLT42 :
B9 0001
MOV
CX,OOOlH
CX
<===
SEARCH KEY BRK PEND FLAG
BE 0000
MOV
SI,OFFSET KBPADL
TABLE LENGTH
XLT44 :
83 EE 02
SUB
SI,2
SEARCH KEYPAD TABLE FOR MATCH
2E: 8B 9C 0000
MOV
BX, KBPAD_ TBL [SI]
GET TABLE ENTRY
3A C7
CMP
AL, BH
CHECK FOR MATCH
74 09
JE
XL T50
JMP I F MATCH FOUND
D1 E1
SHL
CX ,I
CX
<===
SEARCH KEY BRK PEND FLAG
83 FE 00
CMP
SI,O
IS SEARCH COMPLETE ?
75 ED
JNE
XLT44
NO, GO CHECK NEXT ENTRY
THIS KEY IS NOT A KEYPAD KEY.
049D
EB 37
JMP
SHORT XL T60
; GO XLATE NORMAL
049F
049F
04A2
04A4
04A8
04AA
04AA
04AE
04BO
04B4
04B6
04B8
04BB
04BD
04CO
F6 C4 80
75 06
A MATCH HAS BEEN FOUND IN THE KEYPAD TABLE. SET/RESET THE KEYS BREAK
PENDING FLAG THEN WRITE TO PORT 60.
SEND HIDDEN CODE FIRST FOR / OR
*.
XLT50:
TEST
BREAK KEY?
09 OE 00B5 R
EB OA
JNZ
OR
JMP
AH, BR EAILB IT
XL T52
B_PEND1,CX
SHORT XL T54
YES, GO RESET BREAK PENDING
SET KEYS BREAK PENDING FLAG
85 OE 00B5
74 26
31 OE 00B5
OA DC
8A C3
80 FF 4B
72
05
A2 00B9
BO ED
XLT52:
TEST
JZ
XOR
XLT54:
MOV
CMP
JB
MOV
MOV
CX, B_PEND1
XLT60
B_PEND1, CX
OR
BL ,AH
AL,BL
BH,NMLSLASH_SC
XLT56
P60_HOLD_BYTE ,AL
AL, H I DN_CODLED
BREAK PENDING FOR THIS SPECIFIC SC
NO, JMP TO PROCESS AS BASE KEY
RESET KEYS BREAK PENDING FLAG
USE BREAK BIT FROM NMI SC
AL
<===
PCl EXTENDED SC FROM TBL
/ OR
*
?
NO, JUMP OUT
QUEUE P60 SC
SEND HIDDEN CODE TO P60
THE PORT 60 KEYPAD STATE IS SET OR RESET USING THE FOLLOWING RULES:
THIS KEY HAS BEEN TRANSLATED ASSUMING THE KEYPAD STATE IS ACTIVE.
A PORT 60 SHIFT STATE TEMPORARILY TOGGLES THE KEYPAD STATE. IF THE
PORT 60 SHI FT STATE IS NOT SET THE P60 KEYPAD STATE IS SET AND THE
PC1 KEYPAD SCAN CODE IS WRITTEN TO PORT 60. IF THE PORT 60 SHIFT STATE
IS SET THE P60 KEYPAD STATE IS RESET (IT WILL REVERT TO THE SET STATE IN
THE PORT 60 PROCESSING) AND THE PC1 SCAN CODE IS WRITTEN TO PORT 60.
04C2
XLT56:
04C2
80 OE 0017 R 20
OR
KB_FLAG,NUtLSTATE
; SET KEYPAD STATE
2-42 ROM BIOS

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents