long-winded idea
open window 640,512
col=1
row=0
grav=0.8
ball=132
dim bx(ball),by(ball),drop(ball),bm(ball)
dim letter(ball)
for a=1 to ball
read letter(a)
bx(a)=a*15+155-r
col=col+1
if col>22 then
r=r+330
col=1
endif
by(a)=20
drop(a)=ran(.5)+.1
bm(a)=0
next a
repeat
setdispbuf vm
vm=1-vm
setdrawbuf vm
clear window
setrgb 1,256,128,0
fill rectangle 0,0 to 640,512
for a=1 to ball
bm(a)=bm(a)+drop(a)
by(a)=by(a)+bm(a)
for x=1 to 22
if by(x)>400 then
bm(a)=-bm(a)*grav
by(x)=400
endif
next x
for x=23 to 44
if by(x)>420 then
bm(a)=-bm(a)*grav
by(x)=420
endif
next x
for x=45 to 66
if by(x)>440 then
bm(a)=-bm(a)*grav
by(x)=440
endif
next x
for x=67 to 88
if by(x)>460 then
bm(a)=-bm(a)*grav
by(x)=460
endif
next x
for x=89 to 110
if by(x)>480 then
bm(a)=-bm(a)*grav
by(x)=480
endif
next x
for x=111 to 132
if by(x)>500 then
bm(a)=-bm(a)*grav
by(x)=500
endif
next x
setrgb 1,0,0,0
text bx(a),by(a),chr$(letter(a))
next a
until (1=0)
label letter
data 32,32,73,83,78,146,84,32,84,72,69,32,73,78,84,69,82,78,69,84,32,32
data 32,87,79,78,68,69,82,70,85,76,46,32,66,82,73,78,71,73,78,71,32,32
data 32,84,79,71,69,84,72,69,82,32,76,73,75,69,150,77,73,78,68,69,68,32
data 80,69,79,80,76,69,44,32,70,82,79,77,32,84,72,79,85,83,65,78,68,83
data 32,32,79,70,32,77,73,76,69,83,32,65,80,65,82,84,32,65,78,68,32,32
data 68,73,70,70,69,82,69,78,84,32,84,73,77,69,32,90,79,78,69,83,46,32
Have a Yahappy day.