Estex-DSS/DSS/API/Time.asm
2023-12-01 02:05:37 +10:00

180 lines
2.5 KiB
NASM

////////////////////////////////////////////////////////////////////////
; ”ã­ªæ¨ï #21. ’¥ªãé ï ¤ â  ¨ ¢à¥¬ï.
;
; ¢å®¤: ­¥â
; ¢ë室: D - ¤¥­ì
; E - ¬¥áïæ
; IX - £®¤
; H - ç á
; L - ¬¨­ãâë
; B - ᥪ㭤ë
; C - ¤¥­ì ­¥¤¥«¨
////////////////////////////////////////////////////////////////////////
SYSTIME:
LD C,BIOS.CMOS_TEST
RST ToBIOS
JP C,.NOCMOS
LD D,7 ;DAY
CALL RCMOS
PUSH AF
LD D,8 ;MONTH
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,4 ;HOUR
CALL RCMOS
PUSH AF
LD D,2 ;MINUTE
CALL RCMOS
POP DE
LD E,A
PUSH DE
LD D,0 ;SECOND
CALL RCMOS
PUSH AF
LD D,6 ;WEEK DAY
LD C,BIOS.CMOS_RD
RST ToBIOS
POP DE
LD E,A
PUSH DE
LD D,9 ;YEAR
CALL RCMOS ;READ AND CONVERT TO DECIMAL
PUSH AF
LD D,#32 ;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,#32 ;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
LD C,BIOS.CMOS_TEST
RST ToBIOS
JP C,.NOCMOS2
POP AF
PUSH AF
LD D,7 ;DAY
CALL WCMOS
POP BC
LD A,C
LD D,8 ;MONTH
CALL WCMOS
POP AF
PUSH AF
LD D,4 ;HOUR
CALL WCMOS
POP BC
LD A,C
LD D,2 ;MINUTE
CALL WCMOS
POP AF
PUSH AF
LD D,0 ;SECOND
CALL WCMOS
POP BC
LD A,C
LD D,6 ;WEEK DAY
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,#32 ;CENTURY
CALL WCMOS
POP BC
LD A,C
LD D,9 ;YEAR
CALL WCMOS
AND A
RET
; !FIXIT ­®¢ë© ¡¨®á ¢ëáâ ¢«ï¥â ¢à¥¬ï, ¥á«¨ á ­¨¬ çâ®-â® ­¥ â ª.
.NOCMOS2:
LD C,0
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
;