
Scr#1
\ AT,-TRAILING,LIST,LLIST
DECIMAL

: AT SWAP DUP 23 - IF 22 TCH
  TCH TCH ELSE 1- DUP TCH TCH
  0 TCH CR DUP 23684 +! 33 SWAP
  - 23688 C! THEN ;

: -TRAILING BEGIN 2DUP + 1- C@
  BL = OVER AND WHILE 1-
  REPEAT ;

: LIST DUP SCR ! CR ." Scr#"
  DUP . CR BLOCK C/L 0 DO
  DUP C/L TYPE CR
  ?TERMINAL IF LEAVE THEN
  C/L + LOOP DROP ;

: LLIST 1+ SWAP >P DO I LIST
  LOOP >S ;


-->










Scr#2
\ SCREEN EDITOR DEEL 1
VOCABULARY EDITOR IMMEDIATE
EDITOR DEFINITIONS

VARIABLE VE VARIABLE HO
VARIABLE TXT

: SET VE @ 15 AND HO @ AT ;

: CUR HO @ VE @ 15 AND C/L * +
  22528 +  128 TOGGLE ;

: SADR TXT @ IF ADDR ELSE BLOCK
  THEN ;

: LST CLS SCR @ SADR VE @ 16 AND
  IF 512 + THEN 512 MTYPE
  0 BANK
  ." Scr#" SCR @ . VE @ 16 AND
  IF &B ELSE &A THEN EMIT ;

: PU VE @ 15 OR 16 XOR VE !
  VE @ 15 > SCR @ 1- AND IF
  -1 SCR +! THEN LST CUR ;

: PD VE @ -16 AND 16 XOR VE !
  VE @ 16 < SCR @ #SCR < AND IF
  1 SCR +! THEN LST CUR ;

-->



Scr#3
\ SCREEN EDITOR DEEL 2

: UP CUR VE @ IF -1 VE +! VE @
  15 = IF LST THEN ELSE TXT @
  IF PU CUR THEN THEN CUR ;

: DN CUR VE @ 31 < IF 1 VE +! VE
  @ 16 = IF LST THEN ELSE TXT @
  IF PD CUR THEN THEN CUR ;

: LE CUR HO @ IF -1 HO +! CUR
  ELSE 31 HO ! CUR UP THEN ;

: RI CUR HO @ 31 < IF 1 HO +!
  CUR ELSE 0 HO ! CUR DN THEN ;

: HOME 0 HO ! 0 VE ! LST CUR ;

: LPOS VE @ C/L * SCR @ SADR + ;

: POS LPOS HO @ + ;

: LREST B/BUF VE @ C/L * - 1-
  511 AND 1+ ;

: REST LREST HO @ - 1- 511 AND
  1+ ;

: LIM TXT @ IF 0 ELSE LIMIT THEN
  ;

-->

Scr#4
\ SCREEN EDITOR DEEL 3

: LINS LPOS DUP DUP C/L + LIM
  OVER - CMOVE> DUP C/L BLANK
  LREST VE @ 15 AND 0 AT
  MTYPE CUR ;

: LDEL LPOS DUP DUP C/L + SWAP
  LIM 2 PICK - CMOVE LIM C/L -
  C/L BLANK LREST VE @ 15 AND 0
  AT MTYPE CUR ;

: INS POS LPOS C/L + BEGIN DUP
  1- C@ BL = OVER C@ BL = 2 PICK
  2- C@ BL = OR AND 0= OVER 1-
  LIM 1- U< AND WHILE C/L +
  REPEAT >R  DUP DUP 1+ R> OVER
  - CMOVE>  BL OVER C! REST SET
  MTYPE  CUR ;

: DEL POS LPOS C/L + BEGIN DUP
  C@ BL = OVER 1- C@ BL = OR 0=
  OVER 1- LIM 1- U< AND WHILE
  C/L + REPEAT >R DUP DUP 1+
  SWAP R@ OVER - CMOVE BL R> 1-
  C! REST SET MTYPE CUR ;

-->





Scr#5
\ SCREEN EDITOR DEEL 4
FORTH DEFINITIONS
: EDIT EDITOR SCR ! HO @ 31 AND
  HO ! VE @ 31 AND VE ! FLUSH
  LST CUR  STOPOFF
  BEGIN KEY DUP 31 > OVER 127 <
  AND IF DUP DUP POS C! SET EMIT
  CUR RI ELSE
   DUP  8 = IF LE THEN
   DUP  9 = IF RI THEN
   DUP 10 = IF DN THEN
   DUP 11 = IF UP THEN
   DUP 13 = IF CUR 0 HO ! CUR DN
   THEN
   DUP 12 = IF DEL THEN
   DUP 15 = IF INS THEN
   DUP  5 = IF LDEL THEN
   DUP  4 = IF LINS THEN
   DUP  6 = IF CAP THEN
   DUP  1 = IF PU THEN
   DUP  3 = IF PD THEN
   DUP  2 = IF HOME THEN THEN
   7 = UNTIL 16 DUP AT 0 BANK
   CUR STOPON ;
: FILE EDITOR FLUSH 1 TXT ! ;

: BLOCKS EDITOR EMPTY-BUFFERS
 0 TXT ! ;

BLOCKS

-->

Scr#6
\ WHERE

: WHERE EDITOR C/L /MOD VE ! HO
  ! EDIT ;

HERE FENCE !

EXIT

