First, allow me to express my sheer astonishment that BCD is still even slightly relevant in the 21st century. This appears to be a pure software algorithm designed to work around the fact that modern CPUs no longer include BCD related instructions; for example, AMD64 drops the AAA, AAD, AAM and AAS instructions that were present in x86, and reuses their opcodes for other (much more widely useful) purposes.
The patent is, as usual, very difficult to read for the purposes of understanding the algorithm embodied in it, so rather than provide prior art here, I will simply describe the algorithm more clearly for computer people.
NB: these are the amended claims a described by another answer.
// Claim 1
uint32_t bcdAdd(uint32_t a, uint32_t b)
// Claim 2 - ensures that digit-to-digit carries occur.
a += 0x66666666;
// Claim 3
uint32_t s = a + b;
// Claim 4 - determine where digit-to-digit carries occurred.
// I couldn't quickly understand how the patentee did it, so
// I'm doing it the obvious way instead. This leaves a flag
// in the high bit of each nybble, indicating whether a carry
// did not occur out of that nybble.
uint32_t c = ~((a | b) & ~s) & 0x88888888;
// Claim 5 - there are potentially several ways to obtain the
// overall carry, but this one is easiest in pure C. In pure
// assembly, the carry is trivially obtained during the step
// above for Claim 3, eg. using ADC instead of ADD.
// Claim 6 is then simply carrying into the next set of digits,
// which is an obvious and trivial step once you have the carry.
bool carry = (~c) >> 31;
// Claim 7 - adjust only the digits that didn't carry.
// The below code is equivalent to s -= (c >> 3) * 6 but is faster.
s -= (c >> 1) + (c >> 2);
It is worth noting that I only had to read the claims and think for a couple of minutes to determine what the "adjustment constant" and the remaining details of the algorithm were. I consider it highly likely that some competent computer scientist has done so before me, without the benefit of the patent claims. The trick, of course, is figuring out who and when.
I did spot a disingenuous comment in the Description of the patent, suggesting that BCD "allows for faster decimal calculations in electronic devices." Since the above code would compile to roughly a dozen instructions (depending on the CPU involved) for a simple addition, and would have execution time comparable to a multiply on conventional binary numbers, this claim is laughable.