IBM 5170 Technical Reference page 259

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

0123
t:9 alEC R
JMP
K27A
I GNORE SYSTEM KEY
0126
BF 0000 E
k16A:
MOV
01, OFFSET K6
SH I FT KEY TABLE
0129
012C
012E
0130
B9 0000 E
F2/ AE
8A C4
74 03
MOV
REPNE
MOV
JE
CX, OFFSET K6l
SCASB
Al,AH
K17
lENGTH
lOOK THROUGH THE TABLE FOR A MATCH
RECOVER SCAN CODE
JUMP I F MATCH FOUND
0132
E9 01CE R
JMP
K25
I F NO MATCH, THEN SH I FT NOT FOUND
; -----­ SH I FT KEY FOUND
0135
81 EF 0001 E
K17:
SUB
01, OFFSET K6+1
ADJUST PTR TO SCAN CODE MTCH
0139
013E
2E: 8A A5 0000 E
A8 80
MOV
TEST
AH,CS: K7( 01]
Al,80H
GET MASK INTO AH
TEST FOR BREAK KEY
0140
0142
74 02
EB 63
JZ
JMP
K17C
SHORT K23
BREAK SH I FT FOUND
CONT INUE
-
;-------- DETERMINE SET OR TOGGLE
0144
0147
80 FC 10
73 07
K17C:
CMP
JAE
AH, SCROll_SH I FT
K1B
I F SCROll SH' FT OR ABOVE, TOGGLE KEY
;-----­ PLAIN SHIFT KEY, SET SHIFT ON
0149
08 26 0017 R
OR
TURN ON SH I FT BIT
0140
E9 01 E2 R
JMP
INTERRUPT_RETURN
;------ TOGGLED SHIFT KEY, TEST FOR 1ST MAKE OR NOT
0150
K18:
SH I FT - TOGGLE
0150
F6 06 0017 R 04
TEST
KB_FLAG, CTl_SH I FT
CHECK CTl SH I FT STATE
0155
74 03
JZ
K18A
JUMP I F NOT CTl STATE
0157
EB 75 90
JMP
K25
JUMP IF CTl STATE
015A
015C
3C 52
75 25
K18A;
CMP
JNZ
Al,
INS_KEY
K22
CHECK FOR I NSERT KEY
JUMP I F NOT I NSERT KEY
015E
0163
F6 06 0017 R 08
74 03
TEST
JZ
KBJLAG, AlT_SHI FT
K19
CHECK FOR ALTERNATE SH I FT
, JUMP I F NOT ALTERNATE SH I FT
0165
EB 67 90
JMP
K25
; JUMP IF ALTERNATE SHIfT
0168
F6 06 0017 R 20
K19:
TEST
KB FLAG, NUM_STATE
, CHECK FOR BASE STATE
0160
75 00
JNZ
K21
; JUMP IF NUM lOCK IS ON
016F
F6 06 0017 R 03
TEST
KB FLAG, lEFT_SHlfT+ RIGHT_SHIFT
,
0174
74 00
JZ
K22
JUMP I F BASE STATE
0176
K20:
, NUMER I C ZERO,
NOT I NSERT KEY
0176
B8 5230
MOV
AX, 5230H
;
PUT OUT AN ASC I I ZERO
0179
E9 0375 R
JMP
K57
; BUFFERJ I I I
017C
K21 :
; MIGHT BE NUMERIC
017C
F6 06 0017 R 03
TEST
KB_FLAG, lEfT_SHIFT+ RIGHT_SHIFT
,
0181
74 F3
JZ
K20
; JUMP NUMERIC, NOT INSERT
0183
K22:
SH I FT TOGGLE KEY HIT; PROCESS IT
0183
84 26 0018 R
TEST
AH, KB_FLAG_ 1
I S KEY ALREADY DEPRESSED
0187
74 02
JZ
K22AO
GO IF NOT
0189
EB 57
JMP
SHORT K26
JUMP I F KEY ALREADY DEPRESSED
018B
08 26 0018 R
K22AO:
OR
KB FLAG 1,AH
INDICATE THAT THE KEY IS DEPRESSED
018F
30 26 0017 R
XOR
KB=FLAG-:-AH
TOGGLE THE SH I FT STATE
; ------­ TOGGLE lED I F CAPS OR NUM KEY DEPRESSED
0193
F6 C4 70
TEST
AH, CAPS_SH I fT+NUM_SH I FT+SCROll_SH 1fT; SH I FT TOGGLE?
0196
74 05
JZ
K22B
; GO I F NOT
0198
0199
50
E8 0439 R
PUSH
CAll
AX
SND lED
SAVE SCAN CODE AND SH I FT MASK
GO TURN MODE INDICATORS ON
019C
58
POP
AX -
RESTORE SCAN CODE
0190
019F
3C 52
75 41
K22B:
Cf~P
JNE
Al, INS_KEY
K26
TEST FOR 1ST MAKE OF I NSERT KEY
JUMP I F NOT I NSERT KEY
01Al
01A4
B8 5200
E9 0375 R
MOV
JMP
AX, I NS_KEY*256
K57
SET SCAN CODE INTO AH, 0 INTO Al
PUT INTO OUTPUT BUFFER
; ----­ .. BREAK SH
I
FT FOUND
01A7
01A7
01M
80 FC 10
73 lA
K23:
eMP
JAE
AH, SCROll_SH I FT
K2.
BREAK-SH 1FT-FOUND
IS THIS A TOGGLE KEY
YES, HANDLE BREAK TOGGLE
01AC
F6 04
NOT
AH
I NVERT MASK
01AE
01B2
01B4
20 26 0017 R
3C B8
75 2C
AND
eMP
JNE
KB_FLAG,AH
Al, Al T_KEY+80H
K26
TURN OFF SHIFT BIT
IS TH I S ALTERNATE SH I FT RELEASE
INTERRUPT_RETURN
;­ _____ ALTERNATE SHIFT KEY RELEASED, GET THE VALUE INTO BUFFER
01B6
01B9
01BB
OlaF
AO 0019 R
B4 00
88 26 0019 R
3C 00
MOV
MOV
MOV
eMP
Al,AlT_'NPUT
AH,O
AlT_INPUT,AH
Al,O
SCAN CODE OF 0
ZERO OUT THE FIELD
WAS THE I NPUT=O
01Cl
01C3
741F
E9 037E R
JE
JMP
K26
K56
:~T~~~~q-:-R~~U;~T
IN BUFFER
01C6
K24:
BREAK- TOGGLE
01c6
01C8
01CC
F6 04
20 26 0018
R
EB 14
NOT
AND
JMP
AH
KB_FLAG_l,AH
SHORT K26
I NVERT MASK
INDICATE NO lONGER DEPRESSED
INTERRUPT_RETURN
; -----­ TEST FOR HOLD STATE
01CE
01CE
0100
3C 80
73 10
K25:
eMP
JAE
Al,80H
K26
NO-SHIFT-FOUND
TEST FOR BREAK KEY
NOTH I NG FOR BREAK CHARS FROM HERE ON
0102
0107
F6 06 0018 R 08
74
1 E
TEST
JZ
KB_FlAG_ 1, HOLD_STATE
K2B
ARE WE I N HOLD STATE
BRANCH AROUND TEST I F NOT
0109
01DB
0100
3C 45
74 05
80 26 0018 R
F7
eMP
JE
ANa
Al, NUM_KEY
K26
;
KB_FLAG_ 1, NOT HOLD_STATE
CAN'T END HOLD ON NUM_lOCK
; TURN OFF THE HOLD STATE BIT
01E2
01 E2
FA
K26:
ell
I NTERRUPT -RETURN
TURN OFF INTERRUPTS
01E3
01E5
01E7
01E7
01 E9
BO 20
E6 20
BO AE
E8 0498 R
K27:
MOV
OUT
MOV
CAll
Al, EO I
020H,Al
Al, ENA_KBD
SHIP_IT
END OF I NTERRUPT COMMAND
SEND COMMAND TO I NTERRU PT CONTROL PORT
I NTERRUPT-RETURN-NO-EO I
I NSURE KEYBOARD I S ENABLED
EXECUTE ENABLE
01EC
FA
K27A:
Cl I
o
I SABLE INTERRUPTS
01 ED
07
POP
ES
~ESTORE
REG I STERS
01 EE
1 F
POP
as
01Ef
5F
POP
01
OHO
5E
POP
51
01 F1
5A
POP
ox
01 F2
59
POP
ex
01 F3
5B
POP
BX
01 F4
58
POP
AX
01 F5
01 F6
50
CF
POP
IRET
BP
RETURN,
INTERRUPTS BACK ON WITH FLAG CHANGE
Keyboard 5-117

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents