# copy 2x iter counter REPEAT X TIMES ( INCREASE Q ) # Q = X REPEAT Q TIMES ( INCREASE Q ) # Q = 2X REPEAT Q TIMES ( INCREASE Q ) # Q = 3X INCREASE Z # 1 REPEAT Z TIMES ( INCREASE Z INCREASE Q ) # 2 REPEAT Z TIMES ( INCREASE Z INCREASE Q ) # 4 REPEAT Z TIMES ( INCREASE Z INCREASE Q ) # 8 PRINT X REPEAT Q TIMES ( CLEAR S # s <= (x > 0) CLEAR P INCREASE P # if x > 1 REPEAT X TIMES ( REPEAT S TIMES ( # Should ignore first iter, execute second iter, ignore all after that # o: store x / 2 for quick access CLEAR O # a: even # b: odd CLEAR A INCREASE A CLEAR B REPEAT X TIMES ( CLEAR T # copy t <= b REPEAT B TIMES ( INCREASE T ) # flip-flop a/b # if a, if b REPEAT A TIMES ( CLEAR A INCREASE B ) REPEAT T TIMES ( CLEAR B INCREASE A INCREASE O ) ) # if a REPEAT A TIMES ( # out alrdy has x / 2 # copy x <= out CLEAR X REPEAT O TIMES ( INCREASE X ) ) # else (if b) REPEAT B TIMES ( # out alrdy has x / 2 # add x <= o REPEAT O TIMES ( INCREASE X ) # x *= 2 REPEAT X TIMES ( INCREASE X ) # x += 1 INCREASE X INCREASE X ) PRINT X ) REPEAT S TIMES ( CLEAR S ) REPEAT P TIMES ( CLEAR P INCREASE S ) ) )