LINE
SOURCE
(BIOS FOR THE
IBM PERSONAL COMPUTER
xn
11/08/82
1830
K
12
UC TABLE SCAN
1831
LABEL
BYTE
1832
DB
84,85,86,87,88,89,90
1833
DB
91,92,93
1834
K
13
AL T TABLE SCAN
1835
LABEL
BYTE
1836
DB
104,105,106,107,108
1837
DB
109, I 10, I 1 1 , I 12, 1 13
1838
K
14
NUM STATE TABLE
1839
LABEL
BYTE
1840
DB
• 789-456+ 1230 ••
1841
K
15
BASE CASE TABLE
1842
LABEL
BYTE
1843
DB
71,72,73,-1,75,-1,77
; ----- TEST FOR OVERRUN SCAN CODE FROM KEYBOARD
5-133
I F SCROLL SH I FT OR ABOVE,
TOGGLE KEY
TURN ON SHIFT BIT
I NTERRUPT_RETURN
ALLOW FURTHER
INTERRUPTS
TEST SHIFT
TURN-OFF THE BREAK BIT
I S TH I S AN OVERRUN CHAR
NO,
TEST FOR SH I FT KEY
BUFFER _FULL_BEEP
FORWARD 0 I RECT I ON
GET BACK OR I G I NAL CONTROL
KB HAS BEEN RESET
RECOVER SCAN CODE
SAVE SCAN CODE
IN AH ALSO
READ
I N THE CHARACTER
SAVE IT
GET THE CONTROL PORT
SAVE VALUE
RESET BIT FOR KEYBOARD
ADJUST PTR TO SCAN CODE MTCH
GET MASK
INTO AH
TEST FOR BREAK KEY
BREAK_ SH I FT_FOUND
RECOVER SCAN. CODE
JUMP IF MATCH FOUND
I F NO MATCH,
THEN SH I FT NOT FOUND
ESTABLISH ADDRESS OF SHIFT TABLE
SH I FT KEY TABLE
LENGTH
LOOK THROUGH THE TABLE FOR A MATCH
- 1 ,79,80,81 ,82,83
o
"7EH, - 1 , •
I
ZXCVBNM<>? • , - 1 ,0, - 1 "
"
- 1
DB
AL,OFFH
K
16
K62
01,
OFFSET K6+ 1
AH,CS:K7[DI]
AL,80H
K23
DB
AH, SCROLL SH I FT
K 18
-
AL,AH
K 17
K25
DDS
AL,KB DATA
AX
-
AL,KB CTL
AH,AL-
AL,80H
KB CTL,AL
AH-;AL
KB CTL,AL
AX-
AH,AL
AL,07FH
CS
ES
01,
OFFSET K6
CX ,K6L
SCASB
KB FLAG,AH
K26
OE987H
FAR
AX
BX
CX
OX
SI
01
OS
ES
CMP
JAE
CMP
JNZ
JMP
OR
JMP
SUB
MOV
TEST
JNZ
MOV
JE
JMP
AND
PUSH
POP
MOV
MOV
REPNE
PC-XT System BIOS (11/08/82)
SH I FT KEY FOUND
;----- PLAIN SHIFT KEY,
SET SHIFT ON
;----- TEST FOR SHIFT KEYS
SH I FT MAKE FOUND, DETERM I NE SET OR TOGGLE
; - - - - -
KEYBOARD
I NTERRUPT ROUT I NE
ORG
KB_I NT
PROC
STI
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
PUSH
CLD
CALL
IN
PUSH
IN
MOV
OR
OUT
XCHG
OUT
POP
MOV
K
16:
K
17:
1829
1844
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
LOC OBJECT
E969
E969 37383920343536
2B313233302E
E95F
E95F 68
E960 69
E961
6A
E962 6B
E963 6C
E964 60
E965 6E
E966 6F
E967 70
E968 71
E955
E955 54
E956 55
E957 56
E958 57
E959 58
E95A 59
E95B 5A
E95C 5B
E95D 5C
E95E 50
E976
E976 47
E977 48
E978 49
E979 FF
E97A 4B
E97B FF
E97C 40
E97D FF
E97E 4F
E97F 50
E980 51
E981
52
E982 53
4B4C3A22
E943 7E
E944 FF
E945 7C5A584356424E
4D3C3E3F
E950 FF
E951
00
E952 FF
E953 20
E954 FF
E9CD 80FC 10
E9DO 7307
E987
E987
E987 FB
E988 50
E989 53
E98A 51
E98B 52
E98C 56
E98D 57
E98E 1E
E98F 06
E990 FC
E991
E8C510
E994 E460
E996 50
E997 E461
E999 8AEO
E99B OC80
E99D E661
E99F 86EO
E9A 1 E661
E9A3 58
E9A4 8AEO
E9AD
E9AD 247F
E9AF OE
E9BO 07
E9B1
BF7EE8
E9B4 B90800
E9B7 F2
E9B8 AE
E9B9 8AC4
E9BB 7403
E9BD E98500
E9A6 3CFF
E9A8 7503
E9AA E97A02
E9CO 81 EF7FE8
E9C4 2E8AA586E8
E9C9 A880
E9CB 7551
E9D2 08261700
E9D6 E98000