10 REM >Mandel 20 REM by Steven Flintham 30 REM 40 REM Version 1.00 50 REM 60 REM A simple Mandelbrot program 70 : 80 MODE 7 90 VDU 23;8202;0;0;0; 100 PROCdisable 110 PROCinit 120 PROCget_details 130 MODE mode% 140 VDU 23;8202;0;0;0; 150 PROCplot_set 160 REPEAT UNTIL INKEY-99 170 PROCenable 180 END 190 : 200 DEF PROCdisable 210 REM NEXT REM TEMP 220 REM *FX229,1 230 *FX4,2 240 ENDPROC 250 : 260 DEF PROCenable 270 *FX229 280 *FX4 290 ENDPROC 300 : 310 DEF PROCinit 320 ON ERROR MODE 7:REPORT:PRINT " at line ";ERL:PROCenable:END 330 DIM oscli% 256 340 ENDPROC 350 : 360 DEF PROCtitle 370 VDU 26,12 380 PRINTTAB(5,0);CHR$141;CHR$132;CHR$157;CHR$131;"Mandelbrot set plotter ";CHR$156 390 PRINTTAB(5,1);CHR$141;CHR$132;CHR$157;CHR$131;"Mandelbrot set plotter ";CHR$156 400 PRINTTAB(0,3); 410 ENDPROC 420 : 430 DEF PROCget_details 440 LOCAL 450 REPEAT 460 PROCtitle 470 PRINT "Please enter the following, pressing"'"RETURN after each number." 480 PRINT'"Lower limit of real component:"'CHR$131;:min_real=VAL(FNinput(1,15)) 490 PRINT'"Upper limit of real component:"'CHR$131;:max_real=VAL(FNinput(1,15)) 500 PRINT''"Lower limit of complex component:"'CHR$131;:min_complex=VAL(FNinput(1,15)) 510 PRINT'"Upper limit of complex component:"'CHR$131;:max_complex=VAL(FNinput(1,15)) 520 IF min_real>=max_real OR min_complex>=max_complex THEN PRINT''"The lower limits must be less that the"'"upper limits.":PROCspace 530 UNTIL min_real=32 AND key%<=127) 880 IF key%=127 AND LEN(text$)>0 THEN VDU 127:text$=LEFT$(text$,LEN(text$)-1) 890 IF key%<>127 AND key%<>13 AND LEN(text$)=min%) 910 =text$ 920 : 930 DEF PROCplot_set 940 LOCAL pixel_width%,pixel_height%,X%,Y%,real,complex,iterations% 950 pixel_width%=1280/x_res% 960 pixel_height%=1024/y_res% 970 FOR Y%=0 TO y_res%-1 980 FOR X%=0 TO x_res%-1 990 real=min_real+((max_real-min_real)/x_res%)*X% 1000 complex=min_complex+((max_complex-min_complex)/y_res%)*Y% 1010 iterations%=FNmandelbrot(real,complex) 1020 GCOL 0,FNcolour(iterations%) 1030 PLOT 69,X%*pixel_width%,Y%*pixel_height% 1040 NEXT 1050 NEXT 1060 IF filename$<>"" THEN PROCoscli("Save "+filename$+" FFFF"+STR$~screen_start%+" FFFF8000") 1070 ENDPROC 1080 : 1090 DEF FNmandelbrot(k_real,k_complex) 1100 LOCAL iterations%,z_real,z_complex,old_z_real,magnitude 1110 iterations%=0 1120 z_real=0:z_complex=0 1130 REPEAT 1140 iterations%=iterations%+1 1150 REM square z... 1160 old_z_real=z_real 1170 z_real=z_real^2-z_complex^2 1180 z_complex=2*old_z_real*z_complex 1190 REM add k... 1200 z_real=z_real+k_real 1210 z_complex=z_complex+k_complex 1220 REM find magnitude of z... 1230 magnitude=SQR(z_real^2+z_complex^2) 1240 UNTIL iterations%=max_iterations% OR magnitude>2 1250 =iterations% 1260 : 1270 DEF FNcolour(iterations%) 1280 IF max_col%=1 THEN =(iterations% MOD 2) 1290 IF iterations%=max_iterations% THEN =0 1300 =(iterations%/max_iterations%*max_col%)+1 1310 : 1320 DEF PROCoscli($oscli%) 1330 LOCAL X%,Y% 1340 X%=oscli% MOD 256 1350 Y%=oscli% DIV 256 1360 CALL &FFF7 1370 ENDPROC