# Add 4 + 9 = 13 on a counter machine, clocked by repeated cup expansions. # # export TERMINFO="$PWD"; tic add.txt; TERM=add; yes 'cup 0 0' | head -n 20 | tput -S # 0: A=4, B=9, Z=1 # 1: JZDEC B,3,2 # block 1: if B is empty, halt # 2: INC A,1 # block 2: move one unit from B into A # 3: HALT # block 3 add,cup= # if (Z == 0) { A = 4; B = 9; Z = 1 } %?%gZ%{0}%=%t %{4}%PA %{9}%PB %{1}%PZ # else if (Z == 1) { if (B == 0) { Z = 3 } else { B = B-1; Z = 2 } } %e%gZ%{1}%=%t %?%gB%{0}%=%t %{3}%PZ %e %gB%{1}%-%PB %{2}%PZ %; # else if (Z == 2) { A = A + 1; Z = 1 } %e%gZ%{2}%=%t %gA%{1}%+%PA %{1}%PZ # else if (Z == 3) { HALTED } %e%gZ%{3}%=%t %; # print the trace after executing this expansion Z=%gZ%d A=%gA%d B=%gB%d\n,