;
;
;  fbc_util.txt
;
;   
;    
;   
;
;
;----------------------------------------
;
 .org smart_vectors+256

;
;----------------------------------------
;    0

;     0
 RD_p0_proc:
  mov data_t,P0
  ajmp rd_ports

;     0
 WR_p0_proc:
  acall bspi_rxd
  mov P0,data_t
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   0
 Wbm1_p0_proc:
  acall bspi_rxd
  mov a,data_t
  orl P0,a
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   0
 Wbm0_p0_proc:
  acall bspi_rxd
  mov a,data_t
  cpl a
  anl P0,a
  acall smart_qt_slave
  ajmp wait_com

;
;----------------------------------------
;    1

;     1
 RD_p1_proc:
  mov data_t,P1
  ajmp rd_ports

;     1
 WR_p1_proc:
  acall bspi_rxd
  mov P1,data_t
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   1
 Wbm1_p1_proc:
  acall bspi_rxd
  mov a,data_t
  orl P1,a
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   1
 Wbm0_p1_proc:
  acall bspi_rxd
  mov a,data_t
  cpl a
  anl P1,a
  acall smart_qt_slave
  ajmp wait_com

;
;----------------------------------------
;    2

;     2
 RD_p2_proc:
  mov data_t,P2
  ajmp rd_ports

;     2
 WR_p2_proc:
  acall bspi_rxd
  mov P2,data_t
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   2
 Wbm1_p2_proc:
  acall bspi_rxd
  mov a,data_t
  orl P2,a
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   2
 Wbm0_p2_proc:
  acall bspi_rxd
  mov a,data_t
  cpl a
  anl P2,a
  acall smart_qt_slave
  ajmp wait_com

;
;----------------------------------------
;    3

;     3
 RD_p3_proc:
  mov a,P3
  orl a,#trd_mask
  mov data_t,a ;   bus_dtr=bus_clc=bus_qt=1
  ajmp rd_ports

;     3
 WR_p3_proc:
  acall bspi_rxd
  mov a,data_t
  orl a,#trd_mask
  mov P3,a
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   3
 Wbm1_p3_proc:
  acall bspi_rxd
  mov a,data_t
  orl a,#trd_mask
  orl P3,a
  acall smart_qt_slave
  ajmp wait_com

;    
;     
;   3
 Wbm0_p3_proc:
  acall bspi_rxd
  mov a,data_t
  cpl a
  orl a,#trd_mask
  anl P3,a
  acall smart_qt_slave
  ajmp wait_com

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

 rd_ports:
  clr data_key
  acall bspi_txd
 ajmp wait_com ;   
 ;     

;
;----------------------------------------
;     /
;  fb4012

 read_hed:
  mov r4,#11
  mov r5,#1
 tr_simv:
  mov a,r5
  acall rd_simv
  mov data_t,a
  acall bspi_txd
  inc r5
  djnz r4,tr_simv
 ajmp wait_com
;
 rd_simv:
    movc a,@a+PC
  ret
  .db "FB4012 V0.1"

;
;----------------------------------------
;      0xFF

 oll_on:
  mov a,#0xFF
  mov P0,a
  mov P1,a
  mov P2,a
  mov P3,a
  acall smart_qt_slave
  ajmp wait_com

;
;----------------------------------------
;      0x00
;  -   bspi -
;   

 oll_off:
  clr a
  mov P0,a
  mov P1,a
  mov P2,a
  orl a,#trd_mask
  mov P3,a
  acall smart_qt_slave
  ajmp wait_com

;
;----------------------------------------
;    
 inc_p0_proc: ; com_vect_inc_P0v 0b00100110
   inc P0
   acall smart_qt_slave
  ajmp wait_com
 inc_p1_proc: ; com_vect_inc_P1v 0b00101000
   inc P1
   acall smart_qt_slave
  ajmp wait_com
 inc_p2_proc: ; com_vect_inc_P2v 0b00101010
   inc P2
   acall smart_qt_slave
  ajmp wait_com
 inc_p3_proc: ; com_vect_inc_P3v 0b00101100
   mov a,P3
   rr a
   rr a
   rr a
   inc a
   rl a
   rl a
   rl a
   orl a,#trd_mask
   mov P3,a
   acall smart_qt_slave
  ajmp wait_com
;
;----------------------------------------
;    
 dec_p0_proc: ; com_vect_dec_P0v 0b00101110
   dec P0
   acall smart_qt_slave
  ajmp wait_com
 dec_p1_proc: ; com_vect_dec_P1v 0b00110000
   dec P1
   acall smart_qt_slave
  ajmp wait_com
 dec_p2_proc: ; com_vect_dec_P2v 0b00110010
   dec P2
   acall smart_qt_slave
  ajmp wait_com
 dec_p3_proc: ; com_vect_dec_P3v 0b00110100
   mov a,P3
   rr a
   rr a
   rr a
   dec a
   rl a
   rl a
   rl a
   orl a,#trd_mask
   mov P3,a
   acall smart_qt_slave
  ajmp wait_com
;
;----------------------------------------
;      0
 clr_p0_proc: ; com_vect_clr_P0v 0b00110110
   clr a
   mov P0,a
   acall smart_qt_slave
  ajmp wait_com
 clr_p1_proc: ; com_vect_clr_P1v 0b00111000
   clr a
   mov P1,a
   acall smart_qt_slave
  ajmp wait_com
 clr_p2_proc: ; com_vect_clr_P2v 0b00111010
   clr a
   mov P2,a
   acall smart_qt_slave
  ajmp wait_com
 clr_p3_proc: ; com_vect_clr_P3v 0b00111100
   clr a
   orl a,#trd_mask
   mov P3,a
   acall smart_qt_slave
  ajmp wait_com
;
;----------------------------------------
;      0FF
 set_p0_proc: ; com_vect_set_P0v 0b00111110
   mov a,#0xFF
   mov p0,a
   acall smart_qt_slave
  ajmp wait_com
 set_p1_proc: ; com_vect_set_P1v 0b01000000
   mov a,#0xFF
   mov p1,a
   acall smart_qt_slave
  ajmp wait_com
 set_p2_proc: ; com_vect_set_P2v 0b01000010
   mov a,#0xFF
   mov p2,a
   acall smart_qt_slave
  ajmp wait_com
 set_p3_proc: ; com_vect_set_P3v 0b01000100
   mov a,#0xFF
   mov p3,a
   acall smart_qt_slave
  ajmp wait_com
;
;----------------------------------------
;     
 cpl_p0_proc: ; com_vect_cpl_P0v 0b01000110
   mov a,p0
   cpl a
   mov p0,a
   acall smart_qt_slave
  ajmp wait_com
 cpl_p1_proc: ; com_vect_cpl_P1v 0b01001000
   mov a,p1
   cpl a
   mov p1,a
   acall smart_qt_slave
  ajmp wait_com
 cpl_p2_proc: ; com_vect_cpl_P2v 0b01001010
   mov a,p2
   cpl a
   mov p2,a
   acall smart_qt_slave
  ajmp wait_com
 cpl_p3_proc: ; com_vect_cpl_P3v 0b01001100
   mov a,p3
   cpl a
   orl a,#trd_mask
   mov p3,a
   acall smart_qt_slave
  ajmp wait_com
;
;----------------------------------------
;