home *** CD-ROM | disk | FTP | other *** search
- FORTH DEFINITIONS HEX
-
- : TEXT
- HERE C/L 4 + BLANKS
- WORD ( HERE ) PAD C/L 4 + CMOVE
- ;
-
- : LINE
- DUP FFF0 AND 17 ?ERROR
- SCR @ (LINE) DROP
- ;
-
- VOCABULARY EDITOR IMMEDIATE HEX
-
- : WHERE
- DUP B/SCR / DUP SCR ! ." SCR # "
- DEC. SWAP C/L /MOD C/L * ROT BLOCK
- + CR C/L TYPE CR HERE C@ - SPACES
- 5E EMIT [COMPILE] EDITOR QUIT
- ;
-
- EDITOR DEFINITIONS
-
- : #LOCATE
- R# @ C/L /MOD
- ;
-
- : #LEAD
- #LOCATE LINE SWAP
- ;
-
- : #LAG
- #LEAD DUP >R + C/L R> -
- ;
-
- : -MOVE
- LINE C/L CMOVE UPDATE
- ;
-
- : H
- LINE PAD 4 + C/L DUP PAD C! CMOVE
- ;
-
- : E
- LINE C/L BLANKS UPDATE
- ;
-
- : S
- DUP 1 - 0E DO
- I LINE I 1+ -MOVE
- -1 +LOOP E
- ;
-
- : D
- DUP H 0F DUP ROT DO
- I 1+ LINE I -MOVE
- LOOP E
- ;
-
- : M
- R# +! CR SPACE #LEAD TYPE
- 5F EMIT #LAG TYPE #LOCATE
- . DROP
- ;
-
- : T
- DUP C/L * R# ! DUP H 0 M
- ;
-
- : L
- SCR @ LIST 0 M
- ;
-
- : R
- PAD 4 + SWAP -MOVE
- ;
-
- : P
- 1 TEXT R
- ;
-
- : I
- DUP S R
- ;
-
- : TOP
- 0 R# !
- ;
-
- : CLEAR
- SCR ! 10 0 DO
- FORTH I EDITOR E
- LOOP
- ;
-
- : FLUSH
- [ LIMIT FIRST - B/BUF 4 + / ] LITERAL 0 DO
- 7FFF BUFFER DROP
- LOOP
- ;
-
- : COPY
- B/SCR * OFFSET @ + SWAP B/SCR * B/SCR
- OVER + SWAP DO
- DUP FORTH I BLOCK 4 - ! 1+ UPDATE
- LOOP
- DROP FLUSH
- ;
-
- : -TEXT
- SWAP -DUP IF
- OVER + SWAP DO
- DUP C@ FORTH I C@ - IF
- 0= LEAVE
- ELSE
- 1+
- THEN
- LOOP
- ELSE
- DROP 0=
- THEN
- ;
-
- : MATCH
- >R >R 2DUP R> R> 2SWAP OVER + SWAP DO
- 2DUP FORTH I -TEXT IF
- >R 2DROP R> - I SWAP - 0 SWAP 0 0 LEAVE
- THEN
- LOOP
- 2DROP SWAP 0= SWAP
- ;
-
- : 1LINE
- #LAG PAD COUNT MATCH R# +!
- ;
-
- : FIND
- BEGIN
- 3FF R# @ < IF
- TOP PAD HERE C/L 4 + CMOVE 0 ERROR
- THEN
- 1LINE
- UNTIL
- ;
-
- : DELETE
- >R #LAG + FORTH R - #LAG R NEGATE
- R# +! #LEAD + SWAP CMOVE R> BLANKS
- UPDATE
- ;
-
- : N
- FIND 0 M
- ;
-
- : F
- 1 TEXT N
- ;
-
- : B
- PAD C@ NEGATE M
- ;
-
- : X
- 1 TEXT FIND PAD C@ DELETE 0 M
- ;
-
- : TILL
- #LEAD + 1 TEXT 1LINE 0= 0 ?ERROR
- #LEAD + SWAP - DELETE 0 M
- ;
-
- : C
- 1 TEXT PAD COUNT #LAG ROT OVER MIN >R
- FORTH R R# +! R - >R DUP HERE R CMOVE
- HERE #LEAD + R> CMOVE R> CMOVE
- UPDATE 0 M
- ;
-
- FORTH DEFINITIONS DECIMAL
-