DIM @environ$(12) @% = 4 : REM Column width REM Initialise: FOR E% = 1 TO 12 PROCsetenvironment(@environ$(E%)) seq% = E% cnt% = 0 @environ$(E%) = FNgetenvironment NEXT REM Run hailstone sequences: REPEAT T% = 0 FOR E% = 1 TO 12 PROCsetenvironment(@environ$(E%)) PRINT seq% ; IF seq% <> 1 THEN T% += 1 cnt% += 1 IF seq% AND 1 seq% = 3 * seq% + 1 ELSE seq% DIV= 2 ENDIF @environ$(E%) = FNgetenvironment NEXT PRINT UNTIL T% = 0 REM Print counts: PRINT "Counts:" FOR E% = 1 TO 12 PROCsetenvironment(@environ$(E%)) PRINT cnt% ; @environ$(E%) = FNgetenvironment NEXT PRINT END DEF FNgetenvironment LOCAL e$ : e$ = STRING$(216, CHR$0) SYS "RtlMoveMemory", !^e$, ^@%+108, 216 = e$ DEF PROCsetenvironment(e$) IF LEN(e$) < 216 e$ = STRING$(216, CHR$0) SYS "RtlMoveMemory", ^@%+108, !^e$, 216 ENDPROC