; Обработчики команд DATE и TIME ; ;/////////////////////////////////////////////////// ; ; DATE. Вывод или установка даты ; ;/////////////////////////////////////////////////// cmd_date: ex de,hl ; hl=ком-строка ld de,work_buffer1; ld c,Dss.GSwitch ; выделить параметр ком-строки RST ToDSS ld de,work_buffer1; ld a,(de) or a jr z,.cmd_dt1 call STR2DEC jp c,invalid_param ; "Invalid parametr" xor a cp h jp nz,invalid_param ; "Invalid parametr" ld a,31 cp l jp c,invalid_param ; "Invalid parametr" ld b,l push bc call STR2DEC pop bc jp c,invalid_param ; "Invalid parametr" xor a cp h jp nz,invalid_param ; "Invalid parametr" ld a,12 cp l jp c,invalid_param ; "Invalid parametr" ld c,l push bc call STR2DEC push hl ld c,Dss.SysTime RST ToDSS pop ix pop de ld c,Dss.SetTime RST ToDSS .cmd_dt1: ld c,Dss.SysTime RST ToDSS PUSH BC ; [x] вывод дня недели 26/01/2023 push ix push de ld a,d ; число ld hl,PRM1 ; куда call PUTB ; десят. вывод в буфер ld a,"." ld (hl),a inc hl pop de ld a,e ; число call PUTB ; десят. вывод в буфер ld a,"." ld (hl),a inc hl push hl pop ix pop hl call PDIGIT ; [x] вывод дня недели 26/01/2023 POP DE LD D,0 LD A,E CP 8 JR C,.skip LD E,8 .skip: LD HL,.days LD BC,.days.size CALL LCPIR ; LD DE,PRM2 CALL ncopy_string ; ld de,MAIN_MSG.DATE ; индекс "Current date: %1" jp MESSAGE ; вывести строку ; .days: DB 0 DZ "Sunday" DZ "Monday" DZ "Tuesday" DZ "Wednesday" DZ "Thursday" DZ "Friday" DZ "Saturday" DZ "check CMOS!" .days.size EQU $ - .days ;/////////////////////////////////////////////////// ; ; TIME. Вывод или установка времени ; ;/////////////////////////////////////////////////// cmd_time: ex de,hl ;ld de,T9186 ld de,work_buffer1; ld c,Dss.GSwitch RST ToDSS ;ld de,T9186 ld de,work_buffer1; ld a,(de) or a jr z,cmd_tm1 call STR2DEC jp c,invalid_param ; "Invalid parametr" xor a cp h jp nz,invalid_param ; "Invalid parametr" ld a,23 cp l jp c,invalid_param ; "Invalid parametr" ld b,l push bc call STR2DEC pop bc jp c,invalid_param ; "Invalid parametr" xor a cp h jp nz,invalid_param ; "Invalid parametr" ld a,59 cp l jp c,invalid_param ; "Invalid parametr" ld c,l push bc call STR2DEC pop bc jp c,invalid_param ; "Invalid parametr" xor a cp h jp nz,invalid_param ; "Invalid parametr" ld a,59 cp l jp c,invalid_param ; "Invalid parametr" push bc ld a,l push af ld c,Dss.SysTime RST ToDSS pop bc pop hl ld c,Dss.SetTime RST ToDSS cmd_tm1:ld c,Dss.SysTime RST ToDSS push bc push hl ld a,h ; число ld hl,PRM1 ; куда call PUTB ; десят. вывод в буфер ld a,":" ld (hl),a inc hl pop de ld a,e ; число call PUTB ; десят. вывод в буфер ld a,":" ld (hl),a inc hl pop af ; число call PUTB ; десят. вывод в буфер xor a ld (hl),a ; в конец строки ld de,MAIN_MSG.TIME ; индекс "Current time: %1" jp MESSAGE ; вывести строку