diff view
color-brad0.f color-brad1.f
end of diff view
1. \ Forth to HTML converter
2. \ Brad Eckert
1. \ Forth to HTML converter
2. \ Brad Eckert
3. \ Revision 0. See bottom for revision history.
3. \ Revision 1. See bottom for revision history.
4. 
5. \ This ANS Forth program is public domain. It translates ANS Forth to colorized
6. \ HTML. Hyperlinks to the ANS Forth draft standard are inserted for all ANS
7. \ standard words. Hyperlinks to user definitions are included.
8. 
9. \ Usage: HTML FileName       Generates HTML file from Forth source
10. \                            output file is Filename with .HTM extension
11. \        Q [forth code]      Outputs HTML for 1 line to screen
12. 
13. \ Q is used for debugging. You can use "linenum ?" to show the line number if an
14. \ ABORT occurs. The HTML is about 10 times as big as the Forth source because of
15. \ all the links, color changes and whitespace.
16. 
17. \ INCLUDEd files produce corresponding HTML pages. Most browsers get severely
18. \ bogged down with large files. If you're converting a large Forth program to
19. \ HTML, try to keep the source files under 500 lines each by splitting long
20. \ source into multiple INCLUDE files. HTML pages are best viewed with Internet
21. \ Explorer. Netscape ignores the <code> attribute and is more sluggish with
22. \ large files.
23. 
24. ONLY FORTH ALSO DEFINITIONS
25. 
26. : undefined ( <name> -- f ) BL WORD FIND NIP 0= ;
27. undefined +PLACE [IF] : +PLACE 2DUP 2>R COUNT CHARS + SWAP MOVE 2R> C+! ; [THEN]
28. undefined PLACE  [IF] : PLACE  0 OVER C! +PLACE ;                         [THEN]
29. undefined FDROP  [IF] : FDROP ;                                           [THEN]
30. undefined >FLOAT [IF] : >FLOAT DROP C@ [CHAR] 0 [CHAR] 9 1+ WITHIN ;      [THEN]
31. 
32. 0 VALUE outf                                    \ output to file
33. 1 VALUE screen-only                             \ screen is for testing
34. : werr  abort" Error writing file" ;
35. : out   screen-only IF type    ELSE outf WRITE-FILE werr THEN ;
36. : outln screen-only IF type cr ELSE outf WRITE-LINE werr THEN ;
37. 
38. WORDLIST CONSTANT hyperlinks
39. VARIABLE attrib
40. : /a      ( -- )         attrib @ IF S" </a>" out THEN 0 attrib ! ;
41. : ,$      ( a len -- )   DUP C, BOUNDS ?DO I C@ C, LOOP ; \ text to dictionary
42. : text    ( <text> -- )  -1 WORD COUNT -TRAILING ,$ ;
43. : line    ( a line# -- ) 0 ?DO COUNT + LOOP COUNT out ;   \ output one string
44. : boiler  ( addr -- )    BEGIN COUNT DUP WHILE 2DUP + >R outln R> REPEAT 2DROP ;
45. 
46. CREATE misctext                                 \ various attribute strings
47.    text <a style="text-decoration:none" href=
48.    text <a name="
49.    text ">
50.    text <a href="#
51.    text " style="text-decoration:none">
4. 
5. \ This ANS Forth program is public domain. It translates ANS Forth to colorized
6. \ HTML. Hyperlinks to the ANS Forth draft standard are inserted for all ANS
7. \ standard words. Hyperlinks to user definitions are included.
8. 
9. \ Usage: HTML FileName       Generates HTML file from Forth source
10. \                            output file is Filename with .HTM extension
11. \        Q [forth code]      Outputs HTML for 1 line to screen
12. 
13. \ Q is used for debugging. You can use "linenum ?" to show the line number if an
14. \ ABORT occurs. The HTML is about 10 times as big as the Forth source because of
15. \ all the links, color changes and whitespace.
16. 
17. \ INCLUDEd files produce corresponding HTML pages. Most browsers get severely
18. \ bogged down with large files. If you're converting a large Forth program to
19. \ HTML, try to keep the source files under 500 lines each by splitting long
20. \ source into multiple INCLUDE files. HTML pages are best viewed with Internet
21. \ Explorer. Netscape ignores the <code> attribute and is more sluggish with
22. \ large files.
23. 
24. ONLY FORTH ALSO DEFINITIONS
25. 
26. : undefined ( <name> -- f ) BL WORD FIND NIP 0= ;
27. undefined +PLACE [IF] : +PLACE 2DUP 2>R COUNT CHARS + SWAP MOVE 2R> C+! ; [THEN]
28. undefined PLACE  [IF] : PLACE  0 OVER C! +PLACE ;                         [THEN]
29. undefined FDROP  [IF] : FDROP ;                                           [THEN]
30. undefined >FLOAT [IF] : >FLOAT DROP C@ [CHAR] 0 [CHAR] 9 1+ WITHIN ;      [THEN]
31. 
32. 0 VALUE outf                                    \ output to file
33. 1 VALUE screen-only                             \ screen is for testing
34. : werr  abort" Error writing file" ;
35. : out   screen-only IF type    ELSE outf WRITE-FILE werr THEN ;
36. : outln screen-only IF type cr ELSE outf WRITE-LINE werr THEN ;
37. 
38. WORDLIST CONSTANT hyperlinks
39. VARIABLE attrib
40. : /a      ( -- )         attrib @ IF S" </a>" out THEN 0 attrib ! ;
41. : ,$      ( a len -- )   DUP C, BOUNDS ?DO I C@ C, LOOP ; \ text to dictionary
42. : text    ( <text> -- )  -1 WORD COUNT -TRAILING ,$ ;
43. : line    ( a line# -- ) 0 ?DO COUNT + LOOP COUNT out ;   \ output one string
44. : boiler  ( addr -- )    BEGIN COUNT DUP WHILE 2DUP + >R outln R> REPEAT 2DROP ;
45. 
46. CREATE misctext                                 \ various attribute strings
47.    text <a style="text-decoration:none" href=
48.    text <a name="
49.    text ">
50.    text <a href="#
51.    text " style="text-decoration:none">
52.    text </title></head><body bgcolor="#FFFFEE" text="#808080"><code>
 
53.    text <font color="#
54.    text <font color="#000000"><hr><h1>
55.    text </h1><hr>
56.    0 c,
57. 
58. VARIABLE color                                  \ current color
52.    text <font color="#
53.    text <font color="#000000"><hr><h1>
54.    text </h1><hr>
55.    0 c,
56. 
57. VARIABLE color                                  \ current color
59. VARIABLE oldcolor -1 oldcolor !                 \ previous color
 
60. 
61. : fontcolor ( color -- ) BASE @ >R              \ change font color
58. 
59. : fontcolor ( color -- ) BASE @ >R              \ change font color
62.    misctext 6 line 0 HEX <# # # # # # # #> out
60.    misctext 5 line 0 HEX <# # # # # # # #> out
63.    misctext 2 line       R> BASE ! ;
64. 
65. : col ( color <name> -- )                       \ define a font color
66.    CREATE , DOES> @ color ! ;
67. 
68. HEX
69. 808080 col unknown
70. 008000 col commentary
71. CC0000 col numeric
72. 990080 col values
73. 000000 col userwords
74. 009999 col userdefiner
75. CC00CC col variables
76. 0000FF col core_ws
77. 0000FF col core_ext_ws
78. 0000FF col block_ws
79. 0000FF col double_ws
80. 0000FF col exception_ws
81. 0000FF col facilities_ws
82. 0000FF col file_ws
83. 0000FF col fp_ws
84. 0000FF col local_ws
85. 0000FF col malloc_ws
86. 0000FF col progtools_ws
87. 0000FF col searchord_ws
88. 0000FF col string_ws
89. DECIMAL
90. 
61.    misctext 2 line       R> BASE ! ;
62. 
63. : col ( color <name> -- )                       \ define a font color
64.    CREATE , DOES> @ color ! ;
65. 
66. HEX
67. 808080 col unknown
68. 008000 col commentary
69. CC0000 col numeric
70. 990080 col values
71. 000000 col userwords
72. 009999 col userdefiner
73. CC00CC col variables
74. 0000FF col core_ws
75. 0000FF col core_ext_ws
76. 0000FF col block_ws
77. 0000FF col double_ws
78. 0000FF col exception_ws
79. 0000FF col facilities_ws
80. 0000FF col file_ws
81. 0000FF col fp_ws
82. 0000FF col local_ws
83. 0000FF col malloc_ws
84. 0000FF col progtools_ws
85. 0000FF col searchord_ws
86. 0000FF col string_ws
87. DECIMAL
88. 
91. CREATE begin_header                             \ begin of HTML file
89. CREATE begin_header                             \ begin of HTML file part 1
92.    text <html> <head>
93.    text <meta http-equiv="Content-Type" content="text/html;">
94.    text <meta name="GENERATOR" content="Forth2HTML 0.0">
95.    text <title>
96.    0 C,
97. 
90.    text <html> <head>
91.    text <meta http-equiv="Content-Type" content="text/html;">
92.    text <meta name="GENERATOR" content="Forth2HTML 0.0">
93.    text <title>
94.    0 C,
95. 
 
96. \ body defaults: the most common link color (blue) is made the default color
97. \ the most common plain text color (green) is made default.
98. 
99. CREATE mid_header                               \ begin of HTML file part 2
100.    text </title></head>
101.    text <body bgcolor="#FFFFEE" link="0000FF" vlink="0000FF" alink="0000FF">
102.    text <code>
103.    0 C,
104. 
98. CREATE end_header                               \ end of HTML file
99.    text </code></body>
100.    text </html>
101.    0 C,
102. 
105. CREATE end_header                               \ end of HTML file
106.    text </code></body>
107.    text </html>
108.    0 C,
109. 
 
110. HEX
103. : setcolor ( -- )                               \ select next color
111. : setcolor ( -- )                               \ select next color
104.    color @ DUP oldcolor @ <>
105.    DROP TRUE \ always select a color so viewed hyperlinks don't change color
106.    IF DUP fontcolor THEN oldcolor ! ;
112.    attrib @ 1 = color @ 0000FF = AND 0=         \ blue link: don't color
113.    IF color @ fontcolor THEN ;
114. DECIMAL
107. 
108. VARIABLE bltally
109. : outh    ( a n -- )                            \ HTMLized text output
110.    999 bltally !
111.    BOUNDS ?DO I C@ CASE
112.       [CHAR] & OF S" &amp;"  out ENDOF
113.       [CHAR] < OF S" &lt;"   out ENDOF
114.       [CHAR] > OF S" &gt;"   out ENDOF
115.       [CHAR] " OF S" &quot;" out ENDOF
116.       BL       OF bltally @ 0= IF S"  " ELSE S" &nbsp;" THEN out
117.                 1 bltally +!     ENDOF
118.       I 1 out   0 bltally !
119.    ENDCASE LOOP ;
120. 
121. : label ( addr len -- ) /a                      \ associate a label with a word
122.    misctext 1 line outh
123.    misctext 2 line 1 attrib ! ;
124. 
125. : std    ( word color <string> -- )
126.    CREATE ' , ' , BL WORD COUNT ,$
127.    DOES> /a DUP >R  2 CELLS +
128.    misctext 0 line                              \ begin hyperlink
129.    BASE @ >R DECIMAL
130.    COUNT 0 0 2OVER >NUMBER 2DROP D>S
131.    R> BASE ! CASE                               \ choose file name
132.        6 OF S" dpans6.htm#"  out ENDOF
133.        7 OF S" dpans7.htm#"  out ENDOF
134.        8 OF S" dpans8.htm#"  out ENDOF
135.        9 OF S" dpans9.htm#"  out ENDOF
136.       10 OF S" dpans10.htm#" out ENDOF
137.       11 OF S" dpans11.htm#" out ENDOF
138.       12 OF S" dpans12.htm#" out ENDOF
139.       13 OF S" dpans13.htm#" out ENDOF
140.       14 OF S" dpans14.htm#" out ENDOF
141.       15 OF S" dpans15.htm#" out ENDOF
142.       16 OF S" dpans16.htm#" out ENDOF
143.       17 OF S" dpans17.htm#" out ENDOF
144.       ABORT" Undefined source file"
145.    ENDCASE  out s" >" out
146.    1 attrib !
147.    R> 2@ SWAP EXECUTE EXECUTE ;                 \ extra attributes
148. 
149. : genHTML ( -- )                                \ generate pending HTML
150.    PAD COUNT DUP IF setcolor THEN outh /a  0 PAD ! ;
151. 
152. : isnumber? ( addr len -- f )                   \ string converts to number?
153.    0 0 2SWAP >NUMBER NIP NIP NIP 0= ;
154. 
155. : hparse ( a len char -- a' len' )
156.    >R 2DUP R@ SKIP R> SCAN BL SCAN
157.    2SWAP 2 PICK - PAD +PLACE ;
158. 
159. CREATE XPAD 260 CHARS ALLOT                     \ temporary pad for word storage
160. CREATE EPAD  80 CHARS ALLOT                     \ temporary pad for evaluation
161. 
162. : >XPAD ( -- ) PAD COUNT BL SKIP XPAD PLACE ;   \ move to temporary pad
163. 
164. : hint  ( addr len -- )                         \ interpret one line...
165.    BEGIN
166.       0 PAD !  BL hparse PAD C@
167.    WHILE unknown                                \ default color
168.       >XPAD XPAD COUNT hyperlinks SEARCH-WORDLIST \ got a hyperlink for this?
169.       IF DEPTH >R EXECUTE
170.          R> DEPTH <> ABORT" stack depth change in HTML generator"
171.       ELSE
172.          XPAD COUNT BASE @ 10 = IF
173.             >FLOAT IF FDROP numeric THEN        \ valid float or integer
174.          ELSE
175.             isnumber? IF numeric THEN
176.          THEN
177.       THEN genHTML
178.    REPEAT 2DROP
179.    S" <br>" outln ;                             \ new line
180. 
181. CREATE inbuf 260 CHARS ALLOT
182. CREATE fn    128 CHARS ALLOT                    \ file name
183. CREATE fn1   128 CHARS ALLOT                    \ file name backup
184. CREATE pstr  128 CHARS ALLOT                    \ parsed string storage
185. CREATE uname  64 CHARS ALLOT                    \ : definition name
186. 0 VALUE inf
187. VARIABLE nufile                                 \ T if nesting a file
188. VARIABLE utype                                  \ type of defined word
189. VARIABLE hstate
190. VARIABLE linenum
115. 
116. VARIABLE bltally
117. : outh    ( a n -- )                            \ HTMLized text output
118.    999 bltally !
119.    BOUNDS ?DO I C@ CASE
120.       [CHAR] & OF S" &amp;"  out ENDOF
121.       [CHAR] < OF S" &lt;"   out ENDOF
122.       [CHAR] > OF S" &gt;"   out ENDOF
123.       [CHAR] " OF S" &quot;" out ENDOF
124.       BL       OF bltally @ 0= IF S"  " ELSE S" &nbsp;" THEN out
125.                 1 bltally +!     ENDOF
126.       I 1 out   0 bltally !
127.    ENDCASE LOOP ;
128. 
129. : label ( addr len -- ) /a                      \ associate a label with a word
130.    misctext 1 line outh
131.    misctext 2 line 1 attrib ! ;
132. 
133. : std    ( word color <string> -- )
134.    CREATE ' , ' , BL WORD COUNT ,$
135.    DOES> /a DUP >R  2 CELLS +
136.    misctext 0 line                              \ begin hyperlink
137.    BASE @ >R DECIMAL
138.    COUNT 0 0 2OVER >NUMBER 2DROP D>S
139.    R> BASE ! CASE                               \ choose file name
140.        6 OF S" dpans6.htm#"  out ENDOF
141.        7 OF S" dpans7.htm#"  out ENDOF
142.        8 OF S" dpans8.htm#"  out ENDOF
143.        9 OF S" dpans9.htm#"  out ENDOF
144.       10 OF S" dpans10.htm#" out ENDOF
145.       11 OF S" dpans11.htm#" out ENDOF
146.       12 OF S" dpans12.htm#" out ENDOF
147.       13 OF S" dpans13.htm#" out ENDOF
148.       14 OF S" dpans14.htm#" out ENDOF
149.       15 OF S" dpans15.htm#" out ENDOF
150.       16 OF S" dpans16.htm#" out ENDOF
151.       17 OF S" dpans17.htm#" out ENDOF
152.       ABORT" Undefined source file"
153.    ENDCASE  out s" >" out
154.    1 attrib !
155.    R> 2@ SWAP EXECUTE EXECUTE ;                 \ extra attributes
156. 
157. : genHTML ( -- )                                \ generate pending HTML
158.    PAD COUNT DUP IF setcolor THEN outh /a  0 PAD ! ;
159. 
160. : isnumber? ( addr len -- f )                   \ string converts to number?
161.    0 0 2SWAP >NUMBER NIP NIP NIP 0= ;
162. 
163. : hparse ( a len char -- a' len' )
164.    >R 2DUP R@ SKIP R> SCAN BL SCAN
165.    2SWAP 2 PICK - PAD +PLACE ;
166. 
167. CREATE XPAD 260 CHARS ALLOT                     \ temporary pad for word storage
168. CREATE EPAD  80 CHARS ALLOT                     \ temporary pad for evaluation
169. 
170. : >XPAD ( -- ) PAD COUNT BL SKIP XPAD PLACE ;   \ move to temporary pad
171. 
172. : hint  ( addr len -- )                         \ interpret one line...
173.    BEGIN
174.       0 PAD !  BL hparse PAD C@
175.    WHILE unknown                                \ default color
176.       >XPAD XPAD COUNT hyperlinks SEARCH-WORDLIST \ got a hyperlink for this?
177.       IF DEPTH >R EXECUTE
178.          R> DEPTH <> ABORT" stack depth change in HTML generator"
179.       ELSE
180.          XPAD COUNT BASE @ 10 = IF
181.             >FLOAT IF FDROP numeric THEN        \ valid float or integer
182.          ELSE
183.             isnumber? IF numeric THEN
184.          THEN
185.       THEN genHTML
186.    REPEAT 2DROP
187.    S" <br>" outln ;                             \ new line
188. 
189. CREATE inbuf 260 CHARS ALLOT
190. CREATE fn    128 CHARS ALLOT                    \ file name
191. CREATE fn1   128 CHARS ALLOT                    \ file name backup
192. CREATE pstr  128 CHARS ALLOT                    \ parsed string storage
193. CREATE uname  64 CHARS ALLOT                    \ : definition name
194. 0 VALUE inf
195. VARIABLE nufile                                 \ T if nesting a file
196. VARIABLE utype                                  \ type of defined word
197. VARIABLE hstate
198. VARIABLE linenum
 
199. VARIABLE special                                \ special action, 0=none
191. 
192. : ofn   ( -- addr len )                         \ output file name
193.    fn COUNT 2DUP [CHAR] . SCAN NIP - EPAD PLACE
194.    S" .htm" EPAD +PLACE   EPAD COUNT ;
195. 
196. : hcreate ( addr len -- )
197.    S" CREATE " EPAD PLACE  EPAD +PLACE
198.    GET-CURRENT >R hyperlinks SET-CURRENT
199.    EPAD COUNT EVALUATE    R> SET-CURRENT ;      \ create a hyperlink generator
200. 
201. \ The user defined words use the following data structure:
202. \ CELL   xt of coloring word
203. \ STRING name of reference word
204. \ STRING name of file
205. 
206. : deflink ( addr -- )                           \ make hyperlink from data structure
207.    DUP @ EXECUTE CELL+                          \ set color
208.    DUP COUNT + COUNT ofn COMPARE                \ in an external file?
209.    IF   misctext 0 line DUP COUNT + COUNT out   \ yes, put file name
210.         S" #" out COUNT outh S" >" out
211.    ELSE misctext 3 line COUNT outh              \ no, just use the name
212.         misctext 4 line
213.    THEN 1 attrib ! ;
214. 
215. : defx  ( a len xt -- a' len' )
216.    >R genHTML BL hparse >XPAD                   \ output defining word
217.    XPAD COUNT 2DUP hcreate R> , ,$ ofn ,$
218.    DOES> deflink ;
219. 
220. : labelnow   genHTML XPAD COUNT label ;
221. : defdat ['] numeric   defx numeric   labelnow ;
222. : defvar ['] variables defx variables labelnow ;
223. : defusr ['] userwords defx userwords labelnow ;
224. : defval ['] values    defx values    labelnow ;
225. : defdef ['] userdefiner defx userdefiner labelnow ;
226. 
227. : hstate=0 ( -- )             0 hstate ! ;
228. : hstate=1 ( -- )             1 hstate ! ;
200. 
201. : ofn   ( -- addr len )                         \ output file name
202.    fn COUNT 2DUP [CHAR] . SCAN NIP - EPAD PLACE
203.    S" .htm" EPAD +PLACE   EPAD COUNT ;
204. 
205. : hcreate ( addr len -- )
206.    S" CREATE " EPAD PLACE  EPAD +PLACE
207.    GET-CURRENT >R hyperlinks SET-CURRENT
208.    EPAD COUNT EVALUATE    R> SET-CURRENT ;      \ create a hyperlink generator
209. 
210. \ The user defined words use the following data structure:
211. \ CELL   xt of coloring word
212. \ STRING name of reference word
213. \ STRING name of file
214. 
215. : deflink ( addr -- )                           \ make hyperlink from data structure
216.    DUP @ EXECUTE CELL+                          \ set color
217.    DUP COUNT + COUNT ofn COMPARE                \ in an external file?
218.    IF   misctext 0 line DUP COUNT + COUNT out   \ yes, put file name
219.         S" #" out COUNT outh S" >" out
220.    ELSE misctext 3 line COUNT outh              \ no, just use the name
221.         misctext 4 line
222.    THEN 1 attrib ! ;
223. 
224. : defx  ( a len xt -- a' len' )
225.    >R genHTML BL hparse >XPAD                   \ output defining word
226.    XPAD COUNT 2DUP hcreate R> , ,$ ofn ,$
227.    DOES> deflink ;
228. 
229. : labelnow   genHTML XPAD COUNT label ;
230. : defdat ['] numeric   defx numeric   labelnow ;
231. : defvar ['] variables defx variables labelnow ;
232. : defusr ['] userwords defx userwords labelnow ;
233. : defval ['] values    defx values    labelnow ;
234. : defdef ['] userdefiner defx userdefiner labelnow ;
235. 
236. : hstate=0 ( -- )             0 hstate ! ;
237. : hstate=1 ( -- )             1 hstate ! ;
 
238. : spec=zero ( -- )            1 special ! ;
229. : skip)  ( a len -- a' len' ) [CHAR] ) hparse ;
230. : skipw  ( a len -- a' len' ) BL hparse ;
239. : skip)  ( a len -- a' len' ) [CHAR] ) hparse ;
240. : skipw  ( a len -- a' len' ) BL hparse ;
 
241. : skipc  ( a len -- a len )   hstate @ 0= IF numeric skipw THEN ;
231. : skip"  ( a len -- a' len' )                   \ copy string to pstr
232.    genHTML [CHAR] " hparse PAD COUNT 1- pstr PLACE ;
233. 
234. \ ------------------------------------------------------------------------------
235. \ ":" definitions might be defining words, so they can't be assumed to be defusr
236. \ types. ":" makes a label and saves the name for later use by ";" which makes
237. \ a hyperlink or a hyperlink defining word.
238. 
239. :NONAME                                         \ normal : definition
240.    uname COUNT ['] userwords defx 2DROP  0 PAD !
241. ; CONSTANT normal_def
242. 
243. :NONAME
244.    uname COUNT 2DUP hcreate ['] userwords , ,$ ofn ,$
245.    DOES> deflink defdef
246. ; CONSTANT defining_def
247. 
248. : defunk ( a len -- a' len' )                   \ starting unknown definition
249.    hstate=1  normal_def utype !                 \ save name of : definition
250.    genHTML skipw userwords PAD COUNT BL SKIP 2DUP uname PLACE label ;
251. 
252. : resunk ( -- )                                 \ resolve unknown defined word
253.    genHTML utype @ EXECUTE hstate=0 ;
254. 
255. : created ( -- ) hstate @
256.    IF   defining_def utype !                    \ make ; create a defining word
257.    ELSE defdat                                  \ not compiling
258.    THEN ;
259. 
260. \ ------------------------------------------------------------------------------
261. 
262. : header  ( addr len -- )                       \ output big header text
242. : skip"  ( a len -- a' len' )                   \ copy string to pstr
243.    genHTML [CHAR] " hparse PAD COUNT 1- pstr PLACE ;
244. 
245. \ ------------------------------------------------------------------------------
246. \ ":" definitions might be defining words, so they can't be assumed to be defusr
247. \ types. ":" makes a label and saves the name for later use by ";" which makes
248. \ a hyperlink or a hyperlink defining word.
249. 
250. :NONAME                                         \ normal : definition
251.    uname COUNT ['] userwords defx 2DROP  0 PAD !
252. ; CONSTANT normal_def
253. 
254. :NONAME
255.    uname COUNT 2DUP hcreate ['] userwords , ,$ ofn ,$
256.    DOES> deflink defdef
257. ; CONSTANT defining_def
258. 
259. : defunk ( a len -- a' len' )                   \ starting unknown definition
260.    hstate=1  normal_def utype !                 \ save name of : definition
261.    genHTML skipw userwords PAD COUNT BL SKIP 2DUP uname PLACE label ;
262. 
263. : resunk ( -- )                                 \ resolve unknown defined word
264.    genHTML utype @ EXECUTE hstate=0 ;
265. 
266. : created ( -- ) hstate @
267.    IF   defining_def utype !                    \ make ; create a defining word
268.    ELSE defdat                                  \ not compiling
269.    THEN ;
270. 
271. \ ------------------------------------------------------------------------------
272. 
273. : header  ( addr len -- )                       \ output big header text
263.    misctext 7 line outln misctext 8 line ;
274.    misctext 6 line outln misctext 7 line ;
264. 
265. : _incfil ( addr -- )                           \ trigger file nesting
266.    fn COUNT fn1 PLACE COUNT BL SKIP fn place 1 nufile ! ;
267. 
268. : incfile ( a len -- a' len' )                  \ include a file
269.    genHTML skipw PAD _incfil ;
270. 
271. : "incfil ( a len -- a' len' )                  \ include file from S" filename"
272.    skipw pstr _incfil ;
273. 
274. : hfill  ( -- len )                             \ read next line of file
275.    inbuf 256 inf READ-LINE ABORT" Error reading file" ;
276. 
277. : open  ( -- ) cr ." Reading " fn COUNT type ."  at line " linenum @ .
278.    0 linenum !
279.    fn COUNT R/O OPEN-FILE ABORT" Error opening source file" to inf ;
280. 
281. : close ( -- ) cr ." closing " fn COUNT type
282.    inf CLOSE-FILE ABORT" Error closing file" ;
283. 
284. : oopen ( -- )
285.    ofn W/O CREATE-FILE ABORT" Error creating file" to outf
286.    begin_header boiler                          \ begin boilerplate
275. 
276. : _incfil ( addr -- )                           \ trigger file nesting
277.    fn COUNT fn1 PLACE COUNT BL SKIP fn place 1 nufile ! ;
278. 
279. : incfile ( a len -- a' len' )                  \ include a file
280.    genHTML skipw PAD _incfil ;
281. 
282. : "incfil ( a len -- a' len' )                  \ include file from S" filename"
283.    skipw pstr _incfil ;
284. 
285. : hfill  ( -- len )                             \ read next line of file
286.    inbuf 256 inf READ-LINE ABORT" Error reading file" ;
287. 
288. : open  ( -- ) cr ." Reading " fn COUNT type ."  at line " linenum @ .
289.    0 linenum !
290.    fn COUNT R/O OPEN-FILE ABORT" Error opening source file" to inf ;
291. 
292. : close ( -- ) cr ." closing " fn COUNT type
293.    inf CLOSE-FILE ABORT" Error closing file" ;
294. 
295. : oopen ( -- )
296.    ofn W/O CREATE-FILE ABORT" Error creating file" to outf
297.    begin_header boiler                          \ begin boilerplate
287.    fn COUNT outln  misctext 5 line              \ title and end boilerplate
298.    fn COUNT outln  mid_header boiler            \ title and end boilerplate
288.    fn COUNT header ;
289. 
290. : HTML          ( <infile> -- )
291.    0 TO screen-only  0 nufile !                 \ force usage of file
292.    BL WORD COUNT fn PLACE open oopen            \ open input and output files
293.    -1 DUP >R outf >R                            \ file nest uses stacks
294.    hstate=0
295.    BEGIN
299.    fn COUNT header ;
300. 
301. : HTML          ( <infile> -- )
302.    0 TO screen-only  0 nufile !                 \ force usage of file
303.    BL WORD COUNT fn PLACE open oopen            \ open input and output files
304.    -1 DUP >R outf >R                            \ file nest uses stacks
305.    hstate=0
306.    BEGIN
296.       BEGIN nufile @                            \ nest a file?
307.       BEGIN 0 special !                         \ process line
308.          nufile @                               \ nest a file?
297.          IF   inf outf
298.               open oopen  outf >R               \ open new files
299.               0 nufile !
300.          THEN hfill
301.       WHILE inbuf SWAP hint 1 linenum +!
302.       REPEAT DROP
303.       close fn1 COUNT fn PLACE                  \ restore file name
304.       DUP -1 <>
305.       IF   TO outf TO inf FALSE                 \ unnest files
306.       ELSE TRUE
307.       THEN
308.    UNTIL DROP
309.    BEGIN R> DUP -1 <>                           \ close all output files
310.    WHILE end_header boiler                      \ finish up HTML
311.       close-file ABORT" Error closing file"
312.    REPEAT DROP ;
313. 
314. : q             ( -- ) 1 TO screen-only         \ single line test
315.    -1 word count inbuf place inbuf count hint ;
316. 
309.          IF   inf outf
310.               open oopen  outf >R               \ open new files
311.               0 nufile !
312.          THEN hfill
313.       WHILE inbuf SWAP hint 1 linenum +!
314.       REPEAT DROP
315.       close fn1 COUNT fn PLACE                  \ restore file name
316.       DUP -1 <>
317.       IF   TO outf TO inf FALSE                 \ unnest files
318.       ELSE TRUE
319.       THEN
320.    UNTIL DROP
321.    BEGIN R> DUP -1 <>                           \ close all output files
322.    WHILE end_header boiler                      \ finish up HTML
323.       close-file ABORT" Error closing file"
324.    REPEAT DROP ;
325. 
326. : q             ( -- ) 1 TO screen-only         \ single line test
327.    -1 word count inbuf place inbuf count hint ;
328. 
 
329. \ 0 [IF] is often used as a comment. If it is used as a comment, scan the file
330. \ for a [THEN]. [THEN] must be on the next line or beyond.
331. 
332. : upp ( an--) BOUNDS ?DO I C@ [CHAR] a > IF I C@ 32 - I C! THEN LOOP \ uppercase
333. ;
334. 
335. : bigif  ( a len -- a len )  special @ 1 =
336.    IF    genHTML commentary setcolor outh       \ finish up this line
337.       BEGIN hfill      S" <br>" outln
338.       WHILE >R inbuf EPAD R@ MOVE
339.          EPAD R@ upp                            \ uppercase for search
340.          EPAD R@ S" [THEN]" SEARCH
341.          IF   DROP EPAD - inbuf OVER PAD PLACE  \ before [THEN] is comment
342.               genHTML
343.               inbuf R> ROT /STRING EXIT
344.          ELSE 2DROP inbuf R> outh               \ whole line is comment
345.          THEN
346.       REPEAT DROP -1 ABORT" Missing [THEN]"
347.    THEN ;
348. 
317. \ =============================================================================
318. 
319. : _DEFINITIONS DEFINITIONS ;
320. 
321. hyperlinks SET-CURRENT
322. \ The following words are not in the ANS standard but are very common.
323. : VOCABULARY    defusr ;
324. : DEFER         defusr ;
325. : INCLUDE       hstate @ 0= IF incfile THEN ;
326. : FLOAD         hstate @ 0= IF incfile THEN ;
327. : BINARY        2 BASE ! ;
328. : OCTAL         8 BASE ! ;
349. \ =============================================================================
350. 
351. : _DEFINITIONS DEFINITIONS ;
352. 
353. hyperlinks SET-CURRENT
354. \ The following words are not in the ANS standard but are very common.
355. : VOCABULARY    defusr ;
356. : DEFER         defusr ;
357. : INCLUDE       hstate @ 0= IF incfile THEN ;
358. : FLOAD         hstate @ 0= IF incfile THEN ;
359. : BINARY        2 BASE ! ;
360. : OCTAL         8 BASE ! ;
329. : 0             numeric  ;
361. : 0             numeric spec=zero ;
330. : 1             numeric  ;
331. : -1            numeric  ;
332. 
333. \ The rest is ANS Forth standard
334. 
335. : \             commentary genHTML PAD PLACE  PAD 0 ;
336. 
337. (   NAME                ACTION  COLOR           REFERENCE   )
338. (   ------------------  ------  --------------  ----------- )
339. std !                   NOOP    core_ws         6.1.0010
340. std #                   NOOP    core_ws         6.1.0030
341. std #>                  NOOP    core_ws         6.1.0040
342. std #S                  NOOP    core_ws         6.1.0050
343. std '                   NOOP    core_ws         6.1.0070
344. std (                   skip)   commentary      6.1.0080
345. std *                   NOOP    core_ws         6.1.0090
346. std */                  NOOP    core_ws         6.1.0100
347. std */MOD               NOOP    core_ws         6.1.0110
348. std +                   NOOP    core_ws         6.1.0120
349. std +!                  NOOP    core_ws         6.1.0130
350. std +LOOP               NOOP    core_ws         6.1.0140
351. std ,                   NOOP    core_ws         6.1.0150
352. std -                   NOOP    core_ws         6.1.0160
353. std .                   NOOP    core_ws         6.1.0180
354. std ."                  skip"   numeric         6.1.0190
355. std /                   NOOP    core_ws         6.1.0230
356. std /MOD                NOOP    core_ws         6.1.0240
357. std 0<                  NOOP    core_ws         6.1.0250
358. std 0=                  NOOP    core_ws         6.1.0270
359. std 1+                  NOOP    core_ws         6.1.0290
360. std 1-                  NOOP    core_ws         6.1.0300
361. std 2!                  NOOP    core_ws         6.1.0310
362. std 2*                  NOOP    core_ws         6.1.0320
363. std 2/                  NOOP    core_ws         6.1.0330
364. std 2@                  NOOP    core_ws         6.1.0350
365. std 2DROP               NOOP    core_ws         6.1.0370
366. std 2DUP                NOOP    core_ws         6.1.0380
367. std 2OVER               NOOP    core_ws         6.1.0400
368. std 2SWAP               NOOP    core_ws         6.1.0430
369. std :                   defunk  core_ws         6.1.0450
370. std ;                   resunk  core_ws         6.1.0460
371. std <                   NOOP    core_ws         6.1.0480
372. std <#                  NOOP    core_ws         6.1.0490
373. std =                   NOOP    core_ws         6.1.0530
374. std >                   NOOP    core_ws         6.1.0540
375. std >BODY               NOOP    core_ws         6.1.0550
376. std >IN                 NOOP    core_ws         6.1.0560
377. std >NUMBER             NOOP    core_ws         6.1.0570
378. std >R                  NOOP    core_ws         6.1.0580
379. std ?DUP                NOOP    core_ws         6.1.0630
380. std @                   NOOP    core_ws         6.1.0650
381. std ABORT               NOOP    core_ws         6.1.0670
382. std ABORT"              skip"   numeric         6.1.0680
383. std ABS                 NOOP    core_ws         6.1.0690
384. std ACCEPT              NOOP    core_ws         6.1.0695
385. std ALIGN               NOOP    core_ws         6.1.0705
386. std ALIGNED             NOOP    core_ws         6.1.0706
387. std ALLOT               NOOP    core_ws         6.1.0710
388. std AND                 NOOP    core_ws         6.1.0720
389. std BASE                NOOP    core_ws         6.1.0750
390. std BEGIN               NOOP    core_ws         6.1.0760
391. std BL                  NOOP    numeric         6.1.0770
392. std C!                  NOOP    core_ws         6.1.0850
393. std C,                  NOOP    core_ws         6.1.0860
394. std C@                  NOOP    core_ws         6.1.0870
395. std CELL+               NOOP    core_ws         6.1.0880
396. std CELLS               NOOP    core_ws         6.1.0890
362. : 1             numeric  ;
363. : -1            numeric  ;
364. 
365. \ The rest is ANS Forth standard
366. 
367. : \             commentary genHTML PAD PLACE  PAD 0 ;
368. 
369. (   NAME                ACTION  COLOR           REFERENCE   )
370. (   ------------------  ------  --------------  ----------- )
371. std !                   NOOP    core_ws         6.1.0010
372. std #                   NOOP    core_ws         6.1.0030
373. std #>                  NOOP    core_ws         6.1.0040
374. std #S                  NOOP    core_ws         6.1.0050
375. std '                   NOOP    core_ws         6.1.0070
376. std (                   skip)   commentary      6.1.0080
377. std *                   NOOP    core_ws         6.1.0090
378. std */                  NOOP    core_ws         6.1.0100
379. std */MOD               NOOP    core_ws         6.1.0110
380. std +                   NOOP    core_ws         6.1.0120
381. std +!                  NOOP    core_ws         6.1.0130
382. std +LOOP               NOOP    core_ws         6.1.0140
383. std ,                   NOOP    core_ws         6.1.0150
384. std -                   NOOP    core_ws         6.1.0160
385. std .                   NOOP    core_ws         6.1.0180
386. std ."                  skip"   numeric         6.1.0190
387. std /                   NOOP    core_ws         6.1.0230
388. std /MOD                NOOP    core_ws         6.1.0240
389. std 0<                  NOOP    core_ws         6.1.0250
390. std 0=                  NOOP    core_ws         6.1.0270
391. std 1+                  NOOP    core_ws         6.1.0290
392. std 1-                  NOOP    core_ws         6.1.0300
393. std 2!                  NOOP    core_ws         6.1.0310
394. std 2*                  NOOP    core_ws         6.1.0320
395. std 2/                  NOOP    core_ws         6.1.0330
396. std 2@                  NOOP    core_ws         6.1.0350
397. std 2DROP               NOOP    core_ws         6.1.0370
398. std 2DUP                NOOP    core_ws         6.1.0380
399. std 2OVER               NOOP    core_ws         6.1.0400
400. std 2SWAP               NOOP    core_ws         6.1.0430
401. std :                   defunk  core_ws         6.1.0450
402. std ;                   resunk  core_ws         6.1.0460
403. std <                   NOOP    core_ws         6.1.0480
404. std <#                  NOOP    core_ws         6.1.0490
405. std =                   NOOP    core_ws         6.1.0530
406. std >                   NOOP    core_ws         6.1.0540
407. std >BODY               NOOP    core_ws         6.1.0550
408. std >IN                 NOOP    core_ws         6.1.0560
409. std >NUMBER             NOOP    core_ws         6.1.0570
410. std >R                  NOOP    core_ws         6.1.0580
411. std ?DUP                NOOP    core_ws         6.1.0630
412. std @                   NOOP    core_ws         6.1.0650
413. std ABORT               NOOP    core_ws         6.1.0670
414. std ABORT"              skip"   numeric         6.1.0680
415. std ABS                 NOOP    core_ws         6.1.0690
416. std ACCEPT              NOOP    core_ws         6.1.0695
417. std ALIGN               NOOP    core_ws         6.1.0705
418. std ALIGNED             NOOP    core_ws         6.1.0706
419. std ALLOT               NOOP    core_ws         6.1.0710
420. std AND                 NOOP    core_ws         6.1.0720
421. std BASE                NOOP    core_ws         6.1.0750
422. std BEGIN               NOOP    core_ws         6.1.0760
423. std BL                  NOOP    numeric         6.1.0770
424. std C!                  NOOP    core_ws         6.1.0850
425. std C,                  NOOP    core_ws         6.1.0860
426. std C@                  NOOP    core_ws         6.1.0870
427. std CELL+               NOOP    core_ws         6.1.0880
428. std CELLS               NOOP    core_ws         6.1.0890
397. std CHAR                NOOP    core_ws         6.1.0895
429. std CHAR                skipc   core_ws         6.1.0895
398. std CHAR+               NOOP    core_ws         6.1.0897
399. std CHARS               NOOP    core_ws         6.1.0898
400. std CONSTANT            defdat  core_ws         6.1.0950
401. std COUNT               NOOP    core_ws         6.1.0980
402. std CR                  NOOP    core_ws         6.1.0990
403. std CREATE              created core_ws         6.1.1000
404. std DECIMAL             DECIMAL core_ws         6.1.1170
405. std DEPTH               NOOP    core_ws         6.1.1200
406. std DO                  NOOP    core_ws         6.1.1240
407. std DOES>               NOOP    core_ws         6.1.1250
408. std DROP                NOOP    core_ws         6.1.1260
409. std DUP                 NOOP    core_ws         6.1.1290
410. std ELSE                NOOP    core_ws         6.1.1310
411. std EMIT                NOOP    core_ws         6.1.1320
412. std ENVIRONMENT?        NOOP    core_ws         6.1.1345
413. std EVALUATE            NOOP    core_ws         6.1.1360
414. std EXECUTE             NOOP    core_ws         6.1.1370
415. std EXIT                NOOP    core_ws         6.1.1380
416. std FILL                NOOP    core_ws         6.1.1540
417. std FIND                NOOP    core_ws         6.1.1550
418. std FM/MOD              NOOP    core_ws         6.1.1561
419. std HERE                NOOP    core_ws         6.1.1650
420. std HOLD                NOOP    core_ws         6.1.1670
421. std I                   NOOP    core_ws         6.1.1680
422. std IF                  NOOP    core_ws         6.1.1700
423. std IMMEDIATE           NOOP    core_ws         6.1.1710
424. std INVERT              NOOP    core_ws         6.1.1720
425. std J                   NOOP    core_ws         6.1.1730
426. std KEY                 NOOP    core_ws         6.1.1750
427. std LEAVE               NOOP    core_ws         6.1.1760
428. std LITERAL             NOOP    core_ws         6.1.1780
429. std LOOP                NOOP    core_ws         6.1.1800
430. std LSHIFT              NOOP    core_ws         6.1.1805
431. std M*                  NOOP    core_ws         6.1.1810
432. std MAX                 NOOP    core_ws         6.1.1870
433. std MIN                 NOOP    core_ws         6.1.1880
434. std MOD                 NOOP    core_ws         6.1.1890
435. std MOVE                NOOP    core_ws         6.1.1900
436. std NEGATE              NOOP    core_ws         6.1.1910
437. std OR                  NOOP    core_ws         6.1.1980
438. std OVER                NOOP    core_ws         6.1.1990
439. std POSTPONE            NOOP    core_ws         6.1.2033
440. std QUIT                NOOP    core_ws         6.1.2050
441. std R>                  NOOP    core_ws         6.1.2060
442. std R@                  NOOP    core_ws         6.1.2070
443. std RECURSE             NOOP    core_ws         6.1.2120
444. std REPEAT              NOOP    core_ws         6.1.2140
445. std ROT                 NOOP    core_ws         6.1.2160
446. std RSHIFT              NOOP    core_ws         6.1.2162
447. std S"                  skip"   numeric         6.1.2165
448. std S>D                 NOOP    core_ws         6.1.2170
449. std SIGN                NOOP    core_ws         6.1.2210
450. std SM/REM              NOOP    core_ws         6.1.2214
451. std SOURCE              NOOP    core_ws         6.1.2216
452. std SPACE               NOOP    core_ws         6.1.2220
453. std SPACES              NOOP    core_ws         6.1.2230
454. std STATE               NOOP    core_ws         6.1.2250
455. std SWAP                NOOP    core_ws         6.1.2260
456. std THEN                NOOP    core_ws         6.1.2270
457. std TYPE                NOOP    core_ws         6.1.2310
458. std U.                  NOOP    core_ws         6.1.2320
459. std U<                  NOOP    core_ws         6.1.2340
460. std UM*                 NOOP    core_ws         6.1.2360
461. std UM/MOD              NOOP    core_ws         6.1.2370
462. std UNLOOP              NOOP    core_ws         6.1.2380
463. std UNTIL               NOOP    core_ws         6.1.2390
464. std VARIABLE            defvar  core_ws         6.1.2410
465. std WHILE               NOOP    core_ws         6.1.2430
466. std WORD                NOOP    core_ws         6.1.2450
467. std XOR                 NOOP    core_ws         6.1.2490
468. std [                  hstate=0 core_ws         6.1.2500
469. std [']                 skipw   numeric         6.1.2510
470. std [CHAR]              skipw   numeric         6.1.2520
471. std ]                  hstate=1 core_ws         6.1.2540
472. std #TIB                NOOP    core_ext_ws     6.2.0060
473. std .(                  skip)   commentary      6.2.0200
474. std .R                  NOOP    core_ext_ws     6.2.0210
475. std 0<>                 NOOP    core_ext_ws     6.2.0260
476. std 0>                  NOOP    core_ext_ws     6.2.0280
477. std 2>R                 NOOP    core_ext_ws     6.2.0340
478. std 2R>                 NOOP    core_ext_ws     6.2.0410
479. std 2R@                 NOOP    core_ext_ws     6.2.0415
480. std :NONAME             NOOP    core_ext_ws     6.2.0455
481. std <>                  NOOP    core_ext_ws     6.2.0500
482. std ?DO                 NOOP    core_ext_ws     6.2.0620
483. std AGAIN               NOOP    core_ext_ws     6.2.0700
484. std C"                  skip"   numeric         6.2.0855
485. std CASE                NOOP    core_ext_ws     6.2.0873
486. std COMPILE,            NOOP    core_ext_ws     6.2.0945
487. std CONVERT             NOOP    core_ext_ws     6.2.0970
488. std ENDCASE             NOOP    core_ext_ws     6.2.1342
489. std ENDOF               NOOP    core_ext_ws     6.2.1343
490. std ERASE               NOOP    core_ext_ws     6.2.1350
491. std EXPECT              NOOP    core_ext_ws     6.2.1390
430. std CHAR+               NOOP    core_ws         6.1.0897
431. std CHARS               NOOP    core_ws         6.1.0898
432. std CONSTANT            defdat  core_ws         6.1.0950
433. std COUNT               NOOP    core_ws         6.1.0980
434. std CR                  NOOP    core_ws         6.1.0990
435. std CREATE              created core_ws         6.1.1000
436. std DECIMAL             DECIMAL core_ws         6.1.1170
437. std DEPTH               NOOP    core_ws         6.1.1200
438. std DO                  NOOP    core_ws         6.1.1240
439. std DOES>               NOOP    core_ws         6.1.1250
440. std DROP                NOOP    core_ws         6.1.1260
441. std DUP                 NOOP    core_ws         6.1.1290
442. std ELSE                NOOP    core_ws         6.1.1310
443. std EMIT                NOOP    core_ws         6.1.1320
444. std ENVIRONMENT?        NOOP    core_ws         6.1.1345
445. std EVALUATE            NOOP    core_ws         6.1.1360
446. std EXECUTE             NOOP    core_ws         6.1.1370
447. std EXIT                NOOP    core_ws         6.1.1380
448. std FILL                NOOP    core_ws         6.1.1540
449. std FIND                NOOP    core_ws         6.1.1550
450. std FM/MOD              NOOP    core_ws         6.1.1561
451. std HERE                NOOP    core_ws         6.1.1650
452. std HOLD                NOOP    core_ws         6.1.1670
453. std I                   NOOP    core_ws         6.1.1680
454. std IF                  NOOP    core_ws         6.1.1700
455. std IMMEDIATE           NOOP    core_ws         6.1.1710
456. std INVERT              NOOP    core_ws         6.1.1720
457. std J                   NOOP    core_ws         6.1.1730
458. std KEY                 NOOP    core_ws         6.1.1750
459. std LEAVE               NOOP    core_ws         6.1.1760
460. std LITERAL             NOOP    core_ws         6.1.1780
461. std LOOP                NOOP    core_ws         6.1.1800
462. std LSHIFT              NOOP    core_ws         6.1.1805
463. std M*                  NOOP    core_ws         6.1.1810
464. std MAX                 NOOP    core_ws         6.1.1870
465. std MIN                 NOOP    core_ws         6.1.1880
466. std MOD                 NOOP    core_ws         6.1.1890
467. std MOVE                NOOP    core_ws         6.1.1900
468. std NEGATE              NOOP    core_ws         6.1.1910
469. std OR                  NOOP    core_ws         6.1.1980
470. std OVER                NOOP    core_ws         6.1.1990
471. std POSTPONE            NOOP    core_ws         6.1.2033
472. std QUIT                NOOP    core_ws         6.1.2050
473. std R>                  NOOP    core_ws         6.1.2060
474. std R@                  NOOP    core_ws         6.1.2070
475. std RECURSE             NOOP    core_ws         6.1.2120
476. std REPEAT              NOOP    core_ws         6.1.2140
477. std ROT                 NOOP    core_ws         6.1.2160
478. std RSHIFT              NOOP    core_ws         6.1.2162
479. std S"                  skip"   numeric         6.1.2165
480. std S>D                 NOOP    core_ws         6.1.2170
481. std SIGN                NOOP    core_ws         6.1.2210
482. std SM/REM              NOOP    core_ws         6.1.2214
483. std SOURCE              NOOP    core_ws         6.1.2216
484. std SPACE               NOOP    core_ws         6.1.2220
485. std SPACES              NOOP    core_ws         6.1.2230
486. std STATE               NOOP    core_ws         6.1.2250
487. std SWAP                NOOP    core_ws         6.1.2260
488. std THEN                NOOP    core_ws         6.1.2270
489. std TYPE                NOOP    core_ws         6.1.2310
490. std U.                  NOOP    core_ws         6.1.2320
491. std U<                  NOOP    core_ws         6.1.2340
492. std UM*                 NOOP    core_ws         6.1.2360
493. std UM/MOD              NOOP    core_ws         6.1.2370
494. std UNLOOP              NOOP    core_ws         6.1.2380
495. std UNTIL               NOOP    core_ws         6.1.2390
496. std VARIABLE            defvar  core_ws         6.1.2410
497. std WHILE               NOOP    core_ws         6.1.2430
498. std WORD                NOOP    core_ws         6.1.2450
499. std XOR                 NOOP    core_ws         6.1.2490
500. std [                  hstate=0 core_ws         6.1.2500
501. std [']                 skipw   numeric         6.1.2510
502. std [CHAR]              skipw   numeric         6.1.2520
503. std ]                  hstate=1 core_ws         6.1.2540
504. std #TIB                NOOP    core_ext_ws     6.2.0060
505. std .(                  skip)   commentary      6.2.0200
506. std .R                  NOOP    core_ext_ws     6.2.0210
507. std 0<>                 NOOP    core_ext_ws     6.2.0260
508. std 0>                  NOOP    core_ext_ws     6.2.0280
509. std 2>R                 NOOP    core_ext_ws     6.2.0340
510. std 2R>                 NOOP    core_ext_ws     6.2.0410
511. std 2R@                 NOOP    core_ext_ws     6.2.0415
512. std :NONAME             NOOP    core_ext_ws     6.2.0455
513. std <>                  NOOP    core_ext_ws     6.2.0500
514. std ?DO                 NOOP    core_ext_ws     6.2.0620
515. std AGAIN               NOOP    core_ext_ws     6.2.0700
516. std C"                  skip"   numeric         6.2.0855
517. std CASE                NOOP    core_ext_ws     6.2.0873
518. std COMPILE,            NOOP    core_ext_ws     6.2.0945
519. std CONVERT             NOOP    core_ext_ws     6.2.0970
520. std ENDCASE             NOOP    core_ext_ws     6.2.1342
521. std ENDOF               NOOP    core_ext_ws     6.2.1343
522. std ERASE               NOOP    core_ext_ws     6.2.1350
523. std EXPECT              NOOP    core_ext_ws     6.2.1390
492. std FALSE               NOOP    numeric         6.2.1485
524. std FALSE             spec=zero numeric         6.2.1485
493. std HEX                 HEX     core_ext_ws     6.2.1660
494. std MARKER              defusr  core_ext_ws     6.2.1850
495. std NIP                 NOOP    core_ext_ws     6.2.1930
496. std OF                  NOOP    core_ext_ws     6.2.1950
497. std PAD                 NOOP    core_ext_ws     6.2.2000
498. std PARSE               NOOP    core_ext_ws     6.2.2008
499. std PICK                NOOP    core_ext_ws     6.2.2030
500. std QUERY               NOOP    core_ext_ws     6.2.2040
501. std REFILL              NOOP    core_ext_ws     6.2.2125
502. std RESTORE-INPUT       NOOP    core_ext_ws     6.2.2148
503. std ROLL                NOOP    core_ext_ws     6.2.2150
504. std SAVE-INPUT          NOOP    core_ext_ws     6.2.2182
505. std SOURCE-ID           NOOP    core_ext_ws     6.2.2218
506. std SPAN                NOOP    core_ext_ws     6.2.2240
507. std TIB                 NOOP    core_ext_ws     6.2.2290
508. std TO                  NOOP    core_ext_ws     6.2.2295
509. std TRUE                NOOP    numeric         6.2.2298
510. std TUCK                NOOP    core_ext_ws     6.2.2300
511. std U.R                 NOOP    core_ext_ws     6.2.2330
512. std U>                  NOOP    core_ext_ws     6.2.2350
513. std UNUSED              NOOP    core_ext_ws     6.2.2395
514. std VALUE               defval  core_ext_ws     6.2.2405
515. std WITHIN              NOOP    core_ext_ws     6.2.2440
516. std [COMPILE]           NOOP    core_ext_ws     6.2.2530
517. std BLK                 NOOP    block_ws        7.6.1.0790
518. std BLOCK               NOOP    block_ws        7.6.1.0800
519. std BUFFER              NOOP    block_ws        7.6.1.0820
520. std FLUSH               NOOP    block_ws        7.6.1.1559
521. std LOAD                NOOP    block_ws        7.6.1.1790
522. std SAVE-BUFFERS        NOOP    block_ws        7.6.1.2180
523. std UPDATE              NOOP    block_ws        7.6.1.2400
524. std EMPTY-BUFFERS       NOOP    block_ws        7.6.2.1330
525. std LIST                NOOP    block_ws        7.6.2.1770
526. std SCR                 NOOP    block_ws        7.6.2.2190
527. std THRU                NOOP    block_ws        7.6.2.2280
528. std 2CONSTANT           defdat  double_ws       8.6.1.0360
529. std 2LITERAL            NOOP    double_ws       8.6.1.0390
530. std 2VARIABLE           defvar  double_ws       8.6.1.0440
531. std D+                  NOOP    double_ws       8.6.1.1040
532. std D-                  NOOP    double_ws       8.6.1.1050
533. std D.                  NOOP    double_ws       8.6.1.1060
534. std D.R                 NOOP    double_ws       8.6.1.1070
535. std D0<                 NOOP    double_ws       8.6.1.1075
536. std D0=                 NOOP    double_ws       8.6.1.1080
537. std D2*                 NOOP    double_ws       8.6.1.1090
538. std D2/                 NOOP    double_ws       8.6.1.1100
539. std D<                  NOOP    double_ws       8.6.1.1110
540. std D=                  NOOP    double_ws       8.6.1.1120
541. std D>S                 NOOP    double_ws       8.6.1.1140
542. std DABS                NOOP    double_ws       8.6.1.1160
543. std DMAX                NOOP    double_ws       8.6.1.1210
544. std DMIN                NOOP    double_ws       8.6.1.1220
545. std DNEGATE             NOOP    double_ws       8.6.1.1230
546. std M*/                 NOOP    double_ws       8.6.1.1820
547. std M+                  NOOP    double_ws       8.6.1.1830
548. std 2ROT                NOOP    double_ws       8.6.2.0420
549. std DU<                 NOOP    double_ws       8.6.2.1270
550. std CATCH               NOOP    exception_ws    9.6.1.0875
551. std THROW               NOOP    exception_ws    9.6.1.2275
552. std AT-XY               NOOP    facilities_ws   10.6.1.0742
553. std KEY?                NOOP    facilities_ws   10.6.1.1755
554. std PAGE                NOOP    facilities_ws   10.6.1.2005
555. std EKEY                NOOP    facilities_ws   10.6.2.1305
556. std EKEY<CHAR           NOOP    facilities_ws   10.6.2.1306
557. std EKEY?               NOOP    facilities_ws   10.6.2.1307
558. std EMIT?               NOOP    facilities_ws   10.6.2.1325
559. std MS                  NOOP    facilities_ws   10.6.2.1905
560. std TIME&DATE           NOOP    facilities_ws   10.6.2.2292
561. std BIN                 NOOP    file_ws         11.6.1.0765
562. std CLOSE-FILE          NOOP    file_ws         11.6.1.0900
563. std CREATE-FILE         NOOP    file_ws         11.6.1.1010
564. std DELETE-FILE         NOOP    file_ws         11.6.1.1190
565. std FILE-POSITION       NOOP    file_ws         11.6.1.1520
566. std FILE-SIZE           NOOP    file_ws         11.6.1.1522
567. std INCLUDE-FILE        NOOP    file_ws         11.6.1.1717
568. std INCLUDED            "incfil file_ws         11.6.1.1718
569. std OPEN-FILE           NOOP    file_ws         11.6.1.1970
570. std R/O                 NOOP    file_ws         11.6.1.2054
571. std R/W                 NOOP    file_ws         11.6.1.2056
572. std READ-FILE           NOOP    file_ws         11.6.1.2080
573. std READ-LINE           NOOP    file_ws         11.6.1.2090
574. std REPOSITION-FILE     NOOP    file_ws         11.6.1.2142
575. std RESIZE-FILE         NOOP    file_ws         11.6.1.2147
576. std W/O                 NOOP    file_ws         11.6.1.2425
577. std WRITE-FILE          NOOP    file_ws         11.6.1.2480
578. std WRITE-LINE          NOOP    file_ws         11.6.1.2485
579. std FILE-STATUS         NOOP    file_ws         11.6.2.1524
580. std FLUSH-FILE          NOOP    file_ws         11.6.2.1560
581. std RENAME-FILE         NOOP    file_ws         11.6.2.2130
582. std >FLOAT              NOOP    fp_ws           12.6.1.0558
583. std D>F                 NOOP    fp_ws           12.6.1.1130
584. std F!                  NOOP    fp_ws           12.6.1.1400
585. std F*                  NOOP    fp_ws           12.6.1.1410
586. std F+                  NOOP    fp_ws           12.6.1.1420
587. std F-                  NOOP    fp_ws           12.6.1.1425
588. std F/                  NOOP    fp_ws           12.6.1.1430
589. std F0<                 NOOP    fp_ws           12.6.1.1440
590. std F0=                 NOOP    fp_ws           12.6.1.1450
591. std F<                  NOOP    fp_ws           12.6.1.1460
592. std F>D                 NOOP    fp_ws           12.6.1.1460
593. std F@                  NOOP    fp_ws           12.6.1.1472
594. std FALIGN              NOOP    fp_ws           12.6.1.1479
595. std FALIGNED            NOOP    fp_ws           12.6.1.1483
596. std FCONSTANT           defdat  fp_ws           12.6.1.1492
597. std FDEPTH              NOOP    fp_ws           12.6.1.1497
598. std FDROP               NOOP    fp_ws           12.6.1.1500
599. std FDUP                NOOP    fp_ws           12.6.1.1510
600. std FLITERAL            NOOP    fp_ws           12.6.1.1552
601. std FLOAT+              NOOP    fp_ws           12.6.1.1555
602. std FLOATS              NOOP    fp_ws           12.6.1.1556
603. std FLOOR               NOOP    fp_ws           12.6.1.1558
604. std FMAX                NOOP    fp_ws           12.6.1.1562
605. std FMIN                NOOP    fp_ws           12.6.1.1565
606. std FNEGATE             NOOP    fp_ws           12.6.1.1567
607. std FOVER               NOOP    fp_ws           12.6.1.1600
608. std FROT                NOOP    fp_ws           12.6.1.1610
609. std FROUND              NOOP    fp_ws           12.6.1.1612
610. std FSWAP               NOOP    fp_ws           12.6.1.1620
611. std FVARIABLE           defvar  fp_ws           12.6.1.1630
612. std REPRESENT           NOOP    fp_ws           12.6.1.2143
613. std DF!                 NOOP    fp_ws           12.6.2.1203
614. std DF@                 NOOP    fp_ws           12.6.2.1204
615. std DFALIGN             NOOP    fp_ws           12.6.2.1205
616. std DFALIGNED           NOOP    fp_ws           12.6.2.1207
617. std DFLOAT+             NOOP    fp_ws           12.6.2.1208
618. std DFLOATS             NOOP    fp_ws           12.6.2.1209
619. std F**                 NOOP    fp_ws           12.6.2.1415
620. std F.                  NOOP    fp_ws           12.6.2.1427
621. std FABS                NOOP    fp_ws           12.6.2.1474
622. std FACOS               NOOP    fp_ws           12.6.2.1476
623. std FACOSH              NOOP    fp_ws           12.6.2.1477
624. std FALOG               NOOP    fp_ws           12.6.2.1484
625. std FASIN               NOOP    fp_ws           12.6.2.1486
626. std FASINH              NOOP    fp_ws           12.6.2.1487
627. std FATAN               NOOP    fp_ws           12.6.2.1488
628. std FATAN2              NOOP    fp_ws           12.6.2.1489
629. std FATANH              NOOP    fp_ws           12.6.2.1491
630. std FCOS                NOOP    fp_ws           12.6.2.1493
631. std FCOSH               NOOP    fp_ws           12.6.2.1494
632. std FE.                 NOOP    fp_ws           12.6.2.1513
633. std FEXP                NOOP    fp_ws           12.6.2.1515
634. std FEXPM1              NOOP    fp_ws           12.6.2.1516
635. std FLN                 NOOP    fp_ws           12.6.2.1553
636. std FLNP1               NOOP    fp_ws           12.6.2.1554
637. std FLOG                NOOP    fp_ws           12.6.2.1557
638. std FS.                 NOOP    fp_ws           12.6.2.1613
639. std FSIN                NOOP    fp_ws           12.6.2.1614
640. std FSINCOS             NOOP    fp_ws           12.6.2.1616
641. std FSINH               NOOP    fp_ws           12.6.2.1617
642. std FSQRT               NOOP    fp_ws           12.6.2.1618
643. std FTAN                NOOP    fp_ws           12.6.2.1625
644. std FTANH               NOOP    fp_ws           12.6.2.1626
645. std F~                  NOOP    fp_ws           12.6.2.1640
646. std PRECISION           NOOP    fp_ws           12.6.2.2035
647. std SET-PRECISION       NOOP    fp_ws           12.6.2.2200
648. std SF!                 NOOP    fp_ws           12.6.2.2202
649. std SF@                 NOOP    fp_ws           12.6.2.2203
650. std SFALIGN             NOOP    fp_ws           12.6.2.2204
651. std SFALIGNED           NOOP    fp_ws           12.6.2.2206
652. std SFLOAT+             NOOP    fp_ws           12.6.2.2207
653. std SFLOATS             NOOP    fp_ws           12.6.2.2208
654. std (LOCAL)             NOOP    local_ws        13.6.1.0086
655. std LOCALS|             NOOP    local_ws        13.6.2.1795
656. std ALLOCATE            NOOP    malloc_ws       14.6.1.0707
657. std FREE                NOOP    malloc_ws       14.6.1.1605
658. std RESIZE              NOOP    malloc_ws       14.6.1.2145
659. std .S                  NOOP    progtools_ws    15.6.1.0220
660. std ?                   NOOP    progtools_ws    15.6.1.0600
661. std DUMP                NOOP    progtools_ws    15.6.1.1280
662. std SEE                 NOOP    progtools_ws    15.6.1.2194
663. std WORDS               NOOP    progtools_ws    15.6.1.2465
664. std ;CODE               resunk  progtools_ws    15.6.2.0470
665. std AHEAD               NOOP    progtools_ws    15.6.2.0702
666. std ASSEMBLER           NOOP    progtools_ws    15.6.2.0740
667. std BYE                 NOOP    progtools_ws    15.6.2.0830
668. std CODE                defusr  progtools_ws    15.6.2.0930
669. std CS-PICK             NOOP    progtools_ws    15.6.2.1015
670. std CS-ROLL             NOOP    progtools_ws    15.6.2.1020
671. std EDITOR              NOOP    progtools_ws    15.6.2.1300
672. std FORGET              NOOP    progtools_ws    15.6.2.1580
673. std [ELSE]              NOOP    progtools_ws    15.6.2.2531
525. std HEX                 HEX     core_ext_ws     6.2.1660
526. std MARKER              defusr  core_ext_ws     6.2.1850
527. std NIP                 NOOP    core_ext_ws     6.2.1930
528. std OF                  NOOP    core_ext_ws     6.2.1950
529. std PAD                 NOOP    core_ext_ws     6.2.2000
530. std PARSE               NOOP    core_ext_ws     6.2.2008
531. std PICK                NOOP    core_ext_ws     6.2.2030
532. std QUERY               NOOP    core_ext_ws     6.2.2040
533. std REFILL              NOOP    core_ext_ws     6.2.2125
534. std RESTORE-INPUT       NOOP    core_ext_ws     6.2.2148
535. std ROLL                NOOP    core_ext_ws     6.2.2150
536. std SAVE-INPUT          NOOP    core_ext_ws     6.2.2182
537. std SOURCE-ID           NOOP    core_ext_ws     6.2.2218
538. std SPAN                NOOP    core_ext_ws     6.2.2240
539. std TIB                 NOOP    core_ext_ws     6.2.2290
540. std TO                  NOOP    core_ext_ws     6.2.2295
541. std TRUE                NOOP    numeric         6.2.2298
542. std TUCK                NOOP    core_ext_ws     6.2.2300
543. std U.R                 NOOP    core_ext_ws     6.2.2330
544. std U>                  NOOP    core_ext_ws     6.2.2350
545. std UNUSED              NOOP    core_ext_ws     6.2.2395
546. std VALUE               defval  core_ext_ws     6.2.2405
547. std WITHIN              NOOP    core_ext_ws     6.2.2440
548. std [COMPILE]           NOOP    core_ext_ws     6.2.2530
549. std BLK                 NOOP    block_ws        7.6.1.0790
550. std BLOCK               NOOP    block_ws        7.6.1.0800
551. std BUFFER              NOOP    block_ws        7.6.1.0820
552. std FLUSH               NOOP    block_ws        7.6.1.1559
553. std LOAD                NOOP    block_ws        7.6.1.1790
554. std SAVE-BUFFERS        NOOP    block_ws        7.6.1.2180
555. std UPDATE              NOOP    block_ws        7.6.1.2400
556. std EMPTY-BUFFERS       NOOP    block_ws        7.6.2.1330
557. std LIST                NOOP    block_ws        7.6.2.1770
558. std SCR                 NOOP    block_ws        7.6.2.2190
559. std THRU                NOOP    block_ws        7.6.2.2280
560. std 2CONSTANT           defdat  double_ws       8.6.1.0360
561. std 2LITERAL            NOOP    double_ws       8.6.1.0390
562. std 2VARIABLE           defvar  double_ws       8.6.1.0440
563. std D+                  NOOP    double_ws       8.6.1.1040
564. std D-                  NOOP    double_ws       8.6.1.1050
565. std D.                  NOOP    double_ws       8.6.1.1060
566. std D.R                 NOOP    double_ws       8.6.1.1070
567. std D0<                 NOOP    double_ws       8.6.1.1075
568. std D0=                 NOOP    double_ws       8.6.1.1080
569. std D2*                 NOOP    double_ws       8.6.1.1090
570. std D2/                 NOOP    double_ws       8.6.1.1100
571. std D<                  NOOP    double_ws       8.6.1.1110
572. std D=                  NOOP    double_ws       8.6.1.1120
573. std D>S                 NOOP    double_ws       8.6.1.1140
574. std DABS                NOOP    double_ws       8.6.1.1160
575. std DMAX                NOOP    double_ws       8.6.1.1210
576. std DMIN                NOOP    double_ws       8.6.1.1220
577. std DNEGATE             NOOP    double_ws       8.6.1.1230
578. std M*/                 NOOP    double_ws       8.6.1.1820
579. std M+                  NOOP    double_ws       8.6.1.1830
580. std 2ROT                NOOP    double_ws       8.6.2.0420
581. std DU<                 NOOP    double_ws       8.6.2.1270
582. std CATCH               NOOP    exception_ws    9.6.1.0875
583. std THROW               NOOP    exception_ws    9.6.1.2275
584. std AT-XY               NOOP    facilities_ws   10.6.1.0742
585. std KEY?                NOOP    facilities_ws   10.6.1.1755
586. std PAGE                NOOP    facilities_ws   10.6.1.2005
587. std EKEY                NOOP    facilities_ws   10.6.2.1305
588. std EKEY<CHAR           NOOP    facilities_ws   10.6.2.1306
589. std EKEY?               NOOP    facilities_ws   10.6.2.1307
590. std EMIT?               NOOP    facilities_ws   10.6.2.1325
591. std MS                  NOOP    facilities_ws   10.6.2.1905
592. std TIME&DATE           NOOP    facilities_ws   10.6.2.2292
593. std BIN                 NOOP    file_ws         11.6.1.0765
594. std CLOSE-FILE          NOOP    file_ws         11.6.1.0900
595. std CREATE-FILE         NOOP    file_ws         11.6.1.1010
596. std DELETE-FILE         NOOP    file_ws         11.6.1.1190
597. std FILE-POSITION       NOOP    file_ws         11.6.1.1520
598. std FILE-SIZE           NOOP    file_ws         11.6.1.1522
599. std INCLUDE-FILE        NOOP    file_ws         11.6.1.1717
600. std INCLUDED            "incfil file_ws         11.6.1.1718
601. std OPEN-FILE           NOOP    file_ws         11.6.1.1970
602. std R/O                 NOOP    file_ws         11.6.1.2054
603. std R/W                 NOOP    file_ws         11.6.1.2056
604. std READ-FILE           NOOP    file_ws         11.6.1.2080
605. std READ-LINE           NOOP    file_ws         11.6.1.2090
606. std REPOSITION-FILE     NOOP    file_ws         11.6.1.2142
607. std RESIZE-FILE         NOOP    file_ws         11.6.1.2147
608. std W/O                 NOOP    file_ws         11.6.1.2425
609. std WRITE-FILE          NOOP    file_ws         11.6.1.2480
610. std WRITE-LINE          NOOP    file_ws         11.6.1.2485
611. std FILE-STATUS         NOOP    file_ws         11.6.2.1524
612. std FLUSH-FILE          NOOP    file_ws         11.6.2.1560
613. std RENAME-FILE         NOOP    file_ws         11.6.2.2130
614. std >FLOAT              NOOP    fp_ws           12.6.1.0558
615. std D>F                 NOOP    fp_ws           12.6.1.1130
616. std F!                  NOOP    fp_ws           12.6.1.1400
617. std F*                  NOOP    fp_ws           12.6.1.1410
618. std F+                  NOOP    fp_ws           12.6.1.1420
619. std F-                  NOOP    fp_ws           12.6.1.1425
620. std F/                  NOOP    fp_ws           12.6.1.1430
621. std F0<                 NOOP    fp_ws           12.6.1.1440
622. std F0=                 NOOP    fp_ws           12.6.1.1450
623. std F<                  NOOP    fp_ws           12.6.1.1460
624. std F>D                 NOOP    fp_ws           12.6.1.1460
625. std F@                  NOOP    fp_ws           12.6.1.1472
626. std FALIGN              NOOP    fp_ws           12.6.1.1479
627. std FALIGNED            NOOP    fp_ws           12.6.1.1483
628. std FCONSTANT           defdat  fp_ws           12.6.1.1492
629. std FDEPTH              NOOP    fp_ws           12.6.1.1497
630. std FDROP               NOOP    fp_ws           12.6.1.1500
631. std FDUP                NOOP    fp_ws           12.6.1.1510
632. std FLITERAL            NOOP    fp_ws           12.6.1.1552
633. std FLOAT+              NOOP    fp_ws           12.6.1.1555
634. std FLOATS              NOOP    fp_ws           12.6.1.1556
635. std FLOOR               NOOP    fp_ws           12.6.1.1558
636. std FMAX                NOOP    fp_ws           12.6.1.1562
637. std FMIN                NOOP    fp_ws           12.6.1.1565
638. std FNEGATE             NOOP    fp_ws           12.6.1.1567
639. std FOVER               NOOP    fp_ws           12.6.1.1600
640. std FROT                NOOP    fp_ws           12.6.1.1610
641. std FROUND              NOOP    fp_ws           12.6.1.1612
642. std FSWAP               NOOP    fp_ws           12.6.1.1620
643. std FVARIABLE           defvar  fp_ws           12.6.1.1630
644. std REPRESENT           NOOP    fp_ws           12.6.1.2143
645. std DF!                 NOOP    fp_ws           12.6.2.1203
646. std DF@                 NOOP    fp_ws           12.6.2.1204
647. std DFALIGN             NOOP    fp_ws           12.6.2.1205
648. std DFALIGNED           NOOP    fp_ws           12.6.2.1207
649. std DFLOAT+             NOOP    fp_ws           12.6.2.1208
650. std DFLOATS             NOOP    fp_ws           12.6.2.1209
651. std F**                 NOOP    fp_ws           12.6.2.1415
652. std F.                  NOOP    fp_ws           12.6.2.1427
653. std FABS                NOOP    fp_ws           12.6.2.1474
654. std FACOS               NOOP    fp_ws           12.6.2.1476
655. std FACOSH              NOOP    fp_ws           12.6.2.1477
656. std FALOG               NOOP    fp_ws           12.6.2.1484
657. std FASIN               NOOP    fp_ws           12.6.2.1486
658. std FASINH              NOOP    fp_ws           12.6.2.1487
659. std FATAN               NOOP    fp_ws           12.6.2.1488
660. std FATAN2              NOOP    fp_ws           12.6.2.1489
661. std FATANH              NOOP    fp_ws           12.6.2.1491
662. std FCOS                NOOP    fp_ws           12.6.2.1493
663. std FCOSH               NOOP    fp_ws           12.6.2.1494
664. std FE.                 NOOP    fp_ws           12.6.2.1513
665. std FEXP                NOOP    fp_ws           12.6.2.1515
666. std FEXPM1              NOOP    fp_ws           12.6.2.1516
667. std FLN                 NOOP    fp_ws           12.6.2.1553
668. std FLNP1               NOOP    fp_ws           12.6.2.1554
669. std FLOG                NOOP    fp_ws           12.6.2.1557
670. std FS.                 NOOP    fp_ws           12.6.2.1613
671. std FSIN                NOOP    fp_ws           12.6.2.1614
672. std FSINCOS             NOOP    fp_ws           12.6.2.1616
673. std FSINH               NOOP    fp_ws           12.6.2.1617
674. std FSQRT               NOOP    fp_ws           12.6.2.1618
675. std FTAN                NOOP    fp_ws           12.6.2.1625
676. std FTANH               NOOP    fp_ws           12.6.2.1626
677. std F~                  NOOP    fp_ws           12.6.2.1640
678. std PRECISION           NOOP    fp_ws           12.6.2.2035
679. std SET-PRECISION       NOOP    fp_ws           12.6.2.2200
680. std SF!                 NOOP    fp_ws           12.6.2.2202
681. std SF@                 NOOP    fp_ws           12.6.2.2203
682. std SFALIGN             NOOP    fp_ws           12.6.2.2204
683. std SFALIGNED           NOOP    fp_ws           12.6.2.2206
684. std SFLOAT+             NOOP    fp_ws           12.6.2.2207
685. std SFLOATS             NOOP    fp_ws           12.6.2.2208
686. std (LOCAL)             NOOP    local_ws        13.6.1.0086
687. std LOCALS|             NOOP    local_ws        13.6.2.1795
688. std ALLOCATE            NOOP    malloc_ws       14.6.1.0707
689. std FREE                NOOP    malloc_ws       14.6.1.1605
690. std RESIZE              NOOP    malloc_ws       14.6.1.2145
691. std .S                  NOOP    progtools_ws    15.6.1.0220
692. std ?                   NOOP    progtools_ws    15.6.1.0600
693. std DUMP                NOOP    progtools_ws    15.6.1.1280
694. std SEE                 NOOP    progtools_ws    15.6.1.2194
695. std WORDS               NOOP    progtools_ws    15.6.1.2465
696. std ;CODE               resunk  progtools_ws    15.6.2.0470
697. std AHEAD               NOOP    progtools_ws    15.6.2.0702
698. std ASSEMBLER           NOOP    progtools_ws    15.6.2.0740
699. std BYE                 NOOP    progtools_ws    15.6.2.0830
700. std CODE                defusr  progtools_ws    15.6.2.0930
701. std CS-PICK             NOOP    progtools_ws    15.6.2.1015
702. std CS-ROLL             NOOP    progtools_ws    15.6.2.1020
703. std EDITOR              NOOP    progtools_ws    15.6.2.1300
704. std FORGET              NOOP    progtools_ws    15.6.2.1580
705. std [ELSE]              NOOP    progtools_ws    15.6.2.2531
674. std [IF]                NOOP    progtools_ws    15.6.2.2532
706. std [IF]                bigif   progtools_ws    15.6.2.2532
675. std [THEN]              NOOP    progtools_ws    15.6.2.2533
676. std DEFINITIONS         NOOP    searchord_ws    16.6.1.1180
677. std FORTH-WORDLIST      NOOP    searchord_ws    16.6.1.1595
678. std GET-CURRENT         NOOP    searchord_ws    16.6.1.1643
679. std GET-ORDER           NOOP    searchord_ws    16.6.1.1647
680. std SEARCH-WORDLIST     NOOP    searchord_ws    16.6.1.2192
681. std SET-CURRENT         NOOP    searchord_ws    16.6.1.2195
682. std SET-ORDER           NOOP    searchord_ws    16.6.1.2197
683. std WORDLIST            NOOP    searchord_ws    16.6.1.2460
684. std ALSO                NOOP    searchord_ws    16.6.2.0715
685. std FORTH               NOOP    searchord_ws    16.6.2.1590
686. std ONLY                NOOP    searchord_ws    16.6.2.1965
687. std ORDER               NOOP    searchord_ws    16.6.2.1985
688. std PREVIOUS            NOOP    searchord_ws    16.6.2.2037
689. std -TRAILING           NOOP    string_ws       17.6.1.0170
690. std /STRING             NOOP    string_ws       17.6.1.0245
691. std BLANK               NOOP    string_ws       17.6.1.0780
692. std CMOVE               NOOP    string_ws       17.6.1.0910
693. std CMOVE>              NOOP    string_ws       17.6.1.0920
694. std COMPARE             NOOP    string_ws       17.6.1.0935
695. std SEARCH              NOOP    string_ws       17.6.1.2191
696. std SLITERAL            NOOP    string_ws       17.6.1.2212
697. 
698. _DEFINITIONS
699. 
700. \ Revision history
707. std [THEN]              NOOP    progtools_ws    15.6.2.2533
708. std DEFINITIONS         NOOP    searchord_ws    16.6.1.1180
709. std FORTH-WORDLIST      NOOP    searchord_ws    16.6.1.1595
710. std GET-CURRENT         NOOP    searchord_ws    16.6.1.1643
711. std GET-ORDER           NOOP    searchord_ws    16.6.1.1647
712. std SEARCH-WORDLIST     NOOP    searchord_ws    16.6.1.2192
713. std SET-CURRENT         NOOP    searchord_ws    16.6.1.2195
714. std SET-ORDER           NOOP    searchord_ws    16.6.1.2197
715. std WORDLIST            NOOP    searchord_ws    16.6.1.2460
716. std ALSO                NOOP    searchord_ws    16.6.2.0715
717. std FORTH               NOOP    searchord_ws    16.6.2.1590
718. std ONLY                NOOP    searchord_ws    16.6.2.1965
719. std ORDER               NOOP    searchord_ws    16.6.2.1985
720. std PREVIOUS            NOOP    searchord_ws    16.6.2.2037
721. std -TRAILING           NOOP    string_ws       17.6.1.0170
722. std /STRING             NOOP    string_ws       17.6.1.0245
723. std BLANK               NOOP    string_ws       17.6.1.0780
724. std CMOVE               NOOP    string_ws       17.6.1.0910
725. std CMOVE>              NOOP    string_ws       17.6.1.0920
726. std COMPARE             NOOP    string_ws       17.6.1.0935
727. std SEARCH              NOOP    string_ws       17.6.1.2191
728. std SLITERAL            NOOP    string_ws       17.6.1.2212
729. 
730. _DEFINITIONS
731. 
732. \ Revision history
701. \ 0. Released to guinea pigs via comp.lang.forth
733. \ 0. 1st release to guinea pigs via comp.lang.forth
734. \ 1. Added multi-line comment 0 [IF]. Colored CHAR outside definitions.
702. 
703. 
735. 
736.