If you want to perform bit or
use only 1 of |
not 2 ||
So I think
dcbytes[i]=(a<<SH) || (b>>(4-SH));
dcbytes[i]=(a<<SH) | (b>>(4-SH));
Thank you for your input. That did fix the major problem. There is now a new distortion in the characters. Perhaps there is something wrong with my logic. I'll experiment further. Thanks again.