Thanks. All good stuff. I think we are getting near the limit.

The actual output to the WS2812B 1024 NeoPixel array is handled by the large mixed basic/assembler subroutine below.

I made a couple of small mods so it could work with 1024 leds and one data array holding the LED colour info encoded in bits 5,6,7 and brightness from 0-31 in bits 0-4.
I found brightness of 31 was really bright enough for daytime use and kept power supply requirements within reasonable wall wart limits.

So once the NeoLed array is loaded with the data this routine is called and loops until all 1024 led data has been output.

Code:
NeoPixelASM64:'------------- subroutine call name ----------------
	POINTER = NEO_NUM - 1	'THIS SCHEME USED TO ELIMINATE USING "< or >" COMPARE STATEMENTS
	SCRATCH = NEO_NUM - 1	'THIS SCHEME USED TO ELIMINATE USING "< or >" COMPARE STATEMENTS	


DOGREEN:
	NeoPixel = SCRATCH - POINTER	'PUSH PIXELS FROM LOWEST to HIGHEST! DON'T ASK ME WHY?
	
	NeoPixValue = NeoLed(NeoPixel)	'First, the Green array
	
'Colours %000 10000   (Bits 0-4 Intensity 32 steps 0-31 Default 31)  Bits 5-6-7 (001 Red D32) (010 Green D64) (100 Blue D128)	

	If NeoPixValue.6 = 1 then 
    NeoPixValue = NeopixValue & Brightness    'Clear Colour bits & set Green Intensity
    else 
    NeoPixValue = 0                           'Turn LED Off
    endif         
	
	NEOPIN = 1
ASM
		btfsc   _NeoPixValue, 007h
	    Bra doneg70
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg71
doneg70
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doneg71
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 006h
	    Bra doneg60
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg61
doneg60
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doneg61
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 005h
	    Bra doneg50
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg51
doneg50
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doneg51
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 004h
	    Bra doneg40
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg41
doneg40
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneg41
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 003h
	    Bra doneg30
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg31
doneg30
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doneg31
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 002h
	    Bra doneg20
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg21
doneg20
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneg21
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 001h
	    Bra doneg10
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg11
doneg10
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneg11
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 000h
	    Bra doneg00
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneg01
doneg00
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneg01
endasm

	NeoPixValue = NeoLed(NeoPixel)     'Second, the Red array
	
'Colours %000 10000   (Bits 0-4 Intensity 32 steps 0-31 Default 31)  Bits 5-6-7 (001 Red D32) (010 Green D64) (100 Blue D128)
	
	If NeoPixValue.5 = 1 then 
    NeoPixValue = NeoPixValue & Brightness        'Clear Colour bits & set Red Intensity
    else 
    NeoPixValue = 0                           'Turn LED Off
    endif  	
	
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 007h
	    Bra doneb70
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb71
doneb70
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doneb71
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 006h
	    Bra doneb60
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb61
doneb60
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doneb61
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 005h
	    Bra doneb50
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb51
doneb50
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doneb51
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 004h
	    Bra doneb40
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb41
doneb40
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneb41
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 003h
	    Bra doneb30
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb31
doneb30
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doneb31
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 002h
	    Bra doneb20
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb21
doneb20
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneb21
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 001h
	    Bra doneb10
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb11
doneb10
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneb11
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 000h
	    Bra doneb00
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doneb01
doneb00
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doneb01
endasm

	NeoPixValue = NeoLed(NeoPixel)        'Lastly, the Blue array
	
'Colours %000 10000   (Bits 0-4 Intensity 32 steps 0-31 Default 31)  Bits 5-6-7 (001 Red D32) (010 Green D64) (100 Blue D128)
	
	If NeoPixValue.7 = 1 then 
    NeoPixValue = NeoPixValue & Brightness    'Clear Colour bits & set Blue Intensity
    else 
    NeoPixValue = 0                           'Turn LED Off
    endif  	 	
	
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 007h
	    Bra doner70
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner71
doner70
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doner71
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 006h
	    Bra doner60
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner61
doner60
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doner61
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 005h
	    Bra doner50
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner51
doner50
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
doner51
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 004h
	    Bra doner40
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner41
doner40
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
;		Bcf LATA,3
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doner41
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 003h
	    Bra doner30
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner31
doner30
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
 		NOP
		NOP
		NOP
		NOP
		NOP
 		NOP
doner31
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 002h
	    Bra doner20
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner21
doner20
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doner21
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 001h
	    Bra doner10
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner11
doner10
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doner11
ENDASM
	NEOPIN = 1
ASM	
		btfsc   _NeoPixValue, 000h
	    Bra doner00
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		bra doner01
doner00
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
ENDASM
	NEOPIN = 0
ASM	
		NOP
		NOP
		NOP
		NOP
 		NOP
 		NOP
doner01
endasm
	POINTER = POINTER - 1	'next pixel in the string
	IF POINTER.15 = 0 THEN DOGREEN' < NEO_NUM THEN DOGREEN

	return		'get back to main program.........