0744
E6
75
0746
0746
C3
0747
0747
0747
0749
074B
074D
074F
0750
0750
0750
0752
0754
0756
0758
0759
0759
0759
075B
075D
075F
0761
0762
0762
0762
0765
0767
0769
076B
076D
076E
86
EO
E6
70
86
C4
E4
71
C3
86
EO
E6
70
86
C4
E6
71
C3
E4
61
8A
EO
OC
04
E6
61
C3
80
E4
04
E4
61
24
FB
OA
C4
E6
61
C3
50
BO
07
E6
72
EB
00
OC
20
OUT
LCD_DATA,AL
LOW
BEND
:
RET
LOW_BALCHK
ENDP
ISSUE
LCDC
CONTROL
REG
COMMAND
RETURN
TO
CALLER
;
*****************************************************
;
GET
RTC
REGISTER
WHEN
ON
NMI
LEVEL
;
INPUT
AH=
REGISTER
#
OUTPUT
AL
=
REGISTER
DATA
;
*****************************************************
GELRTCNMI
PROC
NEAR
XCHG
AH,AL
OUT
RTCR_PORT
,AL
OUTPUT
REGISTER
#
XCHG
AL
,AH
IN
AL,
RTCD_PORT
GET
DATA
RET
GELRTCNMI
ENDP
;
*****************************************************
;
PUT
RTC
REGISTER
WHEN
ON
NMI
LEVEL
;
INPUT
AH=
REGISTER
#,
AL
=
REGISTER
DATA
OUTPUT:
RTC
RAM
MODIFIED
;
*****************************************************
PULRTCNMI
PROC
NEAR
XCHG
AH
,AL
OUT
RTCR_PORT
,AL
XCHG
AL
,AH
OUT
RTCD_PORT,
AL
RET
PULRTCNMI
ENDP
;
**********************************
;
FORCE
SPEAKER
ENABLE
ON
;
ON
EXIT
AH
HAS
OLD
SPEAKER
CONDITION
;
**********************************
SPKR_ON
PROC
NEAR
IN
AL,NMLCNTL
FORCE
SPEAKER
ON
MOV
AH,AL
OR
AL,
EN_SPKR
OUT
NMLCNTL,AL
RET
SPKR_ON
ENDP
;
**********************************
;
RESTORE
SPEAKER
TO
PREVIOUS
STATE
;
ON
INPUT
AH
HAS
OLD
SPEAKER
CONDITION
;
**********************************
SPKfLRESTORE
PROC
NEAR
AND
AH,
EN_SPKR
IN AL,NMLCNTL
RESTORE
SPEAKER
CONTROL
AND
AL,
NOT
EN_SPKR
OR
AL,AH
OUT
NMLCNTL,AL
RET
SPKR_RESTORE
ENDP
;
*******************************************
NMLCYCLE:
THIS
CODE
DISABLES
AND
RE-ENABLES
THE
NMI
BEFORE
RESTORING
THE
INTERRUPT
FLAGS
TO
THEIR
PREVIOUS
STATE.
,
ALL
REGISTERS
PRESERVED
EXCEPT
FLAGS
;
********************************************
NMLCYCLE
PROC
NEAR
PUSH
AX
;
MOV
AL, D I
SA
BL
CSL
E
EP+CLOCICRUN
OUT
CLOCICCTL
,AL
JMP
$+2
DELAY
DISABLE
GLOBAL
NMI
OR
AL,
GLOBAL_NMI
RE-ENABLE
NMI' S
076E
076E
076F
0771
0773
0775
0777
077C
077E
077F
077F
0781
0782
0783
F7
46
16
0200
74
01
TEST
FLGSAVE
[BP],
LFLAG
JZ
NMLCI
CHECK
FOR
INTERRUPTS
ON
I F
NOT
THEN
DON'T
ENABLE
ALLOW
I
NTERRUPTS
AFTER
FB
E6
72
58
C3
STI
NMLCI
:
OUT
POP
RET
CLOCICCTL
,AL
AX
NMLCYCLE
ENDP
ENABLE
NMI
INSTRUCTION
2-50 ROM BIOS