;
PROC DRAW_FRACTAL()
BYTE ATTRACT=77
ATTRACT=0
IF Y>=0 THEN J=JC+ (Y RSH SCREEN_SIZE)
ELSE J=JC- (-Y RSH SCREEN_SIZE)
ENDIF
IF X>=0 THEN XX=Y+((X RSH R1)+CX)
IF J>0 AND J<191 THEN I=IC+(X RSH SCREEN_SIZE)
IF I>0 AND I<319 THEN PLOT(I,J)
ENDIF
ENDIF
ELSE XX=Y+((-X RSH R2)-CX)
IF J>0 AND J<191 THEN I=IC-(-X RSH SCREEN_SIZE)
IF I>0 AND I<319 THEN PLOT(I,J)
ENDIF
ENDIF
ENDIF
Y=(CY-X) Z==+1 X=XX
IF Z=0 THEN Y==-7
ENDIF
IF DEMOMODE=ON THEN COUNT==+1
IF COUNT>15000 THEN KEY=DEMO
ENDIF
ENDIF
RETURN
;
PROC CHANGE_PARAMETERS()
IF KEY=MENUKEY THEN MENU() INITIALIZE_PLOT()
ENDIF
IF KEY=SPACEBAR THEN
IF DISPLAY=OFF THEN DISPLAY=ON
ELSE DISPLAY=OFF
ENDIF
KEY=CLEAR RETURN
ENDIF
IF KEY=SAVE THEN SAVE_FRACTAL() RETURN
ENDIF
IF KEY=LOAD THEN LOAD_FRACTAL() NEW_PARAMETERS() RETURN
ENDIF
IF KEY=DEMO THEN DEMOMODE=ON NEW_PARAMETERS()
ELSE DEMOMODE=OFF
ENDIF
IF KEY=CREATE THEN NEW_PARAMETERS()
ENDIF
IF KEY=LARGER AND SCREEN_SIZE>1 THEN SCREEN_SIZE==-1
IC=2*IC-162 JC=2*JC-96
ENDIF
IF KEY=SMALLER AND SCREEN_SIZE<8 THEN SCREEN_SIZE==+1
IC=(162+IC)/2 JC=(96+JC)/2
ENDIF
IF KEY=LEFT THEN IC==-10
ENDIF
IF KEY=RIGHT THEN IC==+10
ENDIF
IF KEY=UP THEN JC==-10
ENDIF
IF KEY=DOWN THEN JC==+10
ENDIF
ZERO(SCREEN,7680)
X=0 Y=0 Z=0 COUNT=0
KEY=CLEAR
RETURN
;
PROC HOPDEMO()
SETUP()
MENU()
NEW_PARAMETERS()
BEGIN
WHILE KEY=CLEAR BEGIN
DRAW_FRACTAL()
ENDWHILE
CHANGE_PARAMETERS()
END
RETURN
;