100  REM POP - THREE POPULATION MODELS
110  REM     - 1 EXPONENTIAL MODEL
120  REM     - 2 EXPONENTIAL MODEL ADJUSTED FOR LIMITING FACTORS
130  REM     - 3 MODEL MODIFIED FOR LOW POP. DENSITY EFFECTS
140  REM COPYRIGHT 1972 STATE UNIVERSITY OF NEW YORK
150  REM DEVELOPED BY L. BRAUN
160  REM PROGRAMMED BY L. BRAUN , J. FRIEDLAND, S. HOLLANDER
170  REM LATEST REVISION 9-5-72
171  REM  POP,  HP 36844A, 2/74
175  E=0
180  PRINT 
190  PRINT " ","POPULATION GROWTH SIMULATION"
200  PRINT 
210  PRINT "WHICH POPULATION MODEL? (1, 2, OR 3). TYPE IN NUMBER";
220  INPUT Z9
230  IF (Z9-1)*(Z9-2)*(Z9-3) <> 0 THEN 190
240  LET I=0
250  PRINT 
260  PRINT 
270  PRINT "P(0)=";
280  INPUT P
290  IF P <> INT(P) THEN 270
300  IF P <= 0 THEN 270
310  LET P2=P
320  LET P3=P
330  PRINT "REPRO RATE=";
340  INPUT R0
350  LET M=LOG(R0)
360  PRINT "TIME UNIT PER GENERATION";
370  INPUT Y
380  IF Z9=1 THEN 460
390  PRINT "CARRYING CAPACITY";
400  INPUT E
410  IF Z9<3 THEN 460
420  PRINT "AT WHAT POP. DO LOW DENSITY EFFECTS FIRST BEGIN";
430  INPUT A
440  IF A <> INT(A) THEN 420
450  LET A=3*E/A
460  PRINT "NO. OF GENERATIONS";
470  INPUT N
480  IF N <> INT(N) THEN 460
490  IF N<0 THEN 460
500  PRINT "OUTPUT DESIRED: 1=TABLE, 2=GRAPH, 3=BOTH";
510  INPUT M2
520  IF (M2-1)*(M2-2)*(M2-3) <> 0 THEN 500
530  PRINT 
540  IF M2=2 THEN 580
550  PRINT "GEN.","TIME","POP."
560  PRINT "------","------","------"
570  PRINT I,I*Y,P
580  FOR I=1 TO N
590  GOSUB 1130
600  IF P<1.E+36 THEN 640
610  IF M2=2 THEN 730
620  PRINT "POPULATION IS GREATER THAN CAN BE RECORDED"
630  GOTO 730
640  IF P <= 0 THEN 710
650  IF P<P3 THEN 670
660  LET P3=P
670  IF M2=2 THEN 690
680  PRINT I,I*Y,INT(P+.5)
690  NEXT I
700  GOTO 730
710  IF M2=2 THEN 730
720  PRINT I,I*Y,P,"POPULATION DIED OUT"
730  IF M2=1 THEN 1050
740  PRINT 
750  PRINT 
760  LET P=P2
770  LET E2=INT(E*50/P3+6.5)
780  PRINT "      0";TAB(24);"<-- POPULATION -->            ";INT(P3+.5)
790  PRINT "GEN. +I+++++++++++++++++++++++++++++++++++++++++++++++++I+++"
800  FOR I=0 TO N
810  IF INT(I/2) <> I/2 THEN 830
820  PRINT I;
830  LET P4=INT(50*P/P3+6)
840  IF Z9=1 THEN 880
850  IF E2>61 THEN 880
860  IF E2<P4 THEN 900
870  IF E2>P4 THEN 920
880  PRINT TAB(6);"+";TAB(P4);"*"
890  GOTO 930
900  PRINT TAB(6);"+";TAB(E2);"C";TAB(P4);"*"
910  GOTO 930
920  PRINT TAB(6);"+";TAB(P4);"*";TAB(E2);"C"
930  GOSUB 1130
940  IF P<1.E+36 THEN 970
950  PRINT "POPULATION IS GREATER THAN CAN BE RECORDED"
960  GOTO 1050
970  IF P <= 0 THEN 1010
980  PRINT TAB(6);"+"
990  NEXT I
1000  GOTO 1050
1010  PRINT TAB(6);"+"
1020  IF INT(I+1/2) <> (I+1)/2 THEN 1040
1030  PRINT I+1;
1040  PRINT TAB(6);"+*     POPULATION DIED OUT"
1050  PRINT 
1060  PRINT "ANOTHER RUN? (YES=1, NO=0)";
1070  INPUT Z9
1080  IF Z9=1 THEN 200
1090  FOR I=1 TO 8
1100  PRINT 
1110  NEXT I
1120  GOTO 1240
1130  IF Z9>1 THEN 1160
1140  LET P=R0*P
1150  GOTO 1230
1160  LET Z8=1
1170  IF Z9<3 THEN 1220
1180  LET Z=A*P/E
1190  IF Z<50 THEN 1210
1200  LET Z=50
1210  LET Z8=1-EXP(-Z)
1220  LET P=INT(R0*EXP(-M*P/E)*Z8*P+.5)
1230  RETURN 
1240  END 
