You are right, it seems difficult or impossible only with dup, drop and over.
I would suggest that i21 probably also has some kind of reverse stack manipulation, so this would work:
: swap over 2>r drop 2r> ;
Edit: on GA144, which also does not have its own swap, it is implemented as:
over push over or or pop
Push and pop refer to the return stack, or actually xor. See http://www.colorforth.com/inst.htm
Lars brinkhoff
source share