4d893d90fc
Previously, it would keep the old buffer displayed why typing over it. I had kept it thus because I didn't want to erase the buffer right away because the behavior is that when we type nothing, we keep the buffer as-is and repeat the action. Now, the behavior of I and F is much better. It keeps the buffer displayed until the first non-return keystroke and then erases it. Also, fixed PSP leak in _type and fixed PSP overuse in successful _F (they balanced out).
13 lines
463 B
Plaintext
13 lines
463 B
Plaintext
: _type ( buf -- )
|
|
C< DUP 0xd = IF 2DROP EXIT THEN SWAP DUP _zbuf ( c a )
|
|
BEGIN ( c a ) C!+ C< TUCK 0x0d = UNTIL ( c a ) C! ;
|
|
( user-facing lines are 1-based )
|
|
: T 1- DUP 64 * EDPOS ! _pln ;
|
|
: P IBUF _type IBUF EDPOS @ _cpos 64 MOVE BLK!! ;
|
|
: _mvln+ ( ln -- move ln 1 line down )
|
|
DUP 14 > IF DROP EXIT THEN
|
|
_lpos DUP 64 + 64 MOVE ;
|
|
: _mvln- ( ln -- move ln 1 line up )
|
|
DUP 14 > IF DROP 15 _lpos _zbuf
|
|
ELSE 1+ _lpos DUP 64 - 64 MOVE THEN ;
|