;
;         "wh1602avr.txt" ;     
;
    ;  BF      (rd_bfadr)
    ;      (rd_dat)
    ;     accl
 rd_dat:
     sbi PORTE,rs_line ; rs=1
 rd_bfadr:
     ser accl
      out PORTA,accl ; PORTA=0xFF
       clr accl
        out DDRA,accl ; PA as input
    pt_wh0:
         sbi PORTE,rw_line ; rw=1   /
          rcall strob ; - _/-\_  
         cbi PORTE,rw_line ; rw=0
        cbi PORTE,rs_line ; rs=0
       push accl
      clr accl
     out PORTA,accl ; out wiht Z-status
    pop accl
   rcall taym30
  ret
;--------------------------------------------------------
     ;     
     ;      accl
     ;    accl 0xFF
 wr_dat:
     sbi PORTE,rs_line ; rs=1  
 wr_wus:
      push accl
       ser accl
        out PORTA,accl ;      
         nop ;   ""  .1
          out DDRA,accl ; PA as output data
           pop accl
            out  PORTA,accl ;     (rs=0)
             rcall strob ; - _/-\_  
            clr accl
           out DDRA,accl ; PA as input data
          out PORTA,accl ; out wiht Z-status
	       cbi PORTE,rs_line ; rs=0
        rcall taym30
	     ret
;--------------------------------------------------------
 wait_wrt:
   rcall rd_bfadr
    sbrc accl,7 ;  -      !!!
     rjmp wait_wrt ;  BF=0
    ret
;--------------------------------------------------------
; - _/-\_  
;     
  strob:
    rcall taym30 ;  ~ 60
     sbi PORTE,e_line ; e=1
       rcall taym30
        in accl,PINA ; accl=input data
       cbi  PORTE,e_line ; e=0
      rcall taym30
    ret
;--------------------------------------------------------
;     ~0,75 
 taym30:
   push cntxl
   ldi cntxl,8
  taym3_w:
      dec cntxl
     brne taym3_w
    pop cntxl
   ret
;--------------------------------------------------------
 ;   accl   =    
 ;   frame1    DDRAM 
 ;  kursadr    frame1+  
 ;   refram
 ; pif1 = poz_in_frame (old 'ppk')
  pif1:
   push acch
    lds acch,refram
    ldi accl,frame1
    add acch,accl
    mov accl,kursadr
    sub accl,acch
   pop acch
   ret
;----------------------------------------------------
 ;    =   DDRAM  frame1
 ;           
 ; pimb1 = poz_in_memr_bank (old 'kpp')
 pimb1:
   lds kursadr,refram
   add kursadr,accl
   ldi accl,frame1
   add kursadr,accl
   ret
;----------------------------------------------------
 ;      frame1 (  0)
 ;    kursadr   accl
 ; pzet1 poz_in_z (old 'pks1')
 pzet1:
    lds kursadr,refram
    ldi accl,frame1
    add kursadr,accl
    mov accl,kursadr
    ret
;--------------------------------------------------------
    ;     frame  
    ;    DPTR   = refram+frame (refram+r0)
    ;     ,  
;
 prints_1:
     push cntxl ;  cntxl
     in cntxl,SREG
     push cntxl ;  SREG
     mov cntxl,accl ;    frame  cntxl
     ldi accl,0b00001100 ;  
     rcall wr_wus
     rcall wait_wrt
     ldi accl,0b00000110 ;    ,  
     rcall wr_wus
     rcall wait_wrt
     lds accl,refram
     add accl,cntxl ;      
     sbr accl,(1<<7)
     rcall wr_wus ;        
     rcall wait_wrt
      ;         Z
     ldi cntxl,16 ;    
  pr_ptr0:
      lpm accl,z+ ;     
      rcall wr_dat ;      (   )
      rcall wait_wrt
      dec cntxl ;   -1
      brne pr_ptr0 ;    cntxl
    pop accl
    out SREG,accl ;  SREG
    pop cntxl ;  cntxl
   ret
;--------------------------------------------------------
    ;     frame  
    ;   = bufos_0   = refram+frame (refram+r0)
    ;     ,  
    ;         
    ;   kursadr
;
 printb_1:
      push xl
      push xh
      in xl,SREG
      push xl
      push accl
        ldi accl,0b00001100 ;  
        rcall wr_wus
        rcall wait_wrt
        ldi accl,0b00000110 ;    ,  
        rcall wr_wus
        rcall wait_wrt
        lds accl,refram
        add accl,acch ;      
        sbr accl,(1<<7)
        rcall wr_wus ;        
        rcall wait_wrt
        ldwi xh,xl,bufos_0
        ldi acch,16
  pt_prt1:
        ld accl,x+
        rcall wr_dat ;        
        rcall wait_wrt
        dec acch
        brne pt_prt1
        mov accl,kursadr ;        kursadr
        sbr accl,(1<<7)
        rcall wr_wus
        rcall wait_wrt
        ldi accl,0b00001111 ;     
        rcall wr_wus
        rcall wait_wrt
      pop accl
      pop xl
      out SREG,xl
      pop xh
      pop xl
     ret
;--------------------------------------------------------