eldby/my.c
float s=1944,x[5],y[5],z[5],r[5],j,h,a,b,d,e;
int i=33,c,l,f=1;
int g(){
return f=(f*6478+1)%65346; }
m(){
x[i]=g()-l;
y[i]=(g()-l)/4;
r[i]=g()>>4; }

main(){
char t[1948]="\x1b[HThor AAge Eldby [eldby@online.no]";
char *p=t+3;
char *k=".oegl4OS";
l=s*20;
while(i<s) p[i++]='\n';
for(i=0;i<5;i++) z[i]=(i?z[i-1]:0)+l/3+!m();
while(1){
for(c=33;c<s;c++) {
 c+=!((c+1)%81); /* we at the end os line, leave '\n' */
 j=c/s-.5; /* vertical offset from the center (koefficient) */
 h=c%81/40.0-1; /* horizotal offset from the center (koefficient) */
 p[c]=' '; /* clear space */ 
 for(i=4;i+1;i--) {
  a=h*x[i]+j*y[i]+z[i];
  d=1+j*j+h*h;
  b=a*a-d*(-r[i]*r[i]+x[i]*x[i]+y[i]*y[i]+z[i]*z[i]);
  if(b>0)
   {
   for(e=b;e*e>b*1.01||e*e<b*.99;e-=.5*(e*e-b)/e);
   p[c]=k[(int)(8*e/d/r[i])];
  } }
 }
 for(i=4;i+1;i--) {
  z[i]=z[i]<0?l*2+!m():z[i];
  z[i]-=s/2; };
 while(i<s)putchar(t[i++]);
 }
}