: RLWORD ( ol o a1 a2 -- ) SWAP DUP C@ ( ol o a2 a1 n ) DUP 0x0e = OVER 0x2b = OR NOT IF ( unwind all args ) 2DROP 2DROP EXIT THEN 0x2b = IF 2+ THEN ( ol o a2 a1 ) 1+ ( ol o a2 a1+1 ) BEGIN ( ol o a2 a1 ) 2OVER SWAP ( ol o a2 a1 o ol ) RLATOM ( ol o a2 a+n ) 2DUP < IF ABORT THEN ( Something is very wrong ) 2DUP = ( ol o a2 a+n f ) IF ( unwind ) 2DROP 2DROP EXIT THEN AGAIN ;