A large commit.
[pdp8.git] / sw / src / mandel_screen / CALC2.FT
diff --git a/sw/src/mandel_screen/CALC2.FT b/sw/src/mandel_screen/CALC2.FT
new file mode 100644 (file)
index 0000000..527b5a3
--- /dev/null
@@ -0,0 +1,70 @@
+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