|
|
@@ -1,5 +1,6 @@ |
|
|
|
( Cursor position in buffer. EDPOS/64 is line number ) |
|
|
|
VARIABLE EDPOS |
|
|
|
CREATE EDBUF 64 ALLOT |
|
|
|
: _cpos BLK( + ; |
|
|
|
: _lpos 64 * _cpos ; |
|
|
|
: _pln ( lineno -- ) |
|
|
@@ -7,7 +8,9 @@ VARIABLE EDPOS |
|
|
|
I EDPOS @ _cpos = IF '^' EMIT THEN |
|
|
|
I C@ DUP 0x20 < IF DROP 0x20 THEN |
|
|
|
EMIT |
|
|
|
LOOP ( lno ) |
|
|
|
1+ . ; |
|
|
|
( user-facing lines are 1-based ) |
|
|
|
: T 1- DUP 64 * EDPOS ! _pln ; |
|
|
|
LOOP ( lno ) 1+ . ; |
|
|
|
: _zbuf EDBUF 64 0 FILL ; |
|
|
|
: _type ( -- ) |
|
|
|
C< DUP 0xd = IF DROP EXIT THEN _zbuf EDBUF BEGIN ( c a ) |
|
|
|
C!+ C< SWAP OVER 0x0d = UNTIL ( c a ) |
|
|
|
2DROP ; |