To keep the data stack tidy I move a scale factor to the return stack before a loop: : SCALE-ALL ( addr n k -- ) >R 0 DO DUP I CELLS + DUP @ R@ * SWAP ! LOOP DROP R> DROP ;. Instead of multiplying every cell by k, the array fills with strange numbers. A second word, where I forgot the final R>, crashes the system as soon as it returns, and calling the word with a count of 0 seems to hang.
What are the rules for using the return stack, and how should this word be written?




