Example illustrating how subroutines can be used inside a TM program. By cutting and modifying the first line to point at a particular sub-routine, one can choose between any of: o unary string copier o unary string squarer o unary string multiplier SQUARE SUBROUTINE: #111 ---> #111111111 ^ ^ 1,#,20,> COPIER: ?111 ---> ?111222 ^ ^ 20,1,21,a,> 20,2,23,< 21,1,21,> 21,2,21,> 21,_,22,2,< 22,1,22,< 22,2,22,< 22,a,20,> 23,a,23,1,< 23,#,30,> 23,2,31,< MULTIPLIER SUBROUTINE: #11122222 ---> #111111111111 ^ ^ 30,2,30,1,> 30,1,30,2,> 30,_,31,< 31,1,31,< 31,2,31,< 31,#,33,> 31,2,31,< 31,b,33,> 33,2,34,b,> 34,2,34,> 34,1,35,< 35,2,20,> 35,b,40,> 40,1,40,> 40,2,40,1,> 40,_,41,< 41,1,42,_,< 42,1,42,< 42,b,43,1,< 43,b,40,> 43,#,99,X