0107
A8
80
0109
75
54
TEST
JNZ
AL
,80H
K23
;
TEST
FOR
BREAK
KEY
;
BREAICSHI
FLFOUND
; ------------
--
- - - - - - - -
----
- - - - - - - - - - - -
--
- - -
---
;
SHI
FT
MAKE
FOUND,
DETERMINE
SET
OR
TOGGLE
010B
80
FC
10
OlOE
73
OA
CMP
JAE
AH,
SCROLLSHI
FT
K18
;
IF
SCRL
SFT
OR
ABOVE,
TOGGLE
KEY
PLAIN
SHIFT
KEY,
SET
SHIFT
ON
0110
08
26
0017 R
0114
E9
0396 R
OR
JMP
KLFLAG,AH
KYBD9_EXIT
;
TURN
ON
SHI
FT
BIT
;
INTERRUPLRETURN
~-----
TOGGLED
SHIFT
KEY,
TEST
FOR
1ST
MAKE
OR
NOT
0117
E9
01C5
R
K25_JMP:
JMP
K25
JUMP
TO
K25
FOR
JNZ' s
BELOW
OllA
K18:
SHI
FT
-
TOGGLE
OllA
F6
06
0017 R
04
TEST
KBJLAG,
CTL_SH
1FT
CHECK
CTL
SHI
FT
STATE
OllF
75
F6
JNZ
K25_JMP
JUMP
IF
CTL
STATE
0121
3C
52
CMP
AL,
INS_KEY
CHECK
FOR
INSERT
KEY
0123
75
22
JNE
K22
JUMP
I F
NOT
I
NSERT
KEY
[[[[
INSERT
KEY
HIT
llll
0125
F6
06
0017 R
08
TEST
KB_FLAG,
AL
LSHIFT
CHECK
FOR
ALTERNATE
SHI
FT
012A
75
EB
JNZ
K25_JMP
;
JUMP
IF
ALTERNATE
SHIFT
012C
F6
06
0017
R
20
K19
:
TEST
KBJLAG,
NUM_STATE
;
CHECK
FOR
BASE
STATE
0131
75
OD
JNZ
K21
;
JUMP
IF
NUM
LOCK
IS
ON
0133
F6
06
0017 R
03
TEST
KLFLAG, LEFLSHIFT+ RIGHLSHIFT
0138
74
OD
JZ
K22
JUMP
I F
BASE
STATE
013A
K20:
NUMERIC
ZERO,
NOT
INSERT
KEY
013A
B8
5230
MOV
AX,
5230H
PUT
OUT
AN
ASCI
I
ZERO
013D
E9
0334 R
JMP
K57
BUFFERJI
LL
0140
K21
: ;
MIGHT
BE
NUMERIC
0140
F6
06
0017
R
03
TEST
KLFLAG,
LEFLSHIFTt
RIGHLSHIFT
0145
74
F3
JZ
K20
JUMP
NUMERIC,
NOT
INSERT
0147
K22:
SHFT
TOGGLE
KEY
HIT;
PROCESS
0147
84
26
0018 R
TEST
AH,
KB_FLAG_l
IS
KEY
ALREADY
DEPRESSED
014B
75
37
JNZ
KYBD9_EXITl
JUMP
I F
KEY
ALREADY
DEPRESSED
014D
08
26
0018 R
OR
KLFLAG_l,AH
IND
THAT
THE
KEY
IS
DEPRESSED
0151
30
26
0017 R
XOR
KLFLAG,AH
TOGGLE
THE
SHIFT
STATE
0155
3C
52
CMP
AL,
INS_KEY
TEST
1ST
MAKE
OF
INSERT
KEY
0157
75
2B
JNE
KYBDLEXITl
JUMP
IF
NOT
INSERT
KEY
0159
B8
5200
MOV
AX,
I
NS_KEY*256
SET
CODE
INTO
AH,
0
INTO
AL
015C
E9
0334 R
JMP
K57
PUT
INTO
OUTPUT
BUFFER
----
--
- - - - - - - - - - - - -
--
- - - - - - - - - - - - - - - -
--
-- - - -
--
;
SH
I
FT
BREAK
FOUND
--------------
--
- - - - - - - - - - - - - - -
--
- - - -
--
- - - - -
--
015F K23:
BREAK-SH
I
FT
-
FOUND
015F
80
FC
10
CMP
AH,
SCROLL_SH
I
FT
IS
THIS
A
TOGGLE
KEY
0162
73
lA
JAE
K24
YES,
HANDLE
BREAK
TOGGLE
0164
F6
D4
NOT
AH
INVERT
MASK
0166
20
26
0017 R
AND
KLFLAG,AH
TURN
OFF
SHI
FT
BIT
016A
3C
B8
CMP
AL
,AL LKEY+80H IS
THIS
ALT
SHIFT
RELEASE
016C
75
16
JNE
KYBDLEXITl
GO
TO
EOI
EXIT
----
--
- - - - - - - - - - - - - -- -- - - - - - --- - - - - - - -
--
- - - - - --- - - - - - - - - - - - - - --
; ALLSHIFT
RELEASED,
PROCESS
ALT
+
KEYPAD
(0-9)
IF
PENDING
; ---------------------
--
- - - - - - - - - - - - - - - - - - - - - -
--
- - - - - - - - - - -' - - -
--
016E
AO
0019
R
MOV
AL,AL
LINPUT
0171
B4
00
MOV
AH,O
BUILD
PSEUDO
SC
0173
88
26
0019
MOV
AL
LINPUT
,AH
CLEAR
ALT_INPUT
0177
3C
00
CMP
AL,O
WAS
ALT_INPUT
HOLDING?
0179
74
09
JE
KYBDLEXITI
NO,
EOI
EXIT
017B
E9
033D
R
JMP
K58
YES,
T,
SO
PUT
IN
BUFFER
SHI
FT
BREAK
IS A
STATE
KEY
-
TOGGLE
FLAG
017E
017E
F6
D4
0180
20
26
0018 R
,
K24:
NOT
AND
; LINK
TO
KEYBOARD
EXIT
FOR
SHORT
JUMPS
2-70 ROM BIOS
BREAK-
TOGGLE
INVERT
MASK
INDICATE
STATE
EXITED