IBM AT 5170 Technical Reference page 309

Table of Contents

Advertisement

IBM P.rsonsl Computer MACRO As ••",bl.r
VerSlQn 2.00
1-'
KYBO ----- 06/10/65
KEYBOARD BIOS
06-10-85
913
0513 FB
STI
ENABLE INTERRUPTS
914
051489
IAOO
NOV
CX,OIAOOH
LOAD COUNT FOR
10 ms+
915
0511
SD3:
916
0511 F6 06 0091R 30
TEST
OKB_FLAG_2, KB_FE+KB_F A
SEE IF EITHER BIT SET
911
051C 15 00
JNZ
501
IF SET 0 SOMETHING RECEIVED GO PROCESS
918
919
051E E2 F7
LOOP
503
OTHERWISE WAIT
920
0520
SD5:
921
0520 FE C8
DEC
BL
DECREMENT RETRY COUNT
"NZ
922
0522 75 DO
SO.
RETRY TRANSMISSION
923
924
0524 80 OE 0091 R 80
OR
OKS FLAG 20KB ERR
TURN ON TRANSMIT ERROR FLAG
925
0529 E8 07
SHORT SD9
-
RETRIES EXHAUSTED FORGET TRANSMISSION
""P
926
0528
507:
927
052B F6 06 0091 RIO
TEST
OKB_FLAG_2 oKB_FA
SEE
IF THI S I S AN ACKNOWLEDGE
"Z
928
0530 74 EE
505
I F NOT 0 GO RESEND
929
0532
5091
930
0532 59
POP
ex
RESTORE REG I STERS
931
0533 58
POP
BX
932
0534
505
PDP
AX
933
0535 C3
RET
,
RETURN, GOOD TRANSMISSION
934
0536
SND_OATA ENDP
935
93b
931
,
SNO LED
938
;
SNO=:LEOI
939
94.
THIS ROUTINES TURNS ON THE MODE
INDICATORS.
941
942
~~~
-
~~~-;;~
-
-- -
~~;~
- - - - - - -
----- ----- ------
-
-
- - - - --
-
- -- -- -
---- ---------- ­
943
0536
944
0536 FA
-
CLI
TURN OFF INTERRUPTS
945
0537 F6 06 0091 R 40
TEST
OKB FLAG 2,KB PR LED
CHECK FOR t.lOOE
INDICATOR ,UPDATE
946
053C 75 47
.JNZ
SL9-
-
-
-
DON'T UPDATE AGAIN IF UPDATE UNDERWAY
941
948
053E 80 OE 0097 R 40
OR
OKB FLAG 2, KB PR LED
TURN ON UPDATE
I N PROCESS
949
0543 80 20
NOV
AL,EOI
-
- -
END OF INTERRUPT COt.lMAND
950
0545 E6 20
OUT
INTAOO,AL
SEND COMMAND TO
I NTERRUPT CONTROL PORT
951
0547 EB
00
JNP
SHORT SL3
GO SEND MODE
INDICATOR COt.lt.lAND
952
953
0549
SND LEDI:
954
0549 FA
-
CLl
TURN OFF INTERRUPTS
955
054A F6 06 0097 R 40
TEST
OKB FLAG 2,KB PR LED
CHECK FOR MODE
INDICATOR UPDATE
956
054F 75 34
JNZ
DON'T UPDATE AGAIN
IF UPDATE UNDERWAY
SL9-
-
- ­
951
956
0551
80 OE 0097 R 40
OR
~KB_FLAG_2
,KB_PR_LED
TURN ON UPDATE
I N PROCESS
959
0556
SL3:
960
0556 BO ED
MOV
AL,LED Ct.lD
LED CMD BYTE
961
0558 E8 04FA R
CALL
SND_DATA
SEND DATA TO KEYBOARD
962
0558 FA
eLI
963
055C E8
0505 7 R
CALL
t.lAKE LED
GO FORt.I INDICATOR DATA B)'TE
964
055F 80 26 0097 R FB
AND
(IIKB FLAG 2
I
NOT KB LEOS
CLEAR MODE INQICATOR BITS
965
0564 08 06 0097 R
OR
OKB-FLAG-2, AL
-
SAVE
INDICATORS STATES FOR NEXT TIt.lE
966
0568 F6 06 0097 R
050
TEST
;~~=:FLAG=2,KB_ERR
TRANSt.l1 T ERROR DETECTED
967
0560 75 OB
JNZ
IF SO. BYPASS SECOND BYTE TRANSMISSION
9b8
969
056F EB 04FA R
CALL
SND_DATA
SEND DATA TO KEYBOARD
970
0572 FA
eLI
TURN OFF INTERRUPTS
971
0573 F6 06 0097 R 60
TEST
(IIKB FLAG 2,KB ERR
TRANSMIT ERROR DETECTED
972
0576 74 06
JZ
SL7-
-
I F NOT, DON 0 T SEND AN ENA8LE COMMAND
-
973
057A
SL5:
974
057A BO F4
NOV
AL. KB ENABLE
GET KEYBOARD CSA ENABLE COt.lt.lAND
975
057C EB 04FA R
CALL
SND_DATA
SEND DATA TO KEYBOARD
976
057F FA
eLI
TURN OFr INTERRUPTS
977
0580
SL71
978
0580 80 26 0097 R 3F
AND
OKB FLAG 2 o NOT(KB PR LEO+KB ERR)
; TURN OFF MODE INDICATOR
979
0585
SL9:
-
-
-
-
;
UPDATE AND TRANSMIT ERROR FLAG
960
0585 F.B
511
; ENABLE
INTERRUPTS
981
0586 C3
RET
I RETURN TO CALLER
982
0587
SND_LED ENDP
983
984
;
-------
--- --
- - - - - - - - - - - - - -
------ --------- ----
- -
---
- - - - - -
-
-
-- -------- ---­
985
;
MAKE_LED
'Bb
981
THIS ROUTINES FORMS THE DATA BYTE NECESSARY TO TURN ON/OFF
988
THE MODE INDICATORS
989
"0
~~;~-~~D-;~~~---~~;~-----------------------------------------------------
991
0587
992
0567
-
PUSH
ex
;
SAVE CX
993
050505 AO 0017 R
t.lDV
AL.(tKB FLAG
; GET CAPS
&
NUM LOCK
INDICATORS
994
05eB 24 70
~~~
~t:~APS_STATE+NUt.I-STATE+iC~~~~'fS~~~~T;
ISOLATE INDICATORS
995
0~8D
BI
04
996
058F 02 CO
ROL
ALoCL
;
SHIFT BITS OVER TO TURN ON INDICATORS
997
0591 24 07
AND
AL,07H
; MAKE SURE ONLY t.lOOE BITS ON
996
0593 59
POP
CX
999
0594 C3
RET
; RETURN TO CALLER
1000 0595
MAKE_LEO ENOP
1001
;
-
---- -
------
- -
--
- - - - -
--
-- -
---------
-
-----
- - - - - -
-
- - - - - - - -
------ --------
1002
;
SHIP_IT
,003
,
1004
;
THIS ROUTINES HANDLES TRANSMISSION OF COMMAND AND DATA BYTES
1005
TO THE KEYBOARD CONTROLLER.
1006
1007
;~ ~;
-
~ ~
-
;~~~
----
~~;;--
---
- - - -
- -
- -
-
- -
-
- - -
-
-
-----
- -- - - - - - - -- - - - - - - - - -- -- - - ­
10005 0595
1009 0595 50
-
PUSH
AX
SAVE DATA TO SENO
to
I 0
WAIT FOR COt.lt.lAND TO ACCEPTED
101 1
10120596 FA
eLI
DISABLE INTERRUPTS TILL DATA SENT
10130597 28 C9
SUB
CX,CX
CLEAR TIMEOUT COUNTER
1014 0599
SIO:
1015 0599 E4 64
IN
ALoSTATUS PQR:r
READ KYBOARD CONTROLLER STATUS
1016 059B A8 02
TEST
AL, I NPT_BUF_FULL.
CHECK FOR ITS INPUT 8UFrER BUSY
10170590 EO FA
LOOPNZ
510
WA I T FOR COMMAND TO BE ACCEPTED
1018
1019 059F 58
POP
AX
GET DATA TO SEND
1020 05AO E6 64
OUT
STATUS_PORT .AL
SEND TO KEYBOARD CONTROLLER
1021 05A2 FB
5TI
ENABLE INTERRUPTS AGAIN
1022 05A3 C3
RET
RETURN TO CALLER
1023 05A4
SHIP
[T ENDP
1024 05A4
CODE
ENDS
t
025
END
KYBD
5-137

Advertisement

Table of Contents
loading

Table of Contents