VolksForth/8086/msdos/cursor/ced.fb

1 line
9.0 KiB
Plaintext
Raw Normal View History

\ Commandline EDitor f<>r volksFORTH rev. 3.80 UH 05feb89Dieses File enthaelt Definitionen, die es erm<72>glichen die Kommandozeile zu editieren. Es gibt eine Commandline History, die es erm<72>glicht alte Eingaben wiederzuholen. Diese werden zyklisch auf Screen 0 im File History gesichert und bleiben so auch <20>ber ein SAVESYSTEM erhalten. Tasten: Cursor links/rechts   Zeichen l<>schen <del> und <- Zeile l<>schen <esc> Einf<6E>gen an aus <ins> Zeile abschlie<69>en <enter> Anfang/Ende der Zeile <pos1> <end> alte Zeilen wiederholen   \ Commandline EDitor LOAD-Screen UH 20Nov87 jrg 14m<34>r89 : curleft ( -- ) at? 1- at ; : currite ( -- ) at? 1+ at ; 1 5 +thru \ Erweiterte Eingabe .( Kommandozeilen Editor geladen ) cr \ History -- Kommandogeschichte jrg 14m<34>r89makefile history 1 more | Variable line# line# off | Variable lastline# lastline# off | : 'history ( n -- addr ) pushfile history c/l * b/blk /mod block + ; | : @line ( n -- addr len ) 'history c/l -trailing ; | : !history ( addr line# -- ) 'history dup c/l blank span @ c/l min cmove update ; | : @history ( addr line# -- ) @line rot swap dup span ! cmove ; | : +line ( n addr -- ) dup @ rot + l/s mod swap ! ; \ Ende der Eingabe jrg 18dez89 | Variable maxchars | Variable cinsert cinsert on | : -text ( a1 a2 l -- 0=equal ) bounds ?DO count I c@ - ?dup IF nip ENDLOOP exit THEN LOOP 0= ; | : done ( a p1 -- a p2 ) 2dup at? rot - span @ dup maxchars ! + at space blankline line# @ @line span @ = IF span @ -text 0=exit 2dup THEN drop lastline# @ !history 1 lastline# +line ;