1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-01 09:21:15 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

237 lines
6.7 KiB
QBasic
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
100 REM STERL2 -- PROGRAM ON FLY POPULATION CONTROL BY INTRODUCTION
105 REM OF STERILE MALE FLIES AND USE OF PESTICIDE
110 REM COPYRIGHT 1972 - STATE UNIVERSITY OF NEW YORK
115 REM S(T)=NUMBER OF STERILE MALES ON DAY T
120 REM INFORMATION ON THE LIFE CYCLE OF THE FLY IS CONTAINED IN THE
125 REM E,P,Q,V, AND W ARRAYS, WHICH ARE TREATED AS CIRCULAR QUEUES.
130 REM E=EGGS, G=POINTER FOR E
135 REM P=NORMAL MALES, Q=STERILE MALES, L=POINTER FOR P AND Q
140 REM V=POPULATION OF NORMAL MALES FOUR DAYS AGO
145 REM W=POPULATION OF STERILE MALES FOUR DAYS AGO
150 REM P1=POINTER FOR V AND W
155 REM PROGRAM DEVELOPED BY L. BRAUN AND A. FRISHMAN
160 REM PROGRAMMED BY C. LOSIK, JANUARY 1971
165 REM MODIFIED BY L. KAUFMAN, JUNE 1972
170 REM LATEST REVISION: 8-28-72
175 PRINT " ","CONTROL OF SCREW-WORM FLY POPULATION"
180 PRINT
185 PRINT "INSTRUCTIONS (1=YES, 0=NO)";
190 INPUT F
195 IF F=0 THEN 330
200 IF F<>1THEN185
205 PRINT
210 PRINT "YOUR GOAL WILL BE TO ELIMINATE THE ONE MILLION MALE"
215 PRINT "FLIES NOW IN YOUR 10000 SQUARE MILE AREA, THUS DESTROYING"
220 PRINT "THE TOTAL FLY POPULATION. YOU MAY USE A PESTICIDE,"
225 PRINT "RELEASE STERILE MALE FLIES, OR BOTH. INDICATE THE TYPE"
230 PRINT "OF CONTROL PROGRAM YOU WANT BY TYPING IN THE APPROPRIATE"
235 PRINT "RESPONSES TO THE FOLLOWING QUESTIONS:"
240 PRINT
245 PRINT "'PESTICIDE?'"
250 PRINT " 0= NO PESTICIDES."
255 PRINT " 1= PESTICIDES ON SPECIFIED DAYS. INDICATE"
260 PRINT " THESE DAYS BY TYPING A DAY NUMBER (BETWEEN 1 AND 75)"
265 PRINT " NEXT TO EACH '?' THAT APPEARS; TYPE 0 WHEN FINISHED."
270 PRINT
275 PRINT "'STERILE FLIES?'"
280 PRINT " 0= NO STERILE FLIES."
285 PRINT " 1= STERILE FLIES WILL BE RELEASED. COMPUTER WILL"
290 PRINT " ASK 'HOW OFTEN?' TYPE 1=DAILY OR 2=CERTAIN DAYS"
295 PRINT " IF 1, SPECIFY NUMBER OF FLIES EACH DAY (UP TO 1000000),"
300 PRINT " THE FIRST DAY OF THE PERIOD, AND THE LAST DAY"
305 PRINT " (BETWEEN 1 AND 75 DAYS)."
310 PRINT " IF 2, FOR EACH DAY SELECTED, SPECIFY THE DAY NUMBER"
315 PRINT " (BETWEEN 1 AND 75) AND THE NUMBER OF STERILE FLIES"
320 PRINT " (UP TO 1000000). USE A NEW LINE FOR EACH DAY."
325 PRINT " TYPE 0,0 WHEN FINISHED."
330 PRINT
335 PRINT "**********"
340 REM SET UP INITIAL CONDITIONS
345 DIM S(76),P(17),Q(17),E(13),V(4),W(4)
350 REM T1:DAYS FROM EGG TO ADULT
355 LET T1=13
360 REM T2:LIFE SPAN AS ADULT
365 LET T2=17
370 REM X9:MAXIMUM NUMBER OF MALE FLIES THAT THE AREA CAN SUPPORT
375 LET X9=1000000
380 REM K:SEXUAL EFFECTIVENESS COEFFICIENT OF STERILE MALES
385 LET K=.25
390 REM B0:NORMAL BIRTH RATE OF MALES
395 LET B0=250/2
400 REM C:SURVIVAL RATE OF EGG,MAGGOT,PUPA
405 LET C=.01
410 REM C9:COST OF CONTROL PROGRAM IN THOUSANDS OF DOLLARS
415 LET C9=0
420 REM S:TOTAL NUMBER OF NORMAL FLIES
425 LET S=0
430 REM START POPULATION AT MAXIMUM VALUE
435 LET X=X9
440 LET S(1)=0
445 REM INITIAL CONDITIONS FOR ADULT MALES AND EGGS
450 FOR L=1 TO T2
455 LET P(L)=X/T2
460 LET Q(L)=0
465 NEXT L
470 FOR G=1TOT1
475 LET E(G)=B0*X/T2
480 NEXT G
485 FOR P1=1 TO 4
490 LET V(P1)=X/T2
495 LET W(P1)=0
500 NEXT P1
505 LET L=17
510 LET G=13
515 LET P1=4
520 FOR T=2 TO 76
525 LET S(T)=1
530 NEXT T
535 PRINT
540 REM DETERMINE OPTIONS IN MODEL
545 PRINT "PESTICIDE (1=YES, 0=N0)";
550 INPUT T
555 IF T=0 THEN 605
560 IF T<>1THEN545
565 PRINT "WHICH DAYS"
570 INPUT T
575 IF T=0 THEN 605
580 IF ABS(T-38)>37 THEN 565
585 IF T<>INT(T)THEN565
590 LET S(T+1)=-1
595 LET C9=C9+100
600 GOTO 570
605 PRINT
610 PRINT "STERILE FLIES (1=YES, 0=NO)";
615 INPUT T
620 IF T=0 THEN 775
625 IF T<>1THEN605
630 PRINT "HOW OFTEN (1=DAILY, 2=SELECTED DAYS)";
635 INPUT T
640 IF T=1 THEN 700
645 IF T<>2THEN630
650 PRINT "DAY, NUMBER OF FLIES"
655 INPUT T,J
660 IF T=0 THEN 775
665 IF ABS(J-X9/2)>X9/2 THEN 650
670 IF J<>INT(J)THEN650
675 IF ABS(T-38)>37THEN650
680 IF T<>INT(T)THEN650
685 LET S(T+1)=S(T+1)*J
690 LET C9=C9+1E-5*J
695 GOTO 655
700 PRINT "HOW MANY PER DAY";
705 INPUT J
710 IF ABS(J-X9/2)>X9/2 THEN 700
715 IF J<>INT(J)THEN700
720 PRINT "FROM WHEN, TO WHEN";
725 INPUT T,T9
730 IF ABS(T9-38)>37THEN720
735 IF T9<>INT(T9)THEN720
740 IF ABS(T-38)>37THEN720
745 IF T<>INT(T)THEN720
750 IF T>T9 THEN 720
755 FOR F=T+1 TO T9+1
760 LET S(F)=S(F)*J
765 NEXT F
770 LET C9=C9+J*(T9-T+1)*1E-5
775 PRINT
780 PRINT " ","MILLIONS OF NORMAL ADULT MALE FLIES"
785 PRINT " 0 .2 .4 .6 .8 1"
790 PRINT "DAY I---------I---------I---------I---------I---------I"
795 PRINT 0;TAB(4);"I";TAB(55);"* ";INT(X+.5)
800 REM START SIMULATION
805 FOR T=1 TO 75
810 REM OLD AGE DEATHS IN POPULATION
815 LET D=P(L)
820 LET D1=Q(L)
825 REM BIRTHS IN POPULATION
830 LET T9=T+1
835 LET C=-3.33E-08*X+.04333
840 LET P(L)=C*E(G)
845 IF S(T9)=-1THEN855
850 IF S(T9)<>1 THEN865
855 LET Q(L)=0
860 GOTO870
865 LET Q(L)=ABS(S(T9))
870 IF S(T)=-1THEN885
875 REM EMIGRATION/IMMIGRATION EFFECTS
880 IF S(T)<>1THEN890
885 LET S(T)=0
890 LET Z=X+P(L)+ABS(S(T))-(D+D1+X9)
895 IF Z<0 THEN 915
900 LET F=Z/(Z+X9)
905 GOSUB 1125
910 GOTO 945
915 LET D=D+.1*Z
920 LET Z=ABS(.1*Z/T2)
925 FOR J=1 TO T2
930 LET P(J)=P(J)+Z
935 NEXT J
940 REM PESTICIDE EFFECTS
945 IF S(T9)>=0THEN960
950 LET F=.9
955 GOSUB 1125
960 LET X1=X+C*E(G)-D
965 IF S(T9)=-1THEN975
970 IF S(T9)<>1THEN980
975 LET S(T9)=0
980 LET S(T9)=ABS(S(T))+ABS(S(T9))-D1
985 LET S=S+INT(X1+.5)
990 PRINT T;TAB(4);"I";TAB(5+INT(50*X1/X9+.5));"* ";INT(X1+.5)
995 REM BACK UP SEVEN DAYS FOR EGG CALCULATION
1000 LET Z=L-7
1005 IF Z>=1THEN1015
1010 LET Z=Z+T2
1015 LET F=V(P1)+K*W(P1)
1020 IF F>.5 THEN 1035
1025 LET E(G)=P(Z)*B0
1030 GOTO 1040
1035 LET E(G)=P(Z)*B0*V(P1)/F
1040 LET Z=L-3
1045 IF Z>=1THEN1055
1050 LET Z=Z+T2
1055 LET V(P1)=P(Z)
1060 LET W(P1)=Q(Z)
1065 LET L=L+1
1070 IF L<=T2THEN1080
1075 LET L=1
1080 LET G=G+1
1085 IF G<=T1THEN1095
1090 LET G=1
1095 LET P1=P1+1
1100 IF P1<=4THEN1110
1105 LET P1=1
1110 LET X=X1
1115 NEXT T
1120 GOTO 1165
1125 LET Z=1-F
1130 FOR J=1 TO T2
1135 LET D=D+F*P(J)
1140 LET D1=D1+F*Q(J)
1145 LET P(J)=Z*P(J)
1150 LET Q(J)=Z*Q(J)
1155 NEXT J
1160 RETURN
1165 PRINT " I---------I---------I---------I---------I---------I"
1170 PRINT
1175 PRINT
1180 PRINT "COST OF FLY CONTROL: $";
1185 IF C9>=1000THEN1200
1190 PRINT C9;" THOUSAND";
1195 GOTO1205
1200 PRINT C9/1000;" MILLION";
1205 PRINT" DOLLARS"
1210 PRINT
1215 PRINT"ESTIMATED DAMAGE: $";
1220 IF S/15000>=1000THEN1235
1225 PRINT S/15000;" THOUSAND";
1230 GOTO1240
1235 PRINT S/(15*1E6);" MILLION";
1240 PRINT" DOLLARS"
1245 PRINT
1250 PRINT "ANOTHER RUN (1=YES, 0=NO)";
1255 INPUT T
1260 IF T=1 THEN 330
1265 IF T<>0THEN1250
1270 END
*U*'+6