IBM AT 5170 Technical Reference page 308

Table of Contents

Advertisement

-
-
IBM Personal Computer MACRO Assembler
Ver5,on 2.00
KYBO ----- 06/10185
KEYBOARD BIOS
800
;
-----
TRANSLATE THE CHARACTER
8"
'"
802
0486
K5b:
TRANSLATE-CHAR
803
0486 FE CB
DEC
AL
CONVERT ORIGIN
804
0488 2E
=
01
XLAT
CS:K
I I
CONVERT THE SCAN CODE TO ASC I I
80S
806
;-----
PUT CHARACTER
I NTO BUFFER
801
808
048A
K571
BUFFER-F
I
LL
809
048A 3C FF
eMP
AL,-1
Is
THIS AN IGNORE CHAR
810
048C 14 IF
eE
K59
YES. DO NOTH I NG WITH
IT
81 I
04BE 80 FC FF
CMP
AH,-I
LOOK FOR -I
PSEUDO SCAN
812
0491
14 IA
eE
K59
NEAR_l NTERRUPT _RETURN
813
81'
HANDLE THE CAPS LOCK PROBLEM
815
8 I 6
0493
K58 :
BUFFER-F I LL -NOTES T
8110493F6060017R40
TEST
a.KB FLAG,CAPS STATE
ARE WE
IN CAPS LOCK STATE
818
0498 14 20
ez
K6'-
-
SK I P IF NOT
8"
820
IN CAPS LOCK STATE
821
822
049A F6 06 0011 R 03
TEST
.KB FLAG,LEFT SHIFT+RIGHT SHIFT; TEST FOR SHIFT STATE
823
049F 14 OF
.JZ
K60-
;-IF NOT SHIFT,
CONVERT LOWER TO UPPER
82.
825
CONVERT ANY UPPER CASE TO LOWER CASE
826
827
04AI
3C 41
CMP
AL, 'A'
FIND OUT
IF ALPHABET 1 C
828
04A3 12 15
eB
K61
NOT CAPS STATE
829
04A5 3C 5A
CMP
AL, 'Z'
830
04A1 1711
JA
K61
NOT CAPS STATE
B31
04A9 04 20
ADD
AL,'
01'-
'A'
CONVERT TO LOwER CASE
832
04AB EB 00
JMP
SHORT K61
NOT_CAPS
-
STATE
833
834
04AD
K59:
NEAR-I NTERRUPT-RETURN
835
04AD E9 02EE R
eMP
K26
INTERRUPT RETURN
836
-
831
; -----
CONVERT ANY LOWER CASE TO UPPER CASE
838
B39
04BO
K60:
LOWER-TO-UPPER
B40
04BO
61
CMP
AL,' a'
FIND OUT IF ALPHABETIC
841
04B2 12 06
JB
K61
NOT_CAPS_STATE
842
04B4 3C 1 A
CMP
AL,'
2 '
B43
04B6 11 02
JA
K61
NOT CAPS STATE
B44
04BB 2C 20
SUB
AL,' a' - 'A'
CONVERT TO UPPER CASE
8.5
846
04BA
Kbl,
NOT-CAPS-STATE
847
04BA BB
IE OOIC R
~OV
BX ••BUFFER_TAl L
GET THE END PO I NTER TO THE 8UFFER
848
04BE BB F3
MOV
SI,BX
SAVE THE VALUE
B49
04CO E8 001F R
CALL
K'
ADVANCE THE TAl L
B50
04C33B
IE OOIA
R
CMP
BX, .BUFFER_HEAD
HAS THE BUFFER WRAPPED AROUND
B51
04C1 14 22
eE
K62
BUFFER FULL BEEP
852
04C9 89 04
MOV
(si)
,AX
STORE THE VALUE
B53
04CB 69 IE OOIC
R
MOV
.BUFFER _TAIL,8X
MOVE THE PO I NTER UP
854
04CF FA
CL I
TURN OFF
INTERRUPTS
855
0400 BO 20
MOV
AL,EOI
END OF I NTERRUPT COMMAND
856
0402 E6 20
OUT
INTAOO,AL
SEND COMMAND TO INTERRUPT CONTROL PORT
851
0404 BO AE
MOV
AL,ENA_KBD
I NSURE KEYBOARD I S ENABLED
858
0406 EB 0595 R
CALL
SHIP
IT
EXECUTE ENABLE
859
0409 86 9102
MOV
AX,09102H
MOVE
I N POST CODE
&
TYPE
860
04DC CD
15
I NT
ISH
PERFORM OTHER FUNCT! ON
861
04DE E9 02F8 R
eMP
K27A
I NTERRUPT
~RETURN
862
863
86.
TRANSLATE SCAN FOR PSEUDO SCAN CODES
865
666
04EI
TRANSLATE-SCAN
861
04EI
2C 3B
SUB
CONVERT OR I GIN TO FUNCT I ON KEYS
666
04E3
Kb4:
TRANSLATE- SCAN-ORGD
869
04E3 2E: 01
XLAT
CS:K9
CTL TABLE SCAN
870
04E5 8A EO
MOV
AH,AL
PUT VALUE INTO AH
871
04E1 BO 00
MOV
AL,O
ZERO ASC
J
I CODE
872
04E9 EB 9F
JMP
K51
PUT I T I NTO THE BUFFER
813
814
04EB
KB_INT_I
ENDP
815
816
04EB
K62:
811
04EB BO 20
MOV
AL,EOI
ENABLE
I NTERRUPT CONTROLLER CH I P
818
04EO E6 20
OUT
INTAOO ,AL
819
04EF B9 02A6
~OV
CX,678
DIVISOR FOR 1760 HZ
880
04F2 B3 04
MOV
BL,4
SHORT BEEP COUNT 11/16 +
1/64 DELAY)
881
04F4 E8 0000 E
CALL
BEEP
GO TO COMMON BEEP HANDLER
882
04F1 E9 02F3 R
JMP
K21
EXIT
883
88.
1- - - ----------­
885
SND_DATA
886
881
THIS ROUTINES HANDLES TRANSMISSION OF COMMAND AND DATA BYTES
888
TO THE KEYBOARD AND RECE I PT OF ACKNOWLEDGEMENTS.
I T ALSO
88'
HANDLES ANY RETR I ES
IF REQU I RED
890
891
892
893
04FA
SND DATA PROC
NEAR
894
04FA 50
~
PUSH
AX
SAVE REGISTERS
895
04FB 53
PUSH
BX
896
04FC 51
PUSH
CX
891
04FD 8A F8
BH,AL
SAVE TRANSMITTED BYTE FOR RETRIES
898
04FF B3 03
BL,3
LOAD RETRY COUNT
899
0501
SDO:
900
050 I FA
CLI
;
DISABLE
INTERRUPTS
90 I
0502 80 26 0091
R
CF
AND
<PKB_FLAG_2,NOT
lKB_FE+KB_FAI
:
CLEAR ACK AND RESEND FLAGS
902
903
WA I T FOR ANY PEND I NG COMMAND TO BE ACCEPTED
90.
')05
0501 28 C9
SUB
cX,ex
MAXIMUM WAIT COUNT
906
0509
501 :
901
0509 E4 64
IN
AL,STATUS PORT
READ KEYBOARD PROCESSOR STATUS PORT
908
0508 A8 02
TEST
AL, I NPT BUF FULL
CHECK FOR ANY PEND I NG COMMAND
909
0500 EO FA
LOOPNZ
SO I
-
-
WA I T FOR COMMAND TO BE ACCEPTED
910
911
050F 8A C1
MOV
AL,BH
REESTABLISH BYTE TO TRANSMIT
912
0511
E6 60
OUT
PORT_A,AL
SEND BYTE
5-136
KYBD

Advertisement

Table of Contents
loading

Table of Contents