10 REM PI CALCULATION WITH SPIGOT 100 N=100: REM MAX N=260 TO AVOID OVERFLOW 110 LEN=(10*N)/3 120 J=0:K=0:Q=0:NINES=0:PREDIGIT=0 125 DIM A(LEN) 130 REM VARIABLES FOR THE SUB 140 RESULT=0:I=0:X=0 200 REM MAIN 210 FOR J=1 TO LEN:A(J)=2: NEXT J 220 REM START WITH 222... 230 NINES=0 240 PREDIGIT=0 250 REM FIRST PREDIGIT =0 260 FOR J=1 TO N 270 I=N-J: GOSUB 1000:Q=RESULT 275 A(1)=Q MOD 10 280 Q=Q/10 290 IF Q=9 THEN NINES=NINES+1 300 IF Q=10 THEN GOSUB 800 310 IF (Q<>9) AND (Q<>10) THEN GOSUB 900 320 NEXT J 330 PRINT PREDIGIT 340 END 800 PRINT PREDIGIT+1; 805 IF NINES=0 THEN GOTO 820 810 FOR K=1 TO NINES: PRINT 0;: NEXT K 820 PREDIGIT=0:NINES=0 830 RETURN 900 PRINT PREDIGIT; 910 PREDIGIT=Q 920 IF NINES<>0 THEN GOSUB 950 930 RETURN 950 FOR K=1 TO NINES: PRINT 9;: NEXT K 960 NINES=0 970 RETURN 1000 I=I*10/3+16 1010 IF I>LEN THEN I=LEN 1020 RESULT=0 1030 REM REPEAT 1040 X=10*A(I)+RESULT*I 1050 RESULT=X/(2*I-1) 1060 A(I)=X MOD (2*I-1) 1070 I=I-1 1080 IF I>0 THEN GOTO 1040 1090 RETURN