I'm not sure how you have it set up but you shouldn't need a theoretical ss16 for carrying on a base 16 multiplier.
Lets say you have a current value of 14(E) and you add 7. You check if 14(E) + (7-1)=15(F). If true, subtract the inverse of the current value (~14=1) from (7-1), set that as the current value of that digit(6-1=5) and carry 1 to the next. Otherwise, add 7 to current value.
X0 = output digit memory value
Y = repeated input value
~X = compliment
B = base number
if (X0 + (Y - 1)>=B)
X0 = (Y - 1) - ~X0, X1 = X1 + 1;
else
X0 = X0 + Y;
I'm pretty sure that's how I made mine...
Lets say you have a current value of 14(E) and you add 7. You check if 14(E) + (7-1)=15(F). If true, subtract the inverse of the current value (~14=1) from (7-1), set that as the current value of that digit(6-1=5) and carry 1 to the next. Otherwise, add 7 to current value.
X0 = output digit memory value
Y = repeated input value
~X = compliment
B = base number
if (X0 + (Y - 1)>=B)
X0 = (Y - 1) - ~X0, X1 = X1 + 1;
else
X0 = X0 + Y;
I'm pretty sure that's how I made mine...