function longAdd( a$, b$ ) as string
result$ = ""
carry = 0
a$ = a$.trim()
b$ = b$.trim()
' Guess longest
diff = abs( b$.len() - a$.len() )
longest = a$.len()
' is it longest
if b$.len() > longest then
longest = b$.len()
a$ = zeroPadLeft(a$, diff)
else
b$ = zeroPadLeft(b$, diff)
end if
' print "@longAdd() a, b: >"; a$ + "< >" + b$ + "< ", carry
for i = longest - 1 to 0 step -1
ai = val( a$.mid(i,1) )
bi = val( b$.mid(i,1) )
sumi$ = str( ai + bi + carry ).trim()
if sumi$.len() = 1
' print "single digit: "; ai, bi, sumi$
result$ = sumi$.mid(0,1) + result$
carry = 0
else
' print "Two digits: "; ai, bi, sumi$
result$ = sumi$.mid(1,1) + result$
carry = val( sumi$.mid(0,1) )
end if
' print "Result: "; result$
' print "Carry: "; carry
end for
if carry > 0 result$ = str(carry) + result$
return result$
end function
function zeroPadLeft( str$, pads ) as string
if pads < 1 then return str$ ' do nothing
for i = 1 to pads
str$ = "0" + str$.trim()
end for
return str$.trim()
end function