Welcome to the Parallax Discussion Forums, sign-up to participate.
'Main tight bit loop starts here:- ' Bit output order looks like this  ' state: data low high ' delay: 0.36 0.56 0.36 usec :loop rdlong dat1, ptr1 '008 get first strip data, 00RRGGBB format test dat1, bmask wc '012 extract single data bit and copy it to C flag if_nc andn opmask, led1mask '016 if led1 data bit was 0, zero the mask at the led1 pin position rdlong dat2, ptr2 '024 get first strip and outa, out0mask '028 all led outputs low <- near 0.36 usec mark after data output test dat2, bmask wc '032 get data bit into Z if_nc andn opmask, led2mask '036 zero led2 pin if data bit was zero. test bitctr,#31 wz '040 check whether in last bit. store result in zero flag. if_z add ptr1,inc1 '044 move onto next led if last bit if_z add ptr2,inc2 '048 move onto next LED rdlong dat3, ptr3 '056 get third channel data test dat3, bmask wc '060 get data bit into C if_nc andn opmask, led3mask '064 if led3 data bit was 0, zero the mask at the led3 pin position rdlong dat4, ptr4 '072 get fourth channel data test dat4, bmask wc '076 get data bit into C if_nc andn opmask, led4mask '080 zero led4 pin if data bit was 0. or outa, out1mask '084 all led outputs high <- near 0.56us after previous transition. Hence out of order slightly if_z add ptr3,inc3 '088 move onto next LED if_z add ptr4,inc4 '092 move onto next LED ror bmask, #1 '096 ready to extract next bit rdlong dat5, ptr5 '104 get fifth strip led data test dat5, bmask wc '108 get data bit into C if_c andn opmask, led5mask '112 zero led5 pin only if data bit was 0. if_z add ptr5,inc5 '116 move onto next led5 data and outa, opmask '120 Clear the pin bits that must be zero. Others (1s) will be cleared later when all go to zero. <- 0.36us after previous transition mov opmask, #$1ff '124 reset the output mask for the next iteration djnz bitctr, #:loop '128 jump to back and do another 24/32 bits for the next LED