10  REM ****  HP TIME-SHARED BASIC PROGRAM LIBRARY  *******************
20  REM
30  REM                EQUIL2:  EQUILIBRIUM SYSTEMS
40  REM
50  REM                36308  (A833)  REV A -- 10/71
60  REM
70  REM ****  CONTRIBUTED PROGRAM  ************************************
80  REM EQUIL2 - COPYRIGHT 1971, POLYTECHNIC INSTITUTE OF BROOKLYN
90  REM EQUILIBRIUM SYSTEM, JOHN MARCHISOTTO 
100  REM REVISED 8/20/70 (D. PESSEL)
110  DIM D[20],E[20],F[20],W[3]
120  LET D1=0
130  LET E1=0
140  LET F1=0
150  PRINT "THIS PROGRAM WILL INVESTIGATE THE EQUILIBRIUM SYSTEM"
160  PRINT 
170  PRINT "            PCL5 = PCL3 + CL2"
180  PRINT 
190  PRINT "WHAT IS THE EQUILIBRIUM CONSTANT";
200  INPUT K
210  IF K >= 0 THEN 240
220  PRINT "THE EQUILIBRIUM CONSTANT MUST BE NON-NEGATIVE."
230  GOTO 190
240  PRINT "WHAT IS THE INITIAL CONCENTRATION OF PCL5";
250  INPUT A
260  IF A >= 0 THEN 290
270  PRINT "THE INITIAL CONCENTRATION OF PCL5 MUST BE NON-NEGATIVE."
280  GOTO 240
290  PRINT 
300  PRINT "WOULD YOU LIKE THE RESULTS PLOTTED (1), TABULATED (2)"
310  PRINT "OR BOTH (3) (TYPE THE APPROPRIATE NUMBER)";
320  INPUT Q1
330  IF Q1<2 THEN 400
340  PRINT 
350  PRINT 
360  PRINT "INIT. CL2"," EQUIL. PCL3"," EQUIL. CL2"," EQUIL. PCL5"
370  PRINT "----------"," -----------"," ----------"," -----------"
380  PRINT "INIT. PCL5"," INIT. PCL5"," INIT. PCL5"," INIT. PCL5"
390  PRINT 
400  LET B=K/A
410  FOR X=1 TO 16
420  LET X1=X-1
430  LET D[X]=(-(B+X1)+SQR((B+X1)*(B+X1)+4*B))/2
440  LET E[X]=X1+D[X]
450  LET F[X]=1-D[X]
460  IF Q1<2 THEN 480
470  PRINT X1,D[X],E[X],F[X]
480  IF D[X]<D1 THEN 500
490  LET D1=D[X]
500  IF E[X]<E1 THEN 520
510  LET E1=E[X]
520  IF F[X]<F1 THEN 540
530  LET F1=F[X]
540  NEXT X
550  IF Q1 <> 2 THEN 640
560  PRINT 
570  PRINT "*****"
580  PRINT 
590  PRINT "WOULD YOU LIKE ANOTHER RUN (1-YES, 0-NO)";
600  INPUT Q2
610  IF Q2>0 THEN 190
620  STOP 
630  REM PLOTTING ROUTINE FOR THREE CURVES
640  PRINT 
650  PRINT 
660  PRINT "A: (EQUIL. PCL3)/(INIT. PCL5)      MAXIMUM IS "D1
670  PRINT "B: (EQUIL. CL2)/(INIT. PCL5)       MAXIMUM IS "E1
680  PRINT "C: (EQUIL. PCL5)/(INIT. PCL5)      MAXIMUM IS "F1
690  PRINT 
700  PRINT "INIT. CL2";TAB(29);"A - B - C"
710  PRINT "----------   0        25        50        75       100";
720  PRINT "   % OF MAXIMUM"
730  PRINT "INIT. PCL5   I---------I---------I---------I---------I"
740  FOR X=1 TO 16
750  PRINT TAB(5);X-1;TAB(13);"I";
760  LET W[1]=INT(40*D[X]/D1+.5)
770  LET W[2]=INT(40*E[X]/E1+.5)
780  LET W[3]=INT(40*F[X]/F1+.5)
790  REM  FIND WHICH IS SMALLEST, THEN PRINT IT AND MAXIMIZE IT 
800  FOR Q=1 TO 3
810  LET K1=1.E+20
820  FOR I=1 TO 3
830  IF W[I]>K1 THEN 850
840  LET K1=W[I]
850  NEXT I
860  PRINT TAB(K1+13);
870  FOR I=1 TO 3
880  IF ABS(W[I]-K1)<.0001 THEN 910
890  NEXT I
900  STOP 
910  IF I <> 1 THEN 940
920  PRINT "A";
930  GOTO 990
940  IF I <> 2 THEN 970
950  PRINT "B";
960  GOTO 990
970  IF I <> 3 THEN 900
980  PRINT "C";
990  LET W[I]=1.E+25
1000  NEXT Q
1010  PRINT " "
1020  NEXT X
1030  PRINT 
1040  PRINT 
1050  GOTO 570
1060  END 
