Binary Addition! Basic ideas: If we start on a blank, scan right If we start on a '+', jump to "wrapup" Scan past 0/1 to right for '+'. When located, erase it, move to left, record the next digit in state, and replace that with a new +. Then scan right for end of both digit strings. Using state and final '01', record an "A" or "B" representing 0/1 resp. If necessary, carry a one into the 0/1s. Now scan left, past plus. Start from beginning. Wrapup: delete the plus and scan right for A/B, converting A/B to 0/1. Finish on final blank. ?(0 0R If we start on a blank, scan right (0000R Scan past 0/1 to right, stopping at '+' (0110R (0++DL Found '+' -- extend it to left, recording that digit. (D++DL (D0+AR Reinstate plus and remember bit in A/B state. (D1+BR (A++AR Head back to second number and past to end of digits. (A11AR (A00AR (B++BR Head back to second number and past to end of digits. (B11BR (B00BR (A EL Stop and reverse (states E/F) at end. (AAAEL (ABBEL (B FL Stop and reverse (states E/F) at end. (BAAFL (BBBFL (E0ALL 0+0=0 and loop (E1BLL 0+1=1 and loop (F0BLL 1+0=1 and loop (F1ACL 1+1=0 and carry (C01LL carried through and go back to loop. (C10CL keep carrying... (E+ADL Adding new digits. (F+BDL (C+1DL Carried to left end, loop. (L00LL Loop past start of 2nd number... (L11LL (L++DL (D SR Must have been looping -- we ran out of digits! (S+ SR Clean up '+'s (S00SR Pass any digits (S11SR (SA0SR Decode A/B to 0/1 (SB1SR (S HL Halt on final digit.