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