?<.!?)@
Try it online!
Or in more readable format,
? <
. ! ?
) @
This beats the current Hexagony solution of 11 bytes.
Explanation:
If the first number is not 0, the program takes the following path:
This reads the first number and branches right. Then it reads the second number, followed by wrapping and trying to read a third, but that doesn't exist so it reads 0. This is printed and the program terminated (note that if a>0, since b is non-negative a+b>0).
If the first number is 0, the program takes the following path to start with:
This reads the first number and branches left. It hits the corner, taking the route from along the north-west edge because the number is 0, and reads the second number. It wraps, then increments the second number and prints.
It bounces against the <
, printing the incremented second input again. It increments the value and takes the north-east edge again, but this time because the current edge a twice-incremented non-negative value which is definitely positive. It then tries to get a third input, but receives 0 instead.
Finally it wraps and gets diverted by the arrow, then tries to read a fourth input and gets 0 again. It wraps and tries to read a fifth input and receives 0 for the last time. This it prints, and wraps to the @
and exits.
Note that b*(10^k+1)*10>0+b=b where k is the length of b in digits, so this works.