10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  ********************
20  REM
30  REM              CLOUDS:  CLOUD FORMATION
40  REM
50  REM              36325  (A833)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  *************************************
80  REM CLOUDS-COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
90  REM--A.C.CAGGIANO+E.A.GALLETTA, PATCHOGUE H.S., 11-20-68
100  REM--REVISED BY CHARLES LOSIK AND TONY PEREZ  7/18/69 
110  REM  RE-REVISED BY C.LOSIK  8-26-70
120  REM--THIS PROGRAM IS ASSOCIATED WITH CLOUD FORMATION
130  REM PHASE I OF PROGRAM BEGINS HERE.  STUDENTS WILL BE GIVEN 
140  REM INTRODUCTORY INFORMATION AND BE ALLOWED TO ASK AND ANSWER 
150  REM ANY NUMBER OF PROBLEMS. WHEN THEY INPUT NO. 2 (LINES 554-556) 
160  REM PROGRAM SENDS THEM TO PHASE II (LINE 561 AND FOLLOWING).
170  PRINT " ","CLOUD NINE"
180  PRINT " ","===== ===="
190  DIM B[2],T[4],Q[3],A[3],C[3]
200  PRINT 
210  PRINT "   STRONG CONVECTION CURRENTS ARE CAUSING ADIABATIC"
220  PRINT "COOLING OF AIR WHERE YOU ARE AND ARE RESPONSIBLE FOR THE"
230  PRINT "FORMATION OF A CLOUD.  BOTH THE DRY AND THE MOIST ADIABATIC"
240  PRINT "(AS WELL AS THE NORMAL LAPSE RATES) ARE CONSIDERED IN THIS"
250  PRINT "PROGRAM."
260  PRINT 
270  PRINT 
280  PRINT " ","LEGEND"
290  PRINT " ","======"
300  PRINT "1=";
310  GOSUB 1960
320  PRINT "2=";
330  GOSUB 1980
340  PRINT "3=";
350  GOSUB 2000
360  PRINT "4=";
370  GOSUB 2020
380  PRINT 
390  PRINT 
400  PRINT "CHOOSE ANY TWO OF THE ABOVE VARIABLES AND SELECT VALUES FOR"
410  PRINT "THEM.  TYPE THEM IN AS:"
420  PRINT "VARIABLE CODE ,VALUE, VARIABLE CODE ,VALUE...(E.G. 1,50,2,30)"
430  PRINT 
440  LET X=0
450  LET Y=0
460  LET A=0
470  LET B=0
480  LET B[1]=0
490  LET B[2]=0
500  INPUT B[1],A,B[2],B
510  PRINT 
520  FOR I=1 TO 4
530  IF B[1]=I THEN 550
540  NEXT I
550  LET T[I]=A
560  FOR J=1 TO 4
570  IF B[2]=J THEN 590
580  NEXT J
590  LET T[J]=B
600  IF I <> J THEN 630
610  PRINT "YOU CAN'T USE THE SAME VALUES TWICE."
620  GOTO 500
630  PRINT "OKAY, TYPE IN YOUR CALCULATED VALUE FOR";
640  PRINT 
650  IF J*I <> 2 THEN 760
660  LET T=(T[1]-T[2])/4.5
670  LET T[4]=1000*T
680  LET T[3]=T[2]-T
690  GOSUB 2000
700  GOSUB 2040
710  GOSUB 2020
720  INPUT X,Y
730  IF ABS(X-T[3]) >= .6 THEN 1320
740  IF ABS(Y-T[4]) >= .6 THEN 1320
750  GOTO 1460
760  IF J*I <> 3 THEN 870
770  LET T=(T[1]-T[3])/5.5
780  LET T[4]=1000*T
790  LET T[2]=T+T[3]
800  GOSUB 1980
810  GOSUB 2040
820  GOSUB 2020
830  INPUT X,Y
840  IF ABS(X-T[2]) >= .6 THEN 1320
850  IF ABS(Y-T[4]) >= .6 THEN 1320
860  GOTO 1460
870  IF J*I <> 4 THEN 980
880  LET T=T[4]/1000
890  LET T[2]=T[1]-4.5*T
900  LET T[3]=T[2]-T
910  GOSUB 1980
920  GOSUB 2040
930  GOSUB 2000
940  INPUT X,Y
950  IF ABS(X-T[2]) >= .6 THEN 1320
960  IF ABS(Y-T[3]) >= .6 THEN 1320
970  PRINT "OKAY, TYPE IN YOUR CALCULATED VALUE FOR"
980  IF J*I <> 6 THEN 1090
990  LET T=T[2]-T[3]
1000  LET T[4]=1000*T
1010  LET T[1]=T[3]+5.5*T
1020  GOSUB 1960
1030  GOSUB 2040
1040  GOSUB 2020
1050  INPUT X,Y
1060  IF ABS(X-T[1]) >= .6 THEN 1320
1070  IF ABS(Y-T[4]) >= .6 THEN 1320
1080  GOTO 1460
1090  IF J*I <> 8 THEN 1210
1100  LET T=T[4]/1000
1110  LET T[3]=T[2]+T
1120  LET T[1]=T[2]+6.5*T
1130  GOSUB 1960
1140  GOSUB 2040
1150  GOSUB 2000
1160  INPUT X,Y
1170  IF ABS(X-T[1]) >= .6 THEN 1320
1180  IF ABS(Y-T[3]) >= .6 THEN 1320
1190  GOTO 1460
1200  IF ABS(X-T[3]) >= .6 THEN 1320
1210  IF J*I <> 12 THEN 610
1220  LET T=T[4]/1000
1230  LET T[1]=T[3]+5.5*T
1240  LET T[2]=T[3]+T
1250  GOSUB 1960
1260  GOSUB 2040
1270  GOSUB 1980
1280  INPUT X,Y
1290  IF ABS(X-T[1]) >= .6 THEN 1320
1300  IF ABS(Y-T[2]) >= .6 THEN 1320
1310  GOTO 1460
1320  PRINT 
1330  PRINT "IT LOOKS LIKE WE GOOFED SOME PLACE."
1340  PRINT "LET'S SEE WHAT THE CORRECT VALUES ARE."
1350  PRINT 
1360  PRINT T[1]"DEGREES - ";
1370  GOSUB 1960
1380  PRINT T[2]"DEGREES - ";
1390  GOSUB 1980
1400  PRINT T[3]"DEGREES - ";
1410  GOSUB 2000
1420  PRINT T[4]"FEET - ";
1430  GOSUB 2020
1440  PRINT 
1450  GOTO 1490
1460  PRINT 
1470  PRINT "VERY GOOD.  VERY, VERY GOOD."
1480  PRINT 
1490  PRINT "DO YOU HAVE ANY OTHER PROBLEMS YOU WOULD LIKE TO TRY?"
1500  PRINT "(1=YES, 0=NO) : ";
1510  INPUT P
1520  IF P<1 THEN 1560
1530  PRINT 
1540  PRINT "USING THE SAME LEGEND AS BEFORE..."
1550  GOTO 400
1560  LET H=(T[1]-T[3])*2000-7*T[4]
1570  REM LINE 1560 CALCULATES ALTITUDE FOR TOP OF CLOUD AND BEGINS
1580  REM  PHASE II OF PROGRAM.  PROBLEM NO.2 IN THIS PART (CALCULATION 
1590  REM  OF TEMP. ABOVE CLOUD TOP) INVOLVES USE OF THE NORMAL LAPSE RATE. 
1600  PRINT 
1610  PRINT "WELL, BEFORE YOU LEAVE, I HAVE A FEW I'D LIKE YOU TO TRY..."
1620  PRINT "BASED ON YOUR VALUES, THE HEIGHT OF THE CLOUD"
1630  PRINT "(MEASURED FROM THE CLOUD BASE) IS ";H;" FT.  CAN YOU TELL ME:"
1640  LET Q[1]=.7*T[4]
1650  LET Q[2]=T[4]+1.5*H
1660  LET Q[3]=T[4]+.5*H
1670  LET A[1]=T[1]-T[4]*.00385
1680  LET A[2]=T[1]-(T[4]+1.5*H)*.0035
1690  LET A[3]=T[3]-.0015*H
1700  PRINT 
1710  PRINT "WHAT IS THE TEMPERATURE AT EACH OF THESE ALTITUDES:"
1720  FOR N=1 TO 3
1730  PRINT " ",N;INT(Q[N]+.5);"FT"
1740  NEXT N
1750  PRINT 
1760  FOR N=1 TO 3
1770  PRINT "THE TEMPERATURE AT ";INT(Q[N]+.5);" FT. IS ";
1780  INPUT C[N]
1790  IF ABS(C[N]-A[N])>1.1 THEN 1870
1800  NEXT N
1810  PRINT 
1820  PRINT "WOW, YOU MUST BE A BRAIN.  AND YOU PROBALLY KNOW"
1830  PRINT "A LOT ABOUT CLOUDS AND THINGS LIKE THAT.  IT WAS VERY"
1840  PRINT "NICE TO WORK WITH SOMEONE WHO UNDERSTANDS ME."
1850  PRINT " ","THANK YOU AND . . . . PEACE AND LONG LIFE"
1860  STOP 
1870  PRINT 
1880  PRINT "SORRY.  YOU WERE DOING GREAT THERE FOR A WHILE."
1890  PRINT "WELL, BACK TO THE BOOKS.  THE VALUES YOU SHOULD HAVE ARE:"
1900  PRINT 
1910  FOR N=1 TO 3
1920  PRINT N;
1930  PRINT "THE TEMPERATURE AT";INT(Q[N]+.5);"FEET IS ";A[N];"DEGREES"
1940  NEXT N
1950  STOP 
1960  PRINT "THE TEMPERATURE ON THE GROUND"
1970  RETURN 
1980  PRINT "THE DEW POINT TEMPERATURE ON THE GROUND"
1990  RETURN 
2000  PRINT "THE TEMPERATURE AT THE BASE OF THE CLOUD"
2010  RETURN 
2020  PRINT "THE ELEVATION, IN FEET, OF THE CLOUD BASE"
2030  RETURN 
2040  PRINT "FOLLOWED BY A COMMA, AND THEN TYPE IN YOUR VALUE FOR "
2050  RETURN 
2060  END 
