1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        PLOT:   PLOTS A GIVEN FUNCTION ON THE TELETYPE
4  REM
5  REM        36104 REV  B   10/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
9000  REM
9005  REM MAR 1973 BY TCP
9010  REM
9015  REM
9030  REM
9035  REM-------------------------------------------------------------
9040  REM
9045  DIM Z$[59],Z[100]
9050  REM
9055  REM ++++++++++ INPUT GOODS
9060  REM
9065  PRINT "INPUT XMIN,XMAX,XSTEP";
9070  INPUT Z0,Z1,Z2
9075  PRINT 
9080  PRINT "INPUT NUMBER OF UNDEFINED POINTS";
9085  INPUT Z9
9090  IF Z9=0 THEN 9115
9095  IF Z9<1 OR Z9>100 OR Z9#INT(Z9) THEN 9080
9100  PRINT 
9105  PRINT "INPUT   "Z9"UNDEFINED POINT(S)"
9110  MAT  INPUT Z[Z9]
9115  PRINT 
9120  PRINT "WOULD YOU LIKE 'X' OR 'Y' VALUES PRINTED";
9125  INPUT Z$[1,1]
9130  IF Z$[1,1]#"Y" THEN 9145
9135  Z6=1
9140  GOTO 9165
9145  IF Z$[1,1]#"X" THEN 9120
9150  Z6=0
9155  GOTO 9165
9160  GOTO 9120
9165  PRINT 
9170  PRINT "WHICH SYMBOL FOR GRAPH";
9175  INPUT Z$[1,1]
9180  REM
9185  REM ++++++++++ FIND SCALING AND PRINT
9190  REM
9195  Z3=1.E+37
9200  Z4=-1.E+37
9205  FOR Z=Z0 TO Z1 STEP Z2
9210  GOSUB 9475
9215  IF Z7=0 THEN 9230
9220  Z3=Z3 MIN Z8
9225  Z4=Z4 MAX Z8
9230  NEXT Z
9235  IF Z3#Z4 THEN 9255
9240  PRINT 
9245  PRINT "CONSTANT FUNCTION NOT ALLOWED"
9250  GOTO 9435
9255  PRINT 
9260  PRINT "YMIN = ";Z3
9265  PRINT "YMAX = ";Z4
9270  PRINT "YSTEP = ";(Z4-Z3)/56
9275  PRINT '10'10'10'10'10
9280  REM
9285  REM ++++++++++ SHOVE IN AXES
9290  REM
9295  Z5=0
9300  FOR Z=Z0 TO Z1 STEP Z2
9305  Z$[2,59]="                                                         X"
9310  IF ABS(Z)>ABS(Z2)/100 AND SGN(Z)*SGN(Z5) >= 0 THEN 9325
9315  Z=0
9320  Z$[2,59]="YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYO"
9325  IF SGN(Z3)*SGN(Z4)>0 THEN 9360
9330  Z8=56/(Z3-Z4)*Z3+2
9335  Z8=(2 MAX (58 MIN Z8))
9340  Z$[Z8,Z8]=Z$[59,59]
9345  REM
9350  REM ++++++++++ SHOVE IN DATA
9355  REM
9360  GOSUB 9475
9365  IF Z7=0 THEN 9390
9370  Z7=Z8
9375  Z8=(Z8-Z3)/(Z4-Z3)*56+2
9380  Z8=(2 MAX (58 MIN Z8))
9385  Z$[Z8,Z8]=Z$[1,1]
9390  FOR Z8=58 TO 3 STEP -1
9395  IF Z$[Z8,Z8]#" " THEN 9405
9400  NEXT Z8
9405  PRINT (Z6=1)*Z7+(Z6=0)*Z,
9410  PRINT Z$[2,Z8]
9415  Z5=Z
9420  NEXT Z
9425  REM
9430  REM ++++++++++ WRAP IT UP
9435  PRINT '10'10'10
9440  PRINT "MORE";
9445  INPUT Z$[1,1]
9450  IF Z$[1,1]="Y" THEN 9000
9455  STOP 
9460  REM
9465  REM ++++++++++ DATA GETTER
9470  REM
9475  FOR Z8=1 TO Z9
9480  IF ABS(Z[Z8]-Z)<ABS(Z2)/100 THEN 9505
9485  NEXT Z8
9490  Z8=FNF(Z)
9495  Z7=1
9500  RETURN 
9505  Z7=0
9510  RETURN 
9515  END 
