Who said Matrix had to be line of single characters.
Not me.
restore words
read char
dim word$(char)
for a=1 to char
read word$(a)
next a
tails=30
tail=15
dim go(tails)
dim en(tails)
dim x(tails)
dim y(tails)
dim z(tail,tails)
for a=1 to tails
en(a)=ran(10)+1
x(a)=int(ran(32))*20
y(a)=ran(50)*12
for b=1 to tail
z(b,a)=int(ran(char))+1
next b
next a
open window 640,512
repeat
setdrawbuf vm
vm=1-vm
setdispbuf vm
clear window
for a=1 to tails
go(a)=go(a)+1
en(a)=en(a)+.1
if en(a)>10 en(a)=1
if go(a)>en(a) go(a)=1
if go(a)>en(a)-1 y(a)=y(a)+12
if y(a)>520+(tail*12) then
y(a)=0
x(a)=int(ran(32))*20
for b=1 to tail
z(b,a)=int(ran(char))+1
next b
endif
for b=1 to tail
clear fill rectangle x(a),y(a)-(b*12)-14 to x(a)+21,y(a)-(b*12)-2
next b
for b=1 to tail
setrgb 1,0,255+tail-(b*(255/tail)),0
text x(a),y(a)-(b*12)-4,word$(z(b,a))
next b
next a
until (1=0)
label words
data 53
data "ad","ah","am","an","as"
data "at","aw","ax","ay","be"
data "bi","do","eh","em","en"
data "er","ex","go","ha","he"
data "ho","id","if","in","is"
data "it","iv","ix","la","ma"
data "me","no","pa","pi","qi"
data "ra","re","si","so","ta"
data "to","ug","um","un","up"
data "us","ve","vi","we","xi"
data "ya","ye","zi"