10  COM N$[72],F$[72],I,Q,P,C5,W,Q1,T[20],D[20],C[20],V[20]
20  REM PROGRAM NAME = BLINKP, PLOTS FOR PROGRAMS
30  REM CHAINED TO BLINKY,BLINKD,BLINKM,BLINK2,BLINK3,BLINK5,BLINK6
40  DIM W$[3],D$[20],C$[3],E$[20],H$[20],G$[20]
50  DIM X[50],Y[50],K[50],L[50],W[50],Z[50]
60  K2=240
70  PRINT 
80  PRINT "THIS PROGRAM CAN GRAPH FUNCTIONS OF YOUR DATA."
90  PRINT "DO YOU KNOW WHICH FUNCTIONS THIS PROGRAM CAN GRAPH?  ";
100  ENTER K2,K3,W$
110  PRINT '13
120  IF K3<0 THEN 90
130  IF W$="YES" THEN 320
140  IF W$#"NO" THEN 90
150  PRINT '10"LET'S SAY, ARBITRARILY, THE VALUE OF Y (THE DEPENDENT VARIABLE)"
160  PRINT "DEPENDS ON THE VALUE OF X (THE INDEPENDENT VARIABLE)."
170  PRINT "THEN, WE SAY Y IS A RUNCTION OR X.  FUNCTIONS OF X WHICH THIS"
180  PRINT "PROGRAM CAN GRAPH ARE:"
190  PRINT "  1) Y VS. X^N      3) Y VS. LOG X      5) Y VS. (COS X)^N"
200  PRINT "  2) Y VS. E^X      4) Y VS. (SIN X)^N  6) Y VS. (TAN X)^N"
210  PRINT "  "'10"AND THE INVERSE OF ANY OF THE ABOVE,"
220  PRINT "  WHERE N = REAL NUMBER, E = NATURAL LOG BASE = 2.718..."
230  PRINT 
240  GOTO 330
250  PRINT 
260  PRINT "HOW MANY (X,Y) PAIRS OF DATA ARE THERE?  ";
270  ENTER K2,K3,S
280  PRINT '13
290  IF K3<0 THEN 260
300  IF K3<0 THEN 260
310  GOTO 620
320  PRINT 
330  PRINT "WHICH QUANTITY DO YOU WANT GRAPHED AS X?"
340  PRINT "(INPUT TIME, DISTANCE, OR SPEED):  ";
350  ENTER K2,K3,E$
360  PRINT '13
370  IF K3<0 THEN 340
380  X=6
390  IF X=7 THEN 410
400  LET G$=E$
410  IF E$[1,3]#"TIM" THEN 440
420  LET P[X]=1
430  GOTO 520
440  IF E$[1,3]#"DIS" THEN 470
450  LET P[X]=2
460  GOTO 520
470  IF E$[1,3]#"SPE" THEN 500
480  LET P[X]=3
490  GOTO 520
500  GOTO X-5 OF 340,550
510  LET P[X]=4
520  REM
530  PRINT 
540  PRINT "WHICH QUANTITY DO YOU WANT GRAPHED AS Y?"
550  PRINT "(INPUT TIME, DISTANCE, OR SPEED):  ";
560  LET X=7
570  ENTER K2,K3,H$
580  PRINT '13
590  IF K3<0 THEN 550
600  LET E$=H$
610  GOTO 410
620  FOR N=1 TO S
630  GOTO P[6] OF 640,660,680,700
640  LET K[N]=T[N]
650  GOTO 710
660  LET K[N]=D[N]
670  GOTO 710
680  LET K[N]=V[N]
690  GOTO 710
700  LET K[N]=C[N]
710  NEXT N
720  FOR N=1 TO S
730  GOTO P[7] OF 740,760,780,800
740  LET L[N]=T[N]
750  GOTO 810
760  LET L[N]=D[N]
770  GOTO 810
780  LET L[N]=V[N]
790  GOTO 810
800  LET L[N]=C[N]
810  NEXT N
820  PRINT 
830  PRINT "WHICH FUNCTION OF X (OR ITS INVERSE) DO YOU WANT GRAPHED?  ";
840  ENTER K2,K3,B
850  PRINT '13
860  IF K3 >= 0 AND B <= 6 AND B >= 1 THEN 890
870  PRINT "     INPUT THE NUMBER FOR THE FUNCTION."
880  GOTO 830
890  IF B>6 OR B<1 OR B#INT(B) THEN 870
900  PRINT "DO YOU WANT THE INVERSE OF THE FUNCTION?  ";
910  ENTER K2,K3,C$
920  PRINT '13
930  IF K3<0 THEN 900
940  IF C$="YES" THEN 960
950  IF C$#"NO" THEN 900
960  IF B=2 OR B=3 THEN 260
970  PRINT "INPUT THE VALUE YOU WANT FOR N:  ";
980  ENTER K2,K3,K
990  PRINT '13
1000  IF K3<0 THEN 970
1010  IF K3<0 THEN 970
1020  IF K3<0 THEN 970
1030  IF C$#"YES" THEN 1060
1040  F=-K
1050  GOTO 1070
1060  F=K
1070  FOR N=1 TO S
1080  W[N]=K[N]
1090  Z[N]=L[N]
1100  NEXT N
1110  GOTO 1980
1120  I1=A1=W[1]
1130  I2=A2=Z[1]
1140  FOR N=1 TO S
1150  I1=I1 MIN W[N]
1160  A1=A1 MAX W[N]
1170  I2=I2 MIN Z[N]
1180  A2=A2 MAX Z[N]
1190  NEXT N
1200  FOR M=1 TO S
1210  N=1
1220  FOR A=1 TO S
1230  IF Z[N] >= Z[A] THEN 1270
1240  IF A=S THEN 1290
1250  N=N+1
1260  GOTO 1220
1270  NEXT A
1280  GOTO 1330
1290  Y[M]=Z[A]
1300  X[M]=W[A]
1310  Z[A]=0
1320  GOTO 1360
1330  Y[M]=Z[N]
1340  X[M]=W[N]
1350  Z[N]=0
1360  NEXT M
1370  Q=A1-I1
1380  R=A2-I2
1390  IF Q=0 THEN 1420
1400  T=60/Q
1410  GOTO 1430
1420  T=0
1430  U=R/10
1440  GOSUB B OF 2140,2160,2180,2200,2220,2240
1450  PRINT 
1460  IF B=2 THEN 1530
1470  IF B=3 THEN 1530
1480  IF C$="YES" THEN 1510
1490  PRINT "- - - - - GRAPH OF Y VS."D$;K" - - - - -"
1500  GOTO 1570
1510  PRINT "- - - - - GRAPH OR Y VS. 1/"D$;K" - - - - -"
1520  GOTO 1570
1530  IF C$="YES" THEN 1560
1540  PRINT "- - - - - GRAPH OF Y VS."D$" - - - - -"
1550  GOTO 1570
1560  PRINT "- - - - - GRAPH OF Y VS. 1/"D$" - - - - -"
1570  GOTO 1580
1580  PRINT "- - - RANGE OF VALUES FOR Y IS"R"AND FOR "G$" IS"Q
1590  FOR M=1 TO 10
1600  E=Y[1]-(M-1)*U
1610  FOR N=2 TO S
1620  IF E=Y[N-1] THEN 1690
1630  IF E>Y[N-1] THEN 1650
1640  NEXT N
1650  J=(Y[N-1]-E)/(Y[N-1]-Y[N-2])
1660  G=J*(X[N-1]-X[N-2])
1670  G=-G
1680  GOTO 1700
1690  G=0
1700  H=X[N-1]+G
1710  I=H-I1
1720  W=I*T
1730  PRINT "!"'13'10"!"'13'10"!"'13;TAB(W);"*"
1740  NEXT M
1750  PRINT "!"'13'10"!"
1760  PRINT "--------------------------------------------------------------------"
1770  PRINT TAB(35);"X = "G$
1780  PRINT '10'10"DOES THE GRAPH LOOK LIKE A STRAIGHT LINE?  ";
1790  ENTER K2,K3,W$
1800  PRINT '13
1810  IF K3<0 THEN 1780
1820  IF W$="NO" THEN 1900
1830  IF W$#"YES" THEN 1780
1840  PRINT "DO YOU WANT TO CHANGE THE VARIABLES BEING GRAPHED?  ";
1850  ENTER K2,K3,W$
1860  PRINT '13
1870  IF K3<0 THEN 1840
1880  IF W$="YES" THEN 320
1890  IF W$#"NO" THEN 2260
1900  PRINT "DO YOU WANT TO HAVE A DIFFERENT FUNCTION OF X GRAPHED?  ";
1910  ENTER K2,K3,W$
1920  PRINT '13
1930  IF K3<0 THEN 1900
1940  PRINT 
1950  IF W$="YES" THEN 820
1960  IF W$#"NO" THEN 1900
1970  GOTO 1840
1980  FOR N=1 TO S
1990  GOSUB B OF 2020,2040,2060,2080,2100,2120
2000  NEXT N
2010  GOTO 1120
2020  W[N]=(W[N])^F
2030  RETURN 
2040  W[N]=EXP(W[N])
2050  RETURN 
2060  W[N]=LOG(W[N])
2070  RETURN 
2080  W[N]=(SIN(W[N]))^F
2090  RETURN 
2100  W[N]=(COS(W[N]))^F
2110  RETURN 
2120  W[N]=(TAN(W[N]))^F
2130  RETURN 
2140  D$="X^"
2150  RETURN 
2160  D$="E^X"
2170  RETURN 
2180  D$="LOG X"
2190  RETURN 
2200  D$="(SIN X)^"
2210  RETURN 
2220  D$="(COS X)^"
2230  RETURN 
2240  D$="(TAN X)^"
2250  RETURN 
2260  END 
