diff view
color-brad10.f color-ed5.f
end of diff view
1. 0 [IF]
1. 0 [IF]
2.    Forth to HTML converter
2.    Forth to XML converter
3. 
4.    Main contributors:
5.       Brad Eckert       brad1NO@SPAMtinyboot.com            Original author
3. 
4.    Main contributors:
5.       Brad Eckert       brad1NO@SPAMtinyboot.com            Original author
6.       Ed Beroset      berosetNO@SPAMmindspring.com          Fixed HTML bugs
6.       Ed Beroset      berosetNO@SPAMmindspring.com       XML, XSLT, some fixes 
7.       Dirk Busch         dirkNO@SPAMschneider-busch.de      Added some features
8. 
7.       Dirk Busch         dirkNO@SPAMschneider-busch.de      Added some features
8. 
9.    Revision 10. See bottom for revision history.
9.    Revision 11. See bottom for revision history.
10. 
10. 
11.    This ANS Forth program is public domain. It translates ANS Forth to colorized
12.    HTML. Hyperlinks to the ANS Forth draft standard are inserted for all ANS
11.    This ANS Forth program is public domain. It translates ANS Forth to XML with
12.    the intent that the XML is then postprocesed by XSLT to create documentation
13.    of the Forth program.
14. 
15.    Hyperlinks to the ANS Forth draft standard are inserted for all ANS
13.    standard words. Hyperlinks to user definitions are included.
14. 
16.    standard words. Hyperlinks to user definitions are included.
17. 
15.    Usage: HTML FileName    Generates HTML file from Forth source.
18.    Usage: XML FileName    Generates XML file from Forth source.
16.                            Output file is Filename with .HTM extension.
19.                            Output file is Filename with .HTM extension.
17.           Q [forth code]   Outputs HTML for 1 line to screen
20.           q [forth code]   Outputs XML for 1 line to screen
18. 
19.    Keep in mind that whatever path you use for the input filename will be in the
21. 
22.    Keep in mind that whatever path you use for the input filename will be in the
20.    output files, so don't use a drive letter etc. if the HTML is intended for
23.    output files, so don't use a drive letter etc. if the XML is intended for
21.    distribution on CD or a web site.
22. 
24.    distribution on CD or a web site.
25. 
23.    A framed version of the output file has a "_f.htm" extension. The left frame
24.    is an index of words and the words that use them. The right frame is source.
25.    If you open the index file (_i.htm extension) and click on links, source will
26.    be in a separate window. Still usable but frames are easier.
27. 
 
28.    Q is for debugging. You can use "linenum ?" to show the line number if an
26.    Q is for debugging. You can use "linenum ?" to show the line number if an
29.    ABORT occurs. The HTML is about 8 times as big as the Forth source because of
27.    ABORT occurs. The XML is about 6 times as big as the Forth source because of
30.    all the links, color changes and whitespace.
31. 
28.    all the links, color changes and whitespace.
29. 
32.    INCLUDEd files produce corresponding HTML pages. If a file can't be found,
30.    INCLUDEd files produce corresponding XML pages. If a file can't be found,
33.    it is skipped. Otherwise it is nested.
34. 
35.    When you INCLUDE this file some redefinition complaints may occur. That's
36.    okay since you won't be loading an application on top of this. You can make
37.    a text version of this file by cut-and-paste to a text editor. The browser's
38.    save-as-text function will work too. This file is only 80 columns wide. Note
39.    that the browser may wrap after 80 columns when saving as a text file.
40. 
41.    Users of specific Forths can extend the hyperlink table to point to anchors
42.    in a glossary for that particular Forth.
43. 
44.    This code has been tested under Win32forth, SwiftForth, VFX and Gforth.
45. 
31.    it is skipped. Otherwise it is nested.
32. 
33.    When you INCLUDE this file some redefinition complaints may occur. That's
34.    okay since you won't be loading an application on top of this. You can make
35.    a text version of this file by cut-and-paste to a text editor. The browser's
36.    save-as-text function will work too. This file is only 80 columns wide. Note
37.    that the browser may wrap after 80 columns when saving as a text file.
38. 
39.    Users of specific Forths can extend the hyperlink table to point to anchors
40.    in a glossary for that particular Forth.
41. 
42.    This code has been tested under Win32forth, SwiftForth, VFX and Gforth.
43. 
46.    You can change the following bold/italic/nestable options:
44.    You can change the following nestable options:
47. [THEN]
48. 
49. ONLY FORTH ALSO DEFINITIONS
50. \ ------------------------------------------------------------------------------
45. [THEN]
46. 
47. ONLY FORTH ALSO DEFINITIONS
48. \ ------------------------------------------------------------------------------
51. \ Configuration - You can change the options:
52. 0 VALUE bold                                      \ T if bold text
53. 0 VALUE italic                                    \ T if italic comments
49. \ Configuration - You can change this option:
54. 1 VALUE nestable                                  \ T if INCLUDE nested files
50. 1 VALUE nestable                                  \ T if INCLUDE nested files
55. 1 VALUE linksource                                \ T link to the org. file /7/
56. 1 VALUE frames                                    \ T if using frames /9/
57. : dpanspath S" .\" ;                              \ path to the ANS-Files   /7/
58. : copyright S" "   ;                              \ copyright to output at  /7/
59.                                                   \ the bottom of the HTML-file
60. 0 CONSTANT scheme ( Color scheme )                \ 0 = light background, 1=dark
 
61. \ ------------------------------------------------------------------------------
62. 
63. : undefined ( <name> -- f ) BL WORD FIND NIP 0= ;
64. undefined NOOP   [IF] : NOOP ;                                            [THEN]
65. undefined BOUNDS [IF] : BOUNDS OVER + SWAP ;                              [THEN]
66. undefined /STRING [IF] : /STRING TUCK - >R CHARS + R> ;                   [THEN]
67. undefined C+!    [IF] : C+! SWAP OVER C@ + SWAP C! ;                      [THEN]
68. undefined FDROP  [IF] : FDROP ;         ( no floating point? fake it )    [THEN]
69. undefined >FLOAT [IF] : >FLOAT DROP C@ [CHAR] 0 [CHAR] 9 1+ WITHIN ;      [THEN]
70. undefined SCAN   [IF] : SCAN            ( addr len char -- addr' len' )
71.    >R BEGIN DUP WHILE OVER C@ R@ <> WHILE 1 /STRING REPEAT THEN R> DROP ; [THEN]
72. undefined SKIP   [IF] : SKIP            ( addr len char -- addr' len' )
73.    >R BEGIN DUP WHILE OVER C@ R@ = WHILE 1 /STRING REPEAT THEN R> DROP ;  [THEN]
74. : +PLACE        ( addr len a -- ) 2DUP 2>R COUNT CHARS + SWAP MOVE 2R> C+! ;
75. : PLACE         ( addr len a -- ) 0 OVER C! +PLACE ;
76. : UPC           ( c -- C )  DUP [CHAR] a [CHAR] z 1+ WITHIN IF 32 - THEN ;
51. \ ------------------------------------------------------------------------------
52. 
53. : undefined ( <name> -- f ) BL WORD FIND NIP 0= ;
54. undefined NOOP   [IF] : NOOP ;                                            [THEN]
55. undefined BOUNDS [IF] : BOUNDS OVER + SWAP ;                              [THEN]
56. undefined /STRING [IF] : /STRING TUCK - >R CHARS + R> ;                   [THEN]
57. undefined C+!    [IF] : C+! SWAP OVER C@ + SWAP C! ;                      [THEN]
58. undefined FDROP  [IF] : FDROP ;         ( no floating point? fake it )    [THEN]
59. undefined >FLOAT [IF] : >FLOAT DROP C@ [CHAR] 0 [CHAR] 9 1+ WITHIN ;      [THEN]
60. undefined SCAN   [IF] : SCAN            ( addr len char -- addr' len' )
61.    >R BEGIN DUP WHILE OVER C@ R@ <> WHILE 1 /STRING REPEAT THEN R> DROP ; [THEN]
62. undefined SKIP   [IF] : SKIP            ( addr len char -- addr' len' )
63.    >R BEGIN DUP WHILE OVER C@ R@ = WHILE 1 /STRING REPEAT THEN R> DROP ;  [THEN]
64. : +PLACE        ( addr len a -- ) 2DUP 2>R COUNT CHARS + SWAP MOVE 2R> C+! ;
65. : PLACE         ( addr len a -- ) 0 OVER C! +PLACE ;
66. : UPC           ( c -- C )  DUP [CHAR] a [CHAR] z 1+ WITHIN IF 32 - THEN ;
 
67. : STRING,       ( addr len -- ) DUP C, HERE SWAP DUP ALLOT MOVE ;
77. 
78. 0 VALUE outf                                    \ output to file
79. 1 VALUE screen-only                             \ screen is for testing
80. : werr  ABORT" Error writing file" ;
81. : out   screen-only IF TYPE    ELSE outf WRITE-FILE werr THEN ;
82. : outln screen-only IF TYPE CR ELSE outf WRITE-LINE werr THEN ;
83. 
84. WORDLIST CONSTANT hyperlinks                    \ list of hyperlinks
85. WORDLIST CONSTANT superlinks                    \ hyperlinks that can't change
86. 
68. 
69. 0 VALUE outf                                    \ output to file
70. 1 VALUE screen-only                             \ screen is for testing
71. : werr  ABORT" Error writing file" ;
72. : out   screen-only IF TYPE    ELSE outf WRITE-FILE werr THEN ;
73. : outln screen-only IF TYPE CR ELSE outf WRITE-LINE werr THEN ;
74. 
75. WORDLIST CONSTANT hyperlinks                    \ list of hyperlinks
76. WORDLIST CONSTANT superlinks                    \ hyperlinks that can't change
77. 
 
