;
;
;   utils_mb.txt
;
;
;
;----------------------------------------------
;
;  IRQ 
;   intwork_b52m.txt  b52m1
;
;        bottle  mason_2
;     RI   
;    step_ptr+1:step_ptr
;
; trs_ir:
;    jbc TI,step1 ;  TI=0,
;		    ;   
;		    ;    
;    mov tmp_rx,SBUF ;  
;    clr RI ; RI=0
;    mov a,step_ptr
;    push ACC
;    mov a,step_ptr+1 ;    step_ptr
;    push ACC ;   
;   reti ;   
; step1:
;    jb eof_txd,sstep1 ;    
;                ;   
;    acall proc_txd ;   
; sstep1:
;   reti ;     TI
;----------------------------------------------
;
;     
;  "  "
;
;
 wait_s:
  jb linc_port.Com_Key,wait_s
  acall tm_2 ; WAITT 2
  jb linc_port.Com_Key,wait_s
  acall tm_2 ; WAITT 2
 l_wait_s:
  jnb linc_port.Com_Key,l_wait_s
  acall tm_2 ; WAITT 2
  jnb linc_port.Com_Key,l_wait_s
 ret
;
 tm_2:
  WAITT 2
 ret
  
;
;----------------------------------------------
;
;      ASCII
;    ,   R5:R4 -
; ,     R5
; ,     R4
;
;
;
 binascii:
   mov r7,a
   acall tetras
   mov r4,a
   mov a,r7
   swap a
   acall tetras
   mov r5,a
  ret
 tetras:
   anl a,#0b00001111
   inc a
   movc a,@a+PC
  ret
 kodas:
  .db '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'

;
;----------------------------------------------
;
;    
;     
;
 wttx:
   clr ES
   mov sbuf,a
   jnb TI,$
   clr TI
   setb ES
  ret

;
;----------------------------------------------
;
;
 txx_ascii:
  lcall binascii
  mov a,R5
  Tx_BYTE
  mov a,r4
  Tx_BYTE
 ret

;
;----------------------------------------------
;
;       0xFF
;  ,   flash_size 0
;  flash_size+1    
;
 blanc:
  mov r7,#0xFF
  mov dptr,#0
 loop_blanc:
   mov a,r7
   movx @dptr,a
   inc dptr
   mov a,DP0L
   jnz loop_blanc
   mov a,DP0H
   cjne a,flash_size+1,loop_blanc
 ret

;
;----------------------------------------------
;
; 
;    
;   
;     00000 - dump_size
;  
;  r1    
;  r0    
; ,     0xFF
;
 dumper:
  mov dptr,#0
  mov r7,#0xFF
  clr a
  mov r0,a
  mov r1,a
 loop_dumper:
   movx a,@dptr
   xrl a,r7
   jz over_adr
    mov r0,DP0L
    mov r1,DP0H
 over_adr:
   inc dptr
   mov a,DP0L
   jnz loop_dumper
   mov a,DP0H
   cjne a,flash_size+1,loop_dumper
  ret

;
;----------------------------------------------
;

 bloc_fb:
  mov linc_port,#blank ;   
  STA_cmd oll_on ; /  1
 ret

;
;----------------------------------------------
;
;      
;
 mark0:
  mov a,PCH_fb_buf
  anl a,#0b00111111
  acall binascii
  mov dptr,#mk_str1
  mov a,r5
  movx @dptr,a
  inc dptr
  mov a,r4
  movx @dptr,a
  LLPRINT mk_str0
 ret
;
;    -    
  mk_str0:
   .db "0x"
  mk_str1:
   .db "nn"
  mk_str2:
   .db "00  ",0
;     
  mk_str3:
   .db "*\r\n",0

;
;----------------------------------------------
;
;    
;
 erroprint:
  mov a,PCH_fb_buf
  anl a,#0b00111111 ;    
  mov dptr,#er_str2
  acall binascii
  mov a,r5
  movx @dptr,a
  inc dptr
  mov a,r4
  movx @dptr,a
  mov a,erradrl ;    
  acall binascii
  inc dptr
  mov a,r5
  movx @dptr,a
  inc dptr
  mov a,r4
  movx @dptr,a
  mov dptr,#er_str3
  mov a,errd ;   
  acall binascii
  mov a,r5
  movx @dptr,a
  inc dptr
  mov a,r4
  movx @dptr,a
  mov dptr,#er_str4
  mov a,errk ;  
  acall binascii
  mov a,r5
  movx @dptr,a
  inc dptr
  mov a,r4
  movx @dptr,a
  LLPRINT er_str0
 ret
;
 er_str0:
  .db "\r\nERROR in "
 er_str1:
  .db "0x"
 er_str2:
  .db "nnmm   "
 er_str3:
  .db "dd not equal "
 er_str4:
  .db "gg\r\n",0

;
;----------------------------------------------
;

 sign_reader:
   clr data_key
   mov a,#high rd_sign_c512 ;    
   lcall bspi_txd ; 
   mov a,#low rd_sign_c512 ;    
   lcall bspi_txd ; 
 oll_reader:
   mov a,PCH_fb_buf ;    
   lcall bspi_txd ; 
   mov a,PCL_fb_buf ;    
   lcall bspi_txd ; 
   lcall bspi_rxd ;  
 ret

 byte_reader:
   clr data_key
   mov a,#high rd_byte_c512 ;    
   lcall bspi_txd ; 
   mov a,#low rd_byte_c512 ;    
   lcall bspi_txd ; 
   sjmp oll_reader

