IBM XT 5160 Technical Reference page 201

Hide thumbs Also See for XT 5160:
Table of Contents

Advertisement

IBM Personal Computer MACRO Assembler
Version 2.00
KEYBRD - - -
01 II 0/86
KEYBOARD ADAPTER B I OS
1-9
01-10-86
; ------ TEST FOR THE NEW KEY ON WT KEYBOARDS
; ------ TRANSLATE SCAN FOR PSEUDO SCAN CODES
;------ MIGHT BE NUM LOCK. TEST SHIFT STATUS
K50:
TEST
BL.LEFT SHIFT+RIGHT SHIFT
;ALMOST-NUM-STATE
JNZ
K49
-
- ; SHIFTED TEMP OUT OF NUM STATE
K51:
JMP
SHORT K45E
; REALLY_NUM_STATE
;------ KEYPAD KEYS. MUST TEST NUM LOCK FOR DETERMINATION
K48:
CMP
AL. 14
SPEC I AL CASE FOR M I NUS
JE
K45E
GO TRANSLATE
CMP
AL. 18
SPEC I AL CASE FOR PLUS
JE
K45E
GO TRANSLATE
TEST
BH. LC EO
IS TH I S ONE OF THE NEW KEYS?
JNZ
K49
-
YES. TRANSLATE TO BASE STATE
TEST
BL.NUM_STATE
ARE WE IN NUM LOCK?
JNZ
K50
• TEST FOR SURE-
TEST
BL.LEFT SHIFT+RIGHT SHIFT
;
ARE WE IN SHIFT STATE?
JNZ
K51
-
- ;
IF SH I FTED • REALLY NUM STATE
NOT I N-CORE AREA
TEST FOR F I
- FlO
JUMP IF NOT
YES. GO DO FN KEY PROCESS
NOT A NUMPAD KEY
I SIT THE NEW WT KEY?
JUMP IF NOT
HANDLE WITH REST OF LETTER KEYS
TRANSLATE - SCAN-ORGD
CONVERT OR I GIN
CTL TABLE SCAN
PUT VALUE INTO AH
ZERO ASC I I CODE
I S TH I S A NEW KEY?
NO. GO FILL BUFFER
YES. PUT SPEC I AL MARKER IN AL
TRANSLATE -CHAR
CONVERT OR I GIN
CONVERT THE SCAN CODE TO ASC I I
I S TH I S A NEW KEY?
NO. GO FILL BUFFER
YES. PUT SPEC I AL MARKER IN AH
PUT I T I NTO THE BUFFER
SPEC I AL CASE FOR BASE STATE 5
CONT I NUE I F NOT KEYPAD 5
SPEC I AL ASC I I CODE
BUFFER FILL
BASE CASE TABLE
CONVERT TO PSEUDO SCAN
UPPER CASE PSEUDO SCAN CODES
TRANSLATE_SCAN
NOT-PR I NT-SCREEN
TEST FOR I N-CORE AREA
JUMP IF NOT
I S TH I S THE
"I"
KEY?
NO. JUMP
WAS LAST CODE THE MARKER?
YES. TRANSLATE TO CHARACTER
LENGTH OF SEARCH
POINT TO TABLE OF A-Z CHARS
IS TH I S 'A LETTER KEY?
NO. SYMBOL KEY
; NOT Fl
-
FlO
; TEST FOR NUMPAD KEYS
; JUMP IF NOT
BX. OFFSET K 1 1
SHORT K64
; F I
- FlO COME HERE. TOO
BL. LEFT SH I FT+R I GHT SH I FT ; TEST SH I FT STATE
K49
-
- ; JUMP. LOWERCASE PSEUDO SC' S
AL
CS:K8
AH.AL
AL.O
(lKB FLAG 3. LC EO
K51-
-
-
AL.MC_EO
AL.86
K53
SHORT K45B
AL
CS:K 11
(lKB FLAG 3. LC EO
K51-
-
-
AH.MC EO
SHORT-K51
AL.83
K52
CX.26
DI.OFFSET K30+10
SCASB
K45B
AL.53
K45A
BH.LC EO
K45C -
BL.CAPS STATE
ARE WE IN CAPS_LOCK?
K45D
-
• TEST FOR SURE
BL.LEFT SHIFT+RIGHT SHIFT; ARE WE IN SHIFT STATE?
K45E
-
- ; YES. UPPERCASE
; NO. LOWERCASE
BX. OFFSET K I 0
;
TRANSLATE TO LOWERCASE LETTERS
SHORT K56
; ALMOST-CAPS-STATE
BL.LEFT SHIFT+RIGHT SHIFT; CL ON.
IS SHIFT ON. TOO?
K45C
-
- ; SHIFTED TEMP OUT OF CAPS STATE
BX .OFFSET K I I
;
TRANSLATE TO UPPERCASE LETTERS
SHORT K56
AL.58
K46
AL • EO I
; END OF CURRENT INTERRUPT
020H.AL
;
SO FURTHER THINGS CAN HAPPEN
5H
;
I SSUE PR I NT SCREEN INTERRUPT
(lKB FLAG 3. NOT LC EO+LC E 1 ; ZERO OUT THESE FLAGS
K21-
-
-
-; GO BACK WITHOUT EO I DCCURR I NG
TEST
JZ
CMP
JNE
JMP
CMP
JA
MOV
JMP
CMP
AL.68
JA
K41
JMP
SHORT K53
DEC
XLAT
TEST
JZ
MOV
JMP
DEC
XLAT
MOV
MOV
TEST
JZ
MOV
; - - - - - -
PUT CHARACTER
I NTO BUFFER
;------ MUST BE FII OR F12
CMP
JA
CMP
JNE
TEST
JNZ
K45A:
MOV
MOV
REPNE
JNE
TEST
JNZ
K45B:
TEST
JNZ
K45C:
MOV
JMP
K45D:
TEST
JNZ
K45E:
MOV
K45F:
JMP
; ------ BASE CASE FOR KEYPAD
K49:
CMP
AL.16
JNE
K49A
MOV
AL.OFOh
JMP
K51
K49A:
MOV
BX. OFFSET K 10
JMP
SHORT K64
; ------ TEST FOR KEYS F I
- FlO
K46:
;------ HANDLE THE NUMERIC PAD KEYS
K41:
K64:
K52:
K53:
; ------ TRANSLATE THE CHARACTER
K56:
K44B:
MOV
OUT
INT
AND
JMP
;------ HANDLE THE IN-CORE KEYS
K45:
168
0469 BO 20
169
046B E6 20
110
0460 CD 05
111
046F 80 26 0096 R FC
112
0414 E9 0204 R
113
114
115
116
0411
111
0411 3C 3A
118
0419 11 2C
119
180
041B 3C 35
181
0410 15 05
182
041F F6 C1 02
183
0482 15 14
184
185
0484 B9 001 A
186
0481 BF 0311 R
181
048A F21 AE
188
048C 15 05
189
190
048E F6 C3 40
191
0491
15 OA
192
0493 F6 C3 03
193
0496 15 OA
194
195
0498 BB 05B1 R
196
049B EB 50
191
0490
198
0490 F6 C3 03
199
04AO 15 F6
800
04A2 BB 060F R
801
04A5 EB 46
802
803
804
805
04A1
806
04A 1 3C 44
801
04A9 11 02
808
04AB EB 36
809
810
811
812
813
04AD
814
04AD 3C 53
8 I 5
04AF 11 2C
816
811
8 I 8
04B I 3C 4A
819
04B3 14 ED
820
04B5 3C 4E
821
04B1 14 E9
822
04B9 F6 C1 02
823
04BC 15 OA
824
825
04BE F6 C3 20
826
04C I 15 13
821
04C3 F6 C3 03
828
04C6 15 13
829
830
831
04C8 3C 4C
832
04CA 15 05
833
04CC BO FO
834
04CE EB 3D 90
835
040 I BB 05B1 R
836
0404 EB 26
831
838
839
0406 F6 C3 03
840
0409 15 ED
841
04DB EB C5
842
843
844
845
846
0400
841
0400 3C 56
848
04DF 15 02
849
04E 1 EB BO
850
851
852
853
854
04E3 F6 C3 03
855
04E6 14 EO
856
851
04E8 BB 060F R
858
04EB EB OF
859
860
861
862
04ED
863
04ED FE C8
864
04EF 2E: 01
865
04F I F6 06 0096 R 02
866
04F6 14 15
861
04F8 B4 EO
868
04FA EB 1 I
869
810
811
812
04FC
813
04FC FE C8
814
04FE 2E: 01
815
0500 8A EO
816
0502 BO 00
811
0504 F6 06 0096 R 02
818
0509 14 02
819
050B BO EO
880
881
5-54
KEYBOARD (01/10/86)

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents