Compucolor.org – Virtual Media

Listing of file='PLOTTR.BAS;01' on disk='vmedia/ncc_2-sector.ccvf'

1 REM PLOTTING PROGRAM - INSTRUCTIONS IN LINE 100
2 REM BART EVANS 365-3437
10 REM SAMPLE: A SQUARE WAVE
11 DEF FN X(X)= LOG (X)
16 REM
17 X1= .1
18 X2= 20
19 REM
100 REM FUNCTION TO BE PLOTTED MUST BE DEFINED AS:
110 REM
120 REM    DEF FNX(X) =  F(X)
130 REM
140 REM    WHERE F(X) IS YOUR FUNCTION IN X
150 REM
160 REM NEXT, DEFINE THE LEFT AND RIGHT LIMITS FOR X:
170 REM
180 REM    X1 =  LEFT VALUE
190 REM    X2 =  RIGHT VALUE
200 REM
210 REM NOTE THAT FUNCTION DEFINITION CAN BE CASCADED IF
220 REM YOU RUN OUT OF ROOM, IE:
230 REM
240 REM    DEF FNA(X) = F1(X)
250 REM    DEF FNB(X) = F2(X)
260 REM    ...
270 REM    DEF FNX(X) = FNA(X)+FNB(X)+...
280 REM
290 REM WHEN READY, JUST 'RUN'
300 REM
310 REM TO SAVE PLOTS, YOU MAY FIRST WANT TO MAKE A VERSION
320 REM OF THIS PROGRAM WITH NO REM'S TO KEEP IT SHORT.
330 REM
340 REM NOTE ALSO THAT THE NUMBER OF POINTS COMPUTED ACROSS
350 REM IS 'S' (LINE1100) AND MAY BE RAISED OR LOWERED
360 REM TO CHANGE SPEED OR RESOLUTION.
370 REM
900 REM SET X-AXIS LIMITS AT 110% OF PLOTTING LIMITS
910 REM
1000 XL= 1.1* X1
1010 XH= 1.1* X2
1014 REM
1015 REM INITIALIZE Y-AXIS LIMITS AT 0
1016 REM
1020 YL= 0
1030 YH= 0
1040 REM
1050 REM SET S = NUMBER OR HORIZONTAL POINTS
1060 REM
1100 S= 128
1104 REM
1105 REM RESERVE SPACE FOR (X, F(X)) PAIRS
1106 REM
1110 DIM Z(1,S+ 2)
1114 REM
1115 REM CALCULATE ALL POINTS, REMEMBER MIN & MAX F(X)
1116 REM DOTS INDICATE ACTIVIITY
1117 REM
1120 K= 0
1130 FOR X= X1TO X2STEP (X2- X1)/ S
1140 PRINT ".";
1150 Y= FN X(X)
1160 Z(0,K)= X
1170 Z(1,K)= Y
1180 K= K+ 1
1190 IF Y< YLTHEN YL= Y
1200 IF Y> YHTHEN YH= Y
1210 NEXT
1220 REM
1230 REM SET Y-AXIS LIMITS TO 110% OF MIN & MAX POINTS
1240 REM
1300 YL= 1.1* YL
1310 YH= 1.1* YH
1320 REM
1330 REM CALCULATE X & Y SPANS
1340 REM
1400 DX= XH- XL
1410 DY= YH- YL
1420 REM
1430 REM CALCULATE X & Y SCALE FACTORS
1440 REM
1500 XS= 127/ DX
1510 YS= 127/ DY
1520 REM
1530 REM DEFINE FUNCTIONS TO CONVERT (X,Y) PAIRS TO
1540 REM SCREEN (X,Y) PAIRS
1550 REM
1600 DEF FN XP(X)= (X- XL)* XS
1610 DEF FN YP(Y)= (Y- YL)* YS
1620 REM
1630 REM CLEAR SCREEN AND SET AXIS COLOR TO WHITE
1640 REM
2000 PLOT 12
2010 PLOT 23
2020 REM
2030 REM PLOT X-AXIS
2040 REM
2100 X0= FN XP(XL):Y0= FN YP(0)
2110 XP= FN XP(XH):YP= FN YP(0)
2140 GOSUB 5000
2150 REM
2160 REM PLOT Y-AXIS
2170 REM
2200 X0= FN XP(0):Y0= FN YP(YL)
2210 XP= FN XP(0):YP= FN YP(YH)
2240 GOSUB 5000
2250 REM
2260 REM INITIALIZE PLOT START POINT
2270 REM
2300 X0= FN XP(X1)
2310 Y0= FN YP(FN X(X1))
2320 REM
2330 REM SET PLOT COLOR TO RED
2340 REM
2400 PLOT 17
2404 REM
2405 REM REGURGITATE AND PLOT ALL POINTS
2406 REM
2410 FOR I= 0TO K- 1
2420 XP= FN XP(Z(0,I))
2430 YP= FN YP(Z(1,I))
2440 GOSUB 5000
2450 NEXT
2460 REM
2470 REM SET AXIS VALUES COLOR TO YELLOW
2480 REM
2500 PLOT 19
2504 REM
2505 REM PRINT RIGHT, LEFT, BOTTOM, TOP LIMIT VALUES
2506 REM
2510 PRINT "AXIS:",XL,XH,YL,YH
2520 REM
2530 REM RESET COLOR TO GREEN
2540 REM
3000 PLOT 18
3010 END
3020 REM
3030 REM
3040 REM PLOTTING SUBROUTINE
3050 REM
5000 IF X0< 0THEN X0= 0:IF X0> 127THEN X0= 127
5010 IF Y0< 0THEN Y0= 0:IF Y0> 127THEN Y0= 127
5020 IF XP< 0THEN XP= 0:IF XP> 127THEN XP= 127
5030 IF YP< 0THEN YP= 0:IF YP> 127THEN YP= 127
5040 PLOT 2,X0,Y0,242,XP,YP,255
5050 X0= XP:Y0= YP
5060 RETURN