1  REM  ****  HP BASIC PROGRAM LIBRARY  *********************
2  REM
3  REM        GRAZE:  GRASSLANDS ECOLOGY SIMULATION
4  REM
5  REM        36746  REV A  --  10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ***************************
10  DIM A$[72],B$[26]
20  DATA 2,1,.1,.05
30  READ B1,B2,B3,B4
40  DEF FNA()=*(1+.2*(RND(0)-.5))
50  B$="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
60  PRINT "WHAT'S YOUR NAME";
70  INPUT A$
75  A=LEN(A$)
80  IF A>2 THEN 110
90  PRINT "** USE A NAME WITH AT LEAST 3 LETTERS."
100  GOTO 60
110  D1=D2=D3=I1=I2=0
115  FOR I=1 TO 26
120  IF I1 AND I2 THEN 165
125  IF A$[1,1]#B$[I,I] THEN 135
130  I1=I
135  IF A$[A-2,A-2]#B$[I,I] THEN 145
140  I2=I
145  NEXT I
146  IF A$[A-2,A-2]<"^" THEN 165
150  PRINT "** USE ONLY CAPITAL LETTERS."
160  GOTO 60
165  I=I1+I2
170  R9=1+I/26
180  PRINT 
190  K=-1
200  A2=0
210  A$="CATTLE"
220  GOSUB 520
230  INPUT C0
240  IF C0=0 THEN 9999
250  A=C0
255  A3=50*R9
260  GOSUB 440
261  IF  NOT A1 THEN 270
262  IF D1 THEN 268
263  PRINT "A RANDOM ACRE OF GRASSLANDS USUALLY HAS NO CATTLE,"
264  PRINT "WHILE A SQUARE MILE HAS MANY."
265  D1=1
266  GOSUB 505
267  GOTO 220
268  GOSUB 490
269  GOTO 220
270  A$="SONGBIRDS"
280  GOSUB 520
290  INPUT M0
300  C=C0/(1000*R9)
310  IF M0>6000 THEN 340
320  M=M1=M0/(R9*500)
330  GOTO 350
340  M=M1=M0/(2500*R9)+24/5
350  A=M0
355  A3=550*R9
360  GOSUB 440
361  IF  NOT A1 THEN 370
362  IF D2 THEN 368
363  PRINT "YOU MIGHT FIND A FEW SONGBIRDS IN A 1 ACRE FIELD."
365  D2=1
366  GOSUB 505
367  GOTO 280
368  GOSUB 490
369  GOTO 280
370  A$="HAWKS"
380  GOSUB 520
390  INPUT H0
400  A=H0
405  A3=1.5*R9
410  GOSUB 440
411  IF  NOT A1 THEN 420
412  IF D3 THEN 418
413  PRINT "HAWKS IN 1 SQUARE MILE ARE ABOUT AS PLENTIFUL AS PEOPLE IN A FAMILY."
415  D3=1
416  GOSUB 510
417  GOTO 380
418  GOSUB 490
419  GOTO 380
420  H=H1=H0/(R9*1000)
430  GOTO 1000
440  A1=0
450  IF A<INT(A3+.51) THEN 470
460  IF A>INT(10*A3+.51) THEN 480
465  RETURN 
470  B$="AT LEAST"
472  A1=1
475  GOTO 483
480  B$="NO MORE THAN"
482  A1=10
483  PRINT "THE NUMBER OF "A$" IS TOO ";
484  IF A1=10 THEN 488
485  PRINT "LOW."
486  RETURN 
488  PRINT "HIGH."
489  RETURN 
490  PRINT "TRY ";B$;INT(A1*A3+.51);A$;"."
495  PRINT 
500  RETURN 
505  PRINT "640 ACRES = 1 SQUARE MILE. ";
510  PRINT "THESE GRASSLANDS = 3 SQUARE MILES."
512  PRINT 
515  RETURN 
520  PRINT "HOW MANY "A$;
530  RETURN 
1000  K0=K1=K2=K3=0
1010  G=G0=G1=G6=10000
1020  R=R0=R1=R6=200
1030  S=95+20*C
1040  GOSUB 2000
1050  K0=K0+1
1060  G2=G1
1070  G1=G
1080  G=(1+B1)*G-(B1*G*G/10000)*(M/6+.2*H/.007-.2*C/.15)
1090  G6=G MAX G6
1100  G=G MAX .67*G1
1110  R2=R1
1120  R1=R
1130  R=(1+B2)*R-B2*R*R*H/1.4
1140  R6=R MAX R6
1150  IF C>.3 AND G>30000 THEN 1180
1160  R=R MAX .67*R1
1170  GOTO 1190
1180  R=R MAX 1.5*R1
1190  M2=M1
1200  M1=M
1210  M=(1+B3)*M-(B3*M*M/6)*(.7*H/.007+.3*C/.15)
1220  M=M MAX .67*M1
1230  M=M MIN (6*(G/10000)^2.5)
1240  H2=H1
1250  H1=H
1260  H=.007*(.1*(G/10000)^2.5+.6*(R/200)^2.5+.3*(M/6)^2.5)
1270  H=H MIN (1+B4)*H1
1350  IF G>10*G0 THEN 3000
1360  IF R>5*R0 THEN 3020
1370  S=(100000.-G6)*(1000-R6)/720000.+20*C-3
1380  S=S MAX 0
1390  IF S=0 THEN 3080
1400  S=S MIN 99.9
1410  IF K0=0 OR K0>4 AND  NOT A2 THEN 1430
1420  GOSUB 2050
1430  IF K0=30 THEN 3090
1440  GOTO 1050
2000  PRINT 
2010  PRINT 
2020  PRINT "YEAR  CATTLE  SONGBIRDS  HAWKS  RODENTS/ACRE  G'HOPPERS/ACRE"
2030  PRINT 
2040  IMAGE DD.D2X,5D3X,6D5X,2D.D5X,5D9X,7D
2050  IF K0>0 THEN 2070
2060  GOTO (M0>6000)+1 OF 2080,2100
2070  IF M>6 THEN 2100
2080  M3=500*R9*M
2090  GOTO 2110
2100  M3=500*R9*(5*M-24)
2110  H3=1000*R9*H
2120  R3=R
2130  G3=G
2140  C3=C0
2150  IF K0#4 THEN 2240
2160  M4=M
2170  H4=H
2180  R4=R
2190  G4=G
2200  M5=M1
2210  H5=H1
2220  R5=R1
2230  G5=G1
2240  IF K0=0 THEN 2300
2250  H3=FNA(H3)
2260  M3=FNA(M3)
2270  R3=FNA(R3)
2280  G3=FNA(G3)
2290  C3=FNA(C3)
2300  H3=H3 MAX 0
2310  PRINT  USING 2040;K0/2,C3,M3,H3,R3,G3
2320  RETURN 
3000  A$="GRASSHOPPER"
3010  GOTO 3030
3020  A$="RODENT"
3030  IF A2 THEN 3320
3040  PRINT 
3050  PRINT A$" POPULATION OUT OF CONTROL IN YEAR";
3060  PRINT  USING 2040;K0/2
3070  S=0
3080  REM
3090  IF A2 THEN 3330
3100  PRINT 
3110  PRINT "YOUR SCORE IS ";
3120  PRINT  USING 2040;S
3130  PRINT 
3140  IF A2 OR ( NOT A2 AND K0<5) THEN 3330
3150  PRINT "COMPLETE SUMMARY";
3160  INPUT A$
3162  IF A$[1,1]<"^" THEN 3170
3164  PRINT "** USE ONLY CAPITAL LETTERS."
3166  GOTO 3150
3170  IF A$[1,1]="N" THEN 3310
3180  IF A$[1,1]="Y" THEN 3190
3182  PRINT "** TYPE 'YES' OR 'NO'."
3184  GOTO 3150
3190  A2=1
3200  K0=4
3210  M=M4
3220  H=H4
3230  R=R4
3240  G=G4
3250  M1=M5
3260  H1=H5
3270  R1=R5
3280  G1=G5
3290  PRINT 
3300  GOTO 1050
3310  PRINT 
3320  GOSUB 2050
3330  PRINT 
3340  PRINT 
3350  GOTO 200
9999  END 
