;
;          bios_3.txt
;    
;
;----------------------------------------------
;
;       
;     /   0x0000
;        
; ""  -       
;             
;     PCON.POF  0      
;  1  3.   mcs51  
;    =   --,
;       
;       .
;
;         
;     / 0xFF00-0xFFFF
; (glob_systap)
;
;----------------------------------------------
;
 init:
    mov a,PCON
    jb ACC.GF0,hot_init
    jnb P3.KEY_EA,hot_init ;   "   "
 cold_init:
    mov a,#0xFF
    mov P0,a
    mov P1,a
    mov P2,a
    mov P3,a
 hot_init:
    mov r0,#steckend ;      (mcs52)
	  clr a
 cleen:
	 mov @r0,a
	 djnz r0,cleen
	 mov sp,#(ramend) ;     
	 mov auxr,#(1<<dps) ;    ALE ( MOVX/MOVC )
   acall clin_rubbish ;  ,   "hard reset"
;
;----------------------------------------------
;
;   
;
; /0 -  3
; TH0 -      
; IRQ_T1 -    
;    
;     /12
;
; TL0  / 
;      TR0,    /INT0
;   IRQ_TO
;
; /1  2 ( )  
;     9600  
; USART
;    /12
;
; USART  1, / 8    9600  
;    -
;
; 
;  TF1 -  
;  RI/TI -  
;  TF0 -  
;
;------------------------------------------------------------------------
;
;           /
;         "  " 
;
;      INT1
;   
; "   "
;------------------------------------------------------------------------
;
  clr a
  mov TCON,a
  mov TL0,a
  mov TH0,a
  mov a,#tr_spid ;     
  mov TL1,a
  mov TH1,a
  mov TMOD,#0b00100011
  setb SM1 ;  1   
  setb PS
  setb PT1 ;   
  setb ET1 ;     
         ;    TH1
;----------------------------------------------
;     
;    
;
   mov cnts1,#sys_clc2 ;   0,01 
   mov wtm1,#10 ; N*0,01S   en_wtm1=0 !!
;
   setb TR1 ;     
   setb ES ;    
;----------------------------------------------
 re_init:
    mov a,PCON ;    
    jnb ACC.GF0,roram_test ;   
    ajmp echo_rst ;      glob_systap
;----------------------------------------------
 roram_test:
   jnb P3.KEY_EA,sgf0 ;    /    
; blok_mus_tx:
;   mov SBUF,0 ;    
;   jnb TI,$ ; ""   TxD     
;   clr TI
  setb EA ;  
   ELL_ON ;  ELL_ON     TxD
;----------------------------------------------
   LPRINT str10 ;  START TEST RAM
   WAIT_TOF
;----------------------------------------------
  .using 0
		mov r0,AR1
		mov r1,#0xAA
		mov r2,#0x55
		mov r3,#0xFF
		mov r4,#0b10011001
		mov r5,#0
		mov r7,#5
 writ_0:
   mov dptr,#0
 writ_1:
   mov a,@r0
   movx @dptr,a
   inc dptr
   clr a
   cjne a,DPL,writ_1
   cjne a,DPH,writ_1
   cpl P3.LED_EL
 river_0:
   mov dptr,#0
 river_1:
   movx a,@dptr
   xrl a,@r0
   jnz ramerr
   inc dptr
   clr a
   cjne a,DPL,river_1
   cjne a,DPH,river_1
   cpl P3.LED_EL
   inc r0
   djnz r7,writ_0
   LPRINT str11 ;  TEST RAM OK
   WAIT_TOF ;      0x00
;----------------------------------------------
 sgf0:
  mov a,#(1<<GF0)
  mov PCON,a ;   "  "
   sjmp echo_rst
;----------------------------------------------
 ramerr:
   LPRINT str12 ;  TEST RAM ERROR
   WAIT_TOF ;       
 stop_on_error:
  sjmp stop_on_error
;----------------------------------------------
 echo_rst:
  acall set_vect_tbl ;  -
	       ;   " "
				;   
        ;   
        ; irq_INT0, irq_TF0  irq_TexF2  
        ;      reti
  clr EA ;  
     ;     
     ;  reboot_key ( S_RBT)
