IBM AT 5170 Technical Reference page 301

Table of Contents

Advertisement

IB'" Pe,..sonsl Computer "'ACRO A••• mbler
VerSion 2.00
I-I
KYBo -----
06/10/65
KEYBOARD BIOS
06-10-65
1
PAGE
116,121
2
TITLE KYBD -----
06/10/85
KEYBOARD BIOS
3
6
0000
.LI ST
CODE
SEGMENT BYTE PU8L, C
PUBLIC
KI6
1
PUBL I C
KEYBOARD
10
I
8
PUBLIC
K8
INT
-
9
PUBLIC
SNri_DATA
10
11
EXTRN
BEEP: NEAR
12
EXTRN
DD5;NEAR
13
EXTRN
5T ART
I: NEAR
EXTRN
KIO:8YTE
"
1 5
EXTRN
KII :BYTE
16
EXTRN
KI2:BYTE
11
EXTRN
KI3:BYTE
18
EXTRN
KI4:BYTE
19
EXTRN
KI5:BYTE
20
EXTRN
K6:BYTE
21
EXTRN
K6L:ABS
22
EXTRN
K7zBYTE
23
EXTRN
K8 :BYTE
2.
EXTRN
K9JBYTE
25
26
I
NT
16
H - ­ - - - - ----------------­ ------------ ­ - - - - --------­ - - ----­ --------­
21
KEYBOARD I
/0
28
THESE ROUT I NES PROV
I
DE READ KEYBOARD SUPPORT
29
INPUT
30
31
(AH)= OOH
READ THE NEXT ASCI I CHARACTER ENTERED FRO'" THE KEYBOARD,
RETURN THE RESULT
IN
(ALI,
SCAN CODE
IN
(AH).
32
IAH)_ OIH
SET THE ZERO FLAG TO INDICATE
IF
AN ASCII
CHARACTER IS
33
A VA I LABLE
TO
BE READ FRO'" THE KEYBOARD 8UFFER.
3'
35
36
(ZF)=
I
- ­
NO CODE AVAILABLE
(ZF)= 0 -­ CODE 15 AVAILABLE
IAX)= CHARACTER
IF
(ZF)=
A.
THE NEXT CHARACTER IN THE BUFFER TO BE READ
IS
31
38
{AH)
=
02H
IN (AX),
AND THE ENTRY REMAINS IN THE BUFFER.
RETURN THE CURRENT SHIFT STATUS
IN
tAL)
REGI STER
39
THE BIT SETTINGS FOR THIS CODE ARE
INDICATED
IN
THE
'0
.,
.2
.3
..
OUTPUT
THE EQUATES FOR 4tKB_FLAG
AS NOTED ABOVE,
ONLY
lAX)
AND FLAGS CHANGED
J
ALL REGISTERS RETAINED
1 - ­ - - - - - - - ­ - -----­ - - - - -­ - - - ­ - -­ ----­ - - - - - - - ­ - - - - -­ - ­ - - - --­ - - ­ - -­ -:-----­ - - - - - - ­ - -­
'5
ASSUME
CSICODE,DS:DATA
'6
.,
.8
0000
0000 F8
KEYBOARD 10
I
511 ­
PROC
FAR
; »>
ENTRY PO I NT FOR ORG OE82EH
I NTERRUPTS BACK ON
.9
000 I
IE
PUSH
OS
,
SAVE CURRENT OS
50
0002 53
PUSH
ex
;
SAVE 8X TEMPORARILY
51
0003 E8 0000 E
CALL
DDS
I ESTABLISH POINTER TO DATA REGION
52
53
0006 OA E4
0006 74 06
OR
JZ
AH,AH
• Ie
; CHECK FOR
IAH)= QOH
;
ASC I I READ
5.
OOOA FE CC
DEC
AH
; CHECK-FOR
(AHI =
a
IH
55
56
OOOC 74 -45
OOOE FE CC
JZ
DEC
'2
AH
;
;
ASC I I
STATUS
CHECK-FOR
(AH)
=
02H
51
0010 1-467
JZ
.3
;
SHIFT STATUS
.
.,.........,
58
59
00 12 58
00 13
IF
POP
POP
ex
OS
;
RECOVER REGISTER
60
00 14 CF
IRET
INVALID COMMAND EXIT
61
62
READ THE KEY TO FIGURE OUT WHAT TO DO
63
6'
00 1 5 88
IE OOIA R
K 19:
MOV
BX ,oBUFFER HEAO
GET PO I NTER TO HEAD OF BUFFER
65
00 19 36
IE OOIC R
CMP
6X.PBUFFER:TAIL
TEST END OF BUFFER
66
61
0010
75
07
JNE
"C
IF ANYTHING
IN BUFFER SKIP INTERRUPT
.8
69
10
OOIF 86 9002
0022 CD
15
0024
KI;
MOV
INT
AX,09002H
"H
"'DVE
IN WAIT CODE
&
TYPE
PERFORM OTHER FUNCT I ON
ASCI I READ
11
002-4 FB
ST I
INTERRUPTS BACK ON DURING LOOP
12
0025 90
NOP
ALLOW AN INTERRUPT TO OCCUR
13
0026 FA
KIe:
CLI
INTERRUPTS BACK OFF
"
0021
8e
IE OOIA R
MDV
BX.oBUFFER HEAD
GET PO I NTER TO HEAD OF SUFFER
15
0026 38 IE OOIC R
CMP
BX ,OBUFFER:TA I L
TEST END OF BUFFER
16
002F 53
PUSH
ex
SAVE ADDRESS
11
0030 9C
PUSHF
SAVE FLAG
18
0031
£8 0587 R
CALL
MAKE LED
GO GET MODE
INDICATOR DATA BYTE
19
80
81
82
003-4 SA IE 0097 R
0038 32 08
003A 80 E3 07
0030 1-4 04
MOV
XOR
AND
JZ
BL,.RB_FLAG_2
BL,AL
BL,KB_LEDS
.IA
GET PREVIOUS BITS
SEE
IF ANY- DIFFERENT
I SOLATE INDICATOR BITS
I F NO CHANGE BYPASS UPDATE
83
8.
003F E8 0549 R
CALL
SND_LEDI
GO TURN ON MODE
INDICATORS
85
0042 FA
CLI
DI SABLE INTERRUPTS
8.
0043 90
KIA;
POPF
RESTORE FLAGS
81
0044 5B
POP
ex
RESTORE ADDRESS
88
0045 74 DO
JZ
XI
LOOP UNT I L SONETH I NG
I N SUFFER
89
90
91
92
00-47 88 07
00-49 E8 007F R
00-4C 89 IE OOIA R
MOV
CALL
MOV
AX,IBX1
••
IIIBUFFER_HEAD,BX
• GET SCAN CODE AND A SC I I CODE
"'OVE POINTER TO NEXT POSITION
STORE VALUE
IN VARIABLE
93
9.
0050 58
POP
ex
RECOVER REG I S TER
95
0051
IF
PDP
OS
RECOVER SEGMEt-lT
96
0052 CF
IRET
RETURN TO CALLER
91
98
ASCI I
STATUS
99
100
0053
K2:
101
0053 FA
CLI
INTERRUPT S OFF
102
103
0054 88 IE 001A R
0058 38 IE OOIC R
MOv
CMP
BX,OBUFFER_HEAD
BX."BUFFER TAIL
GET HEAD POINTER
I F EQUAL
(Z= I)
THEN NDTH I NG THERE
10.
OOSC 88 07
MDV
AX. (SX1
-
105
005E 9C
PUSHF
SAVE FLAGS
106
005F 50
PUSH
AX
SAVE CODE
101
0060 E8 0587 R
CALL
MAKE LEO
GO GET "'ODE
INDICATOR DATA BYTE
108
0063 8A IE 0097 R
MOV
BL.4tKB_FLAG_2
GET PREV 10US BITS
109
0067 32 08
XOR
8L,AL
SEE
I F ANY 0 I FFERENT
110
111
0069 80 E3 07
006C 74 03
AND
JZ
SL ,KB_LEOS
5.2
ISOLATE INDICATOR BITS
IF NO CHANGE BYPASS UPDATE
112
113
II.
006E E8 0549 R
0071
.8
SK2:
CALL
POP
SNO_LEOI
AX
GO TURN ON MODE
RE S TORE
COD~
INDICATORS
KYBO
5-129

Advertisement

Table of Contents
loading

Table of Contents