{ To try out the program, some complex constants you can use are -1, -0.1+0.8i, 0.3-0.5i, -1.139+0.238i. ie, when asked for the real part, enter 0.3. For the imaginary, enter -.5 } program julia; {$N+,E+} uses crt; Type Real = double; var cx, cy, xo, yo, x1, y1 : real; mx, my, a, b, i, orb : word; label XXX; procedure pset ( rx, ry: real; c:byte ); var a, x, y :word; begin x := round(rx); y := round(ry); a := 320* pred(y) + x; mem[$A000:A] := c end; begin write('Real part: '); readln(CX); write('Imaginary part: '); readln(CY); asm mov ax, $13 int 10h end; MX := 319; { ' the box we want to plot on the screen } MY := 199; FOR A := 1 TO MX do {'X screen coordinate} FOR B := 1 TO MY do {'Y screen coordinate } begin XO := -2 + A / (MX / 4); {'X complex plane coordinate} YO := 2 - B / (MY / 4); {'Y complex plane coordinate} Orb := 0; FOR I := 1 TO 255 do {'iterations for 255 colors} begin X1 := XO * XO - YO * YO + CX; Y1 := 2 * XO * YO + CY; IF X1 * X1 + Y1 * Y1 > 4.0 THEN {'orbit escapes, plot it} begin Orb := I; GOTO XXX; END; XO := X1; YO := Y1; end; XXX: PSET (A, B, Orb); { 'plot orbit} end; readln; textmode(lastmode); end.