mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 01:11:48 +03:00
200 lines
3.1 KiB
NASM
200 lines
3.1 KiB
NASM
////////////////////////////////////////////////////////////////////////
|
||
; ”ãªæ¨ï #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
|
||
; |