--- /dev/null
+CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
+CCCCCC THE MANDELBROT SET CALCULATION
+ SUBROUTINE CALC2
+C
+ INTEGER MAXI,WIDTH,CR,LF
+ COMMON /PARAM2/MAXI,WIDTH,CR,LF
+ REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
+ COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
+ REAL CMPVAL
+ REAL ZR,ZI,ZRN
+ REAL X,Y
+ REAL PX,PY
+ DIMENSION PX(1),PY(1)
+ INTEGER COUNT
+C
+ CALL SCALE(LOWX,LOWY,HIGHX,HIGHY)
+C
+CCCCCC ENTER THE CALCULATION
+ 299 CMPVAL=MAXVAL*MAXVAL
+ X=LOWX
+ Y=HIGHY
+C
+CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT
+ 300 COUNT=0
+ ZR=0.0
+ ZI=0.0
+C
+CCCCCC HIER DER ITERIERTE TEIL
+C
+ 400 ZRN=ZR*ZR-ZI*ZI+X
+ ZI=2.0*ZR*ZI+Y
+ ZR=ZRN
+C
+ IF ((ZR*ZR+ZI*ZI).GE.CMPVAL) GO TO 410
+ COUNT=COUNT+1
+ IF (COUNT.GE.MAXI) GO TO 410
+ GO TO 400
+C
+CCCCCC PUNKT FERTIG
+ 410 NOUT=32
+C IF (COUNT.GE.8) NOUT=46
+C IF (COUNT.GE.23) NOUT=43
+C IF (COUNT.EQ.MAXI) NOUT=64
+ IF (COUNT.GE.8) NOUT=46
+ IF (COUNT.GE.23) NOUT=43
+ IF (COUNT.EQ.MAXI) NOUT=64
+ PX(1)=X
+ PY(1)=Y
+ CALL RSW(8,I)
+ IF (COUNT.EQ.MAXI) CALL PLOT(1,PX,PY)
+ IF(I.EQ.1) GO TO 500
+C
+CC 411 CALL PCHAR(NOUT)
+C
+CCCCCC NEUEN PUNKT MACHEN
+ 500 X = X + XSTEP
+CCCCCC ZEILE NOCH NICHT VOLL?
+ IF (X.LE.HIGHX) GO TO 300
+CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN
+ X = LOWX
+CC CALL PCHAR(13)
+ IF(I.EQ.1) GO TO 501
+CC CALL PCHAR(10)
+CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN
+501 Y=Y-YSTEP
+ IF (Y.GE.LOWY) GO TO 300
+C
+CCCCCC HIER IST DAS BILD FERTIG.
+ RETURN
+ END