;
;         "d1621.txt"      
;                   HT1621
;  ,     
;
;---------------------------------------------------------------------
;         
; 
;       
;       .
;
;----------------------------------------------------------------------
;
; ------------  ------------
;
; bblok             " " (31*4=128)
; kblok           -  = 9
; k_rela       equ 0x20 ;    -  
;                     
; (          define)
;
; k_sys_dis    equ b'00000000' ; *      BIAS LCD
; k_sys_en     equ b'00000001' ;   
; k_lcd_off    equ b'00000010' ; *  BIAS LCD
; k_lcd_on     equ b'00000011' ;   BIAS LCD
; k_timer_dis  equ b'00000100' ;   
; k_wdt_dis    equ b'00000101' ;     WDT
; k_timer_en   equ b'00000110' ;    
; k_wdt_en     equ b'00000111' ;    WDT 
; k_tone_off   equ b'00001000' ; *  - 
; k_tone_on    equ b'00001001' ;  - 
; k_clr_timer  equ b'00001100' ; /  
; k_clr_wdt    equ b'00001110' ; / WDT
; k_xtal_32k   equ b'00010100' ;   =  32768
; k_rc_256k    equ b'00011000' ; *   = on chip RC 256kHZ
; k_ext_256k   equ b'00011100' ;    256kHZ
;  k_bias_12/k_bias_13    2  3commons option (.   1621)
; k_bias_12    equ b'00101000' ; bias 1/2, 4 commons option
; k_bias_13    equ b'00101001' ; bias 1/3, 4 commons option
; k_tone_4k    equ b'01000000' ;   4
; k_tone_2k    equ b'01100000' ;   2
; k_irq_dis    equ b'10000000' ; *     /IRQ 
; k_irq_en     equ b'10001000' ;     /IRQ 
; k_f1         equ b'10100000' ; time base/WDT clk_out=1Hz, WDT time-out flag after 4s
; k_f2         equ b'10100001' ; time base/WDT clk_out=2Hz, WDT time-out flag after 2s
; k_f4         equ b'10100010' ; time base/WDT clk_out=4Hz, WDT time-out flag after 1s
; k_f8         equ b'10100100' ; time base/WDT clk_out=8Hz, WDT time-out flag after 1/2s
; k_f32        equ b'10100101' ; time base/WDT clk_out=16Hz, WDT time-out flag after 1/4s
; k_f64        equ b'10100111' ; time base/WDT clk_out=32Hz, WDT time-out flag after 1/8s
; k_f128       equ b'10100111' ; * time base/WDT clk_out=64Hz, WDT time-out flag after 1/32s
; k_normal     equ b'11100011' ; *   (   -   )
;   *     
;    
;
; L_DI            DI ( )
; L_DN            DN ( ) ( 4:1.5)
; L_RD            /RD
; L_WR            /WR ( 4:1.3)
; L_CS            /CS ( 4:1.1)
; ksd_port      
;
; ------------  ------------
;
; tmp_00 ;  -  32 
; tmp_01 ;       3:2:1:0
; tmp_02 ; (   )
; tmp_03
; tmp_04
; tmp_05
; tmp_06
; tmp_07
; tmp_08
; tmp_09
; tmp_0a
; tmp_0b
; tmp_0c
; tmp_0d
; tmp_0e
; tmp_0f
; tmp_10
; tmp_11
; tmp_12
; tmp_13
; tmp_14
; tmp_15
; tmp_16
; tmp_17
; tmp_18
; tmp_19
; tmp_1a
; tmp_1b
; tmp_1c
; tmp_1d
; tmp_1e
; tmp_1f
;ksd_flags      
;ksd_cnt_bit    
;ksd_cnt_byt     
;ksd_Us          
;ksd_addr             
;ksd_tmpd       " "
;
;ksd_tmp_fsr     fsr     kd_
;
; ------------  ------------
;
;    kd_flags
;c_tmp             1
;ksdd_w       -  / 
;ksdd_sf            /
;                 ;     
;
; -----   -----
;
KSD     CODE
;
;-------------------------------------------
;   
;
;ksd_stbR
;    bcf ksd_port,L_RD
;    nop
;    nop
;    nop
;    nop
;    nop
;    nop
;    nop
;    nop
;    bcf STATUS,C
;    btfsc ksd_port,L_DI
;    bsf STATUS,C
;    rrf ksd_tmpd,f
;   bsf ksd_port,L_RD
;  return
;-------------------------------------------
;
;   //
;
ksd_stbW
    bcf ksd_port,L_WR
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    nop
    bsf ksd_port,L_WR
    nop
  return
;-------------------------------------------
;
;    
;
ID_Rd
    bsf ksd_port,L_DN
    nop
    call ksd_stbW
    nop
    nop
    call ksd_stbW
    bcf ksd_port,L_DN
    nop
    call ksd_stbW
  return
;-------------------------------------------
;
;    /
;   --
;
ID_rMW
    bsf ksd_port,L_DN
    nop
    call ksd_stbW
    bcf ksd_port,L_DN
    nop
    call ksd_stbW
    bsf ksd_port,L_DN
    nop
    call ksd_stbW
  return
;-------------------------------------------
;
;    
;
ID_Com
    bsf ksd_port,L_DN
    nop
    call ksd_stbW
    bcf ksd_port,L_DN
    nop
    call ksd_stbW
    nop
    nop
    call ksd_stbW
  return
;-------------------------------------------
;
;     ksd_Us  
;
W_Us
   movlw 8
   movwf ksd_cnt_bit
l_us
   bcf ksd_port,L_DN
   rlf ksd_Us,f
   btfsc STATUS,C
   bsf ksd_port,L_DN
   nop
   call ksd_stbW
   decfsz ksd_cnt_bit,f
   goto l_us
   call ksd_stbW
 return
;-------------------------------------------
;
;          
; ksd_addr(       )
;
W_Adr
   movlw 6
   movwf ksd_cnt_bit
   movf ksd_addr,w
   movwf ksd_tmpd
   rlf ksd_tmpd,f
   rlf ksd_tmpd,f
l_adr
   bcf ksd_port,L_DN
   rlf ksd_tmpd,f
   btfsc STATUS,C
   bsf ksd_port,L_DN
   nop
   call ksd_stbW
    decfsz ksd_cnt_bit,f
    goto l_adr
  return
;-------------------------------------------
;
;          
; ksd_addr(       )
;   ksd_cnt_byt    1 ( )
;       
;    /     
;                      PIC16F676
;  !!!         STATUS,IRP !!!
;
W_tetr_dat
    movf FSR,w
    movwf ksd_tmp_fsr
    movlw k_rela
    addwf ksd_addr,w
    movwf FSR
l_pak0
    movf INDF,w
    movwf ksd_tmpd
    movlw 4
    movwf ksd_cnt_bit
lw_tetr_dat
     bcf ksd_port,L_DN
     rrf ksd_tmpd,f
     btfsc STATUS,C
     bsf ksd_port,L_DN
     nop
     call ksd_stbW
      decfsz ksd_cnt_bit,f
      goto lw_tetr_dat
       incf FSR,f
       decfsz ksd_cnt_byt,f
       goto l_pak0
    movf ksd_tmp_fsr,w
    movwf FSR
  return
;-------------------------------------------
;
;