uses crt,graph,dos;
var j,i,n:longint;
    ad,gm,gd:integer;
    page:boolean;
    k:char;
   function hour:string;
var sh,sm,ss:string;
    h,m,sa,ms:word;
begin
gettime(h,m,sa,ms);
str(h:0,sh);str(m:0,sm);str(sa:0,ss);
if length(sh)=1 then sh:='0'+sh;
if length(sm)=1 then sm:='0'+sm;
if length(ss)=1 then ss:='0'+ss;
hour:=sh+':'+sm+':'+ss;
end;
procedure ChangePage;
begin
  if Page then begin
    SetActivePage(0);
    SetVisualPage(1,true);
    Page:=false;
  end else begin
    SetActivePage(1);
    SetVisualPage(0,true);
    Page:=true;
  end;
  ClearPage;
   OutTextXY(getmaxx div 2-textwidth(hour)div 2, 1, hour);
end;

function f(x:real):real;
begin
f:=((x+n/(random(4)+1)*(random(3)))*(x-(random(3)+1)*n)*(abs(n)-x)-n*n)/10000;
end;

begin
SetSVGAMode(640, 480, 8, LfbOrBanked);
  OutTextXY(270, 230, 'Please wait...');
  SetRGBPalette(255, 163, 63, 63);
drawborder:=false;
{gd:=detect;
initgraph(gd,gm,'d:\bp\bin');}
randomize;
n:=400;ad:=1;
repeat
ad:=-ad;
repeat
n:=n+ad;
if n=0 then delay(10000);
ChangePage;
if keypressed then k:=readkey;
if k=#27 then halt(0);
for i:=(-getmaxy div 2) to (getmaxy div 2) do begin
for j:=1 to 3 do begin
putpixel(round(f(i))+getmaxx div 2,(getmaxy) div 2+i,random(7)+6);
putpixel(getmaxx div 2-round(f(i)),(getmaxy) div 2+i,random(7)+6);
putpixel((getmaxx) div 2+i,round(f(i))+getmaxy div 2,random(5)+9);
putpixel((getmaxx) div 2-i,round(f(i))+getmaxy div 2,random(5)+9);
end;end;
{line(getmaxx div 2,1,getmaxx div 2,getmaxy);
line(1,getmaxy div 2,getmaxx,getmaxy div 2);}
until abs(n)>400;
until k=#27;
end.