1000  REM MANDELBROT SET PLOTTER FOR TSB E   WTN 9/06
1010  REM A$=CHARS TO DISPLAY FOR NON-LIMIT POSITIONS
1020  DIM A$[72]
1030  A$=".-:*# "
1040  REM L1=ITERATION LIMIT, L9=MAX LIMIT WHEN ZOOMING
1050  REM X1/Y1=X/Y CENTER, R1=RANGE IN X-DIRECTION
1060  REM X2,Y2=DISPLAY SIZE X,Y
1070  REM Y3=Y SCALE (X SCALE IS 1)
1080  REM D2=DETAIL FACTOR TYP .3 TO .8
1090  L1=200
1100  L9=2000
1110  X1=-.5
1120  Y1=-.5
1130  R1=2.2
1140  X2=72
1150  Y2=22
1160  Y3=.7
1170  D2=.5
1180  PRINT "MANDELBROT SET PLOTTER"
1190  PRINT "WHEN ZOOMING ENTER REGION AS:"
1200  PRINT ".-----------."
1210  PRINT "| 1 | 2 | 3 |"
1220  PRINT "|---+---+---|"
1230  PRINT "| 4 | 5 | 6 |"
1240  PRINT "|---+---+---|"
1250  PRINT "| 7 | 8 | 9 |"
1260  PRINT "`-----------'"
1270  PRINT "0) RUN WITH DEFAULTS  1) ENTER PLOT VARIABLES ";
1280  INPUT K
1290  IF K=0 OR K=1 THEN 1310
1300  STOP
1310  IF K=0 THEN 1470
1320  PRINT X1;TAB(15)"X CENTER ";
1330  INPUT X1
1340  PRINT Y1;TAB(15)"Y CENTER ";
1350  INPUT Y1
1360  PRINT R1;TAB(15)"RANGE    ";
1370  INPUT R1
1380  IF R1 <= 0 THEN 1360
1390  PRINT L1;TAB(15)"LIMIT    ";
1400  INPUT L1
1410  IF L1<10 THEN 1390
1420  IF L1<L9 THEN 1440
1430  L9=L1
1440  PRINT D2;TAB(15)"DETAIL   ";
1450  INPUT D2
1460  IF D2 <= 0 OR D2>1 THEN 1440
1470  REM SET UP STUFF IN PREP FOR PLOTTING
1480  B9=LEN(A$)
1490  X5=R1/X2
1500  Y5=R1/Y2*Y3
1510  X6=X1-X5*X2/2
1520  Y6=Y1-Y5*Y2/2
1530  PRINT
1540  PRINT "X ="X1"Y ="Y1"RANGE ="R1"LIMIT ="L1
1550  FOR Y4=1 TO Y2
1560  FOR X4=1 TO X2
1570  X=X6+X4*X5
1580  Y=Y6+Y4*Y5
1590  X7=Y7=X8=Y8=C=0
1600  REM ITERATION LOOP
1610  X9=X8-Y8+X
1620  Y9=X7*Y7*2+Y
1630  X7=X9
1640  Y7=Y9
1650  X8=X7*X7
1660  Y8=Y7*Y7
1670  C=C+1
1680  IF (X8+Y8)<4 AND C<L1 THEN 1610
1690  IF C<L1 THEN 1720
1700  C2=B9
1710  GOTO 1740
1720  C1=INT(C^D2)
1730  C2=C1-(INT(C1/(B9-1))*(B9-1))+1
1740  PRINT A$[C2,C2];
1750  NEXT X4
1760  PRINT
1770  NEXT Y4
1780  PRINT "1-9) ZOOM   0) UNZOOM   10) CHANGE VARS  ";
1790  INPUT K
1800  IF K=10 THEN 1320
1810  IF K=0 THEN 1880
1820  R1=R1/3
1830  L1=INT(L1*1.5)
1840  IF L1<L9 THEN 1860
1850  L1=L9
1860  GOTO K OF 1900,1930,1950,1980,1490,2000,2020,2050,2070
1870  STOP
1880  R1=R1*3
1890  GOTO 1490
1900  X1=X1-R1
1910  Y1=Y1-R1*Y3
1920  GOTO 1490
1930  Y1=Y1-R1*Y3
1940  GOTO 1490
1950  X1=X1+R1
1960  Y1=Y1-R1*Y3
1970  GOTO 1490
1980  X1=X1-R1
1990  GOTO 1490
2000  X1=X1+R1
2010  GOTO 1490
2020  X1=X1-R1
2030  Y1=Y1+R1*Y3
2040  GOTO 1490
2050  Y1=Y1+R1*Y3
2060  GOTO 1490
2070  X1=X1+R1
2080  Y1=Y1+R1*Y3
2090  GOTO 1490
2100  END
