# 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 and shl # Y previous bit # 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 ) # Last bit is simpler as it doesn't carry REPEAT Y TIMES ( INCREASE U ) REPEAT R TIMES ( INCREASE U ) REPEAT U TIMES ( # Count carry + previous + current CLEAR R INCREASE R ) CLEAR Y CLEAR U 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 ) ) )