home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ittybittycomputers.com
/
www.ittybittycomputers.com.tar
/
www.ittybittycomputers.com
/
IttyBitty
/
TinyBasic
/
LifeTB.txt
< prev
next >
Wrap
Text File
|
2006-10-18
|
4KB
|
198 lines
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