program apfelmaennchen;
{alles sichtbar mit x1:=-2.9, x2:=4.1, y1:=-3.1, y2:=3.1}
{mehr Zyklen -> mehr Details, aber l„ngere Aufbauzeit, z=1000: ewig und unnutz}
uses crt, graph, dos;

{$i d:\tp\tppas1\bgi\svga256.inc}

{$F+}
function DetectVGA256 : Integer;
  begin
    DetectVGA256 := 2;
  end;
{$F-}


var gd, gm, g, n, z, i, j : integer;
    a, b, m, x1, x2, x, xd, y1, y2, y, yd, h : real;

procedure Start {Graphik und Maus starten};

  var gdinit, gd, gm : integer;

  begin
    (*gdinit:= Installuserdriver('SVGA256', @DetectVGA256);       {Graphik}
    gd:=detect;
    initgraph(gd, gm, 'd:\tp\tppas1\bgi');*)
    gd:= 9; gm := 2;
    initgraph(gd, gm, 'd:\tp\bgi');
  end;

begin
  a:=0; b:=a; m:=a; y:=a; n:=0; g:=100; h:=a;
  write('Zyklen: '); readln(z);
  write('x1: '); readln(x1);
  write('x2: '); readln(x2);
  write('y1: '); readln(y1);
  write('y2: '); readln(y2);
  xd:=(x2-x1)/640; x:=x1-xd;
  yd:=(y2-y1)/479;
  start;
  {gd:=9; gm:=2;
  initgraph(gd, gm, 'd:\tp\bgi');}
  cleardevice;
  for i:=0 to 639 do
    begin
      y:=y1-yd; x:=x+xd;
      for j:=0 to 479 do
        begin
          y:=y+yd;
          a:=0.5; b:=0; h:=0.5;
          for n:=1 to z do
            begin
              m:=a*a-b*b-x;
              b:=a*b;
              b:=b+b-y;
              a:=m;
              if ((abs(a) + abs(b)) > g) then
                begin
                  h:=n/2; n:=z;
                end;
            end;
          {putpixel(i, j, 15);}
          {if h > int(h) then putpixel(i, j, round(h) mod 128);}
          if h > int(h) then putpixel(i, j, round(h) mod 16);
        end;
    end;
  readln;
  closegraph;
end.