Mirror of CollapseOS
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

17 lines
640B

  1. : RLDICT ( target offset -- )
  2. H@ 2+ ! H@ ! ( H@+2 == offset, H@ == target )
  3. H@ @ WORD( DUP H@ -^ ( src u )
  4. DUP ROT SWAP H@ 4 + ( u src u dst )
  5. SWAP MOVE ( u )
  6. 4 + DUP CURRENT @ WORD( + ( u we )
  7. DUP .X NL
  8. SWAP CURRENT @ PREV + DUP .X NL ( we wr )
  9. BEGIN ( we wr )
  10. DUP ROT ( wr wr we )
  11. H@ @ H@ 2+ @ ( wr wr we ol o )
  12. 2SWAP RLWORD ( wr )
  13. DUP PREV SWAP ( wr oldwr )
  14. WORD( SWAP ( we wr )
  15. DUP 4 - H@ <= ( are we finished? )
  16. UNTIL H@ 4 + .X NL ;