2020-04-26 14:37:54 -04:00
|
|
|
: RLWORD ( ol o a1 a2 -- )
|
|
|
|
SWAP DUP C@ ( ol o a2 a1 n )
|
2020-05-02 19:57:56 -04:00
|
|
|
DUP 0x0e = OVER 0x2b = OR NOT IF
|
|
|
|
( unwind all args ) 2DROP 2DROP EXIT THEN
|
2020-04-26 14:37:54 -04:00
|
|
|
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
|
|
|
|
;
|