home *** CD-ROM | disk | FTP | other *** search
- program chaos;
-
- type
- tsrec = record
- xs:integer;
- ys: integer;
- xe:integer;
- ye:integer;
- car:array[1..8] of char;
- linv:byte;
- lover:byte
- end;
-
-
- nstr=record
- xw:integer;
- yw:integer;
- xq:integer;
- yq:integer;
- wt:integer;
- sinv:byte;
- sover:byte
- end;
-
- feld=array [1..4096] of byte;
-
- ttextrec = record
- inv:integer;
- offs:integer;
- zeile:integer;
- spalte:integer;
- addr:integer
- end;
-
- xrec = record
- kx:integer;
- ky:integer
- end;
-
- xyz = array [1..8] of char;
-
- var ndd:nstr;
- speicher:feld;
- lrec:xrec;
- textrec:ttextrec;
- s,e:integer;
- srec,erec:tsrec;
- x,y:integer;
- mytext:array [1..11] of char;
- wxn,wyn,wxo,wyo,alfa : real;
- wxp,wyp,wzaehler : integer;
- ch : char;
- wf : array [1..15] of real;
- zx : byte;
- modell,gen : integer;
- win : real;
- dummy : integer;
-
-
- external function @bdos(func:integer;parm:word):integer;
-
- procedure GrFOn;
- begin
- dummy:= @bdos(153, wrd(0))
- end;
-
- procedure GrSOn;
- begin
- dummy:= @bdos(154, wrd(0))
- end;
-
- procedure GrFOff;
- begin
- dummy:= @bdos(155, wrd(0))
- end;
-
-
- procedure SetPix(xp,yp:integer);
- begin
- lrec.kx:=xp;lrec.ky:=yp;
- dummy:= @bdos(156, wrd(addr(lrec)))
- end;
-
- procedure EraPix (xp,yp:integer);
- begin
- lrec.kx:=xp;lrec.ky:=yp;
- dummy:= @bdos(157, wrd(addr(lrec)))
- end;
-
-
- procedure ClrGr;
- begin
- dummy:= @bdos(158, wrd(0))
- end;
-
- procedure SaveWi(x1,y1,x2,y2:integer);
- begin
- ndd.xw:=x1;
- ndd.yw:=y1;
- ndd.xq:=x2;
- ndd.yq:=y2;
- ndd.wt:=addr(speicher);
- dummy:= @bdos(159, wrd(addr(ndd)))
- end;
-
-
- procedure LoadWi(x1,y1,x2,y2:integer;inv:byte;over:byte);
- begin
- ndd.xw:=x1;
- ndd.yw:=y1;
- ndd.xq:=x2;
- ndd.yq:=y2;
- ndd.wt:=addr(speicher);
- ndd.sinv:=inv;
- ndd.sover:=over;
- dummy:= @bdos(160, wrd(addr(ndd)))
- end;
-
- procedure SaveFW (x1,y1,x2,y2:integer;xk:xyz);
- begin
- srec.xs:=x1;
- srec.ys:=y1;
- srec.xe:=x2;
- srec.ye:=y2;
- srec.car[1]:=xk[1];srec.car[2]:=xk[2];
- srec.car[3]:=xk[3];srec.car[4]:=xk[4];
- srec.car[5]:=xk[5];srec.car[6]:=xk[6];
- srec.car[7]:=xk[7];srec.car[8]:=xk[8];
- dummy:= @bdos(161, wrd(addr(srec)))
- end;
-
- procedure LoadFW (x1,y1,x2,y2:integer;xk:xyz;inv:byte;over:byte);
- begin
- srec.xs:=x1;
- srec.ys:=y1;
- srec.xe:=x2;
- srec.ye:=y2;
- srec.car[1]:=xk[1];srec.car[2]:=xk[2];
- srec.car[3]:=xk[3];srec.car[4]:=xk[4];
- srec.car[5]:=xk[5];srec.car[6]:=xk[6];
- srec.car[7]:=xk[7];srec.car[8]:=xk[8];
- srec.linv:=inv;srec.lover:=over;
- dummy:= @bdos(162, wrd(addr(srec)))
- end;
-
- procedure GFtext (i,o,z,s,a :integer);
- begin
- textrec.inv:=i;
- textrec.offs:=o;
- textrec.spalte:=s;
- textrec.zeile:=z;
- textrec.addr:=a;
- dummy:= @bdos(163, wrd(addr(textrec)))
- end;
-
- procedure scrdump (i:integer);
- begin
- dummy:= @bdos(164, wrd(i))
- end;
-
- procedure ClrScr;
- begin
- write(chr(27),'*')
- end;
-
- begin
- ClrScr;
- modell := 1;
- while (modell <> 0) do
- begin
- writeln;
- writeln;
- writeln;
- writeln;
- write(' 1 Henon Model');
- writeln;
- writeln;
- write(' 2 Planet Model');
- writeln;
- writeln;
- write(' choose one (1 oder 2 ,0 .. end) : ');
- read(modell);
- if (modell <> 0) then
- if (modell = 1) then
- begin
- ClrScr;
- writeln;
- writeln;
- writeln;
- write(' angel (44 - 295) : ');
- repeat
- read(win);
- until((win >=44) and (win <= 295.0));
- writeln;
- writeln;
- writeln;
- write(' accuracy (50 - 32000 high values take a long time to finish ) : ');
- read(gen);
- GrSOn;
- ClrGr;
-
-
- mytext[1]:=CHR(12);
- mytext[2]:='H';
- mytext[3]:='e';
- mytext[4]:='n';
- mytext[5]:='o';
- mytext[6]:='n';
- mytext[7]:=' ';
- mytext[8]:='I';
- mytext[9]:='s';
- mytext[10]:='l';
- mytext[11]:='a';
- mytext[12]:='n';
- mytext[13]:='d';
- GFtext(1,0,2,15,addr(mytext));
- wf[1]:=0.05;wf[2]:=0.1;wf[3]:=0.12;wf[4]:=0.3;wf[5]:=0.4;wf[6]:=0.47;
- wf[7]:=0.55;wf[8]:=0.57;wf[9]:=0.59; wf [10]:=0.605;
- wf[11]:=0.62; wf[12]:=0.7;
- for zx:= 11 downto 1 do
- begin
- alfa:= (* 50.0; 0.7 *) (* 90.57; 0.7 *) (*66.00 0.7; 0.78; 0.82 *)
- (* 92.0 0.62;*) (* 178.0; 0.7 *)
- (* 192.0; 0.7 *) (* 210.0; *) win;
- wxo:=wf[zx];wyo:=0.0;
- wzaehler:=0;
- alfa:=(3.141592653*2/360*alfa);
- repeat
- wxn:=wxo*cos(alfa)-(wyo-wxo*wxo)*sin(alfa);
- wyn:=wxo*sin(alfa)+(wyo-wxo*wxo)*cos(alfa);
- wzaehler:=wzaehler+1;
- wxo:=wxn;wyo:=wyn;
- wxp:=round(wxn * 310 + 320);wyp:=round(wyn * 90 + 100);
- if wxp<=0 then wxp:=0;
- if wxp>=639 then wxp:=639;
- if wyp<=0 then wyp:=0;
- if wyp>=199 then wyp:=199;
- SetPix(wxp,wyp);
- until (wzaehler > gen);
- end;
- GrFOff;
- end
- else
- begin
-
- wxo:=0.0;wyo:=0.0;
- clrscr;
- writeln;
- writeln;
- writeln;
- write(' accuracy (50 - 32000 high values take a long time to finish ) : ');
- read(gen);
- wzaehler:=0;
- GrSOn;
- ClrGr;
-
- mytext[1]:=CHR(18);
- mytext[2]:='s';
- mytext[3]:='t';
- mytext[4]:='r';
- mytext[5]:='a';
- mytext[6]:='n';
- mytext[7]:='g';
- mytext[8]:='e';
- mytext[9]:=' ';
- mytext[10]:='a';
- mytext[11]:='t';
- mytext[12]:='t';
- mytext[13]:='r';
- mytext[14]:='a';
- mytext[15]:='c';
- mytext[16]:='t';
- mytext[17]:='o';
- mytext[18]:='r';
- GFtext(1,0,14,15,addr(mytext));
- repeat
- wxn:=wyo+1-(1.4*wxo*wxo);
- wyn:=0.3*wxo;
- wzaehler:=wzaehler+1;
- wxo:=wxn;wyo:=wyn;
- wxp:=round(213.0*wxn+320.0);wyp:=round(211.0*wyn+100.0);
- if wxp<1 then wxp:=1;
- if wxp>635 then wxp:=635;
- if wyp<1 then wyp:=1;
- if wyp>195 then wyp:=195;
- SetPix(wxp,wyp);
- until (wzaehler>gen);
- GrFOff;
- end
- end
- end.
-
-