Source (290 chars)
w=127z={}::d::
if(#z<90)add(z,{x=rnd(w),y=0,v=0,a=0})
for i=1,#z do
p=z[i]p.v-=.025p.x+=cos(t()-p.a)p.y+=p.v
if(p.y<0)p.a=t()p.v=-rnd()p.y+=w
p.x=(p.x+w)%w
sfx(1)for j=i,#z do
poke(24576+rnd(8192))q=z[j]n=q.x-p.x
m=q.y-p.y
if(n*n+m*m<w)line(p.x,p.y,q.x,q.y,9)
end
pset(p.x,p.y,8)end
goto d