/* Barnsley Fern for Nascom Basic tfurrows@sdf.org, tfurrows@grex.org Adapted from the ZX Spectrum code to generate the same. The original program (below) was designed for graphics. The adaptation was designed to run on Grant Searle's NASCOM ROM Basic 4.7, for text mode (VT100). VT/ANSI escape sequences are used to move the pointer around, and "." is used to plot the fern. Here is the original ZX code: 10 REM Fractal Fern 20 PAPER 7: BORDER 7: BRIGHT 1: INK 4: CLS 30 LET maxpoints=20000: LET x=0: LET y=0 40 FOR n=1 TO maxpoints 50 LET p=RND*100 60 IF p<=1 THEN LET nx=0: LET ny=0.16*y: GO TO 100 70 IF p<=8 THEN LET nx=0.2*x-0.26*y: LET ny=0.23*x+0.22*y+1.6: GO TO 100 80 IF p<=15 THEN LET nx=-0.15*x+0.28*y: LET ny=0.26*x+0.24*y+0.44: GO TO 100 90 LET nx=0.85*x+0.04*y: LET ny=-0.04*x+0.85*y+1.6 100 LET x=nx: LET y=ny 110 PLOT x*17+127,y*17 120 NEXT n Following is the Nascom Basic code, without line numbers for easier modification, and with line numbers for easier copy/paste/run. */ /* no line numbers */ WIDTH 79 PRINT CHR$(27);"[2J" MP=800:x=0:y=0 FOR N=1 TO MP P=RND(1)*80 IF P<=1 THEN NX=0:NY=0.16*Y:GOTO [x=nx] IF P<=8 THEN NX=0.2*X-0.26*Y:NY=0.23*X+0.22*Y+1.6:GOTO [x=nx] IF P<=15 THEN NX-0.15*X+0.28*Y:NY=0.26*X+0.24*Y+0.44:GOTO [x=nx] NX=0.85*X+0.04*Y:NY=-0.04*X+0.85*Y+1.6 X=NX:Y=NY C=INT(X*8)+34 L=INT(Y*3.8) SL$=MID$(STR$(L),2) SC$=MID$(STR$(C),2) M$=CHR$(27)+"["+SL$+";"+SC$+"H" PRINT M$;"." NEXT N /* with line numbers */ 10 WIDTH 79 20 PRINT CHR$(27);"[2J" 30 MP=800:x=0:y=0 40 FOR N=1 TO MP 50 P=RND(1)*80 60 IF P<=1 THEN NX=0:NY=0.16*Y:GOTO 100 70 IF P<=8 THEN NX=0.2*X-0.26*Y:NY=0.23*X+0.22*Y+1.6:GOTO 100 80 IF P<=15 THEN NX=0.15*X+0.28*Y:NY=0.26*X+0.24*Y+0.44:GOTO 100 90 NX=0.85*X+0.04*Y:NY=-0.04*X+0.85*Y+1.6 100 X=NX:Y=NY 110 C=INT(X*8)+34 120 L=INT(Y*3.8) 130 SL$=MID$(STR$(L),2) 140 SC$=MID$(STR$(C),2) 150 M$=CHR$(27)+"["+SL$+";"+SC$+"H" 160 PRINT M$;"." 170 NEXT N