Estex-DSS/DSS/API/Time.asm
2024-12-18 00:18:16 +10:00

200 lines
3.1 KiB
NASM
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #21. ’¥ªãé ï ¤ â  ¨ ¢à¥¬ï.
;
; ¢å®¤: ­¥â
; ¢ë室: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; C - ¤¥­ì ­¥¤¥«¨
////////////////////////////////////////////////////////////////////////
SYSTIME:
LD C,BIOS.CMOS_TEST
RST ToBIOS
JP C,.NOCMOS
;
LD D,CMOS.Register.date
CALL RCMOS
PUSH AF
LD D,CMOS.Register.month
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,CMOS.Register.hours
CALL RCMOS
PUSH AF
LD D,CMOS.Register.minutes
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,CMOS.Register.seconds
CALL RCMOS
PUSH AF
LD D,CMOS.Register.dayOfWeek
LD C,BIOS.CMOS_RD
RST ToBIOS
POP DE
LD E,A
PUSH DE
LD D,CMOS.Register.year
CALL RCMOS ;READ AND CONVERT TO DECIMAL
PUSH AF
LD D,CMOS.Register.century
LD C,BIOS.CMOS_RD
RST ToBIOS
LD XH,A
POP AF
CP 80 ;R001, TEST DECIMAL FIX
PUSH AF
JR C,.XXIAGE
LD A,#19
CP XH
JR Z,.GOODAGE
JR .BADAGE
.XXIAGE:
LD A,#20
CP XH
JR Z,.GOODAGE
.BADAGE:
PUSH AF
LD D,CMOS.Register.century
LD C,BIOS.CMOS_WR
RST ToBIOS
POP AF
LD XH,A
.GOODAGE:
POP AF
LD XL,A
LD A,XH
CALL BCD2HEX
LD L,A
LD H,0
LD C,L
LD B,H
LD XH,B
ADD HL,HL
ADD HL,HL
ADD HL,BC
ADD HL,HL ;*10
LD B,H
LD C,L
ADD HL,HL
ADD HL,HL
ADD HL,BC
ADD HL,HL ;*10(100)
EX DE,HL
ADD IX,DE
POP BC
POP HL
POP DE
AND A
RET
.NOCMOS:
.NC_DAY+1:
LD DE,DAY*256+MONTH ;DAY/MONTH
.NC_HOUR+1:
LD HL,0 ;HOUR/MINUTE
.NC_SEC+1:
LD BC,1 ;SECOND/WEEKDAY
.NC_YEAR+2:
LD IX,YEAR ;YEAR
AND A
RET
;
////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #22. “áâ ­®¢¨âì ⥪ãéãî ¤ âã ¨ ¢à¥¬ï.
;
; ¢å®¤: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; ¢ë室: A - ª®¤ ®è¨¡ª¨, ¥á«¨ CF=1
////////////////////////////////////////////////////////////////////////
SETTIME:
PUSH IX
PUSH BC
PUSH HL
PUSH DE
;
; [x] 25/01/2024
CALL CalcDayOfWeek
PUSH HL
;
LD C,BIOS.CMOS_TEST
RST ToBIOS
JR C,.NOCMOS2
;
; [x] 25/01/2024
POP AF
LD D,CMOS.Register.dayOfWeek
LD C,BIOS.CMOS_WR
RST ToBIOS
;
POP AF
PUSH AF
LD D,CMOS.Register.date
CALL WCMOS
POP BC
LD A,C
LD D,CMOS.Register.month
CALL WCMOS
POP AF
PUSH AF
LD D,CMOS.Register.hours
CALL WCMOS
POP BC
LD A,C
LD D,CMOS.Register.minutes
CALL WCMOS
POP AF
;PUSH AF ; [ ] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
LD D,CMOS.Register.seconds
CALL WCMOS
; [x] ¡ £ á ãáâ ­®¢ª®© ¤­ï ­¥¤¥«¨ ¨§ ॣ¨áâà  C. <20> è¥« Hard
;POP BC
;LD A,C
;LD D,CMOS.Register.dayOfWeek
;LD C,BIOS.CMOS_WR
;RST ToBIOS
;
POP HL
XOR A
LD DE,100
.YR: INC A
SBC HL,DE
JR NC,.YR
ADD HL,DE
DEC A
PUSH HL
LD D,CMOS.Register.century
CALL WCMOS
POP BC
LD A,C
LD D,CMOS.Register.year
CALL WCMOS
AND A
RET
; !FIXIT ­®¢ë© ¡¨®á ¢ëáâ ¢«ï¥â ¢à¥¬ï, ¥á«¨ á ­¨¬ çâ®-â® ­¥ â ª.
.NOCMOS2:
POP AF
POP DE
POP HL
POP BC
POP IX
LD C,A
;
LD (SYSTIME.NC_DAY),DE ;DAY/MONTH
LD (SYSTIME.NC_HOUR),HL ;HOUR/MINUTE
LD (SYSTIME.NC_SEC),BC ;SECOND/WEEKDAY
LD (SYSTIME.NC_YEAR),IX ;YEAR
AND A
RET
;