leftshift on unsigned long

Marthino:
what am I doing wrong ??

Probably shifting bytes too far without casting a compatible type. Shifted bits get lost before d gets them.
Try the same with b0-3 defined as unsigned long instead of byte.