10 REM This is a crude mechanical translation 20 REM Whipple&Arnold's TBX program to TinyBasic 30 REM FOR-NXT are converted to LET-IF-GOTO 40 REM DIM/arrays are expanded to USR calls 50 REM and multi-statement lines are split 60 REM also expanded abbreviated INPUT, PR"" 70 REM Original code had leading zeros in line # 00090 PR "LIFE WITH TINY BASIC EXTENDED" 00100 PR "SIZE"; 101 IF G<0 IF G+G=H GOTO 127 00105 LET F=0 00110 INPUT A 00112 PRINT 113 PR "THE BEGINNING-WAIT" 114 PRINT 00115 LET B=A+2 120 GOSUB 7070 00127 REM DIM G(B,B),H(B,B) 00130 J=1 131 REM FOR J=1 TO B 00140 I=1 141 REM FOR I=1 TO B 00150 REM G(I,J)=0 $ REM H(I,J)=0 155 GOSUB 7160 158 GOSUB 7740 00160 I=I+1 161 IF I<=B GOTO 141 00170 J=J+1 171 IF J<=B GOTO 131 00175 LET M=A+1 176 PRINT "ENTER INITIAL POPULATION, 0 OR 1," 177 PRINT " SEPARATED BY COMMA; END LINE WITH 2" 00180 J=2 181 REM FOR J=2 TO M 182 PRINT "ROW ";J-1; 00190 I=2 191 REM FOR I=2 TO M 00200 INPUT K 00210 IF K <= 1 GO TO 220 00212 LET I=M 00214 GO TO 230 00220 REM G(I,J)=K 221 LET Z=K 222 GOSUB 7770 00225 IF K = 1 LET F=F+1 00230 I=I+1 231 IF I<=M GOTO 191 00240 PRINT 00250 J=J+1 251 IF J<=M GOTO 181 00260 PR "GENERATIONS"; 00270 INPUT D 00280 PRINT 00285 REM PRINT 00287 LET S=0 00290 E= S 291 REM FOR E= S TO D 00300 PR "GENERATION ";E 00301 PRINT 00302 IF F > 0 GO TO 305 00303 PR "POPULATION IS ZERO" 304 END 00305 PR "POPULATION IS ";F 00310 GO SUB 6000 00315 LET F=0 00320 GO SUB 5000 00330 E=E+1 331 IF E<=D GOTO 291 00335 PR "HOW MANY MORE"; 336 INPUT C 337 PRINT 00345 IF C = 0 END 00350 LET S=E 352 LET D=D+C 00355 GO TO 290 05000 I=2 5001 REM FOR I=2 TO M 05010 J=2 5011 REM FOR J=2 TO M 05020 REM N=0 05030 REM N=G(I-1,J-1)+G(I,J-1)+G(I+1,J-1)+G(I-1,J)+G(I+1,J) 05040 REM N=N+G(I-1,J+1)+G(I,J+1)+G(I+1,J+1) 5050 GOSUB 7210 05110 GOSUB 7660 5115 IF Z <> 1 GO TO 5180 05120 IF N > 1 GO TO 5150 05130 REM H(I,J)=0 5135 GOSUB 7160 05140 GO TO 5210 05150 IF N <= 3 GO TO 5200 05160 REM H(I,J)=0 5165 GOSUB 7160 05170 GO TO 5210 05180 IF N <> 3 GO TO 5210 05200 LET Z=1 5202 GOSUB 7170 05205 LET F=F+1 05210 J=J+1 5211 IF J<=M GOTO 5011 05220 I=I+1 5221 IF I<=M GOTO 5001 05230 I=1 5231 REM FOR I=1 TO B 05240 J=1 5241 REM FOR J=1 TO B 05250 REM G(I,J)=H(I,J) 5255 GOSUB 7740 05260 REM H(I,J)=0 5265 GOSUB 7160 05270 J=J+1 5271 IF J<=B GOTO 5241 05280 I=I+1 5281 IF I<=B GOTO 5231 05290 RETURN 06000 J=2 6001 REM FOR J=2 TO M 06010 LET R=0 06020 I=1 6021 REM FOR I=1 TO M 06030 GOSUB 7660 6035 IF Z = 1 LET R=1 06040 I=I+1 6041 IF I<=M GOTO 6021 06050 IF R=0 GO TO 6120 06060 I=2 6061 REM FOR I=2 TO M 06070 GOSUB 7660 6075 IF Z = 1 GO TO 6100 06080 PR " "; 06090 GO TO 6110 06100 PR " #"; 06110 I=I+1 6111 IF I<=M GOTO 6061 06120 PRINT 06130 J=J+1 6131 IF J<=M GOTO 6001 06140 PRINT 6145 PRINT 06150 RETURN 7000 REM Simulate 1-byte DIM on the GOSUB stack.. 7010 REM Allocate B*B elements for G and H 7020 REM Variables V,Z are used as scratch temps 7030 REM GOSUB 7070 to simulate DIM; it returns to 127 7040 REM with G,H init'd; set V=G to access G(I,J) 7050 REM GOSUB 7700 to get value of V(I,J) into Z 7060 REM GOSUB 7777 to store Z into V(I,J) 7070 LET Z=(B+1)*(B+2) 7073 LET G=-Z 7076 LET H=G-Z 7080 LET Z=Z-1 7088 IF Z<0 GOTO 127 7090 GOSUB 7080 7100 REM Some utility entry points.. 7140 GOTO 7777 7150 REM set H(I,J) [=0] 7160 LET Z=0 7170 LET V=H 7180 GOTO 7777 7200 REM add up in N all eight G(I=/-1,J+/-1) 7210 LET I=I-1 7220 GOSUB 7660 7230 LET N=Z 7240 LET J=J-1 7250 GOSUB 7660 7260 LET N=N+Z 7270 LET I=I+1 7280 GOSUB 7660 7290 LET N=N+Z 7300 LET I=I+1 7310 GOSUB 7660 7320 LET N=N+Z 7330 LET J=J+1 7340 GOSUB 7660 7350 LET N=N+Z 7360 LET J=J+1 7370 GOSUB 7660 7380 LET N=N+Z 7390 LET I=I-1 7400 GOSUB 7660 7410 LET N=N+Z 7420 LET I=I-1 7430 GOSUB 7660 7440 LET N=N+Z 7450 LET I=I+1 7460 LET J=J-1 7470 RETURN 7660 REM return G(I,J) 7670 LET V=G 7700 LET Z=USR(276,V+B*I+J,0) 7707 RETURN 7730 REM set G(I,J)=H(I,J) 7740 LET V=H 7750 GOSUB 7700 7760 REM set G(I,J)=Z 7770 LET V=G 7777 LET Z=USR(280,V+B*I+J,Z) 7780 RETURN