\
Forth to HTML converter
\
Brad Eckert
\
Revision 0. See bottom for revision history.
\
This ANS Forth program is public domain. It translates ANS Forth to colorized
\
HTML. Hyperlinks to the ANS Forth draft standard are inserted for all ANS
\
standard words. Hyperlinks to user definitions are included.
\
Usage: HTML FileName Generates HTML file from Forth source
\
output file is Filename with .HTM extension
\
Q [forth code] Outputs HTML for 1 line to screen
\
Q is used for debugging. You can use "linenum ?" to show the line number if an
\
ABORT occurs. The HTML is about 10 times as big as the Forth source because of
\
all the links, color changes and whitespace.
\
INCLUDEd files produce corresponding HTML pages. Most browsers get severely
\
bogged down with large files. If you're converting a large Forth program to
\
HTML, try to keep the source files under 500 lines each by splitting long
\
source into multiple INCLUDE files. HTML pages are best viewed with Internet
\
Explorer. Netscape ignores the <code> attribute and is more sluggish with
\
large files.
ONLY
FORTH
ALSO
DEFINITIONS
:
undefined
( <name> -- f )
BL
WORD
FIND
NIP
0=
;
undefined
+PLACE
[IF]
:
+PLACE
2DUP
2>R
COUNT
CHARS
+
SWAP
MOVE
2R>
C+!
;
[THEN]
undefined
PLACE
[IF]
:
PLACE
0
OVER
C!
+PLACE
;
[THEN]
undefined
FDROP
[IF]
:
FDROP
;
[THEN]
undefined
>FLOAT
[IF]
:
>FLOAT
DROP
C@
[CHAR] 0
[CHAR] 9
1+
WITHIN
;
[THEN]
0
VALUE
outf
\
output to file
1
VALUE
screen-only
\
screen is for testing
:
werr
abort"
Error writing file"
;
:
out
screen-only
IF
type
ELSE
outf
WRITE-FILE
werr
THEN
;
:
outln
screen-only
IF
type
cr
ELSE
outf
WRITE-LINE
werr
THEN
;
WORDLIST
CONSTANT
hyperlinks
VARIABLE
attrib
:
/a
( -- )
attrib
@
IF
S"
</a>"
out
THEN
0
attrib
!
;
:
,$
( a len -- )
DUP
C,
BOUNDS
?DO
I
C@
C,
LOOP
;
\
text to dictionary
:
text
( <text> -- )
-1
WORD
COUNT
-TRAILING
,$
;
:
line
( a line# -- )
0
?DO
COUNT
+
LOOP
COUNT
out
;
\
output one string
:
boiler
( addr -- )
BEGIN
COUNT
DUP
WHILE
2DUP
+
>R
outln
R>
REPEAT
2DROP
;
CREATE
misctext
\
various attribute strings
text
<a
style="text-decoration:none"
href=
text
<a
name="
text
">
text
<a
href="#
text
"
style="text-decoration:none">
text
</title></head><body
bgcolor="#FFFFEE"
text="#808080"><code>
text
<font
color="#
text
<font
color="#000000"><hr><h1>
text
</h1><hr>
0
c,
VARIABLE
color
\
current color
VARIABLE
oldcolor
-1
oldcolor
!
\
previous color
:
fontcolor
( color -- )
BASE
@
>R
\
change font color
misctext
6
line
0
HEX
<#
#
#
#
#
#
#
#>
out
misctext
2
line
R>
BASE
!
;
:
col
( color <name> -- )
\
define a font color
CREATE
,
DOES>
@
color
!
;
HEX
808080
col
unknown
008000
col
commentary
CC0000
col
numeric
990080
col
values
000000
col
userwords
009999
col
userdefiner
CC00CC
col
variables
0000FF
col
core_ws
0000FF
col
core_ext_ws
0000FF
col
block_ws
0000FF
col
double_ws
0000FF
col
exception_ws
0000FF
col
facilities_ws
0000FF
col
file_ws
0000FF
col
fp_ws
0000FF
col
local_ws
0000FF
col
malloc_ws
0000FF
col
progtools_ws
0000FF
col
searchord_ws
0000FF
col
string_ws
DECIMAL
CREATE
begin_header
\
begin of HTML file
text
<html>
<head>
text
<meta
http-equiv="Content-Type"
content="text/html;">
text
<meta
name="GENERATOR"
content="Forth2HTML
0.0">
text
<title>
0
C,
CREATE
end_header
\
end of HTML file
text
</code></body>
text
</html>
0
C,
:
setcolor
( -- )
\
select next color
color
@
DUP
oldcolor
@
<>
DROP
TRUE
\
always select a color so viewed hyperlinks don't change color
IF
DUP
fontcolor
THEN
oldcolor
!
;
VARIABLE
bltally
:
outh
( a n -- )
\
HTMLized text output
999
bltally
!
BOUNDS
?DO
I
C@
CASE
[CHAR] &
OF
S"
&"
out
ENDOF
[CHAR] <
OF
S"
<"
out
ENDOF
[CHAR] >
OF
S"
>"
out
ENDOF
[CHAR] "
OF
S"
""
out
ENDOF
BL
OF
bltally
@
0=
IF
S"
"
ELSE
S"
"
THEN
out
1
bltally
+!
ENDOF
I
1
out
0
bltally
!
ENDCASE
LOOP
;
:
label
( addr len -- )
/a
\
associate a label with a word
misctext
1
line
outh
misctext
2
line
1
attrib
!
;
:
std
( word color <string> -- )
CREATE
'
,
'
,
BL
WORD
COUNT
,$
DOES>
/a
DUP
>R
2
CELLS
+
misctext
0
line
\
begin hyperlink
BASE
@
>R
DECIMAL
COUNT
0
0
2OVER
>NUMBER
2DROP
D>S
R>
BASE
!
CASE
\
choose file name
6
OF
S"
dpans6.htm#"
out
ENDOF
7
OF
S"
dpans7.htm#"
out
ENDOF
8
OF
S"
dpans8.htm#"
out
ENDOF
9
OF
S"
dpans9.htm#"
out
ENDOF
10
OF
S"
dpans10.htm#"
out
ENDOF
11
OF
S"
dpans11.htm#"
out
ENDOF
12
OF
S"
dpans12.htm#"
out
ENDOF
13
OF
S"
dpans13.htm#"
out
ENDOF
14
OF
S"
dpans14.htm#"
out
ENDOF
15
OF
S"
dpans15.htm#"
out
ENDOF
16
OF
S"
dpans16.htm#"
out
ENDOF
17
OF
S"
dpans17.htm#"
out
ENDOF
ABORT"
Undefined source file"
ENDCASE
out
s"
>"
out
1
attrib
!
R>
2@
SWAP
EXECUTE
EXECUTE
;
\
extra attributes
:
genHTML
( -- )
\
generate pending HTML
PAD
COUNT
DUP
IF
setcolor
THEN
outh
/a
0
PAD
!
;
:
isnumber?
( addr len -- f )
\
string converts to number?
0
0
2SWAP
>NUMBER
NIP
NIP
NIP
0=
;
:
hparse
( a len char -- a' len' )
>R
2DUP
R@
SKIP
R>
SCAN
BL
SCAN
2SWAP
2
PICK
-
PAD
+PLACE
;
CREATE
XPAD
260
CHARS
ALLOT
\
temporary pad for word storage
CREATE
EPAD
80
CHARS
ALLOT
\
temporary pad for evaluation
:
>XPAD
( -- )
PAD
COUNT
BL
SKIP
XPAD
PLACE
;
\
move to temporary pad
:
hint
( addr len -- )
\
interpret one line...
BEGIN
0
PAD
!
BL
hparse
PAD
C@
WHILE
unknown
\
default color
>XPAD
XPAD
COUNT
hyperlinks
SEARCH-WORDLIST
\
got a hyperlink for this?
IF
DEPTH
>R
EXECUTE
R>
DEPTH
<>
ABORT"
stack depth change in HTML generator"
ELSE
XPAD
COUNT
BASE
@
10
=
IF
>FLOAT
IF
FDROP
numeric
THEN
\
valid float or integer
ELSE
isnumber?
IF
numeric
THEN
THEN
THEN
genHTML
REPEAT
2DROP
S"
<br>"
outln
;
\
new line
CREATE
inbuf
260
CHARS
ALLOT
CREATE
fn
128
CHARS
ALLOT
\
file name
CREATE
fn1
128
CHARS
ALLOT
\
file name backup
CREATE
pstr
128
CHARS
ALLOT
\
parsed string storage
CREATE
uname
64
CHARS
ALLOT
\
: definition name
0
VALUE
inf
VARIABLE
nufile
\
T if nesting a file
VARIABLE
utype
\
type of defined word
VARIABLE
hstate
VARIABLE
linenum
:
ofn
( -- addr len )
\
output file name
fn
COUNT
2DUP
[CHAR] .
SCAN
NIP
-
EPAD
PLACE
S"
.htm"
EPAD
+PLACE
EPAD
COUNT
;
:
hcreate
( addr len -- )
S"
CREATE "
EPAD
PLACE
EPAD
+PLACE
GET-CURRENT
>R
hyperlinks
SET-CURRENT
EPAD
COUNT
EVALUATE
R>
SET-CURRENT
;
\
create a hyperlink generator
\
The user defined words use the following data structure:
\
CELL xt of coloring word
\
STRING name of reference word
\
STRING name of file
:
deflink
( addr -- )
\
make hyperlink from data structure
DUP
@
EXECUTE
CELL+
\
set color
DUP
COUNT
+
COUNT
ofn
COMPARE
\
in an external file?
IF
misctext
0
line
DUP
COUNT
+
COUNT
out
\
yes, put file name
S"
#"
out
COUNT
outh
S"
>"
out
ELSE
misctext
3
line
COUNT
outh
\
no, just use the name
misctext
4
line
THEN
1
attrib
!
;
:
defx
( a len xt -- a' len' )
>R
genHTML
BL
hparse
>XPAD
\
output defining word
XPAD
COUNT
2DUP
hcreate
R>
,
,$
ofn
,$
DOES>
deflink
;
:
labelnow
genHTML
XPAD
COUNT
label
;
:
defdat
[']
numeric
defx
numeric
labelnow
;
:
defvar
[']
variables
defx
variables
labelnow
;
:
defusr
[']
userwords
defx
userwords
labelnow
;
:
defval
[']
values
defx
values
labelnow
;
:
defdef
[']
userdefiner
defx
userdefiner
labelnow
;
:
hstate=0
( -- )
0
hstate
!
;
:
hstate=1
( -- )
1
hstate
!
;
:
skip)
( a len -- a' len' )
[CHAR] )
hparse
;
:
skipw
( a len -- a' len' )
BL
hparse
;
:
skip"
( a len -- a' len' )
\
copy string to pstr
genHTML
[CHAR] "
hparse
PAD
COUNT
1-
pstr
PLACE
;
\
------------------------------------------------------------------------------
\
":" definitions might be defining words, so they can't be assumed to be defusr
\
types. ":" makes a label and saves the name for later use by ";" which makes
\
a hyperlink or a hyperlink defining word.
:NONAME
\
normal : definition
uname
COUNT
[']
userwords
defx
2DROP
0
PAD
!
;
CONSTANT
normal_def
:NONAME
uname
COUNT
2DUP
hcreate
[']
userwords
,
,$
ofn
,$
DOES>
deflink
defdef
;
CONSTANT
defining_def
:
defunk
( a len -- a' len' )
\
starting unknown definition
hstate=1
normal_def
utype
!
\
save name of : definition
genHTML
skipw
userwords
PAD
COUNT
BL
SKIP
2DUP
uname
PLACE
label
;
:
resunk
( -- )
\
resolve unknown defined word
genHTML
utype
@
EXECUTE
hstate=0
;
:
created
( -- )
hstate
@
IF
defining_def
utype
!
\
make ; create a defining word
ELSE
defdat
\
not compiling
THEN
;
\
------------------------------------------------------------------------------
:
header
( addr len -- )
\
output big header text
misctext
7
line
outln
misctext
8
line
;
:
_incfil
( addr -- )
\
trigger file nesting
fn
COUNT
fn1
PLACE
COUNT
BL
SKIP
fn
place
1
nufile
!
;
:
incfile
( a len -- a' len' )
\
include a file
genHTML
skipw
PAD
_incfil
;
:
"incfil
( a len -- a' len' )
\
include file from S" filename"
skipw
pstr
_incfil
;
:
hfill
( -- len )
\
read next line of file
inbuf
256
inf
READ-LINE
ABORT"
Error reading file"
;
:
open
( -- )
cr
."
Reading "
fn
COUNT
type
."
at line "
linenum
@
.
0
linenum
!
fn
COUNT
R/O
OPEN-FILE
ABORT"
Error opening source file"
to
inf
;
:
close
( -- )
cr
."
closing "
fn
COUNT
type
inf
CLOSE-FILE
ABORT"
Error closing file"
;
:
oopen
( -- )
ofn
W/O
CREATE-FILE
ABORT"
Error creating file"
to
outf
begin_header
boiler
\
begin boilerplate
fn
COUNT
outln
misctext
5
line
\
title and end boilerplate
fn
COUNT
header
;
:
HTML
( <infile> -- )
0
TO
screen-only
0
nufile
!
\
force usage of file
BL
WORD
COUNT
fn
PLACE
open
oopen
\
open input and output files
-1
DUP
>R
outf
>R
\
file nest uses stacks
hstate=0
BEGIN
BEGIN
nufile
@
\
nest a file?
IF
inf
outf
open
oopen
outf
>R
\
open new files
0
nufile
!
THEN
hfill
WHILE
inbuf
SWAP
hint
1
linenum
+!
REPEAT
DROP
close
fn1
COUNT
fn
PLACE
\
restore file name
DUP
-1
<>
IF
TO
outf
TO
inf
FALSE
\
unnest files
ELSE
TRUE
THEN
UNTIL
DROP
BEGIN
R>
DUP
-1
<>
\
close all output files
WHILE
end_header
boiler
\
finish up HTML
close-file
ABORT"
Error closing file"
REPEAT
DROP
;
:
q
( -- )
1
TO
screen-only
\
single line test
-1
word
count
inbuf
place
inbuf
count
hint
;
\
=============================================================================
:
_DEFINITIONS
DEFINITIONS
;
hyperlinks
SET-CURRENT
\
The following words are not in the ANS standard but are very common.
:
VOCABULARY
defusr
;
:
DEFER
defusr
;
:
INCLUDE
hstate
@
0=
IF
incfile
THEN
;
:
FLOAD
hstate
@
0=
IF
incfile
THEN
;
:
BINARY
2
BASE
!
;
:
OCTAL
8
BASE
!
;
:
0
numeric
;
:
1
numeric
;
:
-1
numeric
;
\
The rest is ANS Forth standard
:
\
commentary
genHTML
PAD
PLACE
PAD
0
;
( NAME ACTION COLOR REFERENCE )
( ------------------ ------ -------------- ----------- )
std
!
NOOP
core_ws
6.1.0010
std
#
NOOP
core_ws
6.1.0030
std
#>
NOOP
core_ws
6.1.0040
std
#S
NOOP
core_ws
6.1.0050
std
'
NOOP
core_ws
6.1.0070
std
(
skip)
commentary
6.1.0080
std
*
NOOP
core_ws
6.1.0090
std
*/
NOOP
core_ws
6.1.0100
std
*/MOD
NOOP
core_ws
6.1.0110
std
+
NOOP
core_ws
6.1.0120
std
+!
NOOP
core_ws
6.1.0130
std
+LOOP
NOOP
core_ws
6.1.0140
std
,
NOOP
core_ws
6.1.0150
std
-
NOOP
core_ws
6.1.0160
std
.
NOOP
core_ws
6.1.0180
std
."
skip"
numeric
6.1.0190
std
/
NOOP
core_ws
6.1.0230
std
/MOD
NOOP
core_ws
6.1.0240
std
0<
NOOP
core_ws
6.1.0250
std
0=
NOOP
core_ws
6.1.0270
std
1+
NOOP
core_ws
6.1.0290
std
1-
NOOP
core_ws
6.1.0300
std
2!
NOOP
core_ws
6.1.0310
std
2*
NOOP
core_ws
6.1.0320
std
2/
NOOP
core_ws
6.1.0330
std
2@
NOOP
core_ws
6.1.0350
std
2DROP
NOOP
core_ws
6.1.0370
std
2DUP
NOOP
core_ws
6.1.0380
std
2OVER
NOOP
core_ws
6.1.0400
std
2SWAP
NOOP
core_ws
6.1.0430
std
:
defunk
core_ws
6.1.0450
std
;
resunk
core_ws
6.1.0460
std
<
NOOP
core_ws
6.1.0480
std
<#
NOOP
core_ws
6.1.0490
std
=
NOOP
core_ws
6.1.0530
std
>
NOOP
core_ws
6.1.0540
std
>BODY
NOOP
core_ws
6.1.0550
std
>IN
NOOP
core_ws
6.1.0560
std
>NUMBER
NOOP
core_ws
6.1.0570
std
>R
NOOP
core_ws
6.1.0580
std
?DUP
NOOP
core_ws
6.1.0630
std
@
NOOP
core_ws
6.1.0650
std
ABORT
NOOP
core_ws
6.1.0670
std
ABORT"
skip"
numeric
6.1.0680
std
ABS
NOOP
core_ws
6.1.0690
std
ACCEPT
NOOP
core_ws
6.1.0695
std
ALIGN
NOOP
core_ws
6.1.0705
std
ALIGNED
NOOP
core_ws
6.1.0706
std
ALLOT
NOOP
core_ws
6.1.0710
std
AND
NOOP
core_ws
6.1.0720
std
BASE
NOOP
core_ws
6.1.0750
std
BEGIN
NOOP
core_ws
6.1.0760
std
BL
NOOP
numeric
6.1.0770
std
C!
NOOP
core_ws
6.1.0850
std
C,
NOOP
core_ws
6.1.0860
std
C@
NOOP
core_ws
6.1.0870
std
CELL+
NOOP
core_ws
6.1.0880
std
CELLS
NOOP
core_ws
6.1.0890
std
CHAR
NOOP
core_ws
6.1.0895
std
CHAR+
NOOP
core_ws
6.1.0897
std
CHARS
NOOP
core_ws
6.1.0898
std
CONSTANT
defdat
core_ws
6.1.0950
std
COUNT
NOOP
core_ws
6.1.0980
std
CR
NOOP
core_ws
6.1.0990
std
CREATE
created
core_ws
6.1.1000
std
DECIMAL
DECIMAL
core_ws
6.1.1170
std
DEPTH
NOOP
core_ws
6.1.1200
std
DO
NOOP
core_ws
6.1.1240
std
DOES>
NOOP
core_ws
6.1.1250
std
DROP
NOOP
core_ws
6.1.1260
std
DUP
NOOP
core_ws
6.1.1290
std
ELSE
NOOP
core_ws
6.1.1310
std
EMIT
NOOP
core_ws
6.1.1320
std
ENVIRONMENT?
NOOP
core_ws
6.1.1345
std
EVALUATE
NOOP
core_ws
6.1.1360
std
EXECUTE
NOOP
core_ws
6.1.1370
std
EXIT
NOOP
core_ws
6.1.1380
std
FILL
NOOP
core_ws
6.1.1540
std
FIND
NOOP
core_ws
6.1.1550
std
FM/MOD
NOOP
core_ws
6.1.1561
std
HERE
NOOP
core_ws
6.1.1650
std
HOLD
NOOP
core_ws
6.1.1670
std
I
NOOP
core_ws
6.1.1680
std
IF
NOOP
core_ws
6.1.1700
std
IMMEDIATE
NOOP
core_ws
6.1.1710
std
INVERT
NOOP
core_ws
6.1.1720
std
J
NOOP
core_ws
6.1.1730
std
KEY
NOOP
core_ws
6.1.1750
std
LEAVE
NOOP
core_ws
6.1.1760
std
LITERAL
NOOP
core_ws
6.1.1780
std
LOOP
NOOP
core_ws
6.1.1800
std
LSHIFT
NOOP
core_ws
6.1.1805
std
M*
NOOP
core_ws
6.1.1810
std
MAX
NOOP
core_ws
6.1.1870
std
MIN
NOOP
core_ws
6.1.1880
std
MOD
NOOP
core_ws
6.1.1890
std
MOVE
NOOP
core_ws
6.1.1900
std
NEGATE
NOOP
core_ws
6.1.1910
std
OR
NOOP
core_ws
6.1.1980
std
OVER
NOOP
core_ws
6.1.1990
std
POSTPONE
NOOP
core_ws
6.1.2033
std
QUIT
NOOP
core_ws
6.1.2050
std
R>
NOOP
core_ws
6.1.2060
std
R@
NOOP
core_ws
6.1.2070
std
RECURSE
NOOP
core_ws
6.1.2120
std
REPEAT
NOOP
core_ws
6.1.2140
std
ROT
NOOP
core_ws
6.1.2160
std
RSHIFT
NOOP
core_ws
6.1.2162
std
S"
skip"
numeric
6.1.2165
std
S>D
NOOP
core_ws
6.1.2170
std
SIGN
NOOP
core_ws
6.1.2210
std
SM/REM
NOOP
core_ws
6.1.2214
std
SOURCE
NOOP
core_ws
6.1.2216
std
SPACE
NOOP
core_ws
6.1.2220
std
SPACES
NOOP
core_ws
6.1.2230
std
STATE
NOOP
core_ws
6.1.2250
std
SWAP
NOOP
core_ws
6.1.2260
std
THEN
NOOP
core_ws
6.1.2270
std
TYPE
NOOP
core_ws
6.1.2310
std
U.
NOOP
core_ws
6.1.2320
std
U<
NOOP
core_ws
6.1.2340
std
UM*
NOOP
core_ws
6.1.2360
std
UM/MOD
NOOP
core_ws
6.1.2370
std
UNLOOP
NOOP
core_ws
6.1.2380
std
UNTIL
NOOP
core_ws
6.1.2390
std
VARIABLE
defvar
core_ws
6.1.2410
std
WHILE
NOOP
core_ws
6.1.2430
std
WORD
NOOP
core_ws
6.1.2450
std
XOR
NOOP
core_ws
6.1.2490
std
[
hstate=0
core_ws
6.1.2500
std
[']
skipw
numeric
6.1.2510
std
[CHAR]
skipw
numeric
6.1.2520
std
]
hstate=1
core_ws
6.1.2540
std
#TIB
NOOP
core_ext_ws
6.2.0060
std
.(
skip)
commentary
6.2.0200
std
.R
NOOP
core_ext_ws
6.2.0210
std
0<>
NOOP
core_ext_ws
6.2.0260
std
0>
NOOP
core_ext_ws
6.2.0280
std
2>R
NOOP
core_ext_ws
6.2.0340
std
2R>
NOOP
core_ext_ws
6.2.0410
std
2R@
NOOP
core_ext_ws
6.2.0415
std
:NONAME
NOOP
core_ext_ws
6.2.0455
std
<>
NOOP
core_ext_ws
6.2.0500
std
?DO
NOOP
core_ext_ws
6.2.0620
std
AGAIN
NOOP
core_ext_ws
6.2.0700
std
C"
skip"
numeric
6.2.0855
std
CASE
NOOP
core_ext_ws
6.2.0873
std
COMPILE,
NOOP
core_ext_ws
6.2.0945
std
CONVERT
NOOP
core_ext_ws
6.2.0970
std
ENDCASE
NOOP
core_ext_ws
6.2.1342
std
ENDOF
NOOP
core_ext_ws
6.2.1343
std
ERASE
NOOP
core_ext_ws
6.2.1350
std
EXPECT
NOOP
core_ext_ws
6.2.1390
std
FALSE
NOOP
numeric
6.2.1485
std
HEX
HEX
core_ext_ws
6.2.1660
std
MARKER
defusr
core_ext_ws
6.2.1850
std
NIP
NOOP
core_ext_ws
6.2.1930
std
OF
NOOP
core_ext_ws
6.2.1950
std
PAD
NOOP
core_ext_ws
6.2.2000
std
PARSE
NOOP
core_ext_ws
6.2.2008
std
PICK
NOOP
core_ext_ws
6.2.2030
std
QUERY
NOOP
core_ext_ws
6.2.2040
std
REFILL
NOOP
core_ext_ws
6.2.2125
std
RESTORE-INPUT
NOOP
core_ext_ws
6.2.2148
std
ROLL
NOOP
core_ext_ws
6.2.2150
std
SAVE-INPUT
NOOP
core_ext_ws
6.2.2182
std
SOURCE-ID
NOOP
core_ext_ws
6.2.2218
std
SPAN
NOOP
core_ext_ws
6.2.2240
std
TIB
NOOP
core_ext_ws
6.2.2290
std
TO
NOOP
core_ext_ws
6.2.2295
std
TRUE
NOOP
numeric
6.2.2298
std
TUCK
NOOP
core_ext_ws
6.2.2300
std
U.R
NOOP
core_ext_ws
6.2.2330
std
U>
NOOP
core_ext_ws
6.2.2350
std
UNUSED
NOOP
core_ext_ws
6.2.2395
std
VALUE
defval
core_ext_ws
6.2.2405
std
WITHIN
NOOP
core_ext_ws
6.2.2440
std
[COMPILE]
NOOP
core_ext_ws
6.2.2530
std
BLK
NOOP
block_ws
7.6.1.0790
std
BLOCK
NOOP
block_ws
7.6.1.0800
std
BUFFER
NOOP
block_ws
7.6.1.0820
std
FLUSH
NOOP
block_ws
7.6.1.1559
std
LOAD
NOOP
block_ws
7.6.1.1790
std
SAVE-BUFFERS
NOOP
block_ws
7.6.1.2180
std
UPDATE
NOOP
block_ws
7.6.1.2400
std
EMPTY-BUFFERS
NOOP
block_ws
7.6.2.1330
std
LIST
NOOP
block_ws
7.6.2.1770
std
SCR
NOOP
block_ws
7.6.2.2190
std
THRU
NOOP
block_ws
7.6.2.2280
std
2CONSTANT
defdat
double_ws
8.6.1.0360
std
2LITERAL
NOOP
double_ws
8.6.1.0390
std
2VARIABLE
defvar
double_ws
8.6.1.0440
std
D+
NOOP
double_ws
8.6.1.1040
std
D-
NOOP
double_ws
8.6.1.1050
std
D.
NOOP
double_ws
8.6.1.1060
std
D.R
NOOP
double_ws
8.6.1.1070
std
D0<
NOOP
double_ws
8.6.1.1075
std
D0=
NOOP
double_ws
8.6.1.1080
std
D2*
NOOP
double_ws
8.6.1.1090
std
D2/
NOOP
double_ws
8.6.1.1100
std
D<
NOOP
double_ws
8.6.1.1110
std
D=
NOOP
double_ws
8.6.1.1120
std
D>S
NOOP
double_ws
8.6.1.1140
std
DABS
NOOP
double_ws
8.6.1.1160
std
DMAX
NOOP
double_ws
8.6.1.1210
std
DMIN
NOOP
double_ws
8.6.1.1220
std
DNEGATE
NOOP
double_ws
8.6.1.1230
std
M*/
NOOP
double_ws
8.6.1.1820
std
M+
NOOP
double_ws
8.6.1.1830
std
2ROT
NOOP
double_ws
8.6.2.0420
std
DU<
NOOP
double_ws
8.6.2.1270
std
CATCH
NOOP
exception_ws
9.6.1.0875
std
THROW
NOOP
exception_ws
9.6.1.2275
std
AT-XY
NOOP
facilities_ws
10.6.1.0742
std
KEY?
NOOP
facilities_ws
10.6.1.1755
std
PAGE
NOOP
facilities_ws
10.6.1.2005
std
EKEY
NOOP
facilities_ws
10.6.2.1305
std
EKEY<CHAR
NOOP
facilities_ws
10.6.2.1306
std
EKEY?
NOOP
facilities_ws
10.6.2.1307
std
EMIT?
NOOP
facilities_ws
10.6.2.1325
std
MS
NOOP
facilities_ws
10.6.2.1905
std
TIME&DATE
NOOP
facilities_ws
10.6.2.2292
std
BIN
NOOP
file_ws
11.6.1.0765
std
CLOSE-FILE
NOOP
file_ws
11.6.1.0900
std
CREATE-FILE
NOOP
file_ws
11.6.1.1010
std
DELETE-FILE
NOOP
file_ws
11.6.1.1190
std
FILE-POSITION
NOOP
file_ws
11.6.1.1520
std
FILE-SIZE
NOOP
file_ws
11.6.1.1522
std
INCLUDE-FILE
NOOP
file_ws
11.6.1.1717
std
INCLUDED
"incfil
file_ws
11.6.1.1718
std
OPEN-FILE
NOOP
file_ws
11.6.1.1970
std
R/O
NOOP
file_ws
11.6.1.2054
std
R/W
NOOP
file_ws
11.6.1.2056
std
READ-FILE
NOOP
file_ws
11.6.1.2080
std
READ-LINE
NOOP
file_ws
11.6.1.2090
std
REPOSITION-FILE
NOOP
file_ws
11.6.1.2142
std
RESIZE-FILE
NOOP
file_ws
11.6.1.2147
std
W/O
NOOP
file_ws
11.6.1.2425
std
WRITE-FILE
NOOP
file_ws
11.6.1.2480
std
WRITE-LINE
NOOP
file_ws
11.6.1.2485
std
FILE-STATUS
NOOP
file_ws
11.6.2.1524
std
FLUSH-FILE
NOOP
file_ws
11.6.2.1560
std
RENAME-FILE
NOOP
file_ws
11.6.2.2130
std
>FLOAT
NOOP
fp_ws
12.6.1.0558
std
D>F
NOOP
fp_ws
12.6.1.1130
std
F!
NOOP
fp_ws
12.6.1.1400
std
F*
NOOP
fp_ws
12.6.1.1410
std
F+
NOOP
fp_ws
12.6.1.1420
std
F-
NOOP
fp_ws
12.6.1.1425
std
F/
NOOP
fp_ws
12.6.1.1430
std
F0<
NOOP
fp_ws
12.6.1.1440
std
F0=
NOOP
fp_ws
12.6.1.1450
std
F<
NOOP
fp_ws
12.6.1.1460
std
F>D
NOOP
fp_ws
12.6.1.1460
std
F@
NOOP
fp_ws
12.6.1.1472
std
FALIGN
NOOP
fp_ws
12.6.1.1479
std
FALIGNED
NOOP
fp_ws
12.6.1.1483
std
FCONSTANT
defdat
fp_ws
12.6.1.1492
std
FDEPTH
NOOP
fp_ws
12.6.1.1497
std
FDROP
NOOP
fp_ws
12.6.1.1500
std
FDUP
NOOP
fp_ws
12.6.1.1510
std
FLITERAL
NOOP
fp_ws
12.6.1.1552
std
FLOAT+
NOOP
fp_ws
12.6.1.1555
std
FLOATS
NOOP
fp_ws
12.6.1.1556
std
FLOOR
NOOP
fp_ws
12.6.1.1558
std
FMAX
NOOP
fp_ws
12.6.1.1562
std
FMIN
NOOP
fp_ws
12.6.1.1565
std
FNEGATE
NOOP
fp_ws
12.6.1.1567
std
FOVER
NOOP
fp_ws
12.6.1.1600
std
FROT
NOOP
fp_ws
12.6.1.1610
std
FROUND
NOOP
fp_ws
12.6.1.1612
std
FSWAP
NOOP
fp_ws
12.6.1.1620
std
FVARIABLE
defvar
fp_ws
12.6.1.1630
std
REPRESENT
NOOP
fp_ws
12.6.1.2143
std
DF!
NOOP
fp_ws
12.6.2.1203
std
DF@
NOOP
fp_ws
12.6.2.1204
std
DFALIGN
NOOP
fp_ws
12.6.2.1205
std
DFALIGNED
NOOP
fp_ws
12.6.2.1207
std
DFLOAT+
NOOP
fp_ws
12.6.2.1208
std
DFLOATS
NOOP
fp_ws
12.6.2.1209
std
F**
NOOP
fp_ws
12.6.2.1415
std
F.
NOOP
fp_ws
12.6.2.1427
std
FABS
NOOP
fp_ws
12.6.2.1474
std
FACOS
NOOP
fp_ws
12.6.2.1476
std
FACOSH
NOOP
fp_ws
12.6.2.1477
std
FALOG
NOOP
fp_ws
12.6.2.1484
std
FASIN
NOOP
fp_ws
12.6.2.1486
std
FASINH
NOOP
fp_ws
12.6.2.1487
std
FATAN
NOOP
fp_ws
12.6.2.1488
std
FATAN2
NOOP
fp_ws
12.6.2.1489
std
FATANH
NOOP
fp_ws
12.6.2.1491
std
FCOS
NOOP
fp_ws
12.6.2.1493
std
FCOSH
NOOP
fp_ws
12.6.2.1494
std
FE.
NOOP
fp_ws
12.6.2.1513
std
FEXP
NOOP
fp_ws
12.6.2.1515
std
FEXPM1
NOOP
fp_ws
12.6.2.1516
std
FLN
NOOP
fp_ws
12.6.2.1553
std
FLNP1
NOOP
fp_ws
12.6.2.1554
std
FLOG
NOOP
fp_ws
12.6.2.1557
std
FS.
NOOP
fp_ws
12.6.2.1613
std
FSIN
NOOP
fp_ws
12.6.2.1614
std
FSINCOS
NOOP
fp_ws
12.6.2.1616
std
FSINH
NOOP
fp_ws
12.6.2.1617
std
FSQRT
NOOP
fp_ws
12.6.2.1618
std
FTAN
NOOP
fp_ws
12.6.2.1625
std
FTANH
NOOP
fp_ws
12.6.2.1626
std
F~
NOOP
fp_ws
12.6.2.1640
std
PRECISION
NOOP
fp_ws
12.6.2.2035
std
SET-PRECISION
NOOP
fp_ws
12.6.2.2200
std
SF!
NOOP
fp_ws
12.6.2.2202
std
SF@
NOOP
fp_ws
12.6.2.2203
std
SFALIGN
NOOP
fp_ws
12.6.2.2204
std
SFALIGNED
NOOP
fp_ws
12.6.2.2206
std
SFLOAT+
NOOP
fp_ws
12.6.2.2207
std
SFLOATS
NOOP
fp_ws
12.6.2.2208
std
(LOCAL)
NOOP
local_ws
13.6.1.0086
std
LOCALS|
NOOP
local_ws
13.6.2.1795
std
ALLOCATE
NOOP
malloc_ws
14.6.1.0707
std
FREE
NOOP
malloc_ws
14.6.1.1605
std
RESIZE
NOOP
malloc_ws
14.6.1.2145
std
.S
NOOP
progtools_ws
15.6.1.0220
std
?
NOOP
progtools_ws
15.6.1.0600
std
DUMP
NOOP
progtools_ws
15.6.1.1280
std
SEE
NOOP
progtools_ws
15.6.1.2194
std
WORDS
NOOP
progtools_ws
15.6.1.2465
std
;CODE
resunk
progtools_ws
15.6.2.0470
std
AHEAD
NOOP
progtools_ws
15.6.2.0702
std
ASSEMBLER
NOOP
progtools_ws
15.6.2.0740
std
BYE
NOOP
progtools_ws
15.6.2.0830
std
CODE
defusr
progtools_ws
15.6.2.0930
std
CS-PICK
NOOP
progtools_ws
15.6.2.1015
std
CS-ROLL
NOOP
progtools_ws
15.6.2.1020
std
EDITOR
NOOP
progtools_ws
15.6.2.1300
std
FORGET
NOOP
progtools_ws
15.6.2.1580
std
[ELSE]
NOOP
progtools_ws
15.6.2.2531
std
[IF]
NOOP
progtools_ws
15.6.2.2532
std
[THEN]
NOOP
progtools_ws
15.6.2.2533
std
DEFINITIONS
NOOP
searchord_ws
16.6.1.1180
std
FORTH-WORDLIST
NOOP
searchord_ws
16.6.1.1595
std
GET-CURRENT
NOOP
searchord_ws
16.6.1.1643
std
GET-ORDER
NOOP
searchord_ws
16.6.1.1647
std
SEARCH-WORDLIST
NOOP
searchord_ws
16.6.1.2192
std
SET-CURRENT
NOOP
searchord_ws
16.6.1.2195
std
SET-ORDER
NOOP
searchord_ws
16.6.1.2197
std
WORDLIST
NOOP
searchord_ws
16.6.1.2460
std
ALSO
NOOP
searchord_ws
16.6.2.0715
std
FORTH
NOOP
searchord_ws
16.6.2.1590
std
ONLY
NOOP
searchord_ws
16.6.2.1965
std
ORDER
NOOP
searchord_ws
16.6.2.1985
std
PREVIOUS
NOOP
searchord_ws
16.6.2.2037
std
-TRAILING
NOOP
string_ws
17.6.1.0170
std
/STRING
NOOP
string_ws
17.6.1.0245
std
BLANK
NOOP
string_ws
17.6.1.0780
std
CMOVE
NOOP
string_ws
17.6.1.0910
std
CMOVE>
NOOP
string_ws
17.6.1.0920
std
COMPARE
NOOP
string_ws
17.6.1.0935
std
SEARCH
NOOP
string_ws
17.6.1.2191
std
SLITERAL
NOOP
string_ws
17.6.1.2212
_DEFINITIONS
\
Revision history
\
0. Released to guinea pigs via comp.lang.forth