home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / language / armforth / !ARMforth / Support / Editor next >
Encoding:
Text File  |  1991-04-02  |  2.5 KB  |  181 lines

  1. FORTH DEFINITIONS HEX
  2.  
  3. : TEXT
  4.       HERE C/L 4 + BLANKS
  5.       WORD ( HERE ) PAD C/L 4 + CMOVE
  6.       ;
  7.  
  8. : LINE
  9.       DUP FFF0 AND 17 ?ERROR
  10.       SCR @ (LINE) DROP
  11.       ;
  12.  
  13. VOCABULARY EDITOR IMMEDIATE HEX
  14.  
  15. : WHERE
  16.       DUP B/SCR / DUP SCR ! ." SCR # "
  17.       DEC. SWAP C/L /MOD C/L * ROT BLOCK
  18.       + CR C/L TYPE CR HERE C@ - SPACES
  19.       5E EMIT [COMPILE] EDITOR QUIT
  20.       ;
  21.  
  22. EDITOR DEFINITIONS
  23.  
  24. : #LOCATE
  25.       R# @ C/L /MOD
  26.       ;
  27.  
  28. : #LEAD
  29.       #LOCATE LINE SWAP
  30.       ;
  31.  
  32. : #LAG
  33.       #LEAD DUP >R + C/L R> -
  34.       ;
  35.  
  36. : -MOVE
  37.       LINE C/L CMOVE UPDATE
  38.       ;
  39.  
  40. : H
  41.       LINE PAD 4 + C/L DUP PAD C! CMOVE
  42.       ;
  43.  
  44. : E
  45.       LINE C/L BLANKS UPDATE
  46.       ;
  47.  
  48. : S
  49.       DUP 1 - 0E DO
  50.          I LINE I 1+ -MOVE
  51.       -1 +LOOP E
  52.       ;
  53.  
  54. : D
  55.       DUP H 0F DUP ROT DO
  56.          I 1+ LINE I -MOVE
  57.       LOOP E
  58.       ;
  59.  
  60. : M
  61.       R# +! CR SPACE #LEAD TYPE
  62.       5F EMIT #LAG TYPE #LOCATE
  63.       . DROP
  64.       ;
  65.  
  66. : T
  67.       DUP C/L * R# ! DUP H 0 M
  68.       ;
  69.  
  70. : L
  71.       SCR @ LIST 0 M
  72.       ;
  73.  
  74. : R
  75.       PAD 4 + SWAP -MOVE
  76.       ;
  77.  
  78. : P
  79.       1 TEXT R
  80.       ;
  81.  
  82. : I
  83.       DUP S R
  84.       ;
  85.  
  86. : TOP
  87.       0 R# !
  88.       ;
  89.  
  90. : CLEAR
  91.       SCR ! 10 0 DO
  92.          FORTH I EDITOR E
  93.       LOOP
  94.       ;
  95.  
  96. : FLUSH
  97.       [ LIMIT FIRST - B/BUF 4 + / ] LITERAL 0 DO
  98.          7FFF BUFFER DROP
  99.       LOOP
  100.       ;
  101.  
  102. : COPY
  103.       B/SCR * OFFSET @ + SWAP B/SCR * B/SCR
  104.       OVER + SWAP DO
  105.          DUP FORTH I BLOCK 4 - ! 1+ UPDATE
  106.       LOOP
  107.       DROP FLUSH
  108.       ;
  109.  
  110. : -TEXT
  111.       SWAP -DUP IF
  112.          OVER + SWAP DO
  113.             DUP C@ FORTH I C@ - IF
  114.                0= LEAVE
  115.             ELSE
  116.                1+
  117.             THEN
  118.          LOOP
  119.       ELSE
  120.          DROP 0=
  121.       THEN
  122.       ;
  123.  
  124. : MATCH
  125.       >R >R 2DUP R> R> 2SWAP OVER + SWAP DO
  126.          2DUP FORTH I -TEXT IF
  127.             >R 2DROP R> - I SWAP - 0 SWAP 0 0 LEAVE
  128.          THEN
  129.       LOOP
  130.       2DROP SWAP 0= SWAP
  131.       ;
  132.  
  133. : 1LINE
  134.       #LAG PAD COUNT MATCH R# +!
  135.       ;
  136.  
  137. : FIND
  138.       BEGIN
  139.          3FF R# @ < IF
  140.             TOP PAD HERE C/L 4 + CMOVE 0 ERROR
  141.          THEN
  142.          1LINE
  143.       UNTIL
  144.       ;
  145.  
  146. : DELETE
  147.       >R #LAG + FORTH R - #LAG R NEGATE
  148.       R# +! #LEAD + SWAP CMOVE R> BLANKS
  149.       UPDATE
  150.       ;
  151.  
  152. : N
  153.       FIND 0 M
  154.       ;
  155.  
  156. : F
  157.       1 TEXT N
  158.       ;
  159.  
  160. : B
  161.       PAD C@ NEGATE M
  162.       ;
  163.  
  164. : X
  165.       1 TEXT FIND PAD C@ DELETE 0 M
  166.       ;
  167.  
  168. : TILL
  169.       #LEAD + 1 TEXT 1LINE 0= 0 ?ERROR
  170.       #LEAD + SWAP - DELETE 0 M
  171.       ;
  172.  
  173. : C
  174.       1 TEXT PAD COUNT #LAG ROT OVER MIN >R
  175.       FORTH R R# +! R - >R DUP HERE R CMOVE
  176.       HERE #LEAD + R> CMOVE R> CMOVE
  177.       UPDATE 0 M
  178.       ;
  179.  
  180. FORTH DEFINITIONS DECIMAL
  181.