1000  PRINT
1010  PRINT "=== BEASTI ===  ADAPTED FOR 8KW"
1020  PRINT "* = YOU  + = BEASTI  O = ORGANISMS"
1030  PRINT "USE 2 4 8 6 (NUM KEYPAD) TO MOVE D L U R"
1040  PRINT "0 OR 1 FOR RANDOM JUMP, 5 FOR NO MOVE"
1050  PRINT "ENTER RANDOM SEED NUMBER ";
1060  INPUT Z9
1070  FOR I=0 TO Z9
1080  LET J=RND(0)
1090  NEXT I
1100  LET T9=50
1250  DIM B[10,10],O[20,2],M[9,2],Z[7]
1262  DATA 6,4,2,8,5,1,0
1263  FOR I=1 TO 7
1264  READ Z[I]
1265  NEXT I
1270  DATA 0,1,0,-1,1,0,-1,0,0,0,-1,-1,1,1,-1,1,1,-1
1280  LET F=0
1290  FOR I=1 TO 9
1300  FOR K=1 TO 2
1310  READ M[I,K]
1320  NEXT K
1330  NEXT I
1350  FOR I=1 TO 10
1351  FOR J=1 TO 10
1352  LET B[I,J]=0
1353  NEXT J
1354  NEXT I
1360  LET Z=RND(0)
1370  LET O=10
1380  FOR I=1 TO 10
1390  LET X=INT(RND(0)*10)+1
1400  LET Y=INT(RND(0)*10)+1
1410  IF B[X,Y]#0 THEN 1390
1420  LET O[I,1]=X
1430  LET O[I,2]=Y
1440  LET B[X,Y]=10
1450  NEXT I
1460  LET O=10
1480  LET X=INT(RND(0)*10)+1
1490  LET Y=INT(RND(0)*10)+1
1500  IF B[X,Y]#0 THEN 1480
1510  LET B[X,Y]=-1
1530  LET X0=INT(RND(0)*10)+1
1540  LET Y0=INT(RND(0)*10)+1
1550  IF B[X0,Y0]#0 THEN 1530
1560  LET B[X0,Y0]=100
1580  LET V0=1.00000E-35
1590  FOR I0=1 TO T9
1600  PRINT
1610  PRINT "TIME =";I0
1625  PRINT ".---------------------."
1630  FOR X1=1 TO 10
1635  PRINT ":";
1640  FOR Y1=1 TO 10
1650  IF B[X1,Y1] >= 0 THEN 1680
1660  PRINT " +";
1670  GOTO 1750
1680  IF B[X1,Y1]>0 THEN 1710
1689  REM WAS " .";...
1690  PRINT "  ";
1700  GOTO 1750
1710  IF B[X1,Y1]=100 THEN 1740
1720  PRINT " 0";
1730  GOTO 1750
1740  PRINT " *";
1750  NEXT Y1
1760  PRINT " :"
1770  NEXT X1
1775  PRINT "`---------------------'"
1777  IF O=0 THEN 2240
1778  IF B[X0,Y0]=-1 THEN 2660
1779  IF I0>T9 THEN 2820
1780  PRINT "MOVE ";
1790  INPUT A9
1803  LET J9=0
1810  FOR J=1 TO 7
1820  IF A9#Z[J] THEN 1830
1825  LET J9=J
1830  NEXT J
1835  LET J=J9
1840  IF J#0 THEN 1850
1844  GOTO 1780
1850  IF J<6 THEN 1990
1860  IF J=6 THEN 1960
1870  LET X1=INT(RND(0)*10)+1
1880  LET Y1=INT(RND(0)*10)+1
1890  IF X1#X0 THEN 1910
1900  IF Y1=Y0 THEN 1870
1910  IF B[X1,Y1] >= 0 THEN 2130
1920  PRINT "*** SPLAT ***"
1940  LET F=1
1950  GOTO 2300
1960  LET X1=Y0
1970  LET Y1=X0
1980  GOTO 2100
1990  LET X1=X0+M[J,1]
2000  LET Y1=Y0+M[J,2]
2010  IF J=5 THEN 2300
2020  IF X1#11 THEN 2040
2030  LET X1=X1-10
2040  IF X1#0 THEN 2060
2050  LET X1=X1+10
2060  IF Y1#11 THEN 2080
2070  LET Y1=Y1-10
2080  IF Y1#0 THEN 2100
2090  LET Y1=Y1+10
2100  IF B[X1,Y1] >= 0 THEN 2130
2110  PRINT "MUSNT EAT THE BEASTI"
2120  GOTO 1780
2130  IF B[X1,Y1]=0 THEN 2300
2140  IF B[X1,Y1]=100 THEN 2300
2150  FOR I=1 TO O
2160  IF X1#O[I,1] THEN 2180
2170  IF Y1#O[I,2] THEN 2180
2171  LET O[I,1]=O[O,1]
2172  LET O[I,2]=O[O,2]
2180  NEXT I
2210  LET O=O-1
2220  PRINT "***** GULP *****"
2230  GOTO 2300
2240  PRINT "CONGRATULATIONS!"
2250  PRINT "ENTER 1 TO CONTINUE ";
2270  INPUT Z9
2280  IF Z9=1 THEN 1350
2290  STOP
2300  LET B[X0,Y0]=0
2310  LET B[X1,Y1]=100
2320  LET X0=X1
2330  LET Y0=Y1
2345  IF O=0 THEN 2810
2350  FOR I=1 TO O
2360  LET R=INT(RND(0)*4)+1
2370  LET X1=O[I,1]+M[R,1]
2380  LET Y1=O[I,2]+M[R,2]
2390  IF X1>10 THEN 2500
2400  IF X1<1 THEN 2500
2410  IF Y1>10 THEN 2500
2420  IF Y1<1 THEN 2500
2430  IF B[X1,Y1]#0 THEN 2500
2440  LET Z0=O[I,1]
2450  LET Z1=O[I,2]
2460  LET B[Z0,Z1]=0
2470  LET O[I,1]=X1
2480  LET O[I,2]=Y1
2490  LET B[X1,Y1]=10
2500  NEXT I
2520  IF F=1 THEN 2810
2550  LET M=1.00000E+20
2560  FOR I=1 TO 9
2570  LET X1=X+M[I,1]
2580  LET Y1=Y+M[I,2]
2590  IF X1>10 THEN 2760
2600  IF X1<1 THEN 2760
2610  IF Y1>10 THEN 2760
2620  IF Y1<1 THEN 2760
2630  IF B[X1,Y1]=10 THEN 2760
2640  IF B[X1,Y1]#100 THEN 2680
2650  PRINT "*** GULP! ***"
2653  LET B[X,Y]=0
2654  LET B[X1,Y1]=-1
2655  GOTO 2810
2660  PRINT "THE BEASTI THANKS YOU"
2670  GOTO 2250
2680  LET S=0
2690  FOR J=1 TO O
2700  LET S=S+(O[J,1]-X1)^2+(O[J,2]-Y1)^2
2710  NEXT J
2720  LET S=S+V0*((X1-X0)^2+(Y1-Y0)^2)
2730  IF S>M THEN 2760
2740  LET M=S
2750  LET B=I
2760  NEXT I
2770  LET B[X,Y]=0
2780  LET X=X+M[B,1]
2790  LET Y=Y+M[B,2]
2800  LET B[X,Y]=-1
2810  NEXT I0
2813  GOTO 1600
2820  PRINT "*** STARVATION ***"
2840  GOTO 2250
3150  END
