diff --git a/blk/102 b/blk/102 index e3a81dc..7d9b549 100644 --- a/blk/102 +++ b/blk/102 @@ -1,5 +1,5 @@ 152 LOAD ( extras ) -103 105 LOADR +103 106 LOADR : BROWSE 100 _LIST diff --git a/blk/104 b/blk/104 index a671441..10984e0 100644 --- a/blk/104 +++ b/blk/104 @@ -1,16 +1,13 @@ -( Line numbers for the user are 1-based, but in code, they're - 0-based. ) +( Cursor position in buffer. EDPOS/64 is line number ) VARIABLE EDPOS -: _bpos 64 * BLK( + ; -: T 1- DUP EDPOS ! _bpos (print) CRLF ; -: P - EDPOS @ _bpos C< - 64 0 DO ( bpos c ) - DUP 0xd = IF DROP 0 THEN - 2DUP SWAP I + C! - DUP IF DROP C< THEN - LOOP - 2DROP - BLK!! -; - +: _cpos BLK( + ; +: _lpos 64 * _cpos ; +: _pln ( lineno -- ) + DUP _lpos DUP 64 + SWAP DO ( lno ) + 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 ; diff --git a/blk/105 b/blk/105 index 4608590..aab4e3e 100644 --- a/blk/105 +++ b/blk/105 @@ -1,11 +1,16 @@ -: _mvln+ ( ln -- move ln 1 line further ) - DUP 14 > IF DROP EXIT THEN - _bpos DUP 64 + 64 MOVE +: P + EDPOS @ _cpos C< + 64 0 DO ( bpos c ) + DUP 0xd = IF DROP 0 THEN + 2DUP SWAP I + C! + DUP IF DROP C< THEN + LOOP + 2DROP + BLK!! ; -: U - 15 EDPOS @ - 0 DO - 14 I - _mvln+ - LOOP - P +: _mvln+ ( ln -- move ln 1 line further ) + DUP 14 > IF DROP EXIT THEN + _lpos DUP 64 + 64 MOVE ; + diff --git a/blk/106 b/blk/106 new file mode 100644 index 0000000..5219028 --- /dev/null +++ b/blk/106 @@ -0,0 +1,7 @@ +: U + 15 EDPOS @ 64 / - 0 DO + 14 I - _mvln+ + LOOP + P +; +