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