;
;         "sektim.txt" ;   
;                  
;      /  
 tms_gen:
       push xl
       push xh
       in xh,SREG
       push xh ;  SREG  
       ldwi xh,xl,lot1_2 ;     
             ;  /
       ld maxmask,x+ ;    lot1_2
        ld cnt_ggs,x ;     
        dec cnt_ggs
        breq ringts1 ;       ringts1
     lou_tsret:
         st x,cnt_ggs ;     
                     ;    
     lou_tset1:
         pop xh
         out SREG,xh ;  SREG
         pop xh
         pop xl ;    
         reti ;    
;-----------------------------------------------------------------
  ringts1:
     st x+,maxmask ;  cnt1_2
     push flags ;   flags  
     push accl ;   accl  
     push acch ;   acch  
     ld flags,x+ ;   ts_flags 
                ;   /
    sbrc flags,tiksef ;  tiksef  ,  tiksef=0
     rjmp sekonder ;  tiksef=1    
    sbrc flags,tionn ;  tionn  ,  tionn=0
     rjmp aptaim ;  tionn =1      
  end_tmsw:
       pop acch ;    
       pop accl
       pop flags
       rjmp lou_tset1 ;    
;-----------------------------------------------------------
;            
 sekonder:
    ld maxmask,x+ ;   max_sts
    ld cnt_ggs,x ;   ts_cnts
     inc cnt_ggs ; =+1
      eor maxmask,cnt_ggs ; xor    maxmask
      brbs SREG_Z,sekomin ;   
      st x,cnt_ggs ;    
      rjmp off_cts ;    off_cts
   sekomin:
      st x+,maxmask ;     0    
      ld maxmask,x+ ;   max_mts
      ld cnt_ggs,x ;   ts_cntm
      inc cnt_ggs ; =+1
      eor maxmask,cnt_ggs ; xor    maxmask
      brbs SREG_Z,sekoh ;   
      st x,cnt_ggs ;    
      rjmp off_cts ;    off_cts
   sekoh:
      st x+,maxmask ;     0
      st x+,maxmask ;     0    
      ld maxmask,x+ ;   max_hts
      ld cnt_ggs,x ;   ts_cnth
      inc cnt_ggs ; =+1
      eor maxmask,cnt_ggs ; xor    maxmask
      brbs SREG_Z,sekoh1 ;   
      st x,cnt_ggs ;    
      rjmp off_cts ;    off_cts
   sekoh1:
      st x+,maxmask ;     0   
             ;  99:59:59    00:00:00
;--------------------------------------------------------------------
 off_cts:
      ldwi acch,accl,print_tms
      movw cnt_ggs:maxmask,acch:accl
      pop acch
      pop accl
      pop flags
      pop xh
      out SREG,xh ;  SREG
      pop xh
      pop xl ;    
      push maxmask
      push cnt_ggs
      reti ;      print_tms,
           ;    print_tms    
           ; 
;--------------------------------------------------------------------
;       
 aptaim:
      rcall zertest ;   "00:00:00"
      brbc SREG_Z,aptim ;   "00:00:00"   aptim
      rjmp end_tmsw ;   ,    00:00:00!!!
;--------------------------------------------------------------------
  aptim:
      ld acch,x+ ;   max_sts
      ld cnt_ggs,x ;   ts_cnts
      ser acch ; -1
      add cnt_ggs,acch ; = + (-1)
      brbs SREG_C,zaversh ;   zaversh,  SREG_C=1
      ldi acch,59
      st x+,acch ;    ts_cnts 59
       ld acch,x+ ;     
       ld cnt_ggs,x ;   ts_cntm
       ser acch ; -1
       add cnt_ggs,acch ; = + (-1)
       brbs SREG_C,zaversh ;   zaversh,  SREG_C=1
       ldi acch,59
       st x+,acch ;    ts_cntm 59
        ld acch,x+ ;     
        ld cnt_ggs,x ;   ts_cnth
        ser acch ; -1
        add cnt_ggs,acch ; = + (-1)
 zaversh:
     st x,cnt_ggs ;    
     rcall zertest ;   "00:00:00"
     brbs SREG_Z,zerotm ;      zerotm
    rjmp off_cts ;     
;---------------------------------------------------------------
;            00:00:00 -
 zerotm:
      in acch,TCCR1B
      cbr acch,(1<<CS10)
      out TCCR1B,acch ; stop T/C1
      cbr flags,(1<<tionn)
      sbr flags,(1<<talarm) ; tionn=0&talarm=1
      sts ts_flags,flags ;    ts_flags
      cbi PORTB,outline ;  (=0)  
      ldi accl,1
      rcall pimb1 ;     1 ( ""/)
      sbr accl,(1<<7)
      rcall wr_wus ;      
      rcall wait_wrt ; 
    rjmp off_cts ;     
;---------------------------------------------------------------
  zertest:
      clr cnt_ggs
      clr accl
      lds maxmask,ts_cnts
      cpse maxmask,accl
      inc cnt_ggs
      lds maxmask,ts_cntm
      cpse maxmask,accl
      inc cnt_ggs
      lds maxmask,ts_cnth
      cpse maxmask,accl
      inc cnt_ggs
      eor cnt_ggs,accl ;  cnt_ggs =0,    Z=1
    ret
;---------------------------------------------------------------
;            
; print_tms/viev_sb/       
;        
;                 RB(0-3)
;
 print_tms:
       push accl
       push acch
       in accl,SREG
       push accl ;  SREG  
       lds accl,ts_cnts ;  ts_cnts  accl
       rcall rep_ptms
       sts bufos_b,accl ;       
       sts bufos_a,acch ;       
       lds accl,ts_cntm ;  ts_cntm  accl
       rcall rep_ptms
       sts bufos_8,accl ;       
       sts bufos_7,acch ;       
       lds accl,ts_cnth ;  ts_cnth  accl
       rcall rep_ptms
       sts bufos_5,accl ;       
       sts bufos_4,acch ;       
    printb frame1 ;    
     pop accl
     out SREG,accl ; SREG  SREG_I=0!!!
     pop acch
     pop accl
     sei ; !
     ret
;-----------------------------------------------------------------------
  rep_ptms:
       rcall binodec
       mov acch,accl
       swap acch
       andi accl,0x0F
       ori accl,0x30
       andi acch,0x0F
       ori acch,0x30
      ret
;-----------------------------------------------------------------------