?login_element?

Subversion Repositories NedoOS

Rev

Rev 2088 | Rev 2093 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. printRTC                                        ;Получение и отображение времени из RTC
  2.         ld hl,displaytimer
  3.         dec (hl)
  4.         ret nz                                  ; Обновляем время с интервалом 155 опросов клавиатуры (порядка 3х секунд).
  5.  
  6. printRTCnow                                     ; Если нужно отобразить часы сдесь и сейчас.
  7.         ld hl,displaytimer
  8.         ld a,155
  9.         ld (hl),a
  10.  
  11.         ld de, 0x0600
  12.         SETCOLOR_
  13.     ld de, 0074
  14.         MYSETXY
  15.         ld hl, stringTime
  16.     call printZ
  17.        
  18.         call cmdcalccurxy               ; Восстановим положение курсора для командной строки.
  19.         MYSETXY
  20.  
  21.     call readTime                       ; Получить время из RTC
  22.  
  23.         ld a, (oldminutes)
  24.         ld d,a
  25.         ld a, (minutes)
  26.         cp d                                    ; Запускаем конвертацию в текст только если поменялась минута
  27.         ret z
  28.  
  29.         ld (oldminutes), a
  30.  
  31.         ld h,0                                  ; Конвертация времени в текст
  32.         ld a,(hours) ;часы
  33.         ld l,a
  34.         call toDecimal
  35.         ld hl,decimalS+3
  36.     ld de, stringTime    
  37.     call strcopy;nv_strcopy_hltode
  38.     dec de
  39.     ld a,':'
  40.     ld (de),a
  41.        
  42.     ld h,0
  43.         ld a,(minutes) ;минуты
  44.         ld l,a
  45.         call toDecimal
  46.         ld hl,decimalS+3
  47.     ld de, stringTime+3    
  48.     call strcopy;nv_strcopy_hltode
  49.         ret
  50.  
  51. toDecimal               ;конвертирует 2 байта в 5 десятичных цифр
  52.                                 ;на входе в HL число
  53.         ld de,10000 ;десятки тысяч
  54.         ld a,255
  55. toDecimal10k                   
  56.         and a
  57.         sbc hl,de
  58.         inc a
  59.         jr nc,toDecimal10k
  60.         add hl,de
  61.         add a,48
  62.         ld (decimalS),a
  63.         ld de,1000 ;тысячи
  64.         ld a,255
  65. toDecimal1k                    
  66.         and a
  67.         sbc hl,de
  68.         inc a
  69.         jr nc,toDecimal1k
  70.         add hl,de
  71.         add a,48
  72.         ld (decimalS+1),a
  73.         ld de,100 ;сотни
  74.         ld a,255
  75. toDecimal01k                   
  76.         and a
  77.         sbc hl,de
  78.         inc a
  79.         jr nc,toDecimal01k
  80.         add hl,de
  81.         add a,48
  82.         ld (decimalS+2),a
  83.         ld de,10 ;десятки
  84.         ld a,255
  85. toDecimal001k                  
  86.         and a
  87.         sbc hl,de
  88.         inc a
  89.         jr nc,toDecimal001k
  90.         add hl,de
  91.         add a,48
  92.         ld (decimalS+3),a
  93.         ld de,1 ;единицы
  94.         ld a,255
  95. toDecimal0001k                 
  96.         and a
  97.         sbc hl,de
  98.         inc a
  99.         jr nc,toDecimal0001k
  100.         add hl,de
  101.         add a,48
  102.         ld (decimalS+4),a
  103.     xor a
  104.     ld (decimalS+5),a                          
  105.         ret
  106.  
  107. printZ
  108.         ld a,(hl)
  109.         or a
  110.         ret z
  111.         inc hl
  112.         push hl
  113.     MYPRCHAR
  114.         pop hl
  115.         jr printZ
  116.  
  117.  
  118. readTime        ; получение  из OS даты и времени и конвертация из DOS-time
  119.     OS_GETTIME;out: ix=date, hl=time
  120.         di
  121.         push ix
  122.         pop bc
  123.         ei
  124.  
  125.         push hl
  126.         pop de
  127.         ld a,e
  128.     add a,a
  129.     and 63      ;seconds
  130.         ld (seconds),a
  131.        
  132.         ld a,d
  133.     rra
  134.     rra
  135.     rra
  136.     and 31              ;hours
  137.         ld (hours),a
  138.  
  139.     ex de,hl
  140.     add hl,hl
  141.     add hl,hl
  142.     add hl,hl
  143.     ex de,hl
  144.     ld a,d
  145.     and 63       ;minutes
  146.         ld (minutes),a
  147.         ret
  148.  
  149. hours
  150.         db 0
  151. minutes
  152.         db 0
  153. seconds
  154.         db 0
  155. decimalS
  156.         ds 7 ;десятичные цифры
  157. stringTime
  158.     db "00:00",0
  159. oldminutes
  160.         db 255
  161. displaytimer
  162.         db 1