home *** CD-ROM | disk | FTP | other *** search
- \ cep 21Apr91
-
-
-
-
-
-
-
-
- -->
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- --> \\ JPS 14-7-90
- Table of actions
-
- ^H makes bkspc ^? makes help
- ^E makes cur-up ^X makes cur-down
- ^S makes cur-left ^D makes cur-right
- ^G makes del-c ^J makes >screen
- ^M makes edicr ^T makes ed-home
- ^R makes reread ^A makes \shadow
- ^N makes nextscr ^B makes lastscr
- ^O makes c>stack ^P makes c<stack
- ^K makes l>stack ^L makes l<stack
- ^W makes /modus ^Q makes cop>stack
- esc makes flushed.exit ^C makes canceled.exit
- ^U makes ins-line ^Y makes del-line
- ^> makes load.exit ^< makes #1.load
- ^Z makes cop.l>stack ^I makes ed-tab
-
-
-
-
-
-
-
-
- \ JPS 10-19-90
- Vocabulary Editor also Editor definitions
-
-
- blk @ blockstream lastblock constant helpblock
- Editor
-
- &2000 constant b/blk
- -1 Variable ins? ins? ! \ Einfügen/Überschreiben
- variable updated? \ Screen geändert
- variable /find \ Länge des Suchstrings
- variable taste \ Zuletzt eingegebens Zeichen
- variable modified \ wurde editiert?
- -1 Variable id? id? ! \ ID schon eingegeben?
-
- variable pad* \ Offest für Stack im PAD
- 0 pad* !
- : pad@ ( c --) -1 pad* +! pad pad* @ + c@ ;
- : pad! ( -- c ) pad pad* @ + c! 1 pad* +! ;
-
-
-
-
-
- -->
- \ full screen editor, cursor control JPS 7-14-90
- variable (row) variable (col)
- variable (oldrow) variable (oldcol)
- : ed-at ( row col -- ) 2dup
- (col) ! (row) ! swap at ;
- : row (row) @ ;
- : col (col) @ ;
-
- : save_crsr
- save_cursor hide_cursor
- row (oldrow) ! col (oldcol) ! ;
-
- : restore_crsr
- restore_cursor show_cursor
- (oldrow) @ (row) ! (oldcol) @ (col) ! ;
-
-
-
-
-
-
-
-
-
- -->
- \ CURSOR JPS 7-14-90
-
- : drin? ( row col -- row col f) 2dup swap
- 0 &25 within swap 0 &80 within and ;
- : set-curs ( row col --) drin? IF ed-at ELSE bell 2drop THEN ;
- : cur-up ( --) row 1- col set-curs ;
- : cur-right ( --) row col 1+ set-curs ;
- : cur-left ( --) row col 1- set-curs ;
- : cur-down ( --) row 1+ col set-curs ;
- : ed-home ( --) 0 0 ed-at ;
-
- : edirow ( -- n ) row ;
- : edicol ( -- n ) col ;
- : ediAT ( n1 n2 -- ) ed-at ;
-
-
- : clear-first-line ( -- ) &64 0 at &16 spaces &64 0 at ;
-
- : line0-." ( -- ) postpone clear-first-line
- postpone reverse_video postpone ."
- postpone normal_video ; immediate
-
-
-
- -->
- \ BLOCK U. ZEILE ZEIGEN cep 27Feb91
-
- : ediblk ( -- adr) scr @ block ; \ Adr des aktuellen Blocks
-
- : show-line ( n --) \ zeigt Zeile n d. aktuellen Screens
- save_crsr
- dup &80 * ediblk + swap
- 0 ed-at &80 -trailing &80 min dup >r type
- r> &80 < IF del_eol THEN restore_crsr ;
-
- : getblk ( n --) updated? @ modified @ or modified !
- 0 updated? !
- dup block drop scr !
- &25 0 DO i show-line LOOP
- save_crsr line0-." Screen " scr @ . restore_crsr ;
-
-
-
- : help ( -- ) save_crsr update scr @
- helpblock (block page &2000 0
- DO cr i over + 80 -trailing type 80 +LOOP key 2drop
- getblk restore_crsr ;
-
-
- -->
- \ ADR. VON CURSOR U. ZEILE , ID JPS 14-7-90
- : point ( -- adr) \ adr des Zeichens beim Cursor
- ediblk edirow &80 * edicol + + ;
-
- : lineadr ( -- adr ) \ adr der Cursorzeile
- edirow &80 * ediblk + ;
-
- create 'id 18 allot
- : get-id ( --) cr ." Enter your ID: "
- save_crsr ." .............." restore_crsr
- 'id 4+ 14 expect
- span @ 'id ! 0 id? ! ;
-
- : put-id ( --) 'id @ ?dup 0> IF save_crsr
- 0 &64 ediat &14 0 DO bl point i + c! LOOP
- dup >r &78 swap - 0 swap ediat
- 'id 4+ point r> cmove restore_crsr THEN ;
-
-
-
-
-
-
-
- -->
- \ ZEILENREST VERSCHIEBEN JPS 7-14-90
- : >schieben ( --) \ schiebt Zeile ab Cursor nach rechts
- true updated? !
- point dup 1+
- &79 edicol dup >r - cmove>
- edirow r> ediat ;
-
- : <schieben ( --) \ schiebt Zeile ab Cursor nach links
- true updated? !
- point dup 1-
- &80 edicol dup >r - cmove
- edirow dup show-line r> ediat
- lineadr &79 + bl swap c! cur-left ;
-
- : passt? ( -- f) lineadr &79 + c@ bl = ;
-
-
-
-
-
-
-
-
-
- -->
- \ ZEILEN EINFUEGEN JPS 7-14-90
-
-
- : leerzeile? ( -- f) ediblk &1920 + -1 &80 0 DO swap
- dup i + c@ bl = rot and LOOP nip ;
-
- : edicr ( -- ) edirow 1+ dup &25 < IF 0 ediat ELSE
- bell drop THEN ;
-
- : leer> ( --) lineadr &80 bl fill ; \ erzeugt Leerzeile
-
- : >line ( n -- addr ) &80 * ediblk + ;
-
- : ins-line ( --) \ fügt Leerzeile ein
- true updated? !
- leerzeile?
- IF lineadr dup &80 +
- &24 edirow - &80 * cmove> leer>
- &25 edirow
- DO i show-line LOOP
- ELSE bell THEN ;
-
-
-
- -->
- \ ZEILEN U. ZEICHEN LOESCHEN JPS 14-7-90 0
- : del-line ( --) \ löscht eine Zeile
- true updated? ! save_crsr
- lineadr dup &80 + swap
- &24 edirow - &80 * cmove
- &24 0 ediat leer> restore_crsr
- &25 edirow DO i show-line LOOP ;
-
- : del-c ( --) row col 1+ ed-at <schieben edirow show-line ;
-
- : bkspc ( --) row col 1- drin? IF
- <schieben edirow show-line THEN 2drop ;
-
- : /modus ( --) ins? @ not ins? ! save_crsr
- ins? @ IF line0-." insert"
- ELSE line0-." overwrite" THEN restore_crsr ;
-
- : ed-tab ( -- ) 4 col 4 mod - 0 ?DO cur-right LOOP ;
-
-
-
-
-
-
- -->
- \ EINFUEGEN,UEBERSCHREIBEN,VOR,ZURUECK,EXITS JPS 16/10/8 JPS 14-7-90
- : overwr ( c -- ) true updated? !
- point c! cur-right edirow show-line ;
-
- : ins ( c -- ) passt? IF >schieben point c! cur-right
- edirow show-line ELSE drop bell THEN ;
-
- : ed-write ( -- ) taste @ $ff and dup bl 160 within
- IF ins? @ IF ins ELSE overwr THEN ELSE drop THEN ;
-
- : update? ( -- ) updated? @ IF update put-id THEN ;
-
- : nextscr ( -- ) update? scr @ 1+ getblk ;
-
- : lastscr ( -- ) update? scr @ 1- getblk ;
-
- : save.scr ( -- ) updated? @ modified @ or
- IF save-buffers THEN ;
-
-
-
-
-
-
- -->
- \ UNDO, ZEILEN U. ZEICHEN ZUM PAD JPS 16/10/8 JPS 7-22-90
-
- : reread ( -- ) scr @ -1 prev @ 4 + ! getblk ;
-
- : load.exit ( -- f ) update? save.scr 0 &24 at cr scr @ load -1 ;
-
- : #1.load ( -- F ) update? save.scr 0 &24 at cr 1 load -1 ;
-
- : c>stack ( -- ) point c@ pad! del-c ;
-
- : c<stack ( -- ) passt? pad* @ 0 > and IF >schieben pad@
- point c! edirow show-line ELSE bell THEN ;
-
- : l>stack ( --) lineadr pad pad* @ + &80 cmove
- &80 pad* +! del-line ;
-
- : l<stack ( -- ) pad* @ &79 > leerzeile? and IF ins-line
- pad pad* @ + &80 - lineadr &80 cmove
- edirow show-line -&80 pad* +! ELSE bell THEN ;
-
- : cop>stack ( -- ) point c@ pad! cur-right ;
-
- : cop.l>stack ( -- ) lineadr pad pad* @ + &80 cmove
- &80 pad* +! cur-down ;
- -->
- \ SHADOWSCREEN JPS 8-5-90 -
-
- : \shadow ( -- ) ;
- \ scr @ capacity @ 2/ 2dup < IF + ELSE - THEN getblk ;
-
- : >screen ( -- ) save_crsr line0-." Screen: "
- pad pad* @ + dup 2dup 6 erase 1+ 4 expect
- span @ ?dup
- IF swap c!
- number? drop update?
- ELSE 2drop scr @ THEN restore_crsr getblk ;
-
-
- : flushed.exit ( -- f) update? save.scr 0 &24 at cr
- ." Scr # " scr @ . ." flushed" -1 ;
-
- : canceled.exit 0 &24 at cr ." Scr # " scr @ . ." canceled" -1 ;
-
-
-
-
-
-
-
- -->
- \ FINDEN cep 28Feb91
- \ : get.string ( --) save_crsr line0-." String: "
- \ pad pad* @ + 20 expect
- \ span @ /find ! restore_crsr ;
- : pos-cur ( offset --) &80 u/mod swap ediat ;
-
-
- \ : weiter? ( -- f ) save_crsr 0 10 /find @ + ed-at ." weiter?"
- \ restore_crsr key $7F and ascii j = ;
-
- \ : find.str ( --) get.string
- \ capacity @ scr @ 1+ DO pad pad* @ +
- \ /find @ i block b/blk search
- \ IF i getblk pos-cur weiter? IF ELSE LEAVE THEN
- \ ELSE drop THEN
- \ LOOP save_crsr 0 0 ed-at 70 spaces restore_crsr ;
-
-
-
-
-
-
-
-
- -->
- \ TASTENCODES JPS 7-14-90
-
-
-
- $7 constant ^G $1E constant ^>
- $13 constant ^S $4 constant ^D
- $5 constant ^E $18 constant ^X
- $9 constant ^I $A constant ^J
- $D constant ^M $1B constant esc
- $8 constant ^H $1D constant ^=
- $12 constant ^R $11 constant ^Q
- $19 constant ^Y $14 constant ^T
- $1F constant ^? $E constant ^N
- $2 constant ^B $1C constant ^<
- $F constant ^O $10 constant ^P
- $B constant ^K $C constant ^L
- $1A constant ^Z $15 constant ^U
- $17 constant ^W $1 constant ^A
- $03 constant ^C
-
-
-
-
-
- -->
- \ Table of actions JPS 7-14-90
- : makes ( n --) , ' , ; \ n makes <name>
-
- create 'funktionen
- ^H makes bkspc ^? makes help
- ^E makes cur-up ^X makes cur-down
- ^S makes cur-left ^D makes cur-right
- ^G makes del-c ^J makes >screen
- ^M makes edicr ^T makes ed-home
- ^R makes reread ^A makes \shadow
- ^N makes nextscr ^B makes lastscr
- ^O makes c>stack ^P makes c<stack
- ^K makes l>stack ^L makes l<stack
- ^W makes /modus ^Q makes cop>stack
- esc makes flushed.exit ^C makes canceled.exit
- ^U makes ins-line ^Y makes del-line
- ^> makes load.exit ^< makes #1.load
- ^Z makes cop.l>stack ^I makes ed-tab
- 0 makes ed-write here 4- constant 'write
-
-
-
-
-
- -->
- \ Für die Haupteingabeschleife JPS 14-7-90
-
- : edinit ( n -- n ) 0 modified !
- id? @ IF get-id THEN
- page nowrap
- getblk clearstack
- r# @ pos-cur ;
-
- : ed-key ( -- scancode )
- key $ff and ;
-
- also FORTH definitions
- : l ( n --) edinit
- BEGIN
- ed-key dup taste ! 'write swap ( 'write taste )
- 'write 'funktionen DO
- dup i @ = \ Vergleich mit Tast.Code
- IF nip i 4+ swap LEAVE THEN
- 8 +LOOP
- drop @ execute row col ed-at depth IF ELSE 0 THEN
- UNTIL 0 25 at cr ;
-
- : v ( --) scr @ l ;
-
- toss toss FORTH
-