(*********************************************************************) (* *) (* Mandelbrot-Zahlenmenge *) (* *) (*********************************************************************) { ---> ACHTUNG: vor Erzeugung eines COM-Files Endadresse im Turbo- Optionen-Menu kleiner als $F000 einstellen !!! } Program Mandelbrot; {berechnet die Mandelbrot-Zahlenmenge} {$IGRAPHIC.LIB} {Grafik-Treiber einbinden} Const xres = 360; yres = 255; bell = #7; statusoff= #27'0'; {Statuszeile aus} statuson = #27'1'; caus = #27'f'; {Cursor aus} can = #27'e'; Var z,zeile, spalte : Integer; x1,y0 : Integer; max : Integer; (*********************************************************************) Procedure Start; Begin ClrScr; Writeln('*********************************************************'); Writeln('* Program MANDEL.COM v. 22.08.1987 *'); Writeln('* zum berechnen der Mandelbrot-Zahlenmenge *'); Writeln('*********************************************************'); Writeln; Write('Unter welchem Namen soll Bild gespeichert werden <*.PIC>: '); Readln(name); For z:=1 To Length(name) Do name[z] := UpCase(name[z]); name := name + '.PIC'; Writeln; Writeln('Zum Start bitte Taste druecken'); Repeat Until KeyPressed; End; (*********************************************************************) Function Iteration : Byte; Var xn,yn,a,b,c,d,j : Integer; Begin j:=max; xn := spalte; yn := zeile; Repeat a := xn-yn; b := xn+yn; d := xn*yn; c := a*b; If c>=0 Then xn := c Shr 6 - spalte Else xn := -(Abs(c) Shr 6) - spalte; If d>=0 Then yn := d Shr 5 - zeile Else yn := -(Abs(d) Shr 5) - zeile; j := Pred(j); Until (j=0) OR (Abs(xn) + Abs(yn) > 255); Iteration := J; End; (*********************************************************************) BEGIN {Hauptprogramm} Start; GraphInit; ClrScr; Write(caus,statusoff); max := 36; spalte := -100; Repeat For zeile := 0 To 127 Do Begin x1 := (spalte + 100) Shl 1; z := Iteration; If Odd(z) Then Begin Plot(x1, 127-zeile); Plot(x1, 128+zeile); End; End; spalte := Succ(spalte); Until spalte = 220; Write(bell,bell,bell); SavePic(name); Delay(1000); ClrScr; LoadPic(name); Repeat Until KeyPressed; Write(can,statuson); End.