|
|
|
@ -20,26 +20,26 @@ M6242RTC_BUFSIZ .EQU 6 ; SIX BYTE BUFFER (YYMMDDHHMMSS) |
|
|
|
; a:filedate |
|
|
|
|
|
|
|
|
|
|
|
REG_1SEC .EQU $00 |
|
|
|
REG_10SEC .EQU $01 |
|
|
|
REG_1MIN .EQU $02 |
|
|
|
REG_10MIN .EQU $03 |
|
|
|
REG_1HR .EQU $04 |
|
|
|
REG_10HR .EQU $05 |
|
|
|
REG_1DAY .EQU $06 |
|
|
|
REG_10DAY .EQU $07 |
|
|
|
REG_1MNTH .EQU $08 |
|
|
|
REG_10MNTH .EQU $09 |
|
|
|
REG_1YEAR .EQU $0A |
|
|
|
REG_10YEAR .EQU $0B |
|
|
|
REG_DAYWEEK .EQU $0C ; NOT USED BY THIS DRIVER |
|
|
|
REG_CONTROL1 .EQU $0D |
|
|
|
REG_CONTROL2 .EQU $0E |
|
|
|
REG_CONTROL3 .EQU $0F |
|
|
|
M6242RTC_REG_1SEC .EQU $00 |
|
|
|
M6242RTC_REG_10SEC .EQU $01 |
|
|
|
M6242RTC_REG_1MIN .EQU $02 |
|
|
|
M6242RTC_REG_10MIN .EQU $03 |
|
|
|
M6242RTC_REG_1HR .EQU $04 |
|
|
|
M6242RTC_REG_10HR .EQU $05 |
|
|
|
M6242RTC_REG_1DAY .EQU $06 |
|
|
|
M6242RTC_REG_10DAY .EQU $07 |
|
|
|
M6242RTC_REG_1MNTH .EQU $08 |
|
|
|
M6242RTC_REG_10MNTH .EQU $09 |
|
|
|
M6242RTC_REG_1YEAR .EQU $0A |
|
|
|
M6242RTC_REG_10YEAR .EQU $0B |
|
|
|
M6242RTC_REG_DAYWEEK .EQU $0C ; NOT USED BY THIS DRIVER |
|
|
|
M6242RTC_REG_CONTROL1 .EQU $0D |
|
|
|
M6242RTC_REG_CONTROL2 .EQU $0E |
|
|
|
M6242RTC_REG_CONTROL3 .EQU $0F |
|
|
|
|
|
|
|
.ECHO "M6242: IO=" |
|
|
|
.ECHO M6242RTC_BASE |
|
|
|
.ECHO "\n" |
|
|
|
DEVECHO "M6242RTC: IO=" |
|
|
|
DEVECHO M6242RTC_BASE |
|
|
|
DEVECHO "\n" |
|
|
|
|
|
|
|
M6242RTC_INIT: |
|
|
|
LD A, (RTC_DISPACT) ; RTC DISPATCHER ALREADY SET? |
|
|
|
@ -65,15 +65,15 @@ M6242RTC_INIT: |
|
|
|
M6242RTC_INIT1: |
|
|
|
; ENSURE DEVICE IS RESET AND NOT IN TEST MODE |
|
|
|
LD A, 05h ; TURN OFF ALL TEST MODE BITS, SET 24 HOUR |
|
|
|
OUT (REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
LD A, 05h ; TURN OFF ALL TEST MODE BITS, SET 24 HOUR |
|
|
|
OUT (REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
LD A, 04h ; TURN OFF ALL TEST MODE BITS, SET 24 HOUR |
|
|
|
OUT (REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
|
|
|
|
LD A, 00h ; LET CLOCK RUN |
|
|
|
OUT (REG_CONTROL1 + M6242RTC_BASE), A |
|
|
|
OUT (REG_CONTROL2 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL1 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL2 + M6242RTC_BASE), A |
|
|
|
|
|
|
|
; DISPLAY CURRENT TIME |
|
|
|
LD HL, M6242RTC_BCDBUF ; POINT TO BCD BUF |
|
|
|
@ -90,18 +90,18 @@ M6242RTC_INIT1: |
|
|
|
; |
|
|
|
M6242RTC_DETECT: |
|
|
|
LD A, 01h ; TURN ON REST BIT |
|
|
|
OUT (REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
CALL DLY64 |
|
|
|
CALL DLY64 |
|
|
|
IN A,(REG_CONTROL3 + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_CONTROL3 + M6242RTC_BASE) |
|
|
|
AND 01h |
|
|
|
CP 01h |
|
|
|
JR NZ, M6242RTC_DETECTERR ; IF NOT MATCH, ERROR |
|
|
|
LD A, 00h ; TURN OFF REST BIT |
|
|
|
OUT (REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_CONTROL3 + M6242RTC_BASE), A |
|
|
|
CALL DLY64 |
|
|
|
CALL DLY64 |
|
|
|
IN A,(REG_CONTROL3 + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_CONTROL3 + M6242RTC_BASE) |
|
|
|
AND 01h |
|
|
|
CP 00h |
|
|
|
JR NZ, M6242RTC_DETECTERR ; IF NOT MATCH, ERROR |
|
|
|
@ -165,73 +165,73 @@ M6242RTC_SETALM: |
|
|
|
M6242RTC_GETTIM: |
|
|
|
PUSH HL |
|
|
|
PUSH BC |
|
|
|
IN A,(REG_10YEAR + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10YEAR + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1YEAR + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1YEAR + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
INC HL |
|
|
|
|
|
|
|
IN A,(REG_10MNTH + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10MNTH + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1MNTH + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1MNTH + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
INC HL |
|
|
|
|
|
|
|
IN A,(REG_10DAY + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10DAY + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1DAY + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1DAY + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
INC HL |
|
|
|
|
|
|
|
IN A,(REG_10HR + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10HR + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1HR + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1HR + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
INC HL |
|
|
|
|
|
|
|
IN A,(REG_10MIN + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10MIN + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1MIN + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1MIN + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
INC HL |
|
|
|
|
|
|
|
IN A,(REG_10SEC + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_10SEC + M6242RTC_BASE) |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
RLA |
|
|
|
LD C,A |
|
|
|
IN A,(REG_1SEC + M6242RTC_BASE) |
|
|
|
IN A,(M6242RTC_REG_1SEC + M6242RTC_BASE) |
|
|
|
AND 0FH |
|
|
|
OR C |
|
|
|
LD (HL),A |
|
|
|
@ -252,57 +252,57 @@ M6242RTC_GETTIM: |
|
|
|
M6242RTC_SETTIM: |
|
|
|
PUSH HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1YEAR + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1YEAR + M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10YEAR + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10YEAR + M6242RTC_BASE), A |
|
|
|
|
|
|
|
INC HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1MNTH + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1MNTH + M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10MNTH + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10MNTH + M6242RTC_BASE), A |
|
|
|
|
|
|
|
INC HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1DAY+ M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1DAY+ M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10DAY + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10DAY + M6242RTC_BASE), A |
|
|
|
|
|
|
|
INC HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1HR + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1HR + M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10HR + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10HR + M6242RTC_BASE), A |
|
|
|
|
|
|
|
INC HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1MIN + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1MIN + M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10MIN + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10MIN + M6242RTC_BASE), A |
|
|
|
|
|
|
|
INC HL |
|
|
|
LD A, (HL) |
|
|
|
OUT (REG_1SEC + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_1SEC + M6242RTC_BASE), A |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
RRA |
|
|
|
OUT (REG_10SEC + M6242RTC_BASE), A |
|
|
|
OUT (M6242RTC_REG_10SEC + M6242RTC_BASE), A |
|
|
|
POP HL |
|
|
|
XOR A ; SIGNAL SUCCESS |
|
|
|
RET ; AND RETURN |