Here's one that won't get used.
But since the questions of how big and how fast came up, you won't find anything smaller or faster. (unless Bruce shows up) 
Code:
GroupVars VAR BYTE[6]
A VAR GroupVars(0)
B VAR GroupVars(1)
C VAR GroupVars(2)
D VAR GroupVars(3)
ZW VAR WORD EXT : @ZW = _GroupVars + 4
ASM
CHK?RP _GroupVars
swapf _D, W ; swap nibbles in D
iorwf _C, W ; or with C
movwf ZW + 1 ; move to Highbyte of word
swapf _B, W ; swap nibbles in B
iorwf _A, W ; or with A
movwf ZW ; move to LowByte of word
ENDASM
Bookmarks