;-------
;
; index-to-bitmask b0 = 0 b0 = 1 b1 = 0 b1 = 1
; 0 00000000 -> 00000001 00000001 00000001
; 1 00000001 -> 00000010 00000010 00000010
; 2 00000010 -> 00000100 00000100 00000100
; 3 00000011 -> 00001000 00001000 00001000
;
; 4 00000100 -> 00010000
; 5 00000101 -> 00100000
; 6 00000110 -> 01000000
; 7 00000111 -> 10000000
;
; 11 words, 14 cycles (sub), 2 vars
; 10 words, 10 cycles (in-line), 2 vars
;
ndx2mask
movwf index ; save index (0..7) |B0
movlw b'00000100' ; ndx 2 |B0
btfss index,1 ; bit 1 set? no, skip, else |B0
movlw b'00000001' ; ndx 0 |B0
movwf mask ; |B0
btfsc index,0 ; bit 0 set? no, skip, else |B0
addwf mask,F ; ndx 3 or ndx 1 |B0
btfsc index,2 ; bit 2 set? no, skip, else |B0
swapf mask,F ; |B0
movf mask,W ; |B0
return ; |B0