;
;----------------------------------------------
;

 byte_sawer:
   clr data_key
   mov a,#high wr_byte_c512 ;    
   lcall bspi_txd ; 
   mov a,#low wr_byte_c512 ;    
   lcall bspi_txd ; 
   mov a,PCH_fb_buf ;    
   lcall bspi_txd ; 
   mov a,PCL_fb_buf ;    
   lcall bspi_txd ; 
   mov a,Pfb0_buf
   lcall bspi_txd ;   
   clr a
   jnb vpph,ovr_setv1
   inc a ;   
 ovr_setv1:
   lcall bspi_txd ;   
         ;   
   mov a,#time_wr ;   
   lcall bspi_txd ;   pgf_prog 
   lcall bspi_rxd ;  
  ret

;
;----------------------------------------------
;
;   " "
;   
;     point_proc3

 oll_erased:
  LLPRINT str13
   acall bloc_fb
   LONG_cmd erased_mk
  LLPRINT str16
 ljmp point_proc3
;
 erased_mk:
  clr data_key
   mov a,#high oll_clear_c512 ;    
   lcall bspi_txd ; 
   mov a,#low oll_clear_c512 ;    
   lcall bspi_txd ; 
   clr a
   jnb vpph,ovr_setv
   inc a ;   
 ovr_setv:
   lcall bspi_txd ;   
         ;   
   lcall smart_qt_master
  ret

;
;----------------------------------------------
;
;   "  "
;      
;     point_proc3
 clear_test:
  LLPRINT str14
  ;    
  acall bloc_fb
  clr ver_er
  mov PCL_fb_buf,#0
  mov PCH_fb_buf,#Pfb2_mask ;   
  mov errk,#0xFF ;   
  ELL_ON
 LTtest:
  acall mark0 ;    
 lptest:
  LONG_cmd byte_reader
  jb ver_er,goog_go
  mov errd,a
  mov erradrl,PCL_fb_buf
 goog_go:
  xrl a,errk
  jz goog_go1
  setb ver_er
 goog_go1:
  inc PCL_fb_buf
  mov a,PCL_fb_buf
  jnz lptest
  jb ver_er,out_error
  LLPRINT mk_str3 ;   "*"( )
  inc PCH_fb_buf
  mov a,PCH_fb_buf
  anl a,#0b00111111
  xrl a,dump_size+1
  jz end_noer
  ajmp LTtest
 end_noer:
  LLPRINT str16
 end_clrtest:
  acall bloc_fb
  ELL_OFF
  WAITT 150
 ljmp point_proc3
;
 out_error:
  acall erroprint
  sjmp end_clrtest

;
;----------------------------------------------
;
;   ( )
;     kotuinko
;    ,   Z-
;   FB4012
 saver:
  LLPRINT str19 ; "    "
  acall bloc_fb
  ELL_ON
;     dptr  PCH_fb_buf:PCL_fb_buf
   mov dptr,#0
   mov PCL_fb_buf,#0
   mov PCH_fb_buf,#0 ; start status /rd
   movx a,@dptr
   mov Pfb0_buf,a
 start_save1:
  acall mark0 ;    
 start_save:
  LONG_cmd byte_sawer ;     
  jb ver_er,goog_go2
  mov errd,a
  mov errk,Pfb0_buf
  mov erradrl,PCL_fb_buf
 goog_go2:
  xrl a,errk ;   
  jz goog_go3
  setb ver_er
 goog_go3:
   jb ver_er,endsw_forerror ;    
   inc dptr ;  dptr
   inc PCL_fb_buf ;  PCL_fb_buf    
   mov a,PCL_fb_buf
   jz point0 ;   0   point0
    ajmp start_save ;    0   start_save
 point0:
   LLPRINT mk_str3 ;    "*"
	      ;   
   inc PCH_fb_buf ;  PCH_fb_buf
   mov a,PCH_fb_buf ;   
   anl a,#0b00111111 ;    
   xrl a,dump_size+1 ;    dump_size+1
   jz endps
  ajmp start_save1 ;    start_save1
 endps:
  acall bloc_fb ;   -  
  ELL_OFF
  LLPRINT str16 ;  "  "
  WAITT 100 ;  1  
 ljmp point_proc3 ;    
 ;    Z-   
 ;   

 endsw_forerror:
  acall erroprint
  sjmp endps






;**********************************************************









;
;----------------------------------------------
;

;  


;   
;verifer:
;  LLPRINT str19 ; "    "
;  acall bloc_fb
;  ELL_ON
;     dptr  PCH_fb_buf:PCL_fb_buf
;   mov dptr,#0
;   mov PCL_fb_buf,#0
;   mov PCH_fb_buf,#0 ; start status /rd
; start_save1:
;  acall mark0 ;    


; point0:
;   LLPRINT mk_str3 ;    "*"
	      ;   
;   inc PCH_fb_buf ;  PCH_fb_buf
;   mov a,PCH_fb_buf ;   
;   anl a,#0b00111111 ;    
;   xrl a,dump_size+1 ;    dump_size+1
;   jz endps
;  ajmp start_save1 ;    start_save1
; endps:
;  acall bloc_fb ;   -  
;  ELL_OFF
;  LLPRINT str16 ;  "  "
  WAITT 100 ;  1  
 ljmp point_proc3 ;    
 ;    Z-   
 ;   

;
;----------------------------------------------
;
;









;
;----------------------------------------------
;


;
;----------------------------------------------
;


;
;----------------------------------------------
;

;
;----------------------------------------------
;