IBM PC CONVERTIBLE Technical Reference page 186

Table of Contents

Advertisement

01E5
01E5
B4 OA
01E7
BO 26
01E9
E8 0000
OIEC
B4 OB
OlEE
BO 82
OIFO
E8 0000
DIF3
B4 OC
01F5
E8 0000
01F8
B4 00
OIFA
E8 0000
OlFD
C3
OIFE
01FE
01FE
51
01FF
B9 0258
0202
0202
B4 OA
0204
E8 0000
0207
A8 80
0209
74 05
020B
E2 F5
0200
33 CO
020F
F9
0210
0210
59
0211
C3
0212
0212
INITIALIZE_STATUS
FUNCTION:
INITIALIZE RTC CONTROL AND STATUS REGISTERS
REG A = 976.6 USEC PERIODIC INTERRUPT
32.768 KHZ TIME BASE
REG B = ENABLE SET, 24HR, BCD MODES
DISABLE ALL INTERRUPTS AND DAYLIGHT SAVINGS
READ REG C AND D TO CLEAR STATUS
INPUT:
NONE
OUTPUT:
NONE
REGISTERS MODIFIED:
AX
INITIALIZE_STATUS
PROC
MOV
AH, RTCUP _STAT
MOV
AL, 26H
CALL
PULRTCNMI
NEAR
ADDRESS AND INITIALIZE
; RTCUP_STAT (RegA) TO GIVE
; **INT.=976.6 MICRO SEC.
MOV
AH,RTCMODE
; ADDRESS AND INITIALIZE
MOV
AL,SELCLOCK+SEL24HR ; RTCMODE (RegB):
(=82H)
CALL
PULRTCNMI
* MODES ON ... SET, 24HR, BCD
MOV
CALL
MOV
CALL
RET
AH,RTCINLSTAT
GELRTCNMI
AH,RTCCOND_STAT
GELRTCNMI
INITIALIZLSTATUS
ENDP
UPD_IN_PR
* DSABLE ALL OTH (NO DYLGHT)
GET RTCINLSTAT (RegC)
TO INITIALIZE IT
GET RTCCOND_STAT (RegD)
TO INITIALIZE IT
RETURN TO CALLER
FUNCTION: WAIT FOR RTC CLOCK TO UPDATE TIME.
SET CARRY IF CLK NOT
OPERATING (DOESN'T LEAVE UPDATE MODE AFTER 600 MSEC).
INPUT:
NONE
OUTPUT:
AX = 0
CLOCK NOT UPDATING
CARRY FLAG = 1
CLOCK NOT OPERATING
= 0
CLOCK HAS BEEN UPDATED
REGISTERS MODIFIED:
AX
UPD_IN_PR
PROC
NEAR
PUSH
CX
SAVE CX
MOV
CX ,600
SET LOOP COUNT
UPDATE :
MOV
AH,RTCUP _STAT
ADDRESS AND
CALL
GELRTCNMI
GET RTCUP _STAT (RegA)
TEST
AL,RTCUIP
IF NOT UPDATING (UIP=O)
JZ
UPD_I N_PREND
THEN RETURN
LOOP
UPDATE
ELSE IF CX
<>
0 THEN LOOP
XOR
AX,AX
ELSE CLEAR AX AND
STC
SET CARRY FOR ERROR SIGNAL
UPD_IN_PREND:
POP
CX
RESTORE CX
RET
RETURN TO CALLER
UPD_IN_PR
ENDP
TOD_PROC
ENDP
SUBTTL
SET TIME OF DAY
ROM BIOS 2-161

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents