Skip to content

Instantly share code, notes, and snippets.

@scruss
Last active April 16, 2020 23:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scruss/a08020275183b928f16262d3cff66ae0 to your computer and use it in GitHub Desktop.
Save scruss/a08020275183b928f16262d3cff66ae0 to your computer and use it in GitHub Desktop.
PLOTPOURRI for BBC Micro
10 REM ******************
20 REM * *
30 REM * PLOTPOURRI *
40 REM * S COTTRELL *
50 REM * SEPT 1979 *
60 REM * *
70 REM ******************
80 REM Washington Apple Pi Journal October 1979
90 REM bbc basic / matrix brandy port - scruss, 2019-07
100 MODE 1
110 INPUT "WHICH PLOT FIRST (1-10)?";PN
120 ON PN GOTO 130,250,370,490,610,730,850,970,1090,1210
130 X1=-4
140 X2=4
150 Y1=-4
160 Y2=4
170 ZS=45
180 RZ=1
190 PN=1
200 ZN=0:ZM=1.9992
210 PC=5:REM magenta
220 BC=0:REM black
230 F$="(COS(X*X+Y*Y)+1)*EXP(-(X*X+Y*Y)/6)"
240 GOSUB 1340
250 X1=-4
260 X2=4
270 Y1=-4
280 Y2=4
290 ZS=12.5
300 RZ=1
310 PN=2
320 ZN=0:ZM=2
330 PC=2:REM blue, now green
340 BC=0:REM black
350 F$="1+COS(X*Y)"
360 GOSUB 1340
370 X1=-6
380 X2=2
390 Y1=-5
400 Y2=1
410 ZS=25
420 RZ=2
430 PN=3
440 ZN=-1:ZM=0.9999
450 PC=0:REM black
460 BC=7:REM white?
470 F$="(-COS(X*X+Y*Y)-1)*EXP(-(X*X+Y*Y)/16)+1"
480 GOSUB 1340
490 X1=-200
500 X2=200
510 Y1=-100
520 Y2=200
530 ZS=12.5
540 RZ=2
550 PN=4
560 ZN=0:ZM=2
570 PC=0:REM black
580 BC=7:REM white?
590 F$="1+COS((X+Y)/(LOG(X*X+Y^4)))"
600 GOSUB 1340
610 X1=-20
620 X2=20
630 Y1=-20
640 Y2=20
650 ZS=40
660 RZ=2
670 PN=5
680 ZN=-1.4955:ZM=-0.0001
690 PC=0:REM black
700 BC=7:REM white?
710 F$="(COS(X*Y/SQR(X*X+Y*Y))-1)*EXP(-(X*X+Y*Y)/120)"
720 GOSUB 1340
730 X1=-5
740 X2=5
750 Y1=-5
760 Y2=5
770 ZS=12.5
780 RZ=2
790 PN=6
800 ZN=0:ZM=1.9999
810 PC=0:REM black
820 BC=7:REM white?
830 F$="1+COS((X+Y)/(LOG(ABS(X*Y+0.5))))"
840 GOSUB 1340
850 X1=-7
860 X2=7
870 Y1=-17.4
880 Y2=17.4
890 ZS=50
900 RZ=2
910 PN=7
920 ZN=-0.1:ZM=0.8999
930 PC=0:REM black
940 BC=7:REM white?
950 F$="Y*X*X/(Y*Y+X*X*X*X)+0.4"
960 GOSUB 1340
970 X1=-3
980 X2=3
990 Y1=-3
1000 Y2=3
1010 ZS=10
1020 RZ=1
1030 PN=8
1040 ZN=-0.7022:ZM=4.7021
1050 PC=6:REM magenta
1060 BC=0:REM black
1070 F$="Y*X*(X*X-Y*Y)/(X*X+Y*Y)+2"
1080 GOSUB 1340
1090 X1=-4
1100 X2=6
1110 Y1=-3
1120 Y2=5.7
1130 ZS=32
1140 RZ=2
1150 PN=9
1160 ZN=-0.0985:ZM=3.0999
1170 PC=7:REM white?
1180 BC=0:REM black
1190 F$="3*EXP(-(SQR(X*X+Y*Y)))+0.1*COS(X*Y)"
1200 GOSUB 1340
1210 X1=-2
1220 X2=3
1230 Y1=-3
1240 Y2=5.7
1250 ZS=80
1260 RZ=1
1270 PN=10
1280 ZN=-0.5217:ZM=0.9216
1290 PC=6:REM blue
1300 BC=0:REM black
1310 F$="SIN(X*Y)*EXP(-(X*X+Y*Y)/9)+0.2"
1320 GOSUB 1340
1330 GOTO 130
1340 NY=RZ*87
1350 NX=RZ*50
1360 MODE 1
1370 VDU23,1,0,0;0;0;0;
1380 VDU 19,3,PC,0,0,0
1390 VDU 19,2,BC,0,0,0
1400 DX=(X2-X1)/NX
1410 DY=(Y2-Y1)/NY
1420 H0=0
1430 K1=58
1440 K2=Y2-Y1
1450 K3=90
1460 K4=174
1470 K5=191
1480 K6=X2-X1
1490 FOR X=X1 TO X2 STEP DX
1500 H0=100*(X-X1)/K6
1510 NH=-1
1520 FOR Y=Y1 TO Y2 STEP DY
1530 ZZ=EVAL(F$)
1540 V=-ZZ*ZS-(Y-Y1)/K2*K1+K3+H0
1550 NH=NH+1
1560 H=H0+NH*K4/NY
1570 IF V<0 OR V>K5 THEN GOTO 1630
1580 GCOL 0,3:REM HCOLOR=PC
1590 PLOT 69,4*H,1024-4*V
1600 PLOT 0,0,-4
1610 GCOL 0,2:REM HCOLOR=BC
1620 PLOT 5,4*H,0
1630 NEXT Y
1640 NEXT X
1650 G=GET
1660 RETURN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment