;
;         "clocker.txt" ;     /
;         
;
g_clock:    ;    /2  
     clr TF2 ;    
     setb trig ;      (0,05S)
     djnz too_clk2,endp_gc ;      
     mov too_clk2,#mark_r ;    
    push PSW ;  PSW  
    push ACC ;    
	  setb RS0
	  setb RS1 ;  RB3
	  .using 3 ;   "  RB3"
     mov a,#low(g_tpi0)
     push ACC
     mov a,#high(g_tpi0)
     push ACC ;       
 endp_gc:
    reti ;     
;------------------------------------------------------------------
;
;       (  RB3)
;
 g_tpi0:
	 setb s_ovf ;     
	  jnb esmpf,g_tpi ;    ""
		 setb smpf ;  / 1-   - ""
 g_tpi:
	 inc r4 ;   +1
	 cjne r4,#mask60,of_clock ;    - 
	 mov r4,#0 ; -  = 0
	 setb m_ovf ;     
	 inc r5 ;   +1
	 cjne r5,#mask60,of_clock ;    - 
	 mov r5,#0 ; -  = 0
	 setb h_ovf ;     
	 inc r6 ;   +1
	 cjne r6,#mask24,of_clock ;    - 
	 mov r6,#0 ;   = 0
	 setb d_ovf ;     
 of_clock:
   jnb fnvs,g_tp0 ;      
   clr fnvs ;  
   mov RCAP2H,corsek+1
   mov RCAP2L,corsek
 g_tp0:
   mov r7,ovftrg ;   OVFTRG  
                     ;      
                     ;       
                     ;   
      jb egcprt,ptr_gclk ;       egcprt=1
       ajmp noprtc1
 ptr_gclk:    ;     / 
             ;  
      mov a,#0b00001100 ;  - 
      acall wrslus
      acall wait_wrt
      mov a,#0b00000100 ;    entry mode set = 0b00000100
                      ;      
      acall wrslus
      acall wait_wrt
      mov a,asgclk ;      
			              ; (  asgclk)
      setb ACC.7
      acall wrslus
      acall wait_wrt
      jbc gclkrl,pt_rwr0 ;  gclkrl=1  gclkrl  0 
      sjmp noptrwr
  pt_rwr0:
      mov r7,#0b00001110 ;     
                        ;  
   noptrwr:    ;      (r4-r5-r6) 
    jb egsptr,g_tp4 ;  ,  
       mov a,#0x20 ;    3  
        acall wrdat ;      
        acall wait_wrt
        acall wrdat
        acall wait_wrt
        acall wrdat ;       
        acall wait_wrt ;   
    sjmp g_tp1
  g_tp4:
    mov a,r4
    acall binodec
    mov r1,a
    anl a,#0x0f
    orl a,#0x30 ;    
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,#0xf0
    anl a,r1
    swap a
    orl a,#0x30 ;    
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,#0x3A ;     (    1 )
     acall wrdat ;    ddram wh1602
      acall wait_wrt
  g_tp1:
    mov a,r7
    jnb ACC.1,g_pt2 ;   
		               ;    
    mov a,r5
    acall binodec
    mov r1,a
    anl a,#0x0f
    orl a,#0x30 ;    
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,#0xf0
    anl a,r1
    swap a
    orl a,#0x30 ;    
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,#0x3A ;     (    1 )
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,r7
    jnb ACC.2,g_pt2 ;   
		               ;     
    mov a,r6
    acall binodec
    mov r1,a
    anl a,#0x0f
    orl a,#0x30 ;    
     acall wrdat ;    ddram wh1602
      acall wait_wrt
    mov a,#0xf0
    anl a,r1
    swap a
    orl a,#0x30
    cjne a,#0x30,g_pt3
    mov a,#0x20 ;     
  g_pt3:
    acall wrdat ;    ddram wh1602
     acall wait_wrt
  g_pt2:
    mov r7,#0 ;    
    mov a,ovftrg
    anl a,eovfir
    jz noprtc ;        - 
    setb prwf ;     
  ;--------------------------------------------------------------
 noprtc:
  ;  
  ;        
     mov r0,#bodun1 ;      1
     mov r1,#2 ; (1-2-3-4)   
     mov nbud,#1 ;    ( , .. 
          ;         )
     mov a,bodunf
     mov kvot,a ;    r2
     swap a
     mov kvot+1,a ;     r3
  test_bud:
        mov a,kvot
        rrc a
        mov kvot,a ;  enbud  CY,   enbud1
        jnc nttbu0 ;  ,   nttbu0
    tstb0:
         mov a,@r0 ;      
         cjne a,min,nttbu0 ;    nttbu0
         inc r0 ;      
         mov a,@r0 ;      
         cjne a,hors,nttbu1 ;    nttbu1
         inc r0 ;      
      tstb1:
          mov a,nbud ;      
          inc a ; +1  0    sjmp tstb2,   0   
          movc a,@a+pc ;     
          sjmp tstb2
          .db 0 ;   1
          .db 30 ;   2
          .db 45 ;   3
          .db 10 ;   4
     tstb2:
         cjne a,sec,nttbu2 ;    nttbu2
  fairbu:
    mov a,kvot+1
    rrc a
    mov kvot+1,a ;      CY
    mov F0,c ;    F0
     mov a,P1 ;     
		  orl a,mason1 ;     
       mov c,F0 ;    
		    mov ACC.2,c ;   
		     mov P1,a ;   
         setb bodsf ;   "  "
         mov a,#(frame1 || 0x80) ;     40
        lcall wrslus
       lcall wait_wrt
      mov a,#0xED ;  ""
     lcall wrdat
    lcall wait_wrt
   sjmp nttbu3 ;     
 nttbu0:
     inc r0
 nttbu1:
     inc r0
 nttbu2:
      mov a,kvot+1
      rrc a
      mov kvot+1,a
 nttbu3:
      inc nbud
    djnz r1,test_bud ;       test_bud
  ;--------------------------------------------------------------
 noprtc1:
    pop ACC ;     -
    pop PSW ;   RB
      .using 0 ;   "  RB0"
	ret ;    /0 
;------------------------------------------------------------------