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

  1.    10 REM This is a crude mechanical translation
  2.    20 REM Whipple&Arnold's TBX program to TinyBasic
  3.    30 REM FOR-NXT are converted to LET-IF-GOTO
  4.    40 REM DIM/arrays are expanded to USR calls
  5.    50 REM and multi-statement lines are split
  6.    60 REM also expanded abbreviated INPUT, PR""
  7.    70 REM Original code had leading zeros in line #
  8. 00090 PR "LIFE WITH TINY BASIC EXTENDED"
  9. 00100 PR "SIZE";
  10.   101 IF G<0 IF G+G=H GOTO 127
  11. 00105 LET F=0
  12. 00110 INPUT A
  13. 00112 PRINT
  14.   113 PR "THE BEGINNING-WAIT"
  15.   114 PRINT
  16. 00115 LET B=A+2
  17.   120 GOSUB 7070
  18. 00127 REM DIM G(B,B),H(B,B)
  19. 00130  J=1
  20.   131 REM FOR J=1 TO B
  21. 00140  I=1
  22.   141 REM FOR I=1 TO B
  23. 00150 REM G(I,J)=0 $ REM H(I,J)=0
  24.   155 GOSUB 7160
  25.   158 GOSUB 7740
  26. 00160  I=I+1
  27.   161 IF I<=B GOTO 141
  28. 00170  J=J+1
  29.   171 IF J<=B GOTO 131
  30. 00175 LET M=A+1
  31.   176 PRINT "ENTER INITIAL POPULATION, 0 OR 1,"
  32.   177 PRINT " SEPARATED BY COMMA; END LINE WITH 2"
  33. 00180  J=2
  34.   181 REM FOR J=2 TO M
  35.   182 PRINT "ROW ";J-1;
  36. 00190  I=2
  37.   191 REM FOR I=2 TO M
  38. 00200 INPUT K
  39. 00210 IF K <= 1 GO TO 220
  40. 00212 LET I=M
  41. 00214 GO TO 230
  42. 00220 REM G(I,J)=K
  43.   221 LET Z=K
  44.   222 GOSUB 7770
  45. 00225 IF K = 1 LET F=F+1
  46. 00230  I=I+1
  47.   231 IF I<=M GOTO 191
  48. 00240 PRINT
  49. 00250  J=J+1
  50.   251 IF J<=M GOTO 181
  51. 00260 PR "GENERATIONS";
  52. 00270 INPUT D
  53. 00280 PRINT
  54. 00285 REM PRINT
  55. 00287 LET S=0
  56. 00290  E= S
  57.   291 REM FOR E= S TO D
  58. 00300 PR "GENERATION ";E
  59. 00301 PRINT
  60. 00302 IF F > 0 GO TO 305
  61. 00303 PR "POPULATION IS ZERO"
  62.   304 END
  63. 00305 PR "POPULATION IS ";F
  64. 00310 GO SUB 6000
  65. 00315 LET F=0
  66. 00320 GO SUB 5000
  67. 00330  E=E+1
  68.   331 IF E<=D GOTO 291
  69. 00335 PR "HOW MANY MORE";
  70.   336 INPUT C
  71.   337 PRINT
  72. 00345 IF C = 0 END
  73. 00350 LET S=E
  74.   352 LET D=D+C
  75. 00355 GO TO 290
  76. 05000  I=2
  77.  5001 REM FOR I=2 TO M
  78. 05010  J=2
  79.  5011 REM FOR J=2 TO M
  80. 05020 REM N=0
  81. 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)
  82. 05040 REM N=N+G(I-1,J+1)+G(I,J+1)+G(I+1,J+1)
  83.  5050 GOSUB 7210
  84. 05110 GOSUB 7660
  85.  5115 IF Z <> 1 GO TO 5180
  86. 05120 IF N > 1 GO TO 5150
  87. 05130 REM H(I,J)=0
  88.  5135 GOSUB 7160
  89. 05140 GO TO 5210
  90. 05150 IF N <= 3 GO TO 5200
  91. 05160 REM H(I,J)=0
  92.  5165 GOSUB 7160
  93. 05170 GO TO 5210
  94. 05180 IF N <> 3 GO TO 5210
  95. 05200 LET Z=1
  96.  5202 GOSUB 7170
  97. 05205 LET F=F+1
  98. 05210  J=J+1
  99.  5211 IF J<=M GOTO 5011
  100. 05220  I=I+1
  101.  5221 IF I<=M GOTO 5001
  102. 05230  I=1
  103.  5231 REM FOR I=1 TO B
  104. 05240  J=1
  105.  5241 REM FOR J=1 TO B
  106. 05250 REM G(I,J)=H(I,J)
  107.  5255 GOSUB 7740
  108. 05260 REM H(I,J)=0
  109.  5265 GOSUB 7160
  110. 05270  J=J+1
  111.  5271 IF J<=B GOTO 5241
  112. 05280  I=I+1
  113.  5281 IF I<=B GOTO 5231
  114. 05290 RETURN
  115. 06000  J=2
  116.  6001 REM FOR J=2 TO M
  117. 06010 LET R=0
  118. 06020  I=1
  119.  6021 REM FOR I=1 TO M
  120. 06030 GOSUB 7660
  121.  6035 IF Z = 1 LET R=1
  122. 06040  I=I+1
  123.  6041 IF I<=M GOTO 6021
  124. 06050 IF R=0 GO TO 6120
  125. 06060  I=2
  126.  6061 REM FOR I=2 TO M
  127. 06070 GOSUB 7660
  128.  6075 IF Z = 1 GO TO 6100
  129. 06080 PR "  ";
  130. 06090 GO TO 6110
  131. 06100 PR " #";
  132. 06110  I=I+1
  133.  6111 IF I<=M GOTO 6061
  134. 06120 PRINT
  135. 06130  J=J+1
  136.  6131 IF J<=M GOTO 6001
  137. 06140 PRINT
  138.  6145 PRINT
  139. 06150 RETURN
  140.  7000 REM Simulate 1-byte DIM on the GOSUB stack..
  141.  7010 REM Allocate B*B elements for G and H
  142.  7020 REM Variables V,Z are used as scratch temps
  143.  7030 REM GOSUB 7070 to simulate DIM; it returns to 127
  144.  7040 REM   with G,H init'd; set V=G to access G(I,J)
  145.  7050 REM GOSUB 7700 to get value of V(I,J) into Z
  146.  7060 REM GOSUB 7777 to store Z into V(I,J)
  147.  7070 LET Z=(B+1)*(B+2)
  148.  7073 LET G=-Z
  149.  7076 LET H=G-Z
  150.  7080 LET Z=Z-1
  151.  7088 IF Z<0 GOTO 127
  152.  7090 GOSUB 7080
  153.  7100 REM Some utility entry points..
  154.  7140 GOTO 7777
  155.  7150 REM set H(I,J) [=0]
  156.  7160 LET Z=0
  157.  7170 LET V=H
  158.  7180 GOTO 7777
  159.  7200 REM add up in N all eight G(I=/-1,J+/-1)
  160.  7210 LET I=I-1
  161.  7220 GOSUB 7660
  162.  7230 LET N=Z
  163.  7240 LET J=J-1
  164.  7250 GOSUB 7660
  165.  7260 LET N=N+Z
  166.  7270 LET I=I+1
  167.  7280 GOSUB 7660
  168.  7290 LET N=N+Z
  169.  7300 LET I=I+1
  170.  7310 GOSUB 7660
  171.  7320 LET N=N+Z
  172.  7330 LET J=J+1
  173.  7340 GOSUB 7660
  174.  7350 LET N=N+Z
  175.  7360 LET J=J+1
  176.  7370 GOSUB 7660
  177.  7380 LET N=N+Z
  178.  7390 LET I=I-1
  179.  7400 GOSUB 7660
  180.  7410 LET N=N+Z
  181.  7420 LET I=I-1
  182.  7430 GOSUB 7660
  183.  7440 LET N=N+Z
  184.  7450 LET I=I+1
  185.  7460 LET J=J-1
  186.  7470 RETURN
  187.  7660 REM return G(I,J)
  188.  7670 LET V=G
  189.  7700 LET Z=USR(276,V+B*I+J,0)
  190.  7707 RETURN
  191.  7730 REM set G(I,J)=H(I,J)
  192.  7740 LET V=H
  193.  7750 GOSUB 7700
  194.  7760 REM set G(I,J)=Z
  195.  7770 LET V=G
  196.  7777 LET Z=USR(280,V+B*I+J,Z)
  197.  7780 RETURN
  198.