;  setb IT1 ;  irq_INT1  
;  setb PX1 ;    irq_INT1
;  setb EX1 ;   irq_INT1  
        ;   
        ;   
  setb EA ;  
   ELL_OFF
   WAITT 100
   ELL_ON
   WAITT 10
   ELL_OFF
   WAITT 20
   ELL_ON
   WAITT 10
   ELL_OFF
   WAITT 20
   ELL_ON ;    ELL(EL)
   WAITT 10
   ELL_OFF
   WAITT 150
   ELL_ON
   jnb P3.KEY_EA,irpp
   LPRINT str8 ;   
   WAIT_TOF
   sjmp wait_Son1
 irpp:
   LPRINT str9 ;   /
   WAIT_TOF
 wait_Son1:

   LPRINT str0
   WAIT_TOF
   LPRINT str4 ;    
   WAIT_TOF
   WAITT 250
   ELL_OFF

;   WAIT_TOF
;   WAITT 50
; wait_Son:
;   jb P3.S_SCL,wait_Son ;   
;   WAITT 10
; wait_Soff:
;   jnb P3.S_SCL,wait_Soff ;   
;   WAITT 10
;   ELL_OFF
;   WAITT 100
;   ELL_ON
;   WAITT 20

   
   WAITT 50
  acall bottle 
;----------------------------------------------
;
;      \
;  
;    ap_fill=0     \
;                        
;    glob_er=?    " "
;    eof_ldr=1/?     "  "
;
;    
;  boot_addr+1:boot_addr
;
;----------------------------------------------
;   
     acall proc_txd_init
      WAIT_TOF ;     
      jbc eof_ldr,work_start ;     work_start
      clr glob_er ;    (    )
     ajmp echo_rst ;    echo_rst (  )
;--------------------------------------
 work_start:
       ;    0xFFF0
       mov dptr,#key_proc
       mov r0,#low(poz_1-poz_0)
       mov r1,#0
 lp_00:
       mov a,r1
       acall rekey
       movx @dptr,a
       inc dptr
       inc r1
       djnz r0,lp_00
       sjmp poz_1
 rekey:
      inc a
      movc a,@a+pc
      ret
 poz_0:
      clr P3.KEY_EA ;   =
             ; \  ,    
             ;   00000\
      pop DPH ;        , 
      pop DPL ;   bottle  boot_addr+1:boot_addr
      clr a
      jmp @a+dptr ;    
      nop
 poz_1:
       clr EA ; DI       
           ;  
           ;       
           ;    !
       SEL_RB 0 ;     RB 0
       push boot_adr ;     
       push (boot_adr+1)
       mov dptr,#key_proc ;    key_proc  DPTR
       clr CY ;
       mov a,#low romend ;   
       subb a,boot_adr
       mov a,#high romend
       subb a,(boot_adr+1)
       jc poz_2 ;   00000 - 0x1FFF 
			          ;  -> 
               ;  KEY_EA=0
       clr a
       jmp @a+dptr
 poz_2:
       mov a,#2
      jmp @a+dptr ;   P3.KEY_EA  !
;------------------------------------------------------------------
;
		      ;   ,
          ;       00000 - 0x1FFF
          ;      (  AT89C/S52)
          ;   =   !!!
          ;
          ; ,    
          ;      
          ;   0x2000  
          ;
          ;    /  
          ;   00000 - 0x1FFF  
          ;   3.KEY_EA=1
          ;       
          ;    :
          ;                          0x0000-0x1FFF
          ;                          0x0000-0x1FFF
          ;   ( /)    0x2000-0xFF00
          ;  b52m v0.1     
          ;   ,    bios
          ;
          ;     
          ;     /
          ; (0x0000-0xFFFF  3.KEY_EA=0)   
					;       reset
					;    , 
					;  soft_reset
					;  -     ,
					;    
					;
					;     WDT
					;   
					;        
					;     reset
					;     
					; ( reboot_key.txt  )
					;           WDT !!!
					;
					;

;
;