diff --git a/blk/102 b/blk/102 index 26ad3bc..3995ae6 100644 --- a/blk/102 +++ b/blk/102 @@ -12,5 +12,5 @@ ENDCASE AGAIN ; - - +( I masks DO..LOOP's I. Do it as late as possible. ) +: I _I ; diff --git a/blk/108 b/blk/108 index 8000e80..c230ad8 100644 --- a/blk/108 +++ b/blk/108 @@ -1,16 +1,15 @@ : _ilen ( length of str in IBUF ) IBUF BEGIN C@+ EOL? UNTIL IBUF - 1- ; -: I - IBUF _type EDPOS @ 64 /MOD ( cno lno ) - 1+ 64 * _cpos ( cno next-line-ptr ) - SWAP 63 -^ _ilen ( nlp nb-of-chars-to-move ilen ) +: _I + IBUF _type EDPOS @ 64 MOD ( cno ) + 63 -^ _ilen ( rbuffsize ilen ) 2DUP > IF - SWAP OVER - 1+ ( nlp ilen nbc ) 0 DO ( a ilen ) - SWAP 1- 2DUP -^ ( ilen a-1 a-ilen-1 ) C@ OVER C! - SWAP ( a ilen ) - LOOP - ELSE DROP ( ilen becomes nbc ) + SWAP OVER - ( ilen chars-to-move ) + SWAP EDPOS @ _cpos 2DUP + ( ctm ilen a a+ilen ) + 3 PICK MOVE- ( ctm ilen ) + SWAP DROP ( ilen ) + ELSE DROP ( ilen becomes rbuffsize ) THEN - SWAP DROP DUP IBUF EDPOS @ _cpos ROT MOVE ( ilen ) + DUP IBUF EDPOS @ _cpos ROT MOVE ( ilen ) EDPOS +! EDPOS @ 64 / _pln ;