I goofed there. Since the BitArray actually consists of two WORDs and you want the least and most significant WORD of that array the declaration should read
Code:
LSB VAR BitArray[0]
MSB VAR BitArray[1]
Where it should returned something like 9000, it returns 600, is not this strange?
What should return 9000?
You've changed the MeasureHigh routine so it only adds 1 each time thru a loop that (ideally) takes 100us to execute. A pulse lasting for 10ms will (ideally) cause that loop to execute 100 times, you end up with 100 in (instead of 10000) in HighTime.

/Henrik.