78. CREATE quot 34 C,
79. : onequote ( -- ) quot 1 out ;
80. : quote ( c-addr -- )
81.     onequote COUNT out onequote ;
82. 
87. VARIABLE attrib
88. : /a      ( -- )         attrib @ IF S" </a>" out THEN 0 attrib ! ;
89. : ,$      ( a len -- )   DUP C, BOUNDS ?DO I C@ C, LOOP ; \ text to dictionary
90. : ,|      ( <text> -- )  [CHAR] | WORD COUNT -TRAILING ,$ ;
91. : line    ( a line# -- ) 0 ?DO COUNT + LOOP COUNT out ;   \ output one string
92. : boiler  ( addr -- )    BEGIN COUNT DUP WHILE 2DUP + >R outln R> REPEAT 2DROP ;
83. VARIABLE attrib
84. : /a      ( -- )         attrib @ IF S" </a>" out THEN 0 attrib ! ;
85. : ,$      ( a len -- )   DUP C, BOUNDS ?DO I C@ C, LOOP ; \ text to dictionary
86. : ,|      ( <text> -- )  [CHAR] | WORD COUNT -TRAILING ,$ ;
87. : line    ( a line# -- ) 0 ?DO COUNT + LOOP COUNT out ;   \ output one string
88. : boiler  ( addr -- )    BEGIN COUNT DUP WHILE 2DUP + >R outln R> REPEAT 2DROP ;
93. : ital(   ( -- )         italic IF S" <i>" out THEN ;
94. : )ital   ( -- )         italic IF S" </i>" out THEN ;
 
95. : newline ( -- )         S" <br />" outln ;
89. : newline ( -- )         S" <br />" outln ;
96. : xcr     ( -- )         S" " outln ;           \ /9/
90. : .<      ( -- )         S" <" out ;
91. : .>      ( -- )         S" >" out ;
92. : ./      ( -- )         S" /" out ;
97. 
98. CREATE misctext                                 \ various attribute strings
99.    ,| <a href="                                                         | \ 0
93. 
94. CREATE misctext                                 \ various attribute strings
95.    ,| <a href="                                                         | \ 0
100.    ,| <a name="x                                                        |
101.    ,| ">                                                                |
102.    ,| <a href="#x                                                       |
103.    ,| "                                                                 |
104.    ,| <span style="color:#                                              |
105.    ,| <hr /><h1>                                                        |
106.    ,| </h1><hr />                                                       |
107.    ,| </span>                                                           |
108.    ,| </a>                                                              |
109.    ,| <HEAD><TITLE>                                                     | \ 10
110.    ,| </TITLE></HEAD>                                                   |
111.    ,| <FRAMESET cols="25%,75%">                                         |
112.    ,| <FRAME SRC="                                                      |
113.    ,| " name="idx"  target="_self">                                     |
114.    ,| " name="main" target="_self">                                     |
115.    ,| </FRAMESET>                                                       |
116.    ,| " target="main">                                                  | \ 17
117.    ,| " target="idx">                                                   |
96.    ,| <a name="x                                                        | \ 1
97.    ,| ">                                                                | \ 2
98.    ,| <a href="#x                                                       | \ 3
99.    ,| <a std="#                                                         | \ 4
100.    ,| <a file="                                                         | \ 5
101.    ,| " href="#x                                                        | \ 6
118.    0 C,
119. 
102.    0 C,
103. 
120. VARIABLE color                                  \ current color
121. VARIABLE infont                                 \ within <font> tag
104. VARIABLE tagtype                                  \ current tagtype
105. VARIABLE intag                                 \ within tag
122. 
123. : <href="       misctext 0 line ;
106. 
107. : <href="       misctext 0 line ;
 
108. : <anchor="     misctext 1 line ;
124. : ">            misctext 2 line ;
109. : ">            misctext 2 line ;
 
110. : <#ref="       misctext 3 line ;
111. : <std="        misctext 4 line ;
112. : <file="       misctext 5 line ;
113. : with_href     misctext 6 line ;
114. 
115. : emittag ( tagtype -- )                        \ change font tagtype
116.    1 intag !
117.    S" <tag type=" out quote .> ;
118. 
119. : tag ( <tagname> <string> -- )
120.    CREATE BL WORD COUNT STRING,
121.    DOES> tagtype ! ;
122. 
123. \      NAME           STRING
124. \      ----           ------
125.    tag unknown        unknown
126.    tag commentary     commentary
127.    tag numeric        numeric
128.    tag errors         errors
129.    tag values         values
130.    tag userwords      userwords
131.    tag userdefiner    userdefiner
132.    tag variables      variables
133.    tag core_ws        core_ws
134.    tag core_ext_ws    core_ext_ws
135.    tag block_ws       block_ws
136.    tag double_ws      double_ws
137.    tag exception_ws   exception_ws
138.    tag facilities_ws  facilities_ws
139.    tag file_ws        file_ws
140.    tag fp_ws          fp_ws
141.    tag local_ws       local_ws
142.    tag malloc_ws      malloc_ws
143.    tag progtools_ws   progtools_ws
144.    tag searchord_ws   searchord_ws
145.    tag string_ws      string_ws
125. 
146. 
126. : fontcolor ( color -- )                        \ change font color
127.    1 infont !
128.    misctext 5 line 0 HEX <# # # # # # # #> out "> ;
129. 
130. : col ( color <name> -- )                       \ define a font color
131.    CREATE , DOES> @ color ! ;
132. 
133. HEX
134. scheme 0 = [IF]                                 \ light background
135.    808080 col unknown
136.    008000 col commentary
137.    990000 col numeric
138.    FF0000 col errors
139.    990080 col values
140.    000000 col userwords
141.    009999 col userdefiner
142.    CC00CC col variables
143.    0000FF col core_ws                           \ core is slightly lighter blue
144.    0000FF col core_ext_ws
145.    0000FF col block_ws
146.    0000FF col double_ws
147.    0000FF col exception_ws
148.    0000FF col facilities_ws
149.    0000FF col file_ws
150.    0000FF col fp_ws
151.    0000FF col local_ws
152.    0000FF col malloc_ws
153.    0000FF col progtools_ws
154.    0000FF col searchord_ws
155.    0000FF col string_ws
156. [ELSE]                                          \ black background
157.    808080 col unknown
158.    00FF00 col commentary
159.    FF8080 col numeric
160.    FF0000 col errors
161.    FF00FF col values
162.    FFFFFF col userwords
163.    00FFFF col userdefiner
164.    FF80FF col variables
165.    8080FF col core_ws
166.    8080FF col core_ext_ws
167.    0000FF col block_ws
168.    0000FF col double_ws
169.    0000FF col exception_ws
170.    0000FF col facilities_ws
171.    0000FF col file_ws
172.    0000FF col fp_ws
173.    0000FF col local_ws
174.    0000FF col malloc_ws
175.    0000FF col progtools_ws
176.    0000FF col searchord_ws
177.    0000FF col string_ws
178. [THEN]
179. DECIMAL
180. 
181. CREATE begin_header                             \ begin of HTML file part 1
147. CREATE begin_header                             \ begin of XML file 
182.    ,| <?xml version="1.0"?>                                                    |
148.    ,| <?xml version="1.0"?>                                                    |
183.    ,| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"                 |
184.    ,|     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">                 |
185.    ,| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">      |
186.    ,| <head>                                                                   |
187.    ,| <meta http-equiv="Content-Type" content="text/xml; charset=iso-8859-1" />|
188.    ,| <meta name="GENERATOR" content="Forth2HTML ver 10" />                    |
189.    ,| <style type="text/css">                                                  |
190. scheme 0 = [IF] ,| body {background: #FFFFEE;}  | [THEN]  \ light background
191. scheme 1 = [IF] ,| body {background: #000000;}  | [THEN]  \ black background
192. scheme 0 = [IF] ,| h1 {color: #000000;}         | [THEN]
193. scheme 1 = [IF] ,| h1 {color: #FFFFFF;}         | [THEN]
194.    ,| p {font-family: monospace;}                                              |
195.    ,| a {text-decoration:none;}                                                |
196.    ,| </style>                                                                 |
197.    ,| <title>                                                                  |
149.    ,| <forth>                                                                  |
198.    0 C,
199. 
150.    0 C,
151. 
200. CREATE mid_header                               \ begin of HTML file part 2
201.    ,| </title></head>                                                          |
202.    ,| <body>                                                                   |
152. CREATE end_header_part1                         \ end of XML file part 1 /7/
153.    ,| </forth>                                                                 |
203.    0 C,
204. 
154.    0 C,
155. 
205. CREATE end_header_part1                         \ end of HTML file part 1 /7/
206.    ,| </p><hr />                                                               |
207.    ,| <h4 style="color:black">                                                 |
208.    0 C,
209. 
210. CREATE end_header_part2                         \ end of HTML file part 2 /8/
211.    ,| <p><a href="http://www.tinyboot.com/ANS/color.htm"><font color="#C0C0C0">|
212.    ,| HTMLized by <u>Forth2HTML</u> ver 10</font></a></p>                      |
213.    ,| </h4>                                                                    |
214.    ,| </body></html>                                                           |
215.    0 C,
156. : settagtype ( -- )                               \ select next tagtype
157.    tagtype @ emittag ;
216. 
158. 
217. : setcolor ( -- )                               \ select next color
218.    color @ fontcolor ;
219. 
220. : closefont ( -- )
221.    infont @ IF
222.    misctext 8 line 0 infont ! THEN ;
159. : closetag ( -- )
160.    intag @ IF
161.    S" </tag>" out 0 intag ! THEN ;
223. 
224. \ In order to represent all ASCII chars as text, some puncuation needs to be
162. 
163. \ In order to represent all ASCII chars as text, some puncuation needs to be
225. \ changed to make it HTML compatible.
164. \ changed to make it XML compatible.
226. 
227. VARIABLE bltally
165. 
166. VARIABLE bltally
228. : outh    ( a n -- )                            \ HTMLized text output
229.    999 bltally !
167. : outh    ( a n -- )                            \ XMLized text output
168.    0 bltally !
230.    BOUNDS ?DO I C@ CASE
231.       [CHAR] & OF S" &amp;"     out ENDOF
232.       [CHAR] < OF S" &lt;"      out ENDOF
233.       [CHAR] > OF S" &gt;"      out ENDOF
234.       [CHAR] " OF S" &quot;"    out ENDOF
169.    BOUNDS ?DO I C@ CASE
170.       [CHAR] & OF S" &amp;"     out ENDOF
171.       [CHAR] < OF S" &lt;"      out ENDOF
172.       [CHAR] > OF S" &gt;"      out ENDOF
173.       [CHAR] " OF S" &quot;"    out ENDOF
235.       [CHAR] © OF S" &copy;"    out ENDOF       \ /7/
236.       BL       OF bltally @ 0= IF S"  " ELSE S" &nbsp;" THEN out
174.            169 OF S" &#169;"    out ENDOF  
175.       BL       OF bltally @ 0= IF S"  " ELSE S" &#160;" THEN out
237.                 1 bltally +!     ENDOF
238.       I 1 out   0 bltally !
239.    ENDCASE LOOP ;
240. 
176.                 1 bltally +!     ENDOF
177.       I 1 out   0 bltally !
178.    ENDCASE LOOP ;
179. 
241. : outhattr  ( a n -- )                          \ HTMLized text output
180. : outhattr  ( a n -- )                          \ XMLized text output
242.    BOUNDS ?DO I C@ CASE
243.       [CHAR] & OF S" amp"       out ENDOF
244.       [CHAR] < OF S" lt"        out ENDOF
245.       [CHAR] > OF S" gt"        out ENDOF
246.       [CHAR] " OF S" quot"      out ENDOF
247.       [CHAR] + OF S" plus"      out ENDOF
248.       [CHAR] ! OF S" bang"      out ENDOF
249.       [CHAR] / OF S" slash"     out ENDOF
250.       [CHAR] \ OF S" backslash" out ENDOF
251.       [CHAR] ' OF S" apos"      out ENDOF
252.       [CHAR] = OF S" equal"     out ENDOF
253.       [CHAR] - OF S" dash"      out ENDOF
254.       [CHAR] @ OF S" at"        out ENDOF
255.       [CHAR] ; OF S" semi"      out ENDOF
256.       [CHAR] * OF S" star"      out ENDOF
257.       [CHAR] ? OF S" question"  out ENDOF
258.       [CHAR] ~ OF S" tilde"     out ENDOF
259.       [CHAR] # OF S" pound"     out ENDOF
260.       [CHAR] , OF S" comma"     out ENDOF
261.       [CHAR] $ OF S" dollar"    out ENDOF
262.       [CHAR] | OF S" bar"       out ENDOF
263.       [CHAR] [ OF S" ltbracket" out ENDOF
264.       [CHAR] ( OF S" ltparen"   out ENDOF
265.       [CHAR] { OF S" ltbrace"   out ENDOF
266.       [CHAR] ] OF S" rtbracket" out ENDOF
267.       [CHAR] ) OF S" rtparen"   out ENDOF
268.       [CHAR] } OF S" rtbrace"   out ENDOF
181.    BOUNDS ?DO I C@ CASE
182.       [CHAR] & OF S" amp"       out ENDOF
183.       [CHAR] < OF S" lt"        out ENDOF
184.       [CHAR] > OF S" gt"        out ENDOF
185.       [CHAR] " OF S" quot"      out ENDOF
186.       [CHAR] + OF S" plus"      out ENDOF
187.       [CHAR] ! OF S" bang"      out ENDOF
188.       [CHAR] / OF S" slash"     out ENDOF
189.       [CHAR] \ OF S" backslash" out ENDOF
190.       [CHAR] ' OF S" apos"      out ENDOF
191.       [CHAR] = OF S" equal"     out ENDOF
192.       [CHAR] - OF S" dash"      out ENDOF
193.       [CHAR] @ OF S" at"        out ENDOF
194.       [CHAR] ; OF S" semi"      out ENDOF
195.       [CHAR] * OF S" star"      out ENDOF
196.       [CHAR] ? OF S" question"  out ENDOF
197.       [CHAR] ~ OF S" tilde"     out ENDOF
198.       [CHAR] # OF S" pound"     out ENDOF
199.       [CHAR] , OF S" comma"     out ENDOF
200.       [CHAR] $ OF S" dollar"    out ENDOF
201.       [CHAR] | OF S" bar"       out ENDOF
202.       [CHAR] [ OF S" ltbracket" out ENDOF
203.       [CHAR] ( OF S" ltparen"   out ENDOF
204.       [CHAR] { OF S" ltbrace"   out ENDOF
205.       [CHAR] ] OF S" rtbracket" out ENDOF
206.       [CHAR] ) OF S" rtparen"   out ENDOF
207.       [CHAR] } OF S" rtbrace"   out ENDOF
 
208.       169      OF S" copy"      out ENDOF  
269.       BL       OF S" _"         out ENDOF
270.       I 1 out
271.    ENDCASE LOOP ;
272. 
209.       BL       OF S" _"         out ENDOF
210.       I 1 out
211.    ENDCASE LOOP ;
212. 
273. : end_header ( -- )                             \ output end of HTML file /7/
274.    end_header_part1 boiler
275.    copyright ?DUP IF outh ELSE drop THEN
276.    end_header_part2 boiler ;
213. : end_header ( -- )                             \ output end of XML file /7/
214.    end_header_part1 boiler ;
277. 
278. : label ( addr len -- ) /a                      \ associate a label with a word
215. 
216. : label ( addr len -- ) /a                      \ associate a label with a word
279.    misctext 1 line outhattr
217.    <anchor=" outhattr
280.    "> 1 attrib ! ;
281. 
282. \ Assuming this is running on a PC, we allocate enough storage that crashes from
283. \ string overflows can't happen.
284. 
285. CREATE inbuf 260 CHARS ALLOT                    \ current line from file
286. CREATE token 260 CHARS ALLOT                    \ last blank delimited string
287. CREATE XPAD  260 CHARS ALLOT                    \ temporary pad for word storage
288. CREATE EPAD  260 CHARS ALLOT                    \ temporary pad for evaluation
289. CREATE fn    260 CHARS ALLOT                    \ file name
290. CREATE fn1   260 CHARS ALLOT                    \ file name backup
291. CREATE fn2   260 CHARS ALLOT                    \ global file name
292. CREATE fn3   260 CHARS ALLOT                    \ index file name
293. CREATE "str" 260 CHARS ALLOT                    \ parsed string storage
294. CREATE uname 260 CHARS ALLOT                    \ : definition name
295. 0 VALUE inf
296. VARIABLE nufile                                 \ T if nesting a file
297. VARIABLE utype                                  \ type of defined word
298. VARIABLE hstate
299. VARIABLE linenum
300. VARIABLE special                                \ special action, 0=none
301. 
218.    "> 1 attrib ! ;
219. 
220. \ Assuming this is running on a PC, we allocate enough storage that crashes from
221. \ string overflows can't happen.
222. 
223. CREATE inbuf 260 CHARS ALLOT                    \ current line from file
224. CREATE token 260 CHARS ALLOT                    \ last blank delimited string
225. CREATE XPAD  260 CHARS ALLOT                    \ temporary pad for word storage
226. CREATE EPAD  260 CHARS ALLOT                    \ temporary pad for evaluation
227. CREATE fn    260 CHARS ALLOT                    \ file name
228. CREATE fn1   260 CHARS ALLOT                    \ file name backup
229. CREATE fn2   260 CHARS ALLOT                    \ global file name
230. CREATE fn3   260 CHARS ALLOT                    \ index file name
231. CREATE "str" 260 CHARS ALLOT                    \ parsed string storage
232. CREATE uname 260 CHARS ALLOT                    \ : definition name
233. 0 VALUE inf
234. VARIABLE nufile                                 \ T if nesting a file
235. VARIABLE utype                                  \ type of defined word
236. VARIABLE hstate
237. VARIABLE linenum
238. VARIABLE special                                \ special action, 0=none
239. 
302. \ Defining word for hyperlinks to words in HTML standards files.
240. \ Defining word for hyperlinks to words in XML standards files.
303. 
241. 
304. : std    ( word 2nd_fn color filename label -- )
305.    CREATE ' , ' , BL WORD COUNT ,$ BL WORD COUNT ,$
242. : std    ( word 2nd_fn tagtype label -- )
243.    CREATE ' , ' , BL WORD COUNT ,$
306.    DOES> /a DUP >R  2 CELLS +
244.    DOES> /a DUP >R  2 CELLS +
307.    <href="                                      \ begin hyperlink
308.    dpanspath out                                \ output path to ANS files /7/
309.    COUNT 2DUP + >R  out S" #" out               \ output file name
310.    R> COUNT out ">                              \ and anchor name
245.    <std=" COUNT out ">                          \ place hyperlink
311.    1 attrib !
312.    R> 2@ SWAP EXECUTE EXECUTE ;                 \ extra attributes
313. 
246.    1 attrib !
247.    R> 2@ SWAP EXECUTE EXECUTE ;                 \ extra attributes
248. 
314. : genHTML ( -- )                                \ generate pending HTML
315.    token COUNT DUP IF setcolor THEN outh closefont /a  0 token ! ;
249. : genXML ( -- )                                \ generate pending XML
250.    token COUNT DUP IF settagtype THEN outh closetag /a  0 token ! ;
316. 
317. : isnumber? ( addr len -- f )                   \ string converts to number?
318.    0 0 2SWAP >NUMBER NIP NIP NIP 0= ;
319. 
320. : hparse ( a len char -- a' len' )
321.    >R 2DUP R@ SKIP R> SCAN BL SCAN
322.    2SWAP 2 PICK - token +PLACE ;
323. 
324. : >XPAD ( -- ) token COUNT BL SKIP XPAD PLACE ; \ move to temporary pad
325. 
326. : hint  ( addr len -- )                         \ interpret one line...
327.    BEGIN
328.       0 token !  BL hparse token C@
251. 
252. : isnumber? ( addr len -- f )                   \ string converts to number?
253.    0 0 2SWAP >NUMBER NIP NIP NIP 0= ;
254. 
255. : hparse ( a len char -- a' len' )
256.    >R 2DUP R@ SKIP R> SCAN BL SCAN
257.    2SWAP 2 PICK - token +PLACE ;
258. 
259. : >XPAD ( -- ) token COUNT BL SKIP XPAD PLACE ; \ move to temporary pad
260. 
261. : hint  ( addr len -- )                         \ interpret one line...
262.    BEGIN
263.       0 token !  BL hparse token C@
329.    WHILE unknown                                \ default color
264.    WHILE unknown                                \ default tagtype
330.       >XPAD XPAD COUNT superlinks SEARCH-WORDLIST 0=  \ fixed hyperlink?
331.       IF    XPAD COUNT hyperlinks SEARCH-WORDLIST \ got a hyperlink for this?
332.       ELSE  TRUE
333.       THEN
334.       IF DEPTH >R EXECUTE
265.       >XPAD XPAD COUNT superlinks SEARCH-WORDLIST 0=  \ fixed hyperlink?
266.       IF    XPAD COUNT hyperlinks SEARCH-WORDLIST \ got a hyperlink for this?
267.       ELSE  TRUE
268.       THEN
269.       IF DEPTH >R EXECUTE
335.          R> DEPTH <> ABORT" stack depth change in HTML generator"
270.          R> DEPTH <> ABORT" stack depth change in XML generator"
336.       ELSE
337.          XPAD COUNT BASE @ 10 = IF
338.             >FLOAT IF FDROP numeric THEN        \ valid float or integer
339.          ELSE
340.             isnumber? IF numeric THEN
341.          THEN
271.       ELSE
272.          XPAD COUNT BASE @ 10 = IF
273.             >FLOAT IF FDROP numeric THEN        \ valid float or integer
274.          ELSE
275.             isnumber? IF numeric THEN
276.          THEN
342.       THEN genHTML
277.       THEN genXML
343.    REPEAT 2DROP newline ;
344. 
345. : shortname   ( -- )
346.    fn COUNT 2DUP [CHAR] . SCAN NIP - EPAD PLACE ;
347. 
348. : ofn    ( -- addr len )                        \ output file name
278.    REPEAT 2DROP newline ;
279. 
280. : shortname   ( -- )
281.    fn COUNT 2DUP [CHAR] . SCAN NIP - EPAD PLACE ;
282. 
283. : ofn    ( -- addr len )                        \ output file name
349.    shortname S" .htm" EPAD +PLACE  EPAD COUNT ;
350. 
351. : mfn    ( -- addr len )                        \ main file name
352.    shortname S" _f.htm" EPAD +PLACE  EPAD COUNT ;
284.    shortname S" .xml" EPAD +PLACE  EPAD COUNT ;
353. 
354. : hcreate ( addr len -- )
355.    DUP 0= IF 2DROP S" fakename" THEN            \ in case the name is missing
356.    S" CREATE " EPAD PLACE  EPAD +PLACE
357.    GET-CURRENT >R hyperlinks SET-CURRENT
358.    EPAD COUNT EVALUATE    R> SET-CURRENT ;      \ create a hyperlink generator
359. 
360. \ The user defined words use the following data structure:
361. \ CELL   xt of coloring word
362. \ CELL   pointer to index                       \ /9/
363. \ STRING name of reference word
364. \ STRING name of file
365. 
366. \ An index is a list of all of the words that call a defined word. The master
367. \ index is a list of indexes.
368. 
369. variable index  0 index !                       \ index is a SLL of SLLs.
370. variable ulast  0 ulast !                       \ last compiled definition name
371. variable tally  0 tally !                       \ tally of defined words
372. 
373. \ Each index entry consists of a pointer to the previous index entry and a SLL.
374. \ The SLL (single linked list) starts out empty so upon creation it is 0.
375. 
376. \ index --> link_to_next
377. \           link_to_usedby_list <-- 'index
378. \           link to defined name structure
379. \           tally
380. 
285. 
286. : hcreate ( addr len -- )
287.    DUP 0= IF 2DROP S" fakename" THEN            \ in case the name is missing
288.    S" CREATE " EPAD PLACE  EPAD +PLACE
289.    GET-CURRENT >R hyperlinks SET-CURRENT
290.    EPAD COUNT EVALUATE    R> SET-CURRENT ;      \ create a hyperlink generator
291. 
292. \ The user defined words use the following data structure:
293. \ CELL   xt of coloring word
294. \ CELL   pointer to index                       \ /9/
295. \ STRING name of reference word
296. \ STRING name of file
297. 
298. \ An index is a list of all of the words that call a defined word. The master
299. \ index is a list of indexes.
300. 
301. variable index  0 index !                       \ index is a SLL of SLLs.
302. variable ulast  0 ulast !                       \ last compiled definition name
303. variable tally  0 tally !                       \ tally of defined words
304. 
305. \ Each index entry consists of a pointer to the previous index entry and a SLL.
306. \ The SLL (single linked list) starts out empty so upon creation it is 0.
307. 
308. \ index --> link_to_next
309. \           link_to_usedby_list <-- 'index
310. \           link to defined name structure
311. \           tally
312. 
381. : <idx>     ( n -- )                            \ create link to index n
382.    frames if                                    \ links undesirable if no frames
383.    1 attrib !                                   \ or for W3C HTML validation
384.    <href=" fn3 count out S" #x" out             \ <a href="index.htm#x
385.    HEX 0 <# #S #> out misctext 18 line          \ ..." target="idx">
386.    else drop then ;
387. 
 
388. : newindex ( -- 'index )                        \ add an index to the list
389.    HERE index @ , HERE SWAP 0 , index ! 0 ,     \ /9/
390.    1 tally +!  tally @ , ;
391. 
392. \ 'index -> link_to_next
393. \           link to usedby name structure
394. 
395. : newlink  ( 'index -- 'index )                 \ add a name to the index /9/
396.    dup @ @ ?dup if                              \ non-empty sublist?
397.       cell+ @ ulast @ = if exit then            \ duplicate entry
398.    then
399.    HERE OVER @ @ , ulast @ , OVER @ ! ;
400. 
401. variable indexing
402. 
403. : deflink ( addr -- )                           \ defined word makes hyperlink
313. : newindex ( -- 'index )                        \ add an index to the list
314.    HERE index @ , HERE SWAP 0 , index ! 0 ,     \ /9/
315.    1 tally +!  tally @ , ;
316. 
317. \ 'index -> link_to_next
318. \           link to usedby name structure
319. 
320. : newlink  ( 'index -- 'index )                 \ add a name to the index /9/
321.    dup @ @ ?dup if                              \ non-empty sublist?
322.       cell+ @ ulast @ = if exit then            \ duplicate entry
323.    then
324.    HERE OVER @ @ , ulast @ , OVER @ ! ;
325. 
326. variable indexing
327. 
328. : deflink ( addr -- )                           \ defined word makes hyperlink
404.    DUP @ EXECUTE CELL+                          \ set color
329.    DUP @ EXECUTE CELL+                          \ set tagtype
405.    ulast @ IF newlink THEN CELL+                \ /9/ optional addition to index
406.    DUP COUNT + COUNT ofn COMPARE                \ in an external file?
330.    ulast @ IF newlink THEN CELL+                \ /9/ optional addition to index
331.    DUP COUNT + COUNT ofn COMPARE                \ in an external file?
407.    IF   <href=" DUP COUNT + COUNT out           \ yes, put the file name
408.         S" #x" out COUNT outhattr
409.    ELSE misctext 3 line COUNT outhattr          \ no, just the label name
410.         misctext 4 line
332.    IF   <file=" DUP COUNT + COUNT out           \ yes, put the file name
333.         with_href COUNT outhattr
334.    ELSE <#ref=" COUNT outhattr                  \ no, just the label name
411.    THEN
335.    THEN
412.    misctext indexing @ if 17 else 2 then line   \ an index link needs a target
336.    ">                                           \ an index link needs a target
413.    1 attrib ! ;
414. 
337.    1 attrib ! ;
338. 
415. : showlink ( addr bold? -- )                    \ output hyperlink for index
416.    >R dup deflink
417.    R@ if S" <b>" out then
418.    2 cells + count outh
419.    R> if S" </b>" out then
420.    /a    S"  " out ;
421. 
422. : outdex ( sll -- )                             \ output list of client words
423.    0 ulast !
424.    begin ?dup while  dup cell+ @ 0 showlink  @ repeat ;
425. 
426. : iname ( a -- )                                \ display index root name
427.    @ 1 showlink ;
428. 
 
429. : defx  ( a len xt -- a' len' )
430.    newindex >R
339. : defx  ( a len xt -- a' len' )
340.    newindex >R
431.    >R genHTML BL hparse >XPAD                   \ output defining word
341.    >R genXML BL hparse >XPAD                   \ output defining word
432.    XPAD COUNT 2DUP hcreate R> HERE SWAP ,
433.    R@ CELL+ !                                   \ resolve link to definition name
434.    R> , ,$ ofn ,$                               \ rest of structure
435.    DOES> deflink ;
436. 
342.    XPAD COUNT 2DUP hcreate R> HERE SWAP ,
343.    R@ CELL+ !                                   \ resolve link to definition name
344.    R> , ,$ ofn ,$                               \ rest of structure
345.    DOES> deflink ;
346. 
437. : labelnow   XPAD COUNT label /a tally @ <idx> genHTML /a ;
347. : labelnow   XPAD COUNT label genXML /a ;    
438. : defdat ['] numeric   defx numeric   labelnow ;
439. : defvar ['] variables defx variables labelnow ;
440. : defusr ['] userwords defx userwords labelnow ;
441. : defval ['] values    defx values    labelnow ;
442. : defdef ['] userdefiner defx userdefiner labelnow ;
443. 
444. : hstate=0 ( -- )             0 hstate ! ;
445. : hstate=1 ( -- )             1 hstate ! ;
446. : spec=zero ( -- )            1 special ! ;
447. : NONE     ( -- )             0 special ! ;     \ plain word
448. : skip)  ( a len -- a' len' ) [CHAR] ) hparse ;
449. : skip}  ( a len -- a' len' ) [CHAR] } hparse ; \ /7/
450. : skipw  ( a len -- a' len' ) BL hparse ;
451. : skipc  ( a len -- a len )   hstate @ 0= IF numeric skipw THEN ;
452. : skip"  ( a len -- a' len' )                   \ copy string to "str"
348. : defdat ['] numeric   defx numeric   labelnow ;
349. : defvar ['] variables defx variables labelnow ;
350. : defusr ['] userwords defx userwords labelnow ;
351. : defval ['] values    defx values    labelnow ;
352. : defdef ['] userdefiner defx userdefiner labelnow ;
353. 
354. : hstate=0 ( -- )             0 hstate ! ;
355. : hstate=1 ( -- )             1 hstate ! ;
356. : spec=zero ( -- )            1 special ! ;
357. : NONE     ( -- )             0 special ! ;     \ plain word
358. : skip)  ( a len -- a' len' ) [CHAR] ) hparse ;
359. : skip}  ( a len -- a' len' ) [CHAR] } hparse ; \ /7/
360. : skipw  ( a len -- a' len' ) BL hparse ;
361. : skipc  ( a len -- a len )   hstate @ 0= IF numeric skipw THEN ;
362. : skip"  ( a len -- a' len' )                   \ copy string to "str"
453.    genHTML [CHAR] " hparse token COUNT 1- 0 MAX "str" PLACE ;  \ /10/
363.    genXML [CHAR] " hparse token COUNT 1- 0 MAX "str" PLACE ;  \ /10/
454. 
455. \ ------------------------------------------------------------------------------
456. \ ":" definitions might be defining words, so they can't be assumed to be defusr
457. \ types. ":" makes a label and saves the name for later use by ";" which makes
458. \ a hyperlink or a hyperlink defining word.
459. 
460. :NONAME                                         \ normal : definition
461.    ulast @ if                                   \ ending a : definition?
462.       uname COUNT ['] userwords defx 2DROP  0 token !
463.    then
464. ; CONSTANT normal_def
465. 
466. :NONAME
467.    newindex >R
468.    uname COUNT 2DUP hcreate HERE ['] userwords , R@ CELL+ ! R> , ,$ ofn ,$
469.    DOES> deflink defdef
470. ; CONSTANT defining_def
471. 
472. \ ULAST points to a data structure containing the hyperlink to the word being
473. \ defined. It is used when building the index because it can't wait until ;
474. \ resolves the definition before requiring the hyperlink.
475. 
476. : defunk ( a len -- a' len' )                   \ starting unknown definition
477.    hstate=1  normal_def utype !                 \ save name of : definition
364. 
365. \ ------------------------------------------------------------------------------
366. \ ":" definitions might be defining words, so they can't be assumed to be defusr
367. \ types. ":" makes a label and saves the name for later use by ";" which makes
368. \ a hyperlink or a hyperlink defining word.
369. 
370. :NONAME                                         \ normal : definition
371.    ulast @ if                                   \ ending a : definition?
372.       uname COUNT ['] userwords defx 2DROP  0 token !
373.    then
374. ; CONSTANT normal_def
375. 
376. :NONAME
377.    newindex >R
378.    uname COUNT 2DUP hcreate HERE ['] userwords , R@ CELL+ ! R> , ,$ ofn ,$
379.    DOES> deflink defdef
380. ; CONSTANT defining_def
381. 
382. \ ULAST points to a data structure containing the hyperlink to the word being
383. \ defined. It is used when building the index because it can't wait until ;
384. \ resolves the definition before requiring the hyperlink.
385. 
386. : defunk ( a len -- a' len' )                   \ starting unknown definition
387.    hstate=1  normal_def utype !                 \ save name of : definition
478.    genHTML skipw userwords token COUNT BL SKIP
479.    2DUP label /a tally @ 1+ <idx>               \ link to index
388.    genXML skipw userwords token COUNT BL SKIP
389.    2DUP label                                   \ link to index
480.    2DUP HERE ulast ! ['] NOOP , PAD , ,$ ofn ,$ \ save name of definition /9/
481.    uname PLACE ;
482. 
483. : resunk ( -- )                                 \ resolve unknown defined word
390.    2DUP HERE ulast ! ['] NOOP , PAD , ,$ ofn ,$ \ save name of definition /9/
391.    uname PLACE ;
392. 
393. : resunk ( -- )                                 \ resolve unknown defined word
484.    genHTML utype @ EXECUTE hstate=0
394.    genXML utype @ EXECUTE hstate=0
485.    0 ulast ! ;                                  \ indexing off
486. 
487. : created ( -- ) hstate @
488.    IF   defining_def utype !                    \ make ; create a defining word
489.    ELSE defdat                                  \ not compiling
490.    THEN ;
491. 
492. \ ------------------------------------------------------------------------------
493. 
395.    0 ulast ! ;                                  \ indexing off
396. 
397. : created ( -- ) hstate @
398.    IF   defining_def utype !                    \ make ; create a defining word
399.    ELSE defdat                                  \ not compiling
400.    THEN ;
401. 
402. \ ------------------------------------------------------------------------------
403. 
494. : header  ( -- )                                \ output big header text /8/9/
495.    fn count
496.    misctext 6 line
497.    linksource
498.    IF   <href="
499.         2dup out ">
500.         outln  misctext 9 line
501.    ELSE outln
502.    THEN misctext 7 line ;
503. 
 
504. : _incfil ( addr -- )                           \ trigger file nesting  /4/
505.    nestable 0= IF DROP EXIT THEN                \ don't nest files if disabled
506.    COUNT BL SKIP  2DUP R/O OPEN-FILE            \ can the file be opened?
507.    IF   DROP 2DROP                              \ no
508.    ELSE CLOSE-FILE DROP                         \ yes
509.         fn COUNT fn1 PLACE  fn PLACE 1 nufile !
510.    THEN ;
511. 
512. : incfile ( a len -- a' len' )                  \ include a file
404. : _incfil ( addr -- )                           \ trigger file nesting  /4/
405.    nestable 0= IF DROP EXIT THEN                \ don't nest files if disabled
406.    COUNT BL SKIP  2DUP R/O OPEN-FILE            \ can the file be opened?
407.    IF   DROP 2DROP                              \ no
408.    ELSE CLOSE-FILE DROP                         \ yes
409.         fn COUNT fn1 PLACE  fn PLACE 1 nufile !
410.    THEN ;
411. 
412. : incfile ( a len -- a' len' )                  \ include a file
513.    genHTML skipw token _incfil ;
413.    genXML skipw token _incfil ;
514. 
515. : "incfil ( a len -- a' len' )                  \ include file from S" filename"
516.    skipw "str" _incfil ;
517. 
518. : hfill  ( -- len ior )                         \ read next line of file
519.    inbuf 256 BL FILL
520.    XPAD 256 inf READ-LINE ABORT" Error reading file"
521.    >R >R 0 XPAD R> BOUNDS                       ( idx . . )
522.    ?DO  I C@ 9 = IF 3 RSHIFT 1+ 3 LSHIFT        \ tab
523.         ELSE I C@ OVER 255 AND CHARS inbuf + C!
524.            1+ DUP 256 = IF CR ." Input line too long" THEN
525.         THEN
526.    LOOP R>
527.    1 linenum +! ;
528. 
529. \ OPEN and CLOSE input files
530. 
531. : open  ( -- ) CR ." Reading " fn COUNT TYPE ."  at line " linenum @ decimal .
532.    0 linenum !
533.    fn COUNT R/O OPEN-FILE ABORT" Error opening source file" TO inf ;
534. 
535. : close  ( -- ) CR ." closing " fn COUNT TYPE
536.    inf CLOSE-FILE ABORT" Error closing file" ;
537. 
538. : .title  ( addr len -- )                       \ output as title string
539.    BOUNDS ?DO I C@ BL = IF S" %20" out ELSE I 1 out THEN LOOP ;
540. 
541. \ OPEN and CLOSE output files
542. 
543. : ocreate ( addr len -- )
544.    W/O CREATE-FILE ABORT" Error creating file" TO outf ;
545. 
546. : oopen  ( -- )                                 \ create new output file
547.    ofn ocreate begin_header boiler              \ begin boilerplate
414. 
415. : "incfil ( a len -- a' len' )                  \ include file from S" filename"
416.    skipw "str" _incfil ;
417. 
418. : hfill  ( -- len ior )                         \ read next line of file
419.    inbuf 256 BL FILL
420.    XPAD 256 inf READ-LINE ABORT" Error reading file"
421.    >R >R 0 XPAD R> BOUNDS                       ( idx . . )
422.    ?DO  I C@ 9 = IF 3 RSHIFT 1+ 3 LSHIFT        \ tab
423.         ELSE I C@ OVER 255 AND CHARS inbuf + C!
424.            1+ DUP 256 = IF CR ." Input line too long" THEN
425.         THEN
426.    LOOP R>
427.    1 linenum +! ;
428. 
429. \ OPEN and CLOSE input files
430. 
431. : open  ( -- ) CR ." Reading " fn COUNT TYPE ."  at line " linenum @ decimal .
432.    0 linenum !
433.    fn COUNT R/O OPEN-FILE ABORT" Error opening source file" TO inf ;
434. 
435. : close  ( -- ) CR ." closing " fn COUNT TYPE
436.    inf CLOSE-FILE ABORT" Error closing file" ;
437. 
438. : .title  ( addr len -- )                       \ output as title string
439.    BOUNDS ?DO I C@ BL = IF S" %20" out ELSE I 1 out THEN LOOP ;
440. 
441. \ OPEN and CLOSE output files
442. 
443. : ocreate ( addr len -- )
444.    W/O CREATE-FILE ABORT" Error creating file" TO outf ;
445. 
446. : oopen  ( -- )                                 \ create new output file
447.    ofn ocreate begin_header boiler              \ begin boilerplate
548.    fn COUNT .title  mid_header boiler           \ title and end boilerplate
549.    bold IF S" <b>" out THEN ;
448.    S" <module>" out
449.    fn COUNT .title
450.    S" </module>" out ;                          \ title
550. 
551. : fclose  ( -- )
552.    outf CLOSE-FILE ABORT" Error closing file" ;
553. 
554. : new-output  ( -- )                            \ start a new output file /9/
451. 
452. : fclose  ( -- )
453.    outf CLOSE-FILE ABORT" Error closing file" ;
454. 
455. : new-output  ( -- )                            \ start a new output file /9/
555.    open oopen header S" <p>" out ;
456.    open oopen ;
556. 
457. 
557. \ Create index and frame files
458. \ Convert Forth source file(s) to XML
558. 
459. 
559. : make-index  ( -- )                            \ make index /9/
560.    cr ." building index "
561.    1 indexing !
562.    fn2 count fn place
563.    cr ." Framed version: " mfn type
564.    mfn ocreate                                  \ create the main file
565.    misctext 10 line fn count .title
566.    ofn xpad place
567.    fn3 COUNT fn PLACE                           \ filename for index
568.    misctext 11 line xcr misctext 12 line xcr    \    <FRAMESET>
569.    misctext 13 line ofn out        misctext 14 line xcr \ <FRAME SRC= ...
570.    misctext 13 line xpad count out misctext 15 line xcr \ <FRAME SRC= ...
571.    misctext 16 line xcr                         \    </FRAMESET>
572.    fclose
573.    cr ." Index file " ofn type
574.    oopen S" <p>" out                            \ start the menu frame file
575.    index @ begin ?dup while                     \ for all index entries:
576.       dup cell+  dup cell+  dup cell+ @
577.       misctext 1 line  HEX 0 <# #S #> out       \ <a name="x
578.       ">  misctext 9 line          \ a></a>
579.       iname                \ root name
580.       @ outdex newline                          \ list of client words
581.    @ repeat
582.    S" </p></body></html>" outln                 \ end index
583.    fclose ;
584. 
585. \ Convert Forth source file(s) to HTML
586. 
587. : HTML  ( <infile> -- )
460. : XML  ( <infile> -- )
588.    S" /basic-links/" hyperlinks SEARCH-WORDLIST
589.    IF   EXECUTE  THEN                           \ remove user hyperlinks
590.    GET-CURRENT >R hyperlinks SET-CURRENT        \ replace the fence
591.    S" MARKER /basic-links/" EVALUATE
592.    R> SET-CURRENT
593.    0 TO outf                                    \ no output file yet
594.    0 TO screen-only  0 nufile !  1 linenum !    \ force usage of file
595.    0 ulast ! 0 index ! 0 tally !                \ clear index
596.    0 indexing !
597.    BL WORD COUNT  2dup fn2 place                \ save global filename /9/
598.    fn PLACE shortname S" _i.htm" epad +place epad count fn3 place \ index name
599.    new-output                                   \ open input and output files
600.    -1 DUP >R outf >R                            \ file nest uses stacks
601.    hstate=0
602.    BEGIN
603.       BEGIN 0 special !                         \ process line
604.          nufile @                               \ nest a file?
605.          IF   inf outf
606.               new-output outf >R                \ open new files
607.               0 nufile !
608.          THEN hfill
609.       WHILE inbuf SWAP hint
610.       REPEAT DROP
611.       close fn1 COUNT fn PLACE                  \ restore file name
612.       DUP -1 <>
613.       IF   TO outf TO inf FALSE                 \ unnest files
614.       ELSE TRUE
615.       THEN
616.    UNTIL DROP
617.    BEGIN R> DUP -1 <>                           \ close all output files
618.    WHILE TO outf
461.    S" /basic-links/" hyperlinks SEARCH-WORDLIST
462.    IF   EXECUTE  THEN                           \ remove user hyperlinks
463.    GET-CURRENT >R hyperlinks SET-CURRENT        \ replace the fence
464.    S" MARKER /basic-links/" EVALUATE
465.    R> SET-CURRENT
466.    0 TO outf                                    \ no output file yet
467.    0 TO screen-only  0 nufile !  1 linenum !    \ force usage of file
468.    0 ulast ! 0 index ! 0 tally !                \ clear index
469.    0 indexing !
470.    BL WORD COUNT  2dup fn2 place                \ save global filename /9/
471.    fn PLACE shortname S" _i.htm" epad +place epad count fn3 place \ index name
472.    new-output                                   \ open input and output files
473.    -1 DUP >R outf >R                            \ file nest uses stacks
474.    hstate=0
475.    BEGIN
476.       BEGIN 0 special !                         \ process line
477.          nufile @                               \ nest a file?
478.          IF   inf outf
479.               new-output outf >R                \ open new files
480.               0 nufile !
481.          THEN hfill
482.       WHILE inbuf SWAP hint
483.       REPEAT DROP
484.       close fn1 COUNT fn PLACE                  \ restore file name
485.       DUP -1 <>
486.       IF   TO outf TO inf FALSE                 \ unnest files
487.       ELSE TRUE
488.       THEN
489.    UNTIL DROP
490.    BEGIN R> DUP -1 <>                           \ close all output files
491.    WHILE TO outf
619.          bold IF S" </b>" out THEN end_header
492.          end_header
620.          fclose
493.          fclose
621.    REPEAT DROP
622.    make-index ;
494.    REPEAT DROP ;
623. 
624. : q  ( -- ) 1 TO screen-only                    \ single line test
625.    -1 WORD COUNT inbuf PLACE inbuf COUNT hint ;
626. 
627. \ 0 [IF] is often used as a comment. If it is used as a comment, scan the file
628. \ for a [THEN]. [THEN] must be on the next line or beyond.
629. 
630. CREATE terminator 16 CHARS ALLOT                \ multiline comment terminator
631. 
632. : multicomment ( a len searchstring -- a' len' )
633.    terminator PLACE
495. 
496. : q  ( -- ) 1 TO screen-only                    \ single line test
497.    -1 WORD COUNT inbuf PLACE inbuf COUNT hint ;
498. 
499. \ 0 [IF] is often used as a comment. If it is used as a comment, scan the file
500. \ for a [THEN]. [THEN] must be on the next line or beyond.
501. 
502. CREATE terminator 16 CHARS ALLOT                \ multiline comment terminator
503. 
504. : multicomment ( a len searchstring -- a' len' )
505.    terminator PLACE
634.    genHTML commentary ital( setcolor outh       \ finish up this line
635.    BEGIN hfill newline
506.    genXML commentary settagtype outh       \ finish up this line
507.    BEGIN hfill
636.    WHILE >R inbuf EPAD R@ MOVE
637.       EPAD R@ BOUNDS ?DO I C@ UPC I C! LOOP     \ uppercase for search
638.       EPAD R@ terminator COUNT SEARCH
508.    WHILE >R inbuf EPAD R@ MOVE
509.       EPAD R@ BOUNDS ?DO I C@ UPC I C! LOOP     \ uppercase for search
510.       EPAD R@ terminator COUNT SEARCH
639.       IF   DROP EPAD - inbuf OVER token PLACE   \ before [THEN] is comment
640.            genHTML
511.       IF   S" <z/>" out
512.            DROP EPAD - inbuf OVER token PLACE   \ before [THEN] is comment
513.            genXML
641.            inbuf R> ROT /STRING
514.            inbuf R> ROT /STRING
642.            )ital closefont EXIT
643.       ELSE 2DROP inbuf R> outh                  \ whole line is comment
515.            closetag EXIT
516.       ELSE 2DROP S" <z>" out
517.            inbuf R> outh
518.            S" </z>" outln                 \ whole line is comment
644.       THEN
519.       THEN
645.    REPEAT inbuf SWAP )ital closefont ;          \ EOF found
520.    REPEAT inbuf SWAP closetag ;          \ EOF found
646. 
647. : bigif  ( a len -- a len )  special @ 1 =
648.    IF S" [THEN]" multicomment THEN ;
649. 
650. \ =============================================================================
651. 
652. : _DEFINITIONS DEFINITIONS ;
653. \ : _order order ;  : _words words ; : _see see ;
654. 
655. superlinks SET-CURRENT \ These hyperlinks cannot be overridden.
656. 
657. \ The following words are not in the ANS standard but are very common.
658. : VOCABULARY    defusr ;
659. : DEFER         defusr ;
660. : INCLUDE       hstate @ 0= IF incfile THEN ;
661. : FLOAD         hstate @ 0= IF incfile THEN ;
662. : SYS-FLOAD     hstate @ 0= IF incfile THEN ;
663. : BINARY        2 BASE ! ;
664. : OCTAL         8 BASE ! ;
665. : 0             numeric spec=zero ;
666. : 1             numeric  ;
667. : -1            numeric  ;
668. : COMMENT:      S" COMMENT;" multicomment ;
669. : ((            S" ))"       multicomment ;
670. 
671. \ The following words are not in the ANS standard but are used in Win32Forth
672. : ANEW          skipw ;                    \ /7/
673. : CallBack:     defunk ;                   \ /7/
674. : :M            defunk ;                   \ /7/
675. : ;M            resunk ;                   \ /7/
676. : z"            numeric skip" ;
677. 
678. \ Forth Inc uses { for comment while others use it for locals. } on the same
679. \ line indicates locals, which are grayed. Otherwise a multiline comment.
680. 
681. : {             2DUP [CHAR] } SCAN NIP 0=
521. 
522. : bigif  ( a len -- a len )  special @ 1 =
523.    IF S" [THEN]" multicomment THEN ;
524. 
525. \ =============================================================================
526. 
527. : _DEFINITIONS DEFINITIONS ;
528. \ : _order order ;  : _words words ; : _see see ;
529. 
530. superlinks SET-CURRENT \ These hyperlinks cannot be overridden.
531. 
532. \ The following words are not in the ANS standard but are very common.
533. : VOCABULARY    defusr ;
534. : DEFER         defusr ;
535. : INCLUDE       hstate @ 0= IF incfile THEN ;
536. : FLOAD         hstate @ 0= IF incfile THEN ;
537. : SYS-FLOAD     hstate @ 0= IF incfile THEN ;
538. : BINARY        2 BASE ! ;
539. : OCTAL         8 BASE ! ;
540. : 0             numeric spec=zero ;
541. : 1             numeric  ;
542. : -1            numeric  ;
543. : COMMENT:      S" COMMENT;" multicomment ;
544. : ((            S" ))"       multicomment ;
545. 
546. \ The following words are not in the ANS standard but are used in Win32Forth
547. : ANEW          skipw ;                    \ /7/
548. : CallBack:     defunk ;                   \ /7/
549. : :M            defunk ;                   \ /7/
550. : ;M            resunk ;                   \ /7/
551. : z"            numeric skip" ;
552. 
553. \ Forth Inc uses { for comment while others use it for locals. } on the same
554. \ line indicates locals, which are grayed. Otherwise a multiline comment.
555. 
556. : {             2DUP [CHAR] } SCAN NIP 0=
682.                 IF S" }" multicomment ELSE genHTML skip} THEN ;
557.                 IF S" }" multicomment ELSE genXML skip} THEN ;
683. 
684. \ The rest is ANS Forth standard
685. 
558. 
559. \ The rest is ANS Forth standard
560. 
686. : \             commentary genHTML ital( token PLACE genHTML )ital token 0 ;
561. : \             commentary genXML token PLACE genXML token 0 ;
687. 
562. 
688. (   NAME                ACTION  COLOR           FILENAME        REFERENCE )
689. (   ------------------  ------  --------------  -----------     --------- )
690. std (                   skip)   commentary      dpans6.htm      6.1.0080
691. std ."                  skip"   numeric         dpans6.htm      6.1.0190
692. std :                   defunk  core_ws         dpans6.htm      6.1.0450
693. std ;                   resunk  core_ws         dpans6.htm      6.1.0460
694. std ABORT"              skip"   errors          dpans6.htm      6.1.0680
695. std CHAR                skipc   core_ws         dpans6.htm      6.1.0895
696. std CONSTANT            defdat  core_ws         dpans6.htm      6.1.0950
697. std CREATE              created core_ws         dpans6.htm      6.1.1000
698. std DECIMAL             DECIMAL core_ws         dpans6.htm      6.1.1170
699. std S"                  skip"   numeric         dpans6.htm      6.1.2165
700. std VARIABLE            defvar  core_ws         dpans6.htm      6.1.2410
701. std [                  hstate=0 core_ws         dpans6.htm      6.1.2500
702. std [CHAR]              skipw   numeric         dpans6.htm      6.1.2520
703. std ]                  hstate=1 core_ws         dpans6.htm      6.1.2540
704. std .(                  skip)   commentary      dpans6.htm      6.2.0200
705. std C"                  skip"   numeric         dpans6.htm      6.2.0855
706. std FALSE             spec=zero numeric         dpans6.htm      6.2.1485
707. std HEX                 HEX     core_ext_ws     dpans6.htm      6.2.1660
708. std MARKER              defusr  core_ext_ws     dpans6.htm      6.2.1850
709. std VALUE               defval  core_ext_ws     dpans6.htm      6.2.2405
710. std 2CONSTANT           defdat  double_ws       dpans8.htm      8.6.1.0360
711. std 2VARIABLE           defvar  double_ws       dpans8.htm      8.6.1.0440
712. std INCLUDED            "incfil file_ws         dpans11.htm     11.6.1.1718
713. std FCONSTANT           defdat  fp_ws           dpans12.htm     12.6.1.1492
714. std FVARIABLE           defvar  fp_ws           dpans12.htm     12.6.1.1630
715. std ;CODE               resunk  progtools_ws    dpans15.htm     15.6.2.0470
716. std CODE                defusr  progtools_ws    dpans15.htm     15.6.2.0930
717. std [IF]                bigif   progtools_ws    dpans15.htm     15.6.2.2532
563. (   NAME                ACTION  TYPE            REFERENCE )
564. (   ------------------  ------  --------------  --------- )
565. std (                   skip)   commentary      6.1.0080
566. std ."                  skip"   numeric         6.1.0190
567. std :                   defunk  core_ws         6.1.0450
568. std ;                   resunk  core_ws         6.1.0460
569. std ABORT"              skip"   errors          6.1.0680
570. std CHAR                skipc   core_ws         6.1.0895
571. std CONSTANT            defdat  core_ws         6.1.0950
572. std CREATE              created core_ws         6.1.1000
573. std DECIMAL             DECIMAL core_ws         6.1.1170
574. std S"                  skip"   numeric         6.1.2165
575. std VARIABLE            defvar  core_ws         6.1.2410
576. std [                  hstate=0 core_ws         6.1.2500
577. std [CHAR]              skipw   numeric         6.1.2520
578. std ]                  hstate=1 core_ws         6.1.2540
579. std .(                  skip)   commentary      6.2.0200
580. std C"                  skip"   numeric         6.2.0855
581. std FALSE             spec=zero numeric         6.2.1485
582. std HEX                 HEX     core_ext_ws     6.2.1660
583. std MARKER              defusr  core_ext_ws     6.2.1850
584. std VALUE               defval  core_ext_ws     6.2.2405
585. std 2CONSTANT           defdat  double_ws       8.6.1.0360
586. std 2VARIABLE           defvar  double_ws       8.6.1.0440
587. std INCLUDED            "incfil file_ws         11.6.1.1718
588. std FCONSTANT           defdat  fp_ws           12.6.1.1492
589. std FVARIABLE           defvar  fp_ws           12.6.1.1630
590. std ;CODE               resunk  progtools_ws    15.6.2.0470
591. std CODE                defusr  progtools_ws    15.6.2.0930
592. std [IF]                bigif   progtools_ws    15.6.2.2532
718. 
719. hyperlinks SET-CURRENT \ These hyperlinks can be overridden.
720. 
593. 
594. hyperlinks SET-CURRENT \ These hyperlinks can be overridden.
595. 
721. std [']                 NONE    numeric         dpans6.htm      6.1.2510
722. std !                   NONE    core_ws         dpans6.htm      6.1.0010
723. std #                   NONE    core_ws         dpans6.htm      6.1.0030
724. std #>                  NONE    core_ws         dpans6.htm      6.1.0040
725. std #S                  NONE    core_ws         dpans6.htm      6.1.0050
726. std '                   NONE    core_ws         dpans6.htm      6.1.0070
727. std *                   NONE    core_ws         dpans6.htm      6.1.0090
728. std */                  NONE    core_ws         dpans6.htm      6.1.0100
729. std */MOD               NONE    core_ws         dpans6.htm      6.1.0110
730. std +                   NONE    core_ws         dpans6.htm      6.1.0120
731. std +!                  NONE    core_ws         dpans6.htm      6.1.0130
732. std +LOOP               NONE    core_ws         dpans6.htm      6.1.0140
733. std ,                   NONE    core_ws         dpans6.htm      6.1.0150
734. std -                   NONE    core_ws         dpans6.htm      6.1.0160
735. std .                   NONE    core_ws         dpans6.htm      6.1.0180
736. std /                   NONE    core_ws         dpans6.htm      6.1.0230
737. std /MOD                NONE    core_ws         dpans6.htm      6.1.0240
738. std 0<                  NONE    core_ws         dpans6.htm      6.1.0250
739. std 0=                  NONE    core_ws         dpans6.htm      6.1.0270
740. std 1+                  NONE    core_ws         dpans6.htm      6.1.0290
741. std 1-                  NONE    core_ws         dpans6.htm      6.1.0300
742. std 2!                  NONE    core_ws         dpans6.htm      6.1.0310
743. std 2*                  NONE    core_ws         dpans6.htm      6.1.0320
744. std 2/                  NONE    core_ws         dpans6.htm      6.1.0330
745. std 2@                  NONE    core_ws         dpans6.htm      6.1.0350
746. std 2DROP               NONE    core_ws         dpans6.htm      6.1.0370
747. std 2DUP                NONE    core_ws         dpans6.htm      6.1.0380
748. std 2OVER               NONE    core_ws         dpans6.htm      6.1.0400
749. std 2SWAP               NONE    core_ws         dpans6.htm      6.1.0430
750. std <                   NONE    core_ws         dpans6.htm      6.1.0480
751. std <#                  NONE    core_ws         dpans6.htm      6.1.0490
752. std =                   NONE    core_ws         dpans6.htm      6.1.0530
753. std >                   NONE    core_ws         dpans6.htm      6.1.0540
754. std >BODY               NONE    core_ws         dpans6.htm      6.1.0550
755. std >IN                 NONE    core_ws         dpans6.htm      6.1.0560
756. std >NUMBER             NONE    core_ws         dpans6.htm      6.1.0570
757. std >R                  NONE    core_ws         dpans6.htm      6.1.0580
758. std ?DUP                NONE    core_ws         dpans6.htm      6.1.0630
759. std @                   NONE    core_ws         dpans6.htm      6.1.0650
760. std ABORT               NONE    core_ws         dpans6.htm      6.1.0670
761. std ABS                 NONE    core_ws         dpans6.htm      6.1.0690
762. std ACCEPT              NONE    core_ws         dpans6.htm      6.1.0695
763. std ALIGN               NONE    core_ws         dpans6.htm      6.1.0705
764. std ALIGNED             NONE    core_ws         dpans6.htm      6.1.0706
765. std ALLOT               NONE    core_ws         dpans6.htm      6.1.0710
766. std AND                 NONE    core_ws         dpans6.htm      6.1.0720
767. std BASE                NONE    core_ws         dpans6.htm      6.1.0750
768. std BEGIN               NONE    core_ws         dpans6.htm      6.1.0760
769. std BL                  NONE    numeric         dpans6.htm      6.1.0770
770. std C!                  NONE    core_ws         dpans6.htm      6.1.0850
771. std C,                  NONE    core_ws         dpans6.htm      6.1.0860
772. std C@                  NONE    core_ws         dpans6.htm      6.1.0870
773. std CELL+               NONE    core_ws         dpans6.htm      6.1.0880
774. std CELLS               NONE    core_ws         dpans6.htm      6.1.0890
775. std CHAR+               NONE    core_ws         dpans6.htm      6.1.0897
776. std CHARS               NONE    core_ws         dpans6.htm      6.1.0898
777. std COUNT               NONE    core_ws         dpans6.htm      6.1.0980
778. std CR                  NONE    core_ws         dpans6.htm      6.1.0990
779. std DEPTH               NONE    core_ws         dpans6.htm      6.1.1200
780. std DO                  NONE    core_ws         dpans6.htm      6.1.1240
781. std DOES>               NONE    core_ws         dpans6.htm      6.1.1250
782. std DROP                NONE    core_ws         dpans6.htm      6.1.1260
783. std DUP                 NONE    core_ws         dpans6.htm      6.1.1290
784. std ELSE                NONE    core_ws         dpans6.htm      6.1.1310
785. std EMIT                NONE    core_ws         dpans6.htm      6.1.1320
786. std ENVIRONMENT?        NONE    core_ws         dpans6.htm      6.1.1345
787. std EVALUATE            NONE    core_ws         dpans6.htm      6.1.1360
788. std EXECUTE             NONE    core_ws         dpans6.htm      6.1.1370
789. std EXIT                NONE    core_ws         dpans6.htm      6.1.1380
790. std FILL                NONE    core_ws         dpans6.htm      6.1.1540
791. std FIND                NONE    core_ws         dpans6.htm      6.1.1550
792. std FM/MOD              NONE    core_ws         dpans6.htm      6.1.1561
793. std HERE                NONE    core_ws         dpans6.htm      6.1.1650
794. std HOLD                NONE    core_ws         dpans6.htm      6.1.1670
795. std I                   NONE    core_ws         dpans6.htm      6.1.1680
796. std IF                  NONE    core_ws         dpans6.htm      6.1.1700
797. std IMMEDIATE           NONE    core_ws         dpans6.htm      6.1.1710
798. std INVERT              NONE    core_ws         dpans6.htm      6.1.1720
799. std J                   NONE    core_ws         dpans6.htm      6.1.1730
800. std KEY                 NONE    core_ws         dpans6.htm      6.1.1750
801. std LEAVE               NONE    core_ws         dpans6.htm      6.1.1760
802. std LITERAL             NONE    core_ws         dpans6.htm      6.1.1780
803. std LOOP                NONE    core_ws         dpans6.htm      6.1.1800
804. std LSHIFT              NONE    core_ws         dpans6.htm      6.1.1805
805. std M*                  NONE    core_ws         dpans6.htm      6.1.1810
806. std MAX                 NONE    core_ws         dpans6.htm      6.1.1870
807. std MIN                 NONE    core_ws         dpans6.htm      6.1.1880
808. std MOD                 NONE    core_ws         dpans6.htm      6.1.1890
809. std MOVE                NONE    core_ws         dpans6.htm      6.1.1900
810. std NEGATE              NONE    core_ws         dpans6.htm      6.1.1910
811. std OR                  NONE    core_ws         dpans6.htm      6.1.1980
812. std OVER                NONE    core_ws         dpans6.htm      6.1.1990
813. std POSTPONE            NONE    core_ws         dpans6.htm      6.1.2033
814. std QUIT                NONE    core_ws         dpans6.htm      6.1.2050
815. std R>                  NONE    core_ws         dpans6.htm      6.1.2060
816. std R@                  NONE    core_ws         dpans6.htm      6.1.2070
817. std RECURSE             NONE    core_ws         dpans6.htm      6.1.2120
818. std REPEAT              NONE    core_ws         dpans6.htm      6.1.2140
819. std ROT                 NONE    core_ws         dpans6.htm      6.1.2160
820. std RSHIFT              NONE    core_ws         dpans6.htm      6.1.2162
821. std S>D                 NONE    core_ws         dpans6.htm      6.1.2170
822. std SIGN                NONE    core_ws         dpans6.htm      6.1.2210
823. std SM/REM              NONE    core_ws         dpans6.htm      6.1.2214
824. std SOURCE              NONE    core_ws         dpans6.htm      6.1.2216
825. std SPACE               NONE    core_ws         dpans6.htm      6.1.2220
826. std SPACES              NONE    core_ws         dpans6.htm      6.1.2230
827. std STATE               NONE    core_ws         dpans6.htm      6.1.2250
828. std SWAP                NONE    core_ws         dpans6.htm      6.1.2260
829. std THEN                NONE    core_ws         dpans6.htm      6.1.2270
830. std TYPE                NONE    core_ws         dpans6.htm      6.1.2310
831. std U.                  NONE    core_ws         dpans6.htm      6.1.2320
832. std U<                  NONE    core_ws         dpans6.htm      6.1.2340
833. std UM*                 NONE    core_ws         dpans6.htm      6.1.2360
834. std UM/MOD              NONE    core_ws         dpans6.htm      6.1.2370
835. std UNLOOP              NONE    core_ws         dpans6.htm      6.1.2380
836. std UNTIL               NONE    core_ws         dpans6.htm      6.1.2390
837. std WHILE               NONE    core_ws         dpans6.htm      6.1.2430
838. std WORD                NONE    core_ws         dpans6.htm      6.1.2450
839. std XOR                 NONE    core_ws         dpans6.htm      6.1.2490
840. std #TIB                NONE    core_ext_ws     dpans6.htm      6.2.0060
841. std .R                  NONE    core_ext_ws     dpans6.htm      6.2.0210
842. std 0<>                 NONE    core_ext_ws     dpans6.htm      6.2.0260
843. std 0>                  NONE    core_ext_ws     dpans6.htm      6.2.0280
844. std 2>R                 NONE    core_ext_ws     dpans6.htm      6.2.0340
845. std 2R>                 NONE    core_ext_ws     dpans6.htm      6.2.0410
846. std 2R@                 NONE    core_ext_ws     dpans6.htm      6.2.0415
847. std :NONAME             NONE    core_ext_ws     dpans6.htm      6.2.0455
848. std <>                  NONE    core_ext_ws     dpans6.htm      6.2.0500
849. std ?DO                 NONE    core_ext_ws     dpans6.htm      6.2.0620
850. std AGAIN               NONE    core_ext_ws     dpans6.htm      6.2.0700
851. std CASE                NONE    core_ext_ws     dpans6.htm      6.2.0873
852. std COMPILE,            NONE    core_ext_ws     dpans6.htm      6.2.0945
853. std CONVERT             NONE    core_ext_ws     dpans6.htm      6.2.0970
854. std ENDCASE             NONE    core_ext_ws     dpans6.htm      6.2.1342
855. std ENDOF               NONE    core_ext_ws     dpans6.htm      6.2.1343
856. std ERASE               NONE    core_ext_ws     dpans6.htm      6.2.1350
857. std EXPECT              NONE    core_ext_ws     dpans6.htm      6.2.1390
858. std NIP                 NONE    core_ext_ws     dpans6.htm      6.2.1930
859. std OF                  NONE    core_ext_ws     dpans6.htm      6.2.1950
860. std PAD                 NONE    core_ext_ws     dpans6.htm      6.2.2000
861. std PARSE               NONE    core_ext_ws     dpans6.htm      6.2.2008
862. std PICK                NONE    core_ext_ws     dpans6.htm      6.2.2030
863. std QUERY               NONE    core_ext_ws     dpans6.htm      6.2.2040
864. std REFILL              NONE    core_ext_ws     dpans6.htm      6.2.2125
865. std RESTORE-INPUT       NONE    core_ext_ws     dpans6.htm      6.2.2148
866. std ROLL                NONE    core_ext_ws     dpans6.htm      6.2.2150
867. std SAVE-INPUT          NONE    core_ext_ws     dpans6.htm      6.2.2182
868. std SOURCE-ID           NONE    core_ext_ws     dpans6.htm      6.2.2218
869. std SPAN                NONE    core_ext_ws     dpans6.htm      6.2.2240
870. std TIB                 NONE    core_ext_ws     dpans6.htm      6.2.2290
871. std TO                  NONE    core_ext_ws     dpans6.htm      6.2.2295
872. std TRUE                NONE    numeric         dpans6.htm      6.2.2298
873. std TUCK                NONE    core_ext_ws     dpans6.htm      6.2.2300
874. std U.R                 NONE    core_ext_ws     dpans6.htm      6.2.2330
875. std U>                  NONE    core_ext_ws     dpans6.htm      6.2.2350
876. std UNUSED              NONE    core_ext_ws     dpans6.htm      6.2.2395
877. std WITHIN              NONE    core_ext_ws     dpans6.htm      6.2.2440
878. std [COMPILE]           NONE    core_ext_ws     dpans6.htm      6.2.2530
879. std BLK                 NONE    block_ws        dpans7.htm      7.6.1.0790
880. std BLOCK               NONE    block_ws        dpans7.htm      7.6.1.0800
881. std BUFFER              NONE    block_ws        dpans7.htm      7.6.1.0820
882. std FLUSH               NONE    block_ws        dpans7.htm      7.6.1.1559
883. std LOAD                NONE    block_ws        dpans7.htm      7.6.1.1790
884. std SAVE-BUFFERS        NONE    block_ws        dpans7.htm      7.6.1.2180
885. std UPDATE              NONE    block_ws        dpans7.htm      7.6.1.2400
886. std EMPTY-BUFFERS       NONE    block_ws        dpans7.htm      7.6.2.1330
887. std LIST                NONE    block_ws        dpans7.htm      7.6.2.1770
888. std SCR                 NONE    block_ws        dpans7.htm      7.6.2.2190
889. std THRU                NONE    block_ws        dpans7.htm      7.6.2.2280
890. std 2LITERAL            NONE    double_ws       dpans8.htm      8.6.1.0390
891. std D+                  NONE    double_ws       dpans8.htm      8.6.1.1040
892. std D-                  NONE    double_ws       dpans8.htm      8.6.1.1050
893. std D.                  NONE    double_ws       dpans8.htm      8.6.1.1060
894. std D.R                 NONE    double_ws       dpans8.htm      8.6.1.1070
895. std D0<                 NONE    double_ws       dpans8.htm      8.6.1.1075
896. std D0=                 NONE    double_ws       dpans8.htm      8.6.1.1080
897. std D2*                 NONE    double_ws       dpans8.htm      8.6.1.1090
898. std D2/                 NONE    double_ws       dpans8.htm      8.6.1.1100
899. std D<                  NONE    double_ws       dpans8.htm      8.6.1.1110
900. std D=                  NONE    double_ws       dpans8.htm      8.6.1.1120
901. std D>S                 NONE    double_ws       dpans8.htm      8.6.1.1140
902. std DABS                NONE    double_ws       dpans8.htm      8.6.1.1160
903. std DMAX                NONE    double_ws       dpans8.htm      8.6.1.1210
904. std DMIN                NONE    double_ws       dpans8.htm      8.6.1.1220
905. std DNEGATE             NONE    double_ws       dpans8.htm      8.6.1.1230
906. std M*/                 NONE    double_ws       dpans8.htm      8.6.1.1820
907. std M+                  NONE    double_ws       dpans8.htm      8.6.1.1830
908. std 2ROT                NONE    double_ws       dpans8.htm      8.6.2.0420
909. std DU<                 NONE    double_ws       dpans8.htm      8.6.2.1270
910. std CATCH               NONE    exception_ws    dpans9.htm      9.6.1.0875
911. std THROW               NONE    exception_ws    dpans9.htm      9.6.1.2275
912. std AT-XY               NONE    facilities_ws   dpans10.htm     10.6.1.0742
913. std KEY?                NONE    facilities_ws   dpans10.htm     10.6.1.1755
914. std PAGE                NONE    facilities_ws   dpans10.htm     10.6.1.2005
915. std EKEY                NONE    facilities_ws   dpans10.htm     10.6.2.1305
916. std EKEY<CHAR           NONE    facilities_ws   dpans10.htm     10.6.2.1306
917. std EKEY?               NONE    facilities_ws   dpans10.htm     10.6.2.1307
918. std EMIT?               NONE    facilities_ws   dpans10.htm     10.6.2.1325
919. std MS                  NONE    facilities_ws   dpans10.htm     10.6.2.1905
920. std TIME&DATE           NONE    facilities_ws   dpans10.htm     10.6.2.2292
921. std BIN                 NONE    file_ws         dpans11.htm     11.6.1.0765
922. std CLOSE-FILE          NONE    file_ws         dpans11.htm     11.6.1.0900
923. std CREATE-FILE         NONE    file_ws         dpans11.htm     11.6.1.1010
924. std DELETE-FILE         NONE    file_ws         dpans11.htm     11.6.1.1190
925. std FILE-POSITION       NONE    file_ws         dpans11.htm     11.6.1.1520
926. std FILE-SIZE           NONE    file_ws         dpans11.htm     11.6.1.1522
927. std INCLUDE-FILE        NONE    file_ws         dpans11.htm     11.6.1.1717
928. std OPEN-FILE           NONE    file_ws         dpans11.htm     11.6.1.1970
929. std R/O                 NONE    file_ws         dpans11.htm     11.6.1.2054
930. std R/W                 NONE    file_ws         dpans11.htm     11.6.1.2056
931. std READ-FILE           NONE    file_ws         dpans11.htm     11.6.1.2080
932. std READ-LINE           NONE    file_ws         dpans11.htm     11.6.1.2090
933. std REPOSITION-FILE     NONE    file_ws         dpans11.htm     11.6.1.2142
934. std RESIZE-FILE         NONE    file_ws         dpans11.htm     11.6.1.2147
935. std W/O                 NONE    file_ws         dpans11.htm     11.6.1.2425
936. std WRITE-FILE          NONE    file_ws         dpans11.htm     11.6.1.2480
937. std WRITE-LINE          NONE    file_ws         dpans11.htm     11.6.1.2485
938. std FILE-STATUS         NONE    file_ws         dpans11.htm     11.6.2.1524
939. std FLUSH-FILE          NONE    file_ws         dpans11.htm     11.6.2.1560
940. std RENAME-FILE         NONE    file_ws         dpans11.htm     11.6.2.2130
941. std >FLOAT              NONE    fp_ws           dpans12.htm     12.6.1.0558
942. std D>F                 NONE    fp_ws           dpans12.htm     12.6.1.1130
943. std F!                  NONE    fp_ws           dpans12.htm     12.6.1.1400
944. std F*                  NONE    fp_ws           dpans12.htm     12.6.1.1410
945. std F+                  NONE    fp_ws           dpans12.htm     12.6.1.1420
946. std F-                  NONE    fp_ws           dpans12.htm     12.6.1.1425
947. std F/                  NONE    fp_ws           dpans12.htm     12.6.1.1430
948. std F0<                 NONE    fp_ws           dpans12.htm     12.6.1.1440
949. std F0=                 NONE    fp_ws           dpans12.htm     12.6.1.1450
950. std F<                  NONE    fp_ws           dpans12.htm     12.6.1.1460
951. std F>D                 NONE    fp_ws           dpans12.htm     12.6.1.1460
952. std F@                  NONE    fp_ws           dpans12.htm     12.6.1.1472
953. std FALIGN              NONE    fp_ws           dpans12.htm     12.6.1.1479
954. std FALIGNED            NONE    fp_ws           dpans12.htm     12.6.1.1483
955. std FDEPTH              NONE    fp_ws           dpans12.htm     12.6.1.1497
956. std FDROP               NONE    fp_ws           dpans12.htm     12.6.1.1500
957. std FDUP                NONE    fp_ws           dpans12.htm     12.6.1.1510
958. std FLITERAL            NONE    fp_ws           dpans12.htm     12.6.1.1552
959. std FLOAT+              NONE    fp_ws           dpans12.htm     12.6.1.1555
960. std FLOATS              NONE    fp_ws           dpans12.htm     12.6.1.1556
961. std FLOOR               NONE    fp_ws           dpans12.htm     12.6.1.1558
962. std FMAX                NONE    fp_ws           dpans12.htm     12.6.1.1562
963. std FMIN                NONE    fp_ws           dpans12.htm     12.6.1.1565
964. std FNEGATE             NONE    fp_ws           dpans12.htm     12.6.1.1567
965. std FOVER               NONE    fp_ws           dpans12.htm     12.6.1.1600
966. std FROT                NONE    fp_ws           dpans12.htm     12.6.1.1610
967. std FROUND              NONE    fp_ws           dpans12.htm     12.6.1.1612
968. std FSWAP               NONE    fp_ws           dpans12.htm     12.6.1.1620
969. std REPRESENT           NONE    fp_ws           dpans12.htm     12.6.1.2143
970. std DF!                 NONE    fp_ws           dpans12.htm     12.6.2.1203
971. std DF@                 NONE    fp_ws           dpans12.htm     12.6.2.1204
972. std DFALIGN             NONE    fp_ws           dpans12.htm     12.6.2.1205
973. std DFALIGNED           NONE    fp_ws           dpans12.htm     12.6.2.1207
974. std DFLOAT+             NONE    fp_ws           dpans12.htm     12.6.2.1208
975. std DFLOATS             NONE    fp_ws           dpans12.htm     12.6.2.1209
976. std F**                 NONE    fp_ws           dpans12.htm     12.6.2.1415
977. std F.                  NONE    fp_ws           dpans12.htm     12.6.2.1427
978. std FABS                NONE    fp_ws           dpans12.htm     12.6.2.1474
979. std FACOS               NONE    fp_ws           dpans12.htm     12.6.2.1476
980. std FACOSH              NONE    fp_ws           dpans12.htm     12.6.2.1477
981. std FALOG               NONE    fp_ws           dpans12.htm     12.6.2.1484
982. std FASIN               NONE    fp_ws           dpans12.htm     12.6.2.1486
983. std FASINH              NONE    fp_ws           dpans12.htm     12.6.2.1487
984. std FATAN               NONE    fp_ws           dpans12.htm     12.6.2.1488
985. std FATAN2              NONE    fp_ws           dpans12.htm     12.6.2.1489
986. std FATANH              NONE    fp_ws           dpans12.htm     12.6.2.1491
987. std FCOS                NONE    fp_ws           dpans12.htm     12.6.2.1493
988. std FCOSH               NONE    fp_ws           dpans12.htm     12.6.2.1494
989. std FE.                 NONE    fp_ws           dpans12.htm     12.6.2.1513
990. std FEXP                NONE    fp_ws           dpans12.htm     12.6.2.1515
991. std FEXPM1              NONE    fp_ws           dpans12.htm     12.6.2.1516
992. std FLN                 NONE    fp_ws           dpans12.htm     12.6.2.1553
993. std FLNP1               NONE    fp_ws           dpans12.htm     12.6.2.1554
994. std FLOG                NONE    fp_ws           dpans12.htm     12.6.2.1557
995. std FS.                 NONE    fp_ws           dpans12.htm     12.6.2.1613
996. std FSIN                NONE    fp_ws           dpans12.htm     12.6.2.1614
997. std FSINCOS             NONE    fp_ws           dpans12.htm     12.6.2.1616
998. std FSINH               NONE    fp_ws           dpans12.htm     12.6.2.1617
999. std FSQRT               NONE    fp_ws           dpans12.htm     12.6.2.1618
1000. std FTAN                NONE    fp_ws           dpans12.htm     12.6.2.1625
1001. std FTANH               NONE    fp_ws           dpans12.htm     12.6.2.1626
1002. std F~                  NONE    fp_ws           dpans12.htm     12.6.2.1640
1003. std PRECISION           NONE    fp_ws           dpans12.htm     12.6.2.2035
1004. std SET-PRECISION       NONE    fp_ws           dpans12.htm     12.6.2.2200
1005. std SF!                 NONE    fp_ws           dpans12.htm     12.6.2.2202
1006. std SF@                 NONE    fp_ws           dpans12.htm     12.6.2.2203
1007. std SFALIGN             NONE    fp_ws           dpans12.htm     12.6.2.2204
1008. std SFALIGNED           NONE    fp_ws           dpans12.htm     12.6.2.2206
1009. std SFLOAT+             NONE    fp_ws           dpans12.htm     12.6.2.2207
1010. std SFLOATS             NONE    fp_ws           dpans12.htm     12.6.2.2208
1011. std (LOCAL)             NONE    local_ws        dpans13.htm     13.6.1.0086
1012. std LOCALS|             NONE    local_ws        dpans13.htm     13.6.2.1795
1013. std ALLOCATE            NONE    malloc_ws       dpans14.htm     14.6.1.0707
1014. std FREE                NONE    malloc_ws       dpans14.htm     14.6.1.1605
1015. std RESIZE              NONE    malloc_ws       dpans14.htm     14.6.1.2145
1016. std .S                  NONE    progtools_ws    dpans15.htm     15.6.1.0220
1017. std ?                   NONE    progtools_ws    dpans15.htm     15.6.1.0600
1018. std DUMP                NONE    progtools_ws    dpans15.htm     15.6.1.1280
1019. std SEE                 NONE    progtools_ws    dpans15.htm     15.6.1.2194
1020. std WORDS               NONE    progtools_ws    dpans15.htm     15.6.1.2465
1021. std AHEAD               NONE    progtools_ws    dpans15.htm     15.6.2.0702
1022. std ASSEMBLER           NONE    progtools_ws    dpans15.htm     15.6.2.0740
1023. std BYE                 NONE    progtools_ws    dpans15.htm     15.6.2.0830
1024. std CS-PICK             NONE    progtools_ws    dpans15.htm     15.6.2.1015
1025. std CS-ROLL             NONE    progtools_ws    dpans15.htm     15.6.2.1020
1026. std EDITOR              NONE    progtools_ws    dpans15.htm     15.6.2.1300
1027. std FORGET              NONE    progtools_ws    dpans15.htm     15.6.2.1580
1028. std [ELSE]              NONE    progtools_ws    dpans15.htm     15.6.2.2531
1029. std [THEN]              NONE    progtools_ws    dpans15.htm     15.6.2.2533
1030. std DEFINITIONS         NONE    searchord_ws    dpans16.htm     16.6.1.1180
1031. std FORTH-WORDLIST      NONE    searchord_ws    dpans16.htm     16.6.1.1595
1032. std GET-CURRENT         NONE    searchord_ws    dpans16.htm     16.6.1.1643
1033. std GET-ORDER           NONE    searchord_ws    dpans16.htm     16.6.1.1647
1034. std SEARCH-WORDLIST     NONE    searchord_ws    dpans16.htm     16.6.1.2192
1035. std SET-CURRENT         NONE    searchord_ws    dpans16.htm     16.6.1.2195
1036. std SET-ORDER           NONE    searchord_ws    dpans16.htm     16.6.1.2197
1037. std WORDLIST            NONE    searchord_ws    dpans16.htm     16.6.1.2460
1038. std ALSO                NONE    searchord_ws    dpans16.htm     16.6.2.0715
1039. std FORTH               NONE    searchord_ws    dpans16.htm     16.6.2.1590
1040. std ONLY                NONE    searchord_ws    dpans16.htm     16.6.2.1965
1041. std ORDER               NONE    searchord_ws    dpans16.htm     16.6.2.1985
1042. std PREVIOUS            NONE    searchord_ws    dpans16.htm     16.6.2.2037
1043. std -TRAILING           NONE    string_ws       dpans17.htm     17.6.1.0170
1044. std /STRING             NONE    string_ws       dpans17.htm     17.6.1.0245
1045. std BLANK               NONE    string_ws       dpans17.htm     17.6.1.0780
1046. std CMOVE               NONE    string_ws       dpans17.htm     17.6.1.0910
1047. std CMOVE>              NONE    string_ws       dpans17.htm     17.6.1.0920
1048. std COMPARE             NONE    string_ws       dpans17.htm     17.6.1.0935
1049. std SEARCH              NONE    string_ws       dpans17.htm     17.6.1.2191
1050. std SLITERAL            NONE    string_ws       dpans17.htm     17.6.1.2212
596. std [']                 NONE    numeric         6.1.2510
597. std !                   NONE    core_ws         6.1.0010
598. std #                   NONE    core_ws         6.1.0030
599. std #>                  NONE    core_ws         6.1.0040
600. std #S                  NONE    core_ws         6.1.0050
601. std '                   NONE    core_ws         6.1.0070
602. std *                   NONE    core_ws         6.1.0090
603. std */                  NONE    core_ws         6.1.0100
604. std */MOD               NONE    core_ws         6.1.0110
605. std +                   NONE    core_ws         6.1.0120
606. std +!                  NONE    core_ws         6.1.0130
607. std +LOOP               NONE    core_ws         6.1.0140
608. std ,                   NONE    core_ws         6.1.0150
609. std -                   NONE    core_ws         6.1.0160
610. std .                   NONE    core_ws         6.1.0180
611. std /                   NONE    core_ws         6.1.0230
612. std /MOD                NONE    core_ws         6.1.0240
613. std 0<                  NONE    core_ws         6.1.0250
614. std 0=                  NONE    core_ws         6.1.0270
615. std 1+                  NONE    core_ws         6.1.0290
616. std 1-                  NONE    core_ws         6.1.0300
617. std 2!                  NONE    core_ws         6.1.0310
618. std 2*                  NONE    core_ws         6.1.0320
619. std 2/                  NONE    core_ws         6.1.0330
620. std 2@                  NONE    core_ws         6.1.0350
621. std 2DROP               NONE    core_ws         6.1.0370
622. std 2DUP                NONE    core_ws         6.1.0380
623. std 2OVER               NONE    core_ws         6.1.0400
624. std 2SWAP               NONE    core_ws         6.1.0430
625. std <                   NONE    core_ws         6.1.0480
626. std <#                  NONE    core_ws         6.1.0490
627. std =                   NONE    core_ws         6.1.0530
628. std >                   NONE    core_ws         6.1.0540
629. std >BODY               NONE    core_ws         6.1.0550
630. std >IN                 NONE    core_ws         6.1.0560
631. std >NUMBER             NONE    core_ws         6.1.0570
632. std >R                  NONE    core_ws         6.1.0580
633. std ?DUP                NONE    core_ws         6.1.0630
634. std @                   NONE    core_ws         6.1.0650
635. std ABORT               NONE    core_ws         6.1.0670
636. std ABS                 NONE    core_ws         6.1.0690
637. std ACCEPT              NONE    core_ws         6.1.0695
638. std ALIGN               NONE    core_ws         6.1.0705
639. std ALIGNED             NONE    core_ws         6.1.0706
640. std ALLOT               NONE    core_ws         6.1.0710
641. std AND                 NONE    core_ws         6.1.0720
642. std BASE                NONE    core_ws         6.1.0750
643. std BEGIN               NONE    core_ws         6.1.0760
644. std BL                  NONE    numeric         6.1.0770
645. std C!                  NONE    core_ws         6.1.0850
646. std C,                  NONE    core_ws         6.1.0860
647. std C@                  NONE    core_ws         6.1.0870
648. std CELL+               NONE    core_ws         6.1.0880
649. std CELLS               NONE    core_ws         6.1.0890
650. std CHAR+               NONE    core_ws         6.1.0897
651. std CHARS               NONE    core_ws         6.1.0898
652. std COUNT               NONE    core_ws         6.1.0980
653. std CR                  NONE    core_ws         6.1.0990
654. std DEPTH               NONE    core_ws         6.1.1200
655. std DO                  NONE    core_ws         6.1.1240
656. std DOES>               NONE    core_ws         6.1.1250
657. std DROP                NONE    core_ws         6.1.1260
658. std DUP                 NONE    core_ws         6.1.1290
659. std ELSE                NONE    core_ws         6.1.1310
660. std EMIT                NONE    core_ws         6.1.1320
661. std ENVIRONMENT?        NONE    core_ws         6.1.1345
662. std EVALUATE            NONE    core_ws         6.1.1360
663. std EXECUTE             NONE    core_ws         6.1.1370
664. std EXIT                NONE    core_ws         6.1.1380
665. std FILL                NONE    core_ws         6.1.1540
666. std FIND                NONE    core_ws         6.1.1550
667. std FM/MOD              NONE    core_ws         6.1.1561
668. std HERE                NONE    core_ws         6.1.1650
669. std HOLD                NONE    core_ws         6.1.1670
670. std I                   NONE    core_ws         6.1.1680
671. std IF                  NONE    core_ws         6.1.1700
672. std IMMEDIATE           NONE    core_ws         6.1.1710
673. std INVERT              NONE    core_ws         6.1.1720
674. std J                   NONE    core_ws         6.1.1730
675. std KEY                 NONE    core_ws         6.1.1750
676. std LEAVE               NONE    core_ws         6.1.1760
677. std LITERAL             NONE    core_ws         6.1.1780
678. std LOOP                NONE    core_ws         6.1.1800
679. std LSHIFT              NONE    core_ws         6.1.1805
680. std M*                  NONE    core_ws         6.1.1810
681. std MAX                 NONE    core_ws         6.1.1870
682. std MIN                 NONE    core_ws         6.1.1880
683. std MOD                 NONE    core_ws         6.1.1890
684. std MOVE                NONE    core_ws         6.1.1900
685. std NEGATE              NONE    core_ws         6.1.1910
686. std OR                  NONE    core_ws         6.1.1980
687. std OVER                NONE    core_ws         6.1.1990
688. std POSTPONE            NONE    core_ws         6.1.2033
689. std QUIT                NONE    core_ws         6.1.2050
690. std R>                  NONE    core_ws         6.1.2060
691. std R@                  NONE    core_ws         6.1.2070
692. std RECURSE             NONE    core_ws         6.1.2120
693. std REPEAT              NONE    core_ws         6.1.2140
694. std ROT                 NONE    core_ws         6.1.2160
695. std RSHIFT              NONE    core_ws         6.1.2162
696. std S>D                 NONE    core_ws         6.1.2170
697. std SIGN                NONE    core_ws         6.1.2210
698. std SM/REM              NONE    core_ws         6.1.2214
699. std SOURCE              NONE    core_ws         6.1.2216
700. std SPACE               NONE    core_ws         6.1.2220
701. std SPACES              NONE    core_ws         6.1.2230
702. std STATE               NONE    core_ws         6.1.2250
703. std SWAP                NONE    core_ws         6.1.2260
704. std THEN                NONE    core_ws         6.1.2270
705. std TYPE                NONE    core_ws         6.1.2310
706. std U.                  NONE    core_ws         6.1.2320
707. std U<                  NONE    core_ws         6.1.2340
708. std UM*                 NONE    core_ws         6.1.2360
709. std UM/MOD              NONE    core_ws         6.1.2370
710. std UNLOOP              NONE    core_ws         6.1.2380
711. std UNTIL               NONE    core_ws         6.1.2390
712. std WHILE               NONE    core_ws         6.1.2430
713. std WORD                NONE    core_ws         6.1.2450
714. std XOR                 NONE    core_ws         6.1.2490
715. std #TIB                NONE    core_ext_ws     6.2.0060
716. std .R                  NONE    core_ext_ws     6.2.0210
717. std 0<>                 NONE    core_ext_ws     6.2.0260
718. std 0>                  NONE    core_ext_ws     6.2.0280
719. std 2>R                 NONE    core_ext_ws     6.2.0340
720. std 2R>                 NONE    core_ext_ws     6.2.0410
721. std 2R@                 NONE    core_ext_ws     6.2.0415
722. std :NONAME             NONE    core_ext_ws     6.2.0455
723. std <>                  NONE    core_ext_ws     6.2.0500
724. std ?DO                 NONE    core_ext_ws     6.2.0620
725. std AGAIN               NONE    core_ext_ws     6.2.0700
726. std CASE                NONE    core_ext_ws     6.2.0873
727. std COMPILE,            NONE    core_ext_ws     6.2.0945
728. std CONVERT             NONE    core_ext_ws     6.2.0970
729. std ENDCASE             NONE    core_ext_ws     6.2.1342
730. std ENDOF               NONE    core_ext_ws     6.2.1343
731. std ERASE               NONE    core_ext_ws     6.2.1350
732. std EXPECT              NONE    core_ext_ws     6.2.1390
733. std NIP                 NONE    core_ext_ws     6.2.1930
734. std OF                  NONE    core_ext_ws     6.2.1950
735. std PAD                 NONE    core_ext_ws     6.2.2000
736. std PARSE               NONE    core_ext_ws     6.2.2008
737. std PICK                NONE    core_ext_ws     6.2.2030
738. std QUERY               NONE    core_ext_ws     6.2.2040
739. std REFILL              NONE    core_ext_ws     6.2.2125
740. std RESTORE-INPUT       NONE    core_ext_ws     6.2.2148
741. std ROLL                NONE    core_ext_ws     6.2.2150
742. std SAVE-INPUT          NONE    core_ext_ws     6.2.2182
743. std SOURCE-ID           NONE    core_ext_ws     6.2.2218
744. std SPAN                NONE    core_ext_ws     6.2.2240
745. std TIB                 NONE    core_ext_ws     6.2.2290
746. std TO                  NONE    core_ext_ws     6.2.2295
747. std TRUE                NONE    numeric         6.2.2298
748. std TUCK                NONE    core_ext_ws     6.2.2300
749. std U.R                 NONE    core_ext_ws     6.2.2330
750. std U>                  NONE    core_ext_ws     6.2.2350
751. std UNUSED              NONE    core_ext_ws     6.2.2395
752. std WITHIN              NONE    core_ext_ws     6.2.2440
753. std [COMPILE]           NONE    core_ext_ws     6.2.2530
754. std BLK                 NONE    block_ws        7.6.1.0790
755. std BLOCK               NONE    block_ws        7.6.1.0800
756. std BUFFER              NONE    block_ws        7.6.1.0820
757. std FLUSH               NONE    block_ws        7.6.1.1559
758. std LOAD                NONE    block_ws        7.6.1.1790
759. std SAVE-BUFFERS        NONE    block_ws        7.6.1.2180
760. std UPDATE              NONE    block_ws        7.6.1.2400
761. std EMPTY-BUFFERS       NONE    block_ws        7.6.2.1330
762. std LIST                NONE    block_ws        7.6.2.1770
763. std SCR                 NONE    block_ws        7.6.2.2190
764. std THRU                NONE    block_ws        7.6.2.2280
765. std 2LITERAL            NONE    double_ws       8.6.1.0390
766. std D+                  NONE    double_ws       8.6.1.1040
767. std D-                  NONE    double_ws       8.6.1.1050
768. std D.                  NONE    double_ws       8.6.1.1060
769. std D.R                 NONE    double_ws       8.6.1.1070
770. std D0<                 NONE    double_ws       8.6.1.1075
771. std D0=                 NONE    double_ws       8.6.1.1080
772. std D2*                 NONE    double_ws       8.6.1.1090
773. std D2/                 NONE    double_ws       8.6.1.1100
774. std D<                  NONE    double_ws       8.6.1.1110
775. std D=                  NONE    double_ws       8.6.1.1120
776. std D>S                 NONE    double_ws       8.6.1.1140
777. std DABS                NONE    double_ws       8.6.1.1160
778. std DMAX                NONE    double_ws       8.6.1.1210
779. std DMIN                NONE    double_ws       8.6.1.1220
780. std DNEGATE             NONE    double_ws       8.6.1.1230
781. std M*/                 NONE    double_ws       8.6.1.1820
782. std M+                  NONE    double_ws       8.6.1.1830
783. std 2ROT                NONE    double_ws       8.6.2.0420
784. std DU<                 NONE    double_ws       8.6.2.1270
785. std CATCH               NONE    exception_ws    9.6.1.0875
786. std THROW               NONE    exception_ws    9.6.1.2275
787. std AT-XY               NONE    facilities_ws   10.6.1.0742
788. std KEY?                NONE    facilities_ws   10.6.1.1755
789. std PAGE                NONE    facilities_ws   10.6.1.2005
790. std EKEY                NONE    facilities_ws   10.6.2.1305
791. std EKEY<CHAR           NONE    facilities_ws   10.6.2.1306
792. std EKEY?               NONE    facilities_ws   10.6.2.1307
793. std EMIT?               NONE    facilities_ws   10.6.2.1325
794. std MS                  NONE    facilities_ws   10.6.2.1905
795. std TIME&DATE           NONE    facilities_ws   10.6.2.2292
796. std BIN                 NONE    file_ws         11.6.1.0765
797. std CLOSE-FILE          NONE    file_ws         11.6.1.0900
798. std CREATE-FILE         NONE    file_ws         11.6.1.1010
799. std DELETE-FILE         NONE    file_ws         11.6.1.1190
800. std FILE-POSITION       NONE    file_ws         11.6.1.1520
801. std FILE-SIZE           NONE    file_ws         11.6.1.1522
802. std INCLUDE-FILE        NONE    file_ws         11.6.1.1717
803. std OPEN-FILE           NONE    file_ws         11.6.1.1970
804. std R/O                 NONE    file_ws         11.6.1.2054
805. std R/W                 NONE    file_ws         11.6.1.2056
806. std READ-FILE           NONE    file_ws         11.6.1.2080
807. std READ-LINE           NONE    file_ws         11.6.1.2090
808. std REPOSITION-FILE     NONE    file_ws         11.6.1.2142
809. std RESIZE-FILE         NONE    file_ws         11.6.1.2147
810. std W/O                 NONE    file_ws         11.6.1.2425
811. std WRITE-FILE          NONE    file_ws         11.6.1.2480
812. std WRITE-LINE          NONE    file_ws         11.6.1.2485
813. std FILE-STATUS         NONE    file_ws         11.6.2.1524
814. std FLUSH-FILE          NONE    file_ws         11.6.2.1560
815. std RENAME-FILE         NONE    file_ws         11.6.2.2130
816. std >FLOAT              NONE    fp_ws           12.6.1.0558
817. std D>F                 NONE    fp_ws           12.6.1.1130
818. std F!                  NONE    fp_ws           12.6.1.1400
819. std F*                  NONE    fp_ws           12.6.1.1410
820. std F+                  NONE    fp_ws           12.6.1.1420
821. std F-                  NONE    fp_ws           12.6.1.1425
822. std F/                  NONE    fp_ws           12.6.1.1430
823. std F0<                 NONE    fp_ws           12.6.1.1440
824. std F0=                 NONE    fp_ws           12.6.1.1450
825. std F<                  NONE    fp_ws           12.6.1.1460
826. std F>D                 NONE    fp_ws           12.6.1.1460
827. std F@                  NONE    fp_ws           12.6.1.1472
828. std FALIGN              NONE    fp_ws           12.6.1.1479
829. std FALIGNED            NONE    fp_ws           12.6.1.1483
830. std FDEPTH              NONE    fp_ws           12.6.1.1497
831. std FDROP               NONE    fp_ws           12.6.1.1500
832. std FDUP                NONE    fp_ws           12.6.1.1510
833. std FLITERAL            NONE    fp_ws           12.6.1.1552
834. std FLOAT+              NONE    fp_ws           12.6.1.1555
835. std FLOATS              NONE    fp_ws           12.6.1.1556
836. std FLOOR               NONE    fp_ws           12.6.1.1558
837. std FMAX                NONE    fp_ws           12.6.1.1562
838. std FMIN                NONE    fp_ws           12.6.1.1565
839. std FNEGATE             NONE    fp_ws           12.6.1.1567
840. std FOVER               NONE    fp_ws           12.6.1.1600
841. std FROT                NONE    fp_ws           12.6.1.1610
842. std FROUND              NONE    fp_ws           12.6.1.1612
843. std FSWAP               NONE    fp_ws           12.6.1.1620
844. std REPRESENT           NONE    fp_ws           12.6.1.2143
845. std DF!                 NONE    fp_ws           12.6.2.1203
846. std DF@                 NONE    fp_ws           12.6.2.1204
847. std DFALIGN             NONE    fp_ws           12.6.2.1205
848. std DFALIGNED           NONE    fp_ws           12.6.2.1207
849. std DFLOAT+             NONE    fp_ws           12.6.2.1208
850. std DFLOATS             NONE    fp_ws           12.6.2.1209
851. std F**                 NONE    fp_ws           12.6.2.1415
852. std F.                  NONE    fp_ws           12.6.2.1427
853. std FABS                NONE    fp_ws           12.6.2.1474
854. std FACOS               NONE    fp_ws           12.6.2.1476
855. std FACOSH              NONE    fp_ws           12.6.2.1477
856. std FALOG               NONE    fp_ws           12.6.2.1484
857. std FASIN               NONE    fp_ws           12.6.2.1486
858. std FASINH              NONE    fp_ws           12.6.2.1487
859. std FATAN               NONE    fp_ws           12.6.2.1488
860. std FATAN2              NONE    fp_ws           12.6.2.1489
861. std FATANH              NONE    fp_ws           12.6.2.1491
862. std FCOS                NONE    fp_ws           12.6.2.1493
863. std FCOSH               NONE    fp_ws           12.6.2.1494
864. std FE.                 NONE    fp_ws           12.6.2.1513
865. std FEXP                NONE    fp_ws           12.6.2.1515
866. std FEXPM1              NONE    fp_ws           12.6.2.1516
867. std FLN                 NONE    fp_ws           12.6.2.1553
868. std FLNP1               NONE    fp_ws           12.6.2.1554
869. std FLOG                NONE    fp_ws           12.6.2.1557
870. std FS.                 NONE    fp_ws           12.6.2.1613
871. std FSIN                NONE    fp_ws           12.6.2.1614
872. std FSINCOS             NONE    fp_ws           12.6.2.1616
873. std FSINH               NONE    fp_ws           12.6.2.1617
874. std FSQRT               NONE    fp_ws           12.6.2.1618
875. std FTAN                NONE    fp_ws           12.6.2.1625
876. std FTANH               NONE    fp_ws           12.6.2.1626
877. std F~                  NONE    fp_ws           12.6.2.1640
878. std PRECISION           NONE    fp_ws           12.6.2.2035
879. std SET-PRECISION       NONE    fp_ws           12.6.2.2200
880. std SF!                 NONE    fp_ws           12.6.2.2202
881. std SF@                 NONE    fp_ws           12.6.2.2203
882. std SFALIGN             NONE    fp_ws           12.6.2.2204
883. std SFALIGNED           NONE    fp_ws           12.6.2.2206
884. std SFLOAT+             NONE    fp_ws           12.6.2.2207
885. std SFLOATS             NONE    fp_ws           12.6.2.2208
886. std (LOCAL)             NONE    local_ws        13.6.1.0086
887. std LOCALS|             NONE    local_ws        13.6.2.1795
888. std ALLOCATE            NONE    malloc_ws       14.6.1.0707
889. std FREE                NONE    malloc_ws       14.6.1.1605
890. std RESIZE              NONE    malloc_ws       14.6.1.2145
891. std .S                  NONE    progtools_ws    15.6.1.0220
892. std ?                   NONE    progtools_ws    15.6.1.0600
893. std DUMP                NONE    progtools_ws    15.6.1.1280
894. std SEE                 NONE    progtools_ws    15.6.1.2194
895. std WORDS               NONE    progtools_ws    15.6.1.2465
896. std AHEAD               NONE    progtools_ws    15.6.2.0702
897. std ASSEMBLER           NONE    progtools_ws    15.6.2.0740
898. std BYE                 NONE    progtools_ws    15.6.2.0830
899. std CS-PICK             NONE    progtools_ws    15.6.2.1015
900. std CS-ROLL             NONE    progtools_ws    15.6.2.1020
901. std EDITOR              NONE    progtools_ws    15.6.2.1300
902. std FORGET              NONE    progtools_ws    15.6.2.1580
903. std [ELSE]              NONE    progtools_ws    15.6.2.2531
904. std [THEN]              NONE    progtools_ws    15.6.2.2533
905. std DEFINITIONS         NONE    searchord_ws    16.6.1.1180
906. std FORTH-WORDLIST      NONE    searchord_ws    16.6.1.1595
907. std GET-CURRENT         NONE    searchord_ws    16.6.1.1643
908. std GET-ORDER           NONE    searchord_ws    16.6.1.1647
909. std SEARCH-WORDLIST     NONE    searchord_ws    16.6.1.2192
910. std SET-CURRENT         NONE    searchord_ws    16.6.1.2195
911. std SET-ORDER           NONE    searchord_ws    16.6.1.2197
912. std WORDLIST            NONE    searchord_ws    16.6.1.2460
913. std ALSO                NONE    searchord_ws    16.6.2.0715
914. std FORTH               NONE    searchord_ws    16.6.2.1590
915. std ONLY                NONE    searchord_ws    16.6.2.1965
916. std ORDER               NONE    searchord_ws    16.6.2.1985
917. std PREVIOUS            NONE    searchord_ws    16.6.2.2037
918. std -TRAILING           NONE    string_ws       17.6.1.0170
919. std /STRING             NONE    string_ws       17.6.1.0245
920. std BLANK               NONE    string_ws       17.6.1.0780
921. std CMOVE               NONE    string_ws       17.6.1.0910
922. std CMOVE>              NONE    string_ws       17.6.1.0920
923. std COMPARE             NONE    string_ws       17.6.1.0935
924. std SEARCH              NONE    string_ws       17.6.1.2191
925. std SLITERAL            NONE    string_ws       17.6.1.2212
1051. 
1052. _DEFINITIONS
1053. 
1054. \ Revision history
1055. \ 0. 1st release to guinea pigs via comp.lang.forth
1056. \ 1. (BNE) Added multi-line comment 0 [IF]. Colored CHAR outside definitions.
1057. \ 2. (EJB) Added missing definitions for common but nonstandard words
1058. \    and cleaned up to account for case sensitivity.
1059. \ 3. (EJB) Fixed up to create conforming XHTML 1.0 Strict
1060. \ 4. (BNE) File check before nesting, moved file names to the hyperlink table,
1061. \    added some option flags, cleared hyperlink list for each run. Added more
1062. \    multiline comment words. Expands tabs to spaces. Title uses %20 for blanks.
1063. \ 5. (BNE) Added multiline { comment. Replaced -1 WORD with [CHAR] |.
1064. \    Put hyperlinks that should not be overridden in a separate wordlist.
1065. \ 6. (BNE) Limited this text to 80 columns, cleaned up comments a bit. Added
1066. \    option for different color schemes.
1067. \ 7. (DBU) Added dpanspath to configure the path to the dpans-files. Added
1068. \    linksource to output a hyperlink to the original source file. Added
1069. \    some words used in Win32Forth. Added copyright to output a copyright text
926. 
927. _DEFINITIONS
928. 
929. \ Revision history
930. \ 0. 1st release to guinea pigs via comp.lang.forth
931. \ 1. (BNE) Added multi-line comment 0 [IF]. Colored CHAR outside definitions.
932. \ 2. (EJB) Added missing definitions for common but nonstandard words
933. \    and cleaned up to account for case sensitivity.
934. \ 3. (EJB) Fixed up to create conforming XHTML 1.0 Strict
935. \ 4. (BNE) File check before nesting, moved file names to the hyperlink table,
936. \    added some option flags, cleared hyperlink list for each run. Added more
937. \    multiline comment words. Expands tabs to spaces. Title uses %20 for blanks.
938. \ 5. (BNE) Added multiline { comment. Replaced -1 WORD with [CHAR] |.
939. \    Put hyperlinks that should not be overridden in a separate wordlist.
940. \ 6. (BNE) Limited this text to 80 columns, cleaned up comments a bit. Added
941. \    option for different color schemes.
942. \ 7. (DBU) Added dpanspath to configure the path to the dpans-files. Added
943. \    linksource to output a hyperlink to the original source file. Added
944. \    some words used in Win32Forth. Added copyright to output a copyright text
1070. \    at the bottom of the HTML-file.
945. \    at the bottom of the XML-file.
1071. \ 8. (BNE) Put in Dirk's link to source file in header. Changed ['] to be
946. \ 8. (BNE) Put in Dirk's link to source file in header. Changed ['] to be
1072. \    simple colored link. Added Forth2HTML link at bottom.
947. \    simple colored link. Added Forth2XML link at bottom.
1073. \ 9. (BNE) Added index creation, fixed UPC & minor file nesting bug.
1074. \ 10. (BNE) Fixed glass jaw in SKIP". S" etc crashed if nothing else was on the
948. \ 9. (BNE) Added index creation, fixed UPC & minor file nesting bug.
949. \ 10. (BNE) Fixed glass jaw in SKIP". S" etc crashed if nothing else was on the
1075. \    line. Fixed link generation bug in multi-file HTML.
1076. 
950. \    line. Fixed link generation bug in multi-file XML.
951. \ 11. (EJB) Converted to XML output.
1077. 
952.