UPDATE
MODE
REGISTER
IN
RTC
080C
88
C3
BALS02 :
MOV
AX,
BX
RESTORE
MODE
AD
DR
AND
DATA
080E
E8
07C8
CALL
PULRTC_REG
0811
E4
61
IN AL,NMLCNTL
0813
24
F7
AND
AL,NOT
DIS~LARM
ENABLE
RTC
INTERRUPT
0815
E6
61
OUT
NMLCNTL
,AL
0817
IE
PUSH
OS
0818
E8
085C
CALL
DDS
SET
OS
TO
DATA
SEGMENT
ASSUME
DS:DATA
081B
80
OE
0016
R
20
OR
BIOS_STATUS,
KYBD~CTIVE
;
FORCE
RELOAD
OF
COUNTERS
0820
IF
POP
DS
0821
C3
RET
0822
BALSALSETUP
ENDP
Keyboard
I/O
Entry Point
(KEYBOARD_IO)
KEYBOARD
1(0
ENTRY
POINT
;
*************************************
;ORG
OE82
EH
082E
ORG
0082EH
=
082E
KEYBOARD_IO
EQU
082E
E9
0000
JMP
KYBD_IO
Keyboard Reset (KYBD_RESET)
0831
0831
IE
0832
07
0833
2B
CO
0835
BF
0017
R
0838
B9
0027
SUBTTL
KYBD_RESET
;
*********************************************************************
ROUTINE-NAME:
KYBD_RESET
FUNCTION:
THIS
ROUTINE
INITIALIZES
THE
KEYBOARD
CONTROL
AREA
TO
A
NO
KEY
CONDITION.
ENTRY
CONDITIONS:
PURPOSE
OF
ENTRY:
PERFORM
KEYBOARD
DATA
AREA
INITIALIZATION
DS:DATA,
NMI
MUST
BE
DISABLED
INPUT
CONDITIONS:
RESTRI
CTI
ONS:
KEYBOARD
NMI' S
MUST
BE
DISABLED
EXIT
CONDITIONS:
NORMAL
EXIT
CONDITIONS:
KEYBOARD
DATA
AREA
INITIALIZED
ERROR
EXIT
CONDITIONS:
NONE
REGISTERS
MODIFIED: ES,SI ,DI ,AX,CX
;
*********************************************************************
KYBD_RESET
PROC
NEAR
ASSUME
ES:DATA,DS:DATA
PUSH
DS
POP
ES
CLEAR
INTERRUPT
AND
INTERRUPT
16
BUFFER
AND
CONTROL
FLAGS
SUB
AX,AX
MOV
DI,OFFSET
KB_AREAl
CLEAR
KEYBOARD
AREA
1
MOV
CX,
KB~REALLNG
2-210 ROM BIOS