1 C APFELMAENNCHEN-PROGRAMM, 02.APRIL.2006 PHILIPP HACHTMANN
4 C THIS VERSION SHOULD RUN A BIT FASTER BECAUSE THE SQUARE
8 C SENSE-SWITCH 1: IF SET, ASK FOR PARAMETERS
9 C SENSE-SWITCH 2: IF SET, DON'T PRINT PARAMETERS ON START
10 C SENSE-SWITCH 3: IF SET, RESTORE PARAMETERS TO DEFAULT VALUES
12 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
13 C COMMON BLOCK DECLARATIONS
15 INTEGER MAXI,WIDTH,CR,LF,POSI,NEGA
16 COMMON /PARAM2/MAXI,WIDTH,CR,LF,POSI,NEGA
18 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
19 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
28 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
31 10 FORMAT (48H MANDELBROT-DEMO 3RC1) XX.XX.2009, PH. HACHTMANN)
34 CALL CLRPLT(4096,PBUFF)
36 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
38 CCCCCC RESET DO DEFAULT VALUES?
39 C 110 CALL SSWTCH(3,I)
40 C IF (I.EQ.1) CALL RST
43 CCCCCC ON THE FIRST START OR IF DESIRED
44 C IF(INIT.EQ.0) CALL STVAL
46 CCCCCC DO WE HAVE TO ASK FOR PARAMETERS?
48 C IF (I.EQ.1) CALL GETCFG
50 CCCCCC OUTPUT SETTINGS?
52 C IF(I.EQ.2) CALL OUTCFG
63 CCCCCC BREAK WITH 7 in A REG, THEN START OVER
70 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
71 CCCCCC THE MANDELBROT SET CALCULATION
74 INTEGER MAXI,WIDTH,CR,LF
75 COMMON /PARAM2/MAXI,WIDTH,CR,LF
76 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
77 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
83 SCALE(LOWX,LOWY,HIGHX,HIGHY)
85 CCCCCC ENTER THE CALCULATION
86 299 CMPVAL=MAXVAL*MAXVAL
90 CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT
95 CCCCCC HIER DER ITERIERTE TEIL
101 IF ((ZR*ZR+ZI*ZI).GE.CMPVAL) GO TO 410
103 IF (COUNT.GE.MAXI) GO TO 410
108 C IF (COUNT.GE.8) NOUT=46
109 C IF (COUNT.GE.23) NOUT=43
110 C IF (COUNT.EQ.MAXI) NOUT=64
111 IF (COUNT.GE.8) NOUT=46
112 IF (COUNT.GE.23) NOUT=43
113 IF (COUNT.EQ.MAXI) NOUT=64
116 IF (COUNT.EQ.MAXI) CALL PLOT(1,PX,PY)
121 CCCCCC NEUEN PUNKT MACHEN
123 CCCCCC ZEILE NOCH NICHT VOLL?
124 IF (X.LE.HIGHX) GO TO 300
125 CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN
129 CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN
131 IF (Y.GE.LOWY) GO TO 300
133 CCCCCC HIER IST DAS BILD FERTIG.
136 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
137 CCCCCC STARTWERTE AUSFUELLEN
140 INTEGER MAXI,WIDTH,CR,LF
141 COMMON /PARAM2/MAXI,WIDTH,CR,LF
142 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
143 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
158 CCCCCC SCHRITTWEITEN AUSRECHNEN
159 XSTEP = (HIGHX-LOWX)/FLOAT(WIDTH)
163 1500 FORMAT (20HDEFAULT VALUES USED.)
168 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
169 CCCCCC EINSTELLUNGEN EINLESEN
172 INTEGER MAXI,WIDTH,CR,LF
173 COMMON /PARAM2/MAXI,WIDTH,CR,LF
174 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
175 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
177 REAL XIN1,XIN2,YIN1,YIN2
190 11 FORMAT(14H X FROM : )
192 13 FORMAT(14H Y FROM : )
194 15 FORMAT(14H MAXIT (I3): )
198 CCCCCC EVENTUELL STARTWERTE TAUSCHEN:
199 CCCCCC WENN XIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN
200 150 I F(XIN2.GT.XIN1) GO TO 200
205 CCCCCC WENN YIN2 GROESSER IST OK, ANSONSTEN TAUSCHEN
206 200 IF(YIN2.GT.YIN1) GO TO 201
211 CCCCCC WERTE UEBERNEHMEN
217 CCCCCC SCHRITTWEITEN AUSRECHNEN
218 XSTEP = (HIGHX-LOWX)/FLOAT(WIDTH)
225 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
226 CCCCCC EINSTELLUNGEN AUSGEBEN
229 INTEGER MAXI,WIDTH,CR,LF
230 COMMON /PARAM2/MAXI,WIDTH,CR,LF
231 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
232 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
235 20 FORMAT (9HSETTINGS:)
236 WRITE (4,30) LOWX, HIGHX
237 30 FORMAT (12HX-WERTE VON ,1F8.5,5H BIS ,1F8.5)
238 WRITE (4,40) LOWY, HIGHY
239 40 FORMAT (12HY-WERTE VON ,F8.5,5H BIS ,F8.5)
240 WRITE (4,50) MAXI, MAXVAL, XSTEP, YSTEP, WIDTH
241 50 FORMAT ( 4HMAX:,I3,
250 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
254 INTEGER MAXI,WIDTH,CR,LF
255 COMMON /PARAM2/MAXI,WIDTH,CR,LF
258 245 FORMAT(25HPARAMETER RESET REQUESTED)
264 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
265 C PRELOAD VALUE OF INIT
271 CCCCCCCCCCCCCCCCCCCCCCCC
273 SUBROUTINE SSWTCH(INUM,ITARG)