The only other thing I dont get is how to get the base memory address of the array. Looking at your code here and the comment, i cant see how its doing what the comment said it does:

movlw low _array ; load FSR with address of the array
movwf FSR

Thanks for ur help