|
|
|
@ -132,12 +132,12 @@ DSRTC_BUFSIZ .EQU 7 ; 7 BYTE BUFFER (YYMMDDHHMMSSWW) |
|
|
|
; |
|
|
|
DSRTC_PREINIT: |
|
|
|
; |
|
|
|
; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER |
|
|
|
; TO THEIR QUIESENT STATE |
|
|
|
LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL |
|
|
|
AND ~DSRTC_MASK ; CLEAR OUR BITS |
|
|
|
OR DSRTC_IDLE ; SET OUR IDLE BITS |
|
|
|
LD (DSRTC_OPRVAL),A ; SAVE IT |
|
|
|
;; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER |
|
|
|
;; TO THEIR QUIESENT STATE |
|
|
|
;LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL |
|
|
|
;AND ~DSRTC_MASK ; CLEAR OUR BITS |
|
|
|
;OR DSRTC_IDLE ; SET OUR IDLE BITS |
|
|
|
;LD (DSRTC_OPRVAL),A ; SAVE IT |
|
|
|
; |
|
|
|
CALL DSRTC_DETECT ; HARDWARE DETECTION |
|
|
|
LD (DSRTC_STAT),A ; SAVE RESULT |
|
|
|
@ -478,6 +478,7 @@ DSRTC_TSTCLK: |
|
|
|
; E=VALUE (OUTPUT) |
|
|
|
; |
|
|
|
DSRTC_RDBYT: |
|
|
|
CALL DSRTC_START |
|
|
|
LD E,C |
|
|
|
CALL DSRTC_CMD |
|
|
|
CALL DSRTC_GET |
|
|
|
@ -489,6 +490,7 @@ DSRTC_RDBYT: |
|
|
|
; E=VALUE |
|
|
|
; |
|
|
|
DSRTC_WRBYT: |
|
|
|
CALL DSRTC_START |
|
|
|
PUSH DE ; SAVE VALUE TO WRITE |
|
|
|
LD E,C ; CMD TO E |
|
|
|
CALL DSRTC_CMD |
|
|
|
@ -525,6 +527,7 @@ DSRTC_WRBYTWP: |
|
|
|
; BURST READ CLOCK DATA INTO BUFFER AT HL |
|
|
|
; |
|
|
|
DSRTC_RDCLK: |
|
|
|
CALL DSRTC_START |
|
|
|
LD E,$BF ; COMMAND = $BF TO BURST READ CLOCK |
|
|
|
CALL DSRTC_CMD ; SEND COMMAND TO RTC |
|
|
|
LD B,DSRTC_BUFSIZ ; B IS LOOP COUNTER |
|
|
|
@ -540,6 +543,7 @@ DSRTC_RDCLK1: |
|
|
|
; BURST WRITE CLOCK DATA FROM BUFFER AT HL |
|
|
|
; |
|
|
|
DSRTC_WRCLK: |
|
|
|
CALL DSRTC_START |
|
|
|
LD E,$8E ; COMMAND = $8E TO WRITE CONTROL REGISTER |
|
|
|
CALL DSRTC_CMD ; SEND COMMAND |
|
|
|
LD E,$00 ; $00 = UNPROTECT |
|
|
|
@ -668,6 +672,25 @@ DSRTC_GET1: |
|
|
|
CALL DLY1 ; DELAY 27 T-STATES |
|
|
|
DJNZ DSRTC_GET1 ; LOOP IF NOT DONE (13) |
|
|
|
RET |
|
|
|
|
|
|
|
|
|
|
|
; |
|
|
|
; START A COMMAND SEQUENCE |
|
|
|
; INITIATES A COMMAND SEQUENCE |
|
|
|
; DOES NOT DESTROY ANY REGISTERS. |
|
|
|
; |
|
|
|
; 1) CAPTURE RTC LATCH BITS |
|
|
|
; |
|
|
|
DSRTC_START: |
|
|
|
; SET RELEVANT BITS IN RTC LATCH SHADOW REGISTER |
|
|
|
; TO THEIR QUIESENT STATE |
|
|
|
PUSH AF |
|
|
|
LD A,(DSRTC_OPRVAL) ; GET CURRENT SHADOW REG VAL |
|
|
|
AND ~DSRTC_MASK ; CLEAR OUR BITS |
|
|
|
OR DSRTC_IDLE ; SET OUR IDLE BITS |
|
|
|
LD (DSRTC_OPRVAL),A ; SAVE IT |
|
|
|
POP AF |
|
|
|
RET |
|
|
|
; |
|
|
|
; COMPLETE A COMMAND SEQUENCE |
|
|
|
; FINISHES UP A COMMAND SEQUENCE. |
|
|
|
@ -676,8 +699,10 @@ DSRTC_GET1: |
|
|
|
; 1) SET ALL LINES BACK TO QUIESCENT STATE |
|
|
|
; |
|
|
|
DSRTC_END: |
|
|
|
;PUSH AF |
|
|
|
LD A,(DSRTC_OPRVAL) ; INIT A WITH QUIESCENT STATE |
|
|
|
OUT (DSRTC_IO),A ; WRITE TO PORT |
|
|
|
;POP AF |
|
|
|
RET ; RETURN |
|
|
|
; |
|
|
|
; WORKING VARIABLES |
|
|
|
|