

;Inputs: MUX_1, MUX_2, MUX_3, MUX_4, MUX_5, MUX_6, MUX_7, MUX_8
;Outputs: MESS_1, MESS_2

;;;MESS_1 DATA 0x10   ???? this is in bank2 ???
;;;MESS_2 DATA 0x11    ???? this is in bank2 ???
; MUX_1 through 8 will all each contain a value from RES_1 through RES_4
;;;;MUX_1 DATA 0x20;
;;;;.....
;;;;MUX_8 DATA 0x27
;8 bytes instead 16 bits ????


MUX_1byte DATA 100 ;or 0x20 , but manipulating as single bits is not needed ;in this  task (as i assume)
MUX_2byte DATA 101

RES_1 EQU 0x00
;...
RES_4 EQU 0x03



SETMUX1_8byR2R3:  ;R2 is mux numberr 1..8  ,r3 is value res_1..res_4 (0..3)
        
               mov a,r2
               jz SETMUX1_8byR2R3fail
               clr c
               subb a,#9
               jnc SETMUX1_8byR2R3fail
               ;here we are sure mux number is in allowed margins 1..8

              mov a,r3
              anl a,#3 ;2 bits for muxer , see RES_1,RES4
              mov r3,a

              mov a,r2 ;mux number 1..8
              dec a
              ;divide by 4 , ;four muxers in one byte 
              rr a 
              rr a 
              anl a,#1 

              add a,#MUX_1byte
              mov r0,a
              mov a,r2

              mov r4,#3 ;help byte

setmux1_8_r3prepare:
              dec a 
              anl a,#3 
              jz setmux1_8_r3ready
              xch a,r3
              rl a
              rl a
              xch a,r3             
              push a
              mov a,r4
              rl a
              rl a
              mov r4,a       
              pop a
              jmp setmux1_8_r3prepare   
setmux1_8_r3ready:
              mov a,r4
              xrl a,#0ffh
              anl a,@r0
              orl a,r3
              mov @r0,a
              mov a,#0ffh ; ok result
              ret

 SETMUX1_8byR2R3fail:
             clr a ;error result
             ret
