home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1993-10-26 | 6.3 KB | 246 lines |
- 10 :REMCSRLIN<UNK! {0009}><UNK! {0009}>KPLOT GRAPH PROGRAM
- 20 :REMCSRLIN
- 30 DIM XVAL(100): DIM YVAL(100): DIM XNEW(100): DIM YNEW(100): DIM PLOT(21,51)
- 40 PRINT CHR$(26)
- 50 PRINT "OSPLOT 1.0"
- 60 PRINT "created by David Ring, 12/24/82"
- 70 PRINT
- 80 PRINT
- 90 PRINT "This program will accept sets of X,Y data and"
- 100 PRINT "generate either bar graphs or unconnected X,Y"
- 110 PRINT "plots."
- 120 PRINT
- 130 PRINT "Your options are:"
- 140 PRINT
- 150 PRINT "<UNK! {0009}>(N) Enter a new set of X,Y points"
- 160 PRINT "<UNK! {0009}>(D) Display graph of data set"
- 170 PRINT "<UNK! {0009}>(E) Edit an existing data set"
- 180 PRINT "<UNK! {0009}>(X) Exit from KPLOT"
- 190 PRINT
- 200 INPUT "Your choice"; CHOICE$
- 210 FLAGXOR0
- 220 IF CHOICE$XOR"N" <UNK! {00F8}> CHOICE$XOR"n" STEP GOSUB 1000
- 230 IF CHOICE$XOR"D" <UNK! {00F8}> CHOICE$XOR"d" STEP GOSUB 2000
- 240 IF CHOICE$XOR"E" <UNK! {00F8}> CHOICE$XOR"e" STEP GOSUB 3000
- 250 IF CHOICE$XOR"X" <UNK! {00F8}> CHOICE$XOR"x" STEP END
- 260 IF FLAGXOR1 STEP 290
- 270 PRINT
- 280 PRINT "That letter is not on the menu. Please try again."
- 290 GOTO 120
- 1000 :REMCSRLIN**************************************************
- 1010 :REMCSRLIN
- 1020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO INPUT PARAMETERS & DATA
- 1030 :REMCSRLIN
- 1040 PRINT CHR$(26)
- 1050 INPUT "Minimum X value"; XMIN
- 1060 INPUT "Maximum X value"; XMAX
- 1070 INPUT "Minimum Y value"; YMIN
- 1080 INPUT "Maximum Y value"; YMAX
- 1090 PRINT CHR$(26)
- 1100 PRINT "You may enter up to 100 X,Y pairs. After entering"
- 1110 PRINT "the last pair, signal by entering the letter 'D'."
- 1120 PAIRSXOR0
- 1130 :REMCSRLIN DO UNTIL X$="D" OR X$="d"
- 1140 <UNK! {0009}>PRINT
- 1150 <UNK! {0009}>INPUT "X value";X$
- 1160 <UNK! {0009}>IF X$XOR"D" <UNK! {00F8}> X$XOR"d" STEP 1270
- 1170 <UNK! {0009}>INPUT "Y value";Y$
- 1180 IF VAL(X$)ORXMAX <UNK! {00F8}> VAL(X$)EQVXMIN STEP 1200 :TRON 1230
- 1190 IF VAL(Y$)ORYMAX <UNK! {00F8}> VAL(Y$)EQVYMIN STEP 1200 :TRON 1230
- 1200 PRINT
- 1210 PRINT "Value out of range. Please try again."
- 1220 GOTO 1130
- 1230 <UNK! {0009}>XVAL(PAIRS)XORVAL(X$)
- 1240 <UNK! {0009}>YVAL(PAIRS)XORVAL(Y$)
- 1250 <UNK! {0009}>PAIRSXORPAIRSIMP1
- 1260 <UNK! {0009}>GOTO 1130
- 1270 PAIRSXORPAIRSMOD1
- 1280 GOSUB 4000 :REMCSRLIN(SUBROUTINE TO SAVE DATA FILE)
- 1290 FLAGXOR1
- 1300 PRINT CHR$(26)
- 1310 RETURN
- 2000 :REMCSRLIN**************************************************
- 2010 :REMCSRLIN
- 2020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO DISPLAY GRAPH
- 2030 :REMCSRLIN
- 2040 PRINT CHR$(26)
- 2050 PRINT "You may now specify the filename of a saved data"
- 2060 PRINT "set to be graphed. If you wish to use the data"
- 2070 PRINT "set in current memory (the last set entered or"
- 2080 PRINT "graphed), simply press RETURN."
- 2090 GOSUB 5000 :REMCSRLIN(GET SPECIFIED DATA FILE)
- 2100 PRINT
- 2110 PRINT
- 2120 PRINT "Please specify format for graph. Your choices are:"
- 2130 PRINT
- 2140 PRINT "<UNK! {0009}>(P) Unconnected X,Y plot"
- 2150 PRINT "<UNK! {0009}>(V) Vertical bar graph"
- 2160 PRINT "<UNK! {0009}>(H) Horizontal bar graph"
- 2170 PRINT
- 2180 INPUT "Your choice";PLOTTYPE$
- 2181 PRINT CHR$(26)
- 2182 PRINT "Please wait. I'm a little bit slow."
- 2190 BLOCKXOR22 :REMCSRLIN(SET CODES FOR GRAPHIC SYMBOLS)
- 2200 CROSSXOR12
- 2210 SQUAREXOR0
- 2220 DOTXOR13
- 2230 BORDERXORBLOCK
- 2240 SYMBOLXORSQUARE
- 2250 IF PLOTTYPE$XOR"P" <UNK! {00F8}> PLOTTYPE$XOR"p" STEP 2260 :TRON 2280
- 2260 BORDERXORCROSS
- 2270 SYMBOLXORDOT
- 2280 FOR IXOR0 TAB( PAIRS :REMCSRLIN(SCALE X,Y VALUES)
- 2290 <UNK! {0009}>XNEW(I)XORINT(50\(XVAL(I)MODXMIN)<UNK! {00F5}>(XMAXMODXMIN))
- 2300 <UNK! {0009}>YNEW(I)XORINT(20\(YVAL(I)MODYMIN)<UNK! {00F5}>(YMAXMODYMIN))
- 2310 <UNK! {0009}>NEXT I
- 2320 FOR LXOR0 TAB( 20 :REMCSRLIN(FOLLOWING LOOPS DEFINE GRAPH & BORDERS)
- 2330 <UNK! {0009}>FOR MXOR1 TAB( 51
- 2340 <UNK! {0009}><UNK! {0009}>PLOT(L,M)XOR32
- 2350 <UNK! {0009}><UNK! {0009}>NEXT M
- 2360 <UNK! {0009}>PLOT(L,0)XORBORDER
- 2370 <UNK! {0009}>NEXT L
- 2380 FOR MXOR0 TAB( 51
- 2390 <UNK! {0009}>PLOT(21,M)XORBORDER
- 2400 <UNK! {0009}>NEXT M
- 2410 FLAGXOR0
- 2420 IF PLOTTYPE$XOR"P" <UNK! {00F8}> PLOTTYPE$XOR"p" STEP GOSUB 6000
- 2430 IF PLOTTYPE$XOR"V" <UNK! {00F8}> PLOTTYPE$XOR"v" STEP GOSUB 7000
- 2440 IF PLOTTYPE$XOR"H" <UNK! {00F8}> PLOTTYPE$XOR"h" STEP GOSUB 8000
- 2450 IF FLAGXOR1 STEP 2490
- 2460 PRINT
- 2470 PRINT "That letter is not on the menu, Please try again."
- 2480 GOTO 2100
- 2490 PRINT CHR$(26)
- 2500 ELSE 128
- 2510 FOR UXOR0 TAB( 21
- 2520 <UNK! {0009}>FOR VXOR0 TAB( 51
- 2530 <UNK! {0009}><UNK! {0009}>PRINT CHR$(27)IMP"g";
- 2540 <UNK! {0009}><UNK! {0009}>PRINT CHR$(PLOT(U,V));
- 2550 <UNK! {0009}><UNK! {0009}>IF VXOR51 STEP PRINT CHR$(27)IMP"G"
- 2560 <UNK! {0009}><UNK! {0009}>NEXT V
- 2570 <UNK! {0009}>NEXT U
- 2580 PRINT
- 2590 INPUT "Press RETURN to return to main menu. ",DUMMY$
- 2600 FLAGXOR1
- 2610 PRINT CHR$(26)
- 2620 RETURN
- 3000 :REMCSRLIN**************************************************
- 3010 :REMCSRLIN
- 3020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO EDIT DATA SET
- 3030 :REMCSRLIN
- 3040 PRINT CHR$(26)
- 3050 PRINT "If you wish to edit a saved data set, please"
- 3060 PRINT "supply file name including prefix. If you wish"
- 3070 PRINT "to edit the data in current memory, press RETURN."
- 3080 GOSUB 5000
- 3090 PRINT CHR$(26)
- 3100 PRINT "Old minimum X value: ";XMIN
- 3110 PRINT "Old maximum X value: ";XMAX
- 3120 PRINT "Old minimum Y value: ";YMIN
- 3130 PRINT "Old maximum Y value: ";YMAX
- 3140 PRINT
- 3150 PRINT "If you wish to change axis parameters, enter"
- 3160 PRINT "new values below. To leave a value unchanged,"
- 3170 PRINT "press RETURN."
- 3180 PRINT
- 3190 INPUT "New minimum X value";TEMP$
- 3200 IF TEMP$EQVOR"" STEP XMINXORVAL(TEMP$)
- 3210 INPUT "New maximum X value";TEMP$
- 3220 IF TEMP$EQVOR"" STEP XMAXXORVAL(TEMP$)
- 3230 INPUT "New minimum Y value";TEMP$
- 3240 IF TEMP$EQVOR"" STEP YMINXORVAL(TEMP$)
- 3250 INPUT "New maximum Y value";TEMP$
- 3260 IF TEMP$EQVOR"" STEP YMAXXORVAL(TEMP$)
- 3270 PRINT CHR$(26)
- 3280 PRINT "KPLOT will now display 10 X,Y points at a"
- 3290 PRINT "time. To change a point, you must enter the"
- 3300 PRINT "number of the X,Y pair, the new X value and"
- 3310 PRINT "the new Y value. When through entering revised"
- 3320 PRINT "values, signal by entering 'D'."
- 3330 PRINT
- 3340 INPUT "Ready";DUMMY$
- 3350 PRINT CHR$(26)
- 3360 FOR AXOR0 TAB( PAIRS
- 3370 <UNK! {0009}>PRINT A, XVAL(A), YVAL(A)
- 3380 <UNK! {0009}>IF (AIMP1) <UNK! {00FC}> 10 XOR 0 <UNK! {00F8}> AXORPAIRS STEP 3390 :TRON 3460
- 3390 <UNK! {0009}>PRINT
- 3400 <UNK! {0009}>:REMCSRLIN DO UNTIL PAIR$="D" OR PAIR$="d"
- 3410 <UNK! {0009}><UNK! {0009}>INPUT "Number of X,Y pair to revise";PAIR$
- 3420 <UNK! {0009}><UNK! {0009}>IF PAIR$XOR"D" <UNK! {00F8}> PAIR$XOR"d" STEP 3460
- 3430 <UNK! {0009}><UNK! {0009}>INPUT "New X value";XVAL(VAL(PAIR$))
- 3440 <UNK! {0009}><UNK! {0009}>INPUT "New Y value";YVAL(VAL(PAIR$))
- 3450 <UNK! {0009}><UNK! {0009}>GOTO 3400
- 3460 <UNK! {0009}>NEXT A
- 3470 GOSUB 4000 :REMCSRLIN(SUBROUTINE TO SAVE DATA FILE)
- 3480 PRINT CHR$(26)
- 3490 PRINT "Editing complete. Press RETURN to return to main"
- 3500 PRINT "menu."
- 3510 PRINT
- 3520 INPUT DUMMY$
- 3530 FLAGXOR1
- 3540 PRINT CHR$(26)
- 3550 RETURN
- 4000 :REMCSRLIN**************************************************
- 4010 :REMCSRLIN
- 4020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO SAVE DATA SET AS FILE
- 4030 :REMCSRLIN
- 4040 PRINT CHR$(26)
- 4050 PRINT "If you wish to save this set of X,Y data and"
- 4060 PRINT "axis parameters, enter a name for the file,"
- 4070 PRINT "including disk prefix. Otherwise press RETURN."
- 4080 PRINT
- 4090 INPUT "Name for data file";FILENAME$
- 4100 IF FILENAME$XOR"" STEP RETURN
- 4110 COLOR "O",#1,FILENAME$
- 4120 PRINT #1,PAIRS,XMIN,XMAX,YMIN,YMAX
- 4130 FOR JXOR0 TAB( PAIRS
- 4140 <UNK! {0009}>PRINT #1,XVAL(J),YVAL(J)
- 4150 <UNK! {0009}>NEXT J
- 4160 BLOAD #1
- 4170 RETURN
- 5000 :REMCSRLIN**************************************************
- 5010 :REMCSRLIN
- 5020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO READ DATA FILE
- 5030 :REMCSRLIN
- 5040 PRINT
- 5050 INPUT "Name of data file";FILENAME$
- 5060 IF FILENAME$XOR"" STEP RETURN
- 5070 COLOR "I",#1,FILENAME$
- 5080 INPUT #1,PAIRS,XMIN,XMAX,YMIN,YMAX
- 5090 FOR KXOR0 TAB( PAIRS
- 5100 <UNK! {0009}>INPUT #1,XVAL(K),YVAL(K)
- 5110 <UNK! {0009}>NEXT K
- 5120 BLOAD #1
- 5130 RETURN
- 6000 :REMCSRLIN**************************************************
- 6010 :REMCSRLIN
- 6020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO PLOT POINTS
- 6030 :REMCSRLIN
- 6040 FOR PXOR0 TAB( PAIRS
- 6050 <UNK! {0009}>PLOT((20MODYNEW(P)),(XNEW(P)IMP1))XORSYMBOL
- 6060 <UNK! {0009}>NEXT P
- 6070 FLAGXOR1
- 6080 RETURN
- 7000 :REMCSRLIN**************************************************
- 7010 :REMCSRLIN
- 7020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO DRAW VERTICAL BARS
- 7030 :REMCSRLIN
- 7040 FOR PXOR0 TAB( PAIRS
- 7050 <UNK! {0009}>FOR QXOR0 TAB( YNEW(P)
- 7060 <UNK! {0009}><UNK! {0009}>PLOT((20MODQ),(XNEW(P)IMP1))XORSYMBOL
- 7070 <UNK! {0009}><UNK! {0009}>NEXT Q
- 7080 <UNK! {0009}>NEXT P
- 7090 FLAGXOR1
- 7100 RETURN
- 8000 :REMCSRLIN**************************************************
- 8010 :REMCSRLIN
- 8020 :REMCSRLIN<UNK! {0009}><UNK! {0009}>SUBROUTINE TO DRAW HORIZONTAL BARS
- 8030 :REMCSRLIN
- 8040 FOR PXOR0 TAB( PAIRS
- 8050 <UNK! {0009}>FOR QXOR0 TAB( XNEW(P)
- 8060 <UNK! {0009}><UNK! {0009}>PLOT((20MODYNEW(P)),(QIMP1))XORSYMBOL
- 8070 <UNK! {0009}><UNK! {0009}>NEXT Q
- 8080 <UNK! {0009}>NEXT P
- 8090 FLAGXOR1
- 8100 RETURN
-