The retain parameter is a secondary stack for temporarily storing things from the data stack. It can be manipulated through the `r>` and `>r` words. The former puts the top of the data stack at the top of the retain, and one does the opposite. The `dip` word isn't a primitive in this implementation, but instead is defined as `swap >r call r>`, which saves the value underneath the top value of the stack (which is expected to be a quotation), calls the quotation, and then restores the retained value to the top of the data stack.