Add README.md
[pdp8.git] / sw / src / mandel_screen / CALC2.FT
CommitLineData
81e70d48
PH
1CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
2CCCCCC THE MANDELBROT SET CALCULATION
3 SUBROUTINE CALC2
4C
5 INTEGER MAXI,WIDTH,CR,LF
6 COMMON /PARAM2/MAXI,WIDTH,CR,LF
7 REAL LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
8 COMMON /PARAM1/LOWX,LOWY,HIGHX,HIGHY,MAXVAL,XSTEP,YSTEP
9 REAL CMPVAL
10 REAL ZR,ZI,ZRN
11 REAL X,Y
12 REAL PX,PY
13 DIMENSION PX(1),PY(1)
14 INTEGER COUNT
15C
16 CALL SCALE(LOWX,LOWY,HIGHX,HIGHY)
17C
18CCCCCC ENTER THE CALCULATION
19 299 CMPVAL=MAXVAL*MAXVAL
20 X=LOWX
21 Y=HIGHY
22C
23CCCCCC EINSTIEG IN DEN AKTUELLEN PUNKT
24 300 COUNT=0
25 ZR=0.0
26 ZI=0.0
27C
28CCCCCC HIER DER ITERIERTE TEIL
29C
30 400 ZRN=ZR*ZR-ZI*ZI+X
31 ZI=2.0*ZR*ZI+Y
32 ZR=ZRN
33C
34 IF ((ZR*ZR+ZI*ZI).GE.CMPVAL) GO TO 410
35 COUNT=COUNT+1
36 IF (COUNT.GE.MAXI) GO TO 410
37 GO TO 400
38C
39CCCCCC PUNKT FERTIG
40 410 NOUT=32
41C IF (COUNT.GE.8) NOUT=46
42C IF (COUNT.GE.23) NOUT=43
43C IF (COUNT.EQ.MAXI) NOUT=64
44 IF (COUNT.GE.8) NOUT=46
45 IF (COUNT.GE.23) NOUT=43
46 IF (COUNT.EQ.MAXI) NOUT=64
47 PX(1)=X
48 PY(1)=Y
49 CALL RSW(8,I)
50 IF (COUNT.EQ.MAXI) CALL PLOT(1,PX,PY)
51 IF(I.EQ.1) GO TO 500
52C
53CC 411 CALL PCHAR(NOUT)
54C
55CCCCCC NEUEN PUNKT MACHEN
56 500 X = X + XSTEP
57CCCCCC ZEILE NOCH NICHT VOLL?
58 IF (X.LE.HIGHX) GO TO 300
59CCCCCC X AN ANFANG SETZTEN, CR+LF DRUCKEN
60 X = LOWX
61CC CALL PCHAR(13)
62 IF(I.EQ.1) GO TO 501
63CC CALL PCHAR(10)
64CCCCCC Y WEITERRUECKEN - NEGATIV WEIL WIR VON OBEN KOMMEN
65501 Y=Y-YSTEP
66 IF (Y.GE.LOWY) GO TO 300
67C
68CCCCCC HIER IST DAS BILD FERTIG.
69 RETURN
70 END