# ABCDE FGHIJ KLMNO PQRST big-endian bits # ST no longer used for this # S master loop S times # T break from master loop # UVWXYZ for other stuff # U carry bit # V if else # Convert to binary REPEAT X TIMES ( INCREASE V REPEAT A TIMES ( CLEAR A INCREASE U CLEAR V ) REPEAT V TIMES ( INCREASE A CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT B TIMES ( CLEAR B CLEAR V ) REPEAT V TIMES ( INCREASE B CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT C TIMES ( CLEAR C CLEAR V ) REPEAT V TIMES ( INCREASE C CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT D TIMES ( CLEAR D CLEAR V ) REPEAT V TIMES ( INCREASE D CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT E TIMES ( CLEAR E CLEAR V ) REPEAT V TIMES ( INCREASE E CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT F TIMES ( CLEAR F CLEAR V ) REPEAT V TIMES ( INCREASE F CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT G TIMES ( CLEAR G CLEAR V ) REPEAT V TIMES ( INCREASE G CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT H TIMES ( CLEAR H CLEAR V ) REPEAT V TIMES ( INCREASE H CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT I TIMES ( CLEAR I CLEAR V ) REPEAT V TIMES ( INCREASE I CLEAR U CLEAR V ) REPEAT U TIMES ( INCREASE V REPEAT J TIMES ( CLEAR J CLEAR V ) REPEAT V TIMES ( INCREASE J CLEAR U CLEAR V ) ) ) ) ) ) ) ) ) ) CLEAR U ) PRINT X INCREASE T # If all but A are 0, break INCREASE U REPEAT B TIMES ( CLEAR U ) REPEAT C TIMES ( CLEAR U ) REPEAT D TIMES ( CLEAR U ) REPEAT E TIMES ( CLEAR U ) REPEAT F TIMES ( CLEAR U ) REPEAT G TIMES ( CLEAR U ) REPEAT H TIMES ( CLEAR U ) REPEAT I TIMES ( CLEAR U ) REPEAT J TIMES ( CLEAR U ) REPEAT K TIMES ( CLEAR U ) REPEAT L TIMES ( CLEAR U ) REPEAT M TIMES ( CLEAR U ) REPEAT N TIMES ( CLEAR U ) REPEAT O TIMES ( CLEAR U ) REPEAT P TIMES ( CLEAR U ) REPEAT Q TIMES ( CLEAR U ) REPEAT R TIMES ( CLEAR U ) REPEAT U TIMES ( CLEAR T ) CLEAR U REPEAT T TIMES ( INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S REPEAT S TIMES ( INCREASE S INCREASE S INCREASE S INCREASE S ) REPEAT S TIMES ( INCREASE S INCREASE S INCREASE S ) INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S INCREASE S REPEAT S TIMES ( # loop REPEAT T TIMES ( # break # If A, 3n+1 # Y previous bit and shl # Else shl INCREASE V REPEAT A TIMES ( CLEAR V CLEAR A INCREASE U INCREASE U REPEAT B TIMES ( INCREASE U INCREASE Y ) CLEAR B REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT B TIMES ( CLEAR B INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE B CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT C TIMES ( INCREASE Y INCREASE U ) # | CLEAR C REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT C TIMES ( CLEAR C INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE C CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT D TIMES ( INCREASE Y INCREASE U ) # | CLEAR D REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT D TIMES ( CLEAR D INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE D CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT E TIMES ( INCREASE Y INCREASE U ) # | CLEAR E REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT E TIMES ( CLEAR E INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE E CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT F TIMES ( INCREASE Y INCREASE U ) # | CLEAR F REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT F TIMES ( CLEAR F INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE F CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT G TIMES ( INCREASE Y INCREASE U ) # | CLEAR G REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT G TIMES ( CLEAR G INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE G CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT H TIMES ( INCREASE Y INCREASE U ) # | CLEAR H REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT H TIMES ( CLEAR H INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE H CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT I TIMES ( INCREASE Y INCREASE U ) # | CLEAR I REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT I TIMES ( CLEAR I INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE I CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT J TIMES ( INCREASE Y INCREASE U ) # | CLEAR J REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT J TIMES ( CLEAR J INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE J CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT K TIMES ( INCREASE Y INCREASE U ) # | CLEAR K REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT K TIMES ( CLEAR K INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE K CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT L TIMES ( INCREASE Y INCREASE U ) # | CLEAR L REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT L TIMES ( CLEAR L INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE L CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT M TIMES ( INCREASE Y INCREASE U ) # | CLEAR M REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT M TIMES ( CLEAR M INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE M CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT N TIMES ( INCREASE Y INCREASE U ) # | CLEAR N REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT N TIMES ( CLEAR N INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE N CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT O TIMES ( INCREASE Y INCREASE U ) # | CLEAR O REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT O TIMES ( CLEAR O INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE O CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT P TIMES ( INCREASE Y INCREASE U ) # | CLEAR P REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT P TIMES ( CLEAR P INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE P CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT Q TIMES ( INCREASE Y INCREASE U ) # | CLEAR Q REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT Q TIMES ( CLEAR Q INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE Q CLEAR V ) ) CLEAR U REPEAT Z TIMES ( INCREASE U ) CLEAR Z REPEAT Y TIMES ( INCREASE U ) CLEAR Y # Save current for future use REPEAT R TIMES ( INCREASE Y INCREASE U ) # | CLEAR R REPEAT U TIMES ( # Count carry + previous + current INCREASE V REPEAT R TIMES ( CLEAR R INCREASE Z # Carry CLEAR V ) REPEAT V TIMES ( INCREASE R CLEAR V ) ) CLEAR Z CLEAR U CLEAR Y REPEAT X TIMES ( INCREASE X INCREASE X ) INCREASE X PRINT X CLEAR A REPEAT B TIMES ( INCREASE A ) CLEAR B REPEAT C TIMES ( INCREASE B ) CLEAR C REPEAT D TIMES ( INCREASE C ) CLEAR D REPEAT E TIMES ( INCREASE D ) CLEAR E REPEAT F TIMES ( INCREASE E ) CLEAR F REPEAT G TIMES ( INCREASE F ) CLEAR G REPEAT H TIMES ( INCREASE G ) CLEAR H REPEAT I TIMES ( INCREASE H ) CLEAR I REPEAT J TIMES ( INCREASE I ) CLEAR J REPEAT K TIMES ( INCREASE J ) CLEAR K REPEAT L TIMES ( INCREASE K ) CLEAR L REPEAT M TIMES ( INCREASE L ) CLEAR M REPEAT N TIMES ( INCREASE M ) CLEAR N REPEAT O TIMES ( INCREASE N ) CLEAR O REPEAT P TIMES ( INCREASE O ) CLEAR P REPEAT Q TIMES ( INCREASE P ) CLEAR Q REPEAT R TIMES ( INCREASE Q ) CLEAR R # Convert back to decimal CLEAR X REPEAT R TIMES ( INCREASE X REPEAT X TIMES ( INCREASE X ) ) REPEAT Q TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT P TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT O TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT N TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT M TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT L TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT K TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT J TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT I TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT H TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT G TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT F TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT E TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT D TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT C TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT B TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT A TIMES ( INCREASE X ) PRINT X ) REPEAT V TIMES ( CLEAR V CLEAR A REPEAT B TIMES ( INCREASE A ) CLEAR B REPEAT C TIMES ( INCREASE B ) CLEAR C REPEAT D TIMES ( INCREASE C ) CLEAR D REPEAT E TIMES ( INCREASE D ) CLEAR E REPEAT F TIMES ( INCREASE E ) CLEAR F REPEAT G TIMES ( INCREASE F ) CLEAR G REPEAT H TIMES ( INCREASE G ) CLEAR H REPEAT I TIMES ( INCREASE H ) CLEAR I REPEAT J TIMES ( INCREASE I ) CLEAR J REPEAT K TIMES ( INCREASE J ) CLEAR K REPEAT L TIMES ( INCREASE K ) CLEAR L REPEAT M TIMES ( INCREASE L ) CLEAR M REPEAT N TIMES ( INCREASE M ) CLEAR N REPEAT O TIMES ( INCREASE N ) CLEAR O REPEAT P TIMES ( INCREASE O ) CLEAR P REPEAT Q TIMES ( INCREASE P ) CLEAR Q # Convert back to decimal CLEAR X REPEAT R TIMES ( INCREASE X REPEAT X TIMES ( INCREASE X ) ) REPEAT Q TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT P TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT O TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT N TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT M TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT L TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT K TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT J TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT I TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT H TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT G TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT F TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT E TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT D TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT C TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT B TIMES ( INCREASE X ) REPEAT X TIMES ( INCREASE X ) REPEAT A TIMES ( INCREASE X ) PRINT X ) # If all but A are 0, break INCREASE U REPEAT B TIMES ( CLEAR U ) REPEAT C TIMES ( CLEAR U ) REPEAT D TIMES ( CLEAR U ) REPEAT E TIMES ( CLEAR U ) REPEAT F TIMES ( CLEAR U ) REPEAT G TIMES ( CLEAR U ) REPEAT H TIMES ( CLEAR U ) REPEAT I TIMES ( CLEAR U ) REPEAT J TIMES ( CLEAR U ) REPEAT K TIMES ( CLEAR U ) REPEAT L TIMES ( CLEAR U ) REPEAT M TIMES ( CLEAR U ) REPEAT N TIMES ( CLEAR U ) REPEAT O TIMES ( CLEAR U ) REPEAT P TIMES ( CLEAR U ) REPEAT Q TIMES ( CLEAR U ) REPEAT R TIMES ( CLEAR U ) REPEAT U TIMES ( CLEAR T ) CLEAR U ) ) )