Hello Forum,
Herein I enclose a snippet to use as subroutine for driving WS2812S LEDs

Code:
'------------------------------------------------------------------------------
Dim candlecntr As Byte

All_Leds_Change:
    For candlecntr = 0 To MAXCANDLEcnt
        Green[candlecntr] = Var0
        Red[candlecntr] = Var1
        Blue[candlecntr] = Var2
    Next candlecntr

WriteLeds: 'Sub Routine to write data to WS2812
'-------Timing is important. here don't change anything-------

    For candlecntr = 0 To MAXCANDLEcnt 'Controlling 24 leds
        Var0 = Red[candlecntr]
        Var1 = Green[candlecntr]
        Var2 = Blue[candlecntr]
        Clear GIE
        ' Red
        If Var0.7 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.6 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.5 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.4 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.3 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.2 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.1 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var0.0 = 0 Then GoSub LowBit :Else: GoSub Highbit
        'Green
        If Var1.7 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.6 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.5 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.4 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.3 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.2 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.1 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var1.0 = 0 Then GoSub LowBit :Else: GoSub Highbit
        'Blue
        If Var2.7 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.6 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.5 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.4 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.3 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.2 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.1 = 0 Then GoSub LowBit :Else: GoSub Highbit
        If Var2.0 = 0 Then GoSub LowBit :Else: GoSub Highbit
        Set GIE
    Next candlecntr
Return



'*****************************************************************************
'SUB-ROUTINES
'*****************************************************************************

'High Bit timing routine
Highbit:
OutLEDs = TRUE

@NOP
@NOP
@NOP
@NOP
@NOP
@NOP

OutLEDs = FALSE


'@NOP
'@NOP
'@NOP
'@NOP
Return

'Low Bit Timing routine
LowBit:
OutLEDs = TRUE
@NOP
@NOP
OutLEDs = FALSE
@NOP
@NOP
' 4 nops removed to compensate for 'IF' statements
;@NOP
;@NOP
;@NOP
;@NOP
Return
I couldn't test it personally, our friend Giuseppe has the hardware, but anyway everybody's invited to test it.
Giuseppe found a situation where the compiler didn't include the context restore, no saving the a system variable and no Retfie.