OK, I feel a bit stupid here.

if all variables are word and word arrays why temp does not get the value of valid[0]?

mem_index takes values from 1 to 15

Code:
temp    var word
valid    var word[4]
mem_index    var byte

temp=valid[0]
write mem_index,temp
write 0,mem_index
read mem_index,temp
hserout ["get ",#mem_index,"  ",#temp,"  ",#valid[0],13,10]
after I run this code, temp has different value of valid[0]

and thats drives me crazy...

Ioannis