Diff for /gforth/Attic/gforth.ds between versions 1.14 and 1.16

version 1.14, 1995/04/20 09:42:52 version 1.16, 1995/06/03 14:24:42
Line 409  doc-sm/rem Line 409  doc-sm/rem

@node Double precision, Floating Point, Mixed precision, Arithmetic  @node Double precision, Floating Point, Mixed precision, Arithmetic
@subsection Double precision  @subsection Double precision

The outer (aka text) interpreter converts numbers containing a dot into
a double precision number. Note that only numbers with the dot as last
character are standard-conforming.

doc-d+  doc-d+
doc-d-  doc-d-
doc-dnegate  doc-dnegate
Line 419  doc-dmax Line 424  doc-dmax
@node Floating Point,  , Double precision, Arithmetic  @node Floating Point,  , Double precision, Arithmetic
@subsection Floating Point  @subsection Floating Point

The format of floating point numbers recognized by the outer (aka text)
interpreter is: a signed decimal number, possibly containing a decimal
point (@code{.}), followed by @code{E} or @code{e}, optionally followed
by a signed integer (the exponent). E.g., @code{1e} ist the same as
@code{+1.0e+1}. Note that a number without @code{e}
is not interpreted as floating-point number, but as double (if the
number contains a @code{.}) or single precision integer. Also,
conversions between string and floating point numbers always use base
10, irrespective of the value of @code{BASE}. If @code{BASE} contains a
value greater then 14, the @code{E} may be interpreted as digit and the
number will be interpreted as integer, unless it has a signed exponent
(both @code{+} and @code{-} are allowed as signs).

Angles in floating point operations are given in radians (a full circle  Angles in floating point operations are given in radians (a full circle
has 2 pi radians). Note, that gforth has a separate floating point  has 2 pi radians). Note, that gforth has a separate floating point
stack, but we use the unified notation.  stack, but we use the unified notation.
Line 1628  doc-/does-handler Line 1646  doc-/does-handler
@node ANS conformance, Model, Words, Top  @node ANS conformance, Model, Words, Top
@chapter ANS conformance  @chapter ANS conformance

ANS Forth systems are required to document certain implementation  To the best of our knowledge, gforth is an
choices. This chapter tries to meet these requirements. In many cases it
gives a way to ask the system for the information instead of providing  ANS Forth System
the information directly, in particular, if the information depends on  @itemize
the processor, the operating system or the installation options chosen,  @item providing the Core Extensions word set
or if they are likely to change during the maintenance of gforth.  @item providing the Block word set
@item providing the Block Extensions word set
@item providing the Double-Number word set
@item providing the Double-Number Extensions word set
@item providing the Exception word set
@item providing the Exception Extensions word set
@item providing the Facility word set
@item providing @code{MS} and @code{TIME&DATE} from the Facility Extensions word set
@item providing the File Access word set
@item providing the File Access Extensions word set
@item providing the Floating-Point word set
@item providing the Floating-Point Extensions word set
@item providing the Locals word set
@item providing the Locals Extensions word set
@item providing the Memory-Allocation word set
@item providing the Memory-Allocation Extensions word set (that one's easy)
@item providing the Programming-Tools word set
@item providing @code{AHEAD}, @code{BYE}, @code{CS-PICK}, @code{CS-ROLL}, @code{STATE}, @code{[ELSE]}, @code{[IF]}, @code{[THEN]} from the Programming-Tools Extensions word set
@item providing the Search-Order word set
@item providing the Search-Order Extensions word set
@item providing the String word set
@item providing the String Extensions word set (another easy one)
@end itemize

In addition, ANS Forth systems are required to document certain
implementation choices. This chapter tries to meet these
requirements. In many cases it gives a way to ask the system for the
information instead of providing the information directly, in
particular, if the information depends on the processor, the operating
system or the installation options chosen, or if they are likely to
change during the maintenance of gforth.

@comment The framework for the rest has been taken from pfe.  @comment The framework for the rest has been taken from pfe.

Line 1649  or if they are likely to change during t Line 1697  or if they are likely to change during t
* The optional Memory-Allocation word set::    * The optional Memory-Allocation word set::
* The optional Programming-Tools word set::    * The optional Programming-Tools word set::
* The optional Search-Order word set::    * The optional Search-Order word set::
* The optional String word set::

Line 1660  or if they are likely to change during t Line 1707  or if they are likely to change during t
@c =====================================================================  @c =====================================================================

* core-idef::                     * core-idef::                   Implementation Defined Options
* core-ambcond::                  * core-ambcond::                Ambiguous Conditions
* core-other::                    * core-other::                  Other System Documentation

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node core-idef, core-ambcond, The Core Words, The Core Words  @node core-idef, core-ambcond, The Core Words, The Core Words
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 1854  No. Line 1900  No.

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node core-ambcond, core-other, core-idef, The Core Words  @node core-ambcond, core-other, core-idef, The Core Words
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 1976  stack items are loop control parameters Line 2021  stack items are loop control parameters
@item name not defined by @code{VALUE} used by @code{TO}:  @item name not defined by @code{VALUE} used by @code{TO}:
@code{-32 throw} (Invalid name argument)  @code{-32 throw} (Invalid name argument)

@item name not found (@code{'}, @code{POSTPONE}, @code{[']}, @code{[COMPILE]}:  @item name not found (@code{'}, @code{POSTPONE}, @code{[']}, @code{[COMPILE]}):
@code{-13 throw} (Undefined word)  @code{-13 throw} (Undefined word)

@item parameters are not of the same type (@code{DO}, @code{?DO}, @code{WITHIN}):  @item parameters are not of the same type (@code{DO}, @code{?DO}, @code{WITHIN}):
Line 1991  Assume @code{: X POSTPONE TO ; IMMEDIATE Line 2036  Assume @code{: X POSTPONE TO ; IMMEDIATE
Not checked. The string will be ok, but the count will, of course,  Not checked. The string will be ok, but the count will, of course,
contain only the least significant bits of the length.  contain only the least significant bits of the length.

@item u greater than or equal to the number of bits in a cell (@code{LSHIFT}, @code{RSHIFT}:  @item u greater than or equal to the number of bits in a cell (@code{LSHIFT}, @code{RSHIFT}):
Processor-dependent. Typical behaviours are returning 0 and using only  Processor-dependent. Typical behaviours are returning 0 and using only
the low bits of the shift count.  the low bits of the shift count.

Line 2010  Not checked. As usual, you can expect me Line 2055  Not checked. As usual, you can expect me

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node core-other,  , core-ambcond, The Core Words  @node core-other,  , core-ambcond, The Core Words
@comment  node-name,  next,  previous,  up
@subsection Other system documentation  @subsection Other system documentation
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2041  writing, this gives 70108 (bytes) on a 3 Line 2085  writing, this gives 70108 (bytes) on a 3

@c =====================================================================  @c =====================================================================
@node The optional Block word set, The optional Double Number word set, The Core Words, ANS conformance  @node The optional Block word set, The optional Double Number word set, The Core Words, ANS conformance
@comment  node-name,  next,  previous,  up
@section The optional Block word set  @section The optional Block word set
@c =====================================================================  @c =====================================================================

* block-idef::                    * block-idef::                  Implementation Defined Options
* block-ambcond::                 * block-ambcond::               Ambiguous Conditions
* block-other::                   * block-other::                 Other System Documentation

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node block-idef, block-ambcond, The optional Block word set, The optional Block word set  @node block-idef, block-ambcond, The optional Block word set, The optional Block word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2071  each line preceded by the line number. Line 2113  each line preceded by the line number.

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node block-ambcond, block-other, block-idef, The optional Block word set  @node block-ambcond, block-other, block-idef, The optional Block word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2102  non-block input, the system will get qui Line 2143  non-block input, the system will get qui

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node block-other,  , block-ambcond, The optional Block word set  @node block-other,  , block-ambcond, The optional Block word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation  @subsection Other system documentation
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2119  depends on your disk space. Line 2159  depends on your disk space.

@c =====================================================================  @c =====================================================================
@node The optional Double Number word set, The optional Exception word set, The optional Block word set, ANS conformance  @node The optional Double Number word set, The optional Exception word set, The optional Block word set, ANS conformance
@comment  node-name,  next,  previous,  up
@section The optional Double Number word set  @section The optional Double Number word set
@c =====================================================================  @c =====================================================================

* double-idef::                   * double-ambcond::              Ambiguous Conditions
* double-ambcond::
* double-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node double-idef, double-ambcond, The optional Double Number word set, The optional Double Number word set  @node double-ambcond,  , The optional Double Number word set, The optional Double Number word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options
@c ---------------------------------------------------------------------

No additional documentation requirements.

@c ---------------------------------------------------------------------
@node double-ambcond, double-other, double-idef, The optional Double Number word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item @var{d} outside of range on @var{n} in @code{D>S}:  @item @var{d} outside of range of @var{n} in @code{D>S}:
The least significant cell of @var{d} is produced.  The least significant cell of @var{d} is produced.

@end table  @end table

@c ---------------------------------------------------------------------
@node double-other,  , double-ambcond, The optional Double Number word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

No additional documentation requirements.

@c =====================================================================  @c =====================================================================
@node The optional Exception word set, The optional Facility word set, The optional Double Number word set, ANS conformance  @node The optional Exception word set, The optional Facility word set, The optional Double Number word set, ANS conformance
@comment  node-name,  next,  previous,  up
@section The optional Exception word set  @section The optional Exception word set
@c =====================================================================  @c =====================================================================

* exception-idef::                * exception-idef::              Implementation Defined Options
* exception-ambcond::
* exception-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node exception-idef, exception-ambcond, The optional Exception word set, The optional Exception word set  @node exception-idef,  , The optional Exception word set, The optional Exception word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2192  strange number; e.g., @code{-1000 THROW} Line 2206  strange number; e.g., @code{-1000 THROW}
488} on my system.  488} on my system.
@end table  @end table

@c ---------------------------------------------------------------------
@node exception-ambcond, exception-other, exception-idef, The optional Exception word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions
@c ---------------------------------------------------------------------

No additional documentation requirements.

@c ---------------------------------------------------------------------
@node exception-other,  , exception-ambcond, The optional Exception word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

No additional documentation requirements.

@c =====================================================================  @c =====================================================================
@node The optional Facility word set, The optional File-Access word set, The optional Exception word set, ANS conformance  @node The optional Facility word set, The optional File-Access word set, The optional Exception word set, ANS conformance
@comment  node-name,  next,  previous,  up
@section The optional Facility word set  @section The optional Facility word set
@c =====================================================================  @c =====================================================================

* facility-idef::                 * facility-idef::               Implementation Defined Options
* facility-ambcond::              * facility-ambcond::            Ambiguous Conditions
* facility-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node facility-idef, facility-ambcond, The optional Facility word set, The optional Facility word set  @node facility-idef, facility-ambcond, The optional Facility word set, The optional Facility word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2250  other single-tasking systems, it should Line 2242  other single-tasking systems, it should

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node facility-ambcond, facility-other, facility-idef, The optional Facility word set  @node facility-ambcond,  , facility-idef, The optional Facility word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2265  simply nothing happen. Line 2256  simply nothing happen.
@end table  @end table

@c ---------------------------------------------------------------------
@node facility-other,  , facility-ambcond, The optional Facility word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

No additional documentation requirements.

@c =====================================================================  @c =====================================================================
@node The optional File-Access word set, The optional Floating-Point word set, The optional Facility word set, ANS conformance  @node The optional File-Access word set, The optional Floating-Point word set, The optional Facility word set, ANS conformance
@comment  node-name,  next,  previous,  up
@section The optional File-Access word set  @section The optional File-Access word set
@c =====================================================================  @c =====================================================================

* file-idef::                     * file-idef::                   Implementation Defined Options
* file-ambcond::                  * file-ambcond::                Ambiguous Conditions
* file-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node file-idef, file-ambcond, The optional File-Access word set, The optional File-Access word set  @node file-idef, file-ambcond, The optional File-Access word set, The optional File-Access word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2299  No additional documentation requirements Line 2278  No additional documentation requirements
@code{R/O}, @code{R/W} and @code{BIN} work as you would  @code{R/O}, @code{R/W} and @code{BIN} work as you would
expect. @code{W/O} translates into the C file opening mode @code{w} (or  expect. @code{W/O} translates into the C file opening mode @code{w} (or
@code{wb}): The file is cleared, if it exists, and created, if it does  @code{wb}): The file is cleared, if it exists, and created, if it does
not (both with @code{open-file} and @code{create-file}.  Under Unix  not (both with @code{open-file} and @code{create-file}).  Under Unix
@code{create-file} creates a file with 666 permissions modified by your  @code{create-file} creates a file with 666 permissions modified by your

Line 2325  along with the retured mode. Line 2304  along with the retured mode.
All files that are left via the exception are closed.  All files that are left via the exception are closed.

@item @var{ior} values and meaning:  @item @var{ior} values and meaning:
The @var{ior}s returned by the file words are intended as throw  The @var{ior}s returned by the file and memory allocation words are
codes. They typically are in the range -512@minus{}-2047 of OS errors.  intended as throw codes. They typically are in the range
The mapping from OS error numbers to @var{ior}s is  -512@minus{}-2047 of OS errors.  The mapping from OS error numbers to
-512@minus{}@var{errno}.  @var{ior}s is -512@minus{}@var{errno}.

@item maximum depth of file input nesting:  @item maximum depth of file input nesting:
limited by the amount of return stack, locals/TIB stack, and the number  limited by the amount of return stack, locals/TIB stack, and the number
Line 2351  methods could be implemented if there is Line 2330  methods could be implemented if there is
@end table  @end table

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node file-ambcond, file-other, file-idef, The optional File-Access word set  @node file-ambcond,  , file-idef, The optional File-Access word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

Line 2388  the source which loaded the block. (Bett Line 2366  the source which loaded the block. (Bett
@end table  @end table

@c ---------------------------------------------------------------------
@node file-other,  , file-ambcond, The optional File-Access word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

@table @i

@item

@end table

@c =====================================================================  @c =====================================================================
@node  The optional Floating-Point word set, The optional Locals word set, The optional File-Access word set, ANS conformance  @node  The optional Floating-Point word set, The optional Locals word set, The optional File-Access word set, ANS conformance
@comment  node-name,  next,  previous,  up  @section The optional Floating-Point word set
@section
@c =====================================================================  @c =====================================================================

* floating-idef::               floating-ambcond:: floating-other::  * floating-idef::               Implementation Defined Options
* floating-ambcond::              * floating-ambcond::            Ambiguous Conditions
* floating-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node floating-idef, floating-ambcond, The optional Floating-Point word set, The optional Floating-Point word set  @node floating-idef, floating-ambcond, The optional Floating-Point word set, The optional Floating-Point word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item format and range of floating point numbers:
System-dependent; the @code{double} type of C.

@end table  @item results of @code{REPRESENT} when @var{float} is out of range:
System dependent; @code{REPRESENT} is implemented using the C library
function @code{ecvt()} and inherits its behaviour in this respect.

@item rounding or truncation of floating-point numbers:
What's the question?!!

@c ---------------------------------------------------------------------  @item size of floating-point stack:
@node floating-ambcond, floating-other, floating-idef, The optional Floating-Point word set  @code{s" FLOATING-STACK" environment? drop .}. Can be changed at startup
@comment  node-name,  next,  previous,  up  with the command-line option @code{-f}.
@subsection Ambiguous conditions
@c ---------------------------------------------------------------------

@table @i  @item width of floating-point stack:
@code{1 floats}.
@item

@end table  @end table

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node floating-other,  , floating-ambcond, The optional Floating-Point word set  @node floating-ambcond,  , floating-idef, The optional Floating-Point word set
@comment  node-name,  next,  previous,  up  @subsection Ambiguous conditions
@subsection Other system documentation
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item @code{df@@} or @code{df!} used with an address that is not double-float  aligned:
System-dependent. Typically results in an alignment fault like other
@end table  alignment violations.

@item @code{f@@} or @code{f!} used with an address that is not float  aligned:
System-dependent. Typically results in an alignment fault like other
alignment violations.

@item Floating-point result out of range:
System-dependent. Can result in a @code{-55 THROW} (Floating-point
unidentified fault), or can produce a special value representing, e.g.,
Infinity.

@item @code{sf@@} or @code{sf!} used with an address that is not single-float  aligned:
System-dependent. Typically results in an alignment fault like other
alignment violations.

@item BASE is not decimal (@code{REPRESENT}, @code{F.}, @code{FE.}, @code{FS.}):
The floating-point number is converted into decimal nonetheless.

@item Both arguments are equal to zero (@code{FATAN2}):
System-dependent. @code{FATAN2} is implemented using the C library
function @code{atan2()}.

@item Using ftan on an argument @var{r1} where cos(@var{r1}) is zero:
System-dependent. Anyway, typically the cos of @var{r1} will not be zero
because of small errors and the tan will be a very large (or very small)
but finite number.

@item @var{d} cannot be presented precisely as a float in @code{D>F}:
The result is rounded to the nearest float.

@c =====================================================================  @item dividing by zero:
@node  The optional Locals word set, The optional Memory-Allocation word set, The optional Floating-Point word set, ANS conformance  @code{-55 throw} (Floating-point unidentified fault)
@comment  node-name,  next,  previous,  up
@section
@c =====================================================================

@menu  @item exponent too big for conversion (@code{DF!}, @code{DF@@}, @code{SF!}, @code{SF@@}):
* locals-idef::                   System dependent. On IEEE-FP based systems the number is converted into
* locals-ambcond::                an infinity.
* locals-other::

@item @var{float}<1 (@code{facosh}):
@code{-55 throw} (Floating-point unidentified fault)

@c ---------------------------------------------------------------------  @item @var{float}=<-1 (@code{flnp1}):
@node locals-idef, locals-ambcond, The optional Locals word set, The optional Locals word set  @code{-55 throw} (Floating-point unidentified fault). On IEEE-FP systems
@comment  node-name,  next,  previous,  up  negative infinity is typically produced for @var{float}=-1.
@subsection Implementation Defined Options
@c ---------------------------------------------------------------------

@table @i  @item @var{float}=<0 (@code{fln}, @code{flog}):
@code{-55 throw} (Floating-point unidentified fault). On IEEE-FP systems
negative infinity is typically produced for @var{float}=0.

@item  @item @var{float}<0 (@code{fasinh}, @code{fsqrt}):
@code{-55 throw} (Floating-point unidentified fault). @code{fasinh}
produces values for these inputs on my Linux box (Bug in the C library?)

@end table  @item |@var{float}|>1 (@code{facos}, @code{fasin}, @code{fatanh}):
@code{-55 throw} (Floating-point unidentified fault).

@item integer part of float cannot be represented by @var{d} in @code{f>d}:
@code{-55 throw} (Floating-point unidentified fault).

@c ---------------------------------------------------------------------  @item string larger than pictured numeric output area (@code{f.}, @code{fe.}, @code{fs.}):
@node locals-ambcond, locals-other, locals-idef, The optional Locals word set  This does not happen.
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions
@c ---------------------------------------------------------------------

@table @i

@item

@end table  @end table

@c ---------------------------------------------------------------------
@node locals-other,  , locals-ambcond, The optional Locals word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

@table @i

@item

@end table

@c =====================================================================  @c =====================================================================
@node  The optional Memory-Allocation word set, The optional Programming-Tools word set, The optional Locals word set, ANS conformance  @node  The optional Locals word set, The optional Memory-Allocation word set, The optional Floating-Point word set, ANS conformance
@comment  node-name,  next,  previous,  up  @section The optional Locals word set
@section
@c =====================================================================  @c =====================================================================

* memory-idef::                   * locals-idef::                 Implementation Defined Options
* memory-ambcond::                * locals-ambcond::              Ambiguous Conditions
* memory-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node memory-idef, memory-ambcond, The optional Memory-Allocation word set, The optional Memory-Allocation word set  @node locals-idef, locals-ambcond, The optional Locals word set, The optional Locals word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item maximum number of locals in a definition:
@code{s" #locals" environment? drop .}. Currently 15. This is a lower
bound, e.g., on a 32-bit machine there can be 41 locals of up to 8
characters. The number of locals in a definition is bounded by the size
of locals-buffer, which contains the names of the locals.

@end table  @end table

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node memory-ambcond, memory-other, memory-idef, The optional Memory-Allocation word set  @node locals-ambcond,  , locals-idef, The optional Locals word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item executing a named local in interpretation state:
@code{-14 throw} (Interpreting a compile-only word).
@end table

@c ---------------------------------------------------------------------  @item @var{name} not defined by @code{VALUE} or @code{(LOCAL)} (@code{TO}):
@node memory-other,  , memory-ambcond, The optional Memory-Allocation word set  @code{-32 throw} (Invalid name argument)
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

@table @i

@item

@end table  @end table

@c =====================================================================  @c =====================================================================
@node  The optional Programming-Tools word set, The optional Search-Order word set, The optional Memory-Allocation word set, ANS conformance  @node  The optional Memory-Allocation word set, The optional Programming-Tools word set, The optional Locals word set, ANS conformance
@comment  node-name,  next,  previous,  up  @section The optional Memory-Allocation word set
@section
@c =====================================================================  @c =====================================================================

* programming-idef::              * memory-idef::                 Implementation Defined Options
* programming-ambcond::
* programming-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node programming-idef, programming-ambcond, The optional Programming-Tools word set, The optional Programming-Tools word set  @node memory-idef,  , The optional Memory-Allocation word set, The optional Memory-Allocation word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item values and meaning of @var{ior}:
The @var{ior}s returned by the file and memory allocation words are
@end table  intended as throw codes. They typically are in the range
-512@minus{}-2047 of OS errors.  The mapping from OS error numbers to
@var{ior}s is -512@minus{}@var{errno}.
@c ---------------------------------------------------------------------
@node programming-ambcond, programming-other, programming-idef, The optional Programming-Tools word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions
@c ---------------------------------------------------------------------

@table @i

@item

@end table

@c ---------------------------------------------------------------------
@node programming-other,  , programming-ambcond, The optional Programming-Tools word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

@table @i

@item

@end table  @end table

@c =====================================================================  @c =====================================================================
@node  The optional Search-Order word set, The optional String word set, The optional Programming-Tools word set, ANS conformance  @node  The optional Programming-Tools word set, The optional Search-Order word set, The optional Memory-Allocation word set, ANS conformance
@comment  node-name,  next,  previous,  up  @section The optional Programming-Tools word set
@section
@c =====================================================================  @c =====================================================================

* search-idef::                   * programming-idef::            Implementation Defined Options
* search-ambcond::                * programming-ambcond::         Ambiguous Conditions
* search-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node search-idef, search-ambcond, The optional Search-Order word set, The optional Search-Order word set  @node programming-idef, programming-ambcond, The optional Programming-Tools word set, The optional Programming-Tools word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item ending sequence for input following @code{;code} and @code{code}:
Not implemented (yet).

@end table  @item manner of processing input following @code{;code} and @code{code}:
Not implemented (yet).

@item search order capability for @code{EDITOR} and @code{ASSEMBLER}:
Not implemented (yet). If they were implemented, they would use the
search order wordset.

@item source and format of display by @code{SEE}:
The source for @code{see} is the intermediate code used by the inner
interpreter.  The current @code{see} tries to output Forth source code
as well as possible.

@end table

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node search-ambcond, search-other, search-idef, The optional Search-Order word set  @node programming-ambcond,  , programming-idef, The optional Programming-Tools word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item deleting the compilation wordlist (@code{FORGET}):
Not implemented (yet).

@end table  @item fewer than @var{u}+1 items on the control flow stack (@code{CS-PICK}, @code{CS-ROLL}):
This typically results in an @code{abort"} with a descriptive error
message (may change into a @code{-22 throw} (Control structure mismatch)
in the future). You may also get a memory access error. If you are
unlucky, this ambiguous condition is not caught.

@item @var{name} can't be found (@code{forget}):
Not implemented (yet).

@c ---------------------------------------------------------------------  @item @var{name} not defined via @code{CREATE}:
@node search-other,  , search-ambcond, The optional Search-Order word set  @code{;code} is not implemented (yet). If it were, it would behave like
@comment  node-name,  next,  previous,  up  @code{DOES>} in this respect, i.e., change the execution semantics of
@subsection Other system documentation  the last defined word no matter how it was defined.
@c ---------------------------------------------------------------------

@table @i  @item @code{POSTPONE} applied to @code{[IF]}:
After defining @code{: X POSTPONE [IF] ; IMMEDIATE}. @code{X} is
equivalent to @code{[IF]}.

@item  @item reaching the end of the input source before matching @code{[ELSE]} or @code{[THEN]}:
Continue in the same state of conditional compilation in the next outer
input source. Currently there is no warning to the user about this.

@item removing a needed definition (@code{FORGET}):
Not implemented (yet).

@end table  @end table

@c =====================================================================  @c =====================================================================
@node  The optional String word set,  , The optional Search-Order word set, ANS conformance  @node  The optional Search-Order word set,  , The optional Programming-Tools word set, ANS conformance
@comment  node-name,  next,  previous,  up  @section The optional Search-Order word set
@section
@c =====================================================================  @c =====================================================================

* string-idef::                   * search-idef::                 Implementation Defined Options
* string-ambcond::                * search-ambcond::              Ambiguous Conditions
* string-other::

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node string-idef, string-ambcond, The optional String word set, The optional String word set  @node search-idef, search-ambcond, The optional Search-Order word set, The optional Search-Order word set
@comment  node-name,  next,  previous,  up
@subsection Implementation Defined Options  @subsection Implementation Defined Options
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item maximum number of word lists in search order:
@code{s" wordlists" environment? drop .}. Currently 16.

@end table  @item minimum search order:
@code{root root}.

@end table

@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------
@node string-ambcond, string-other, string-idef, The optional String word set  @node search-ambcond,  , search-idef, The optional Search-Order word set
@comment  node-name,  next,  previous,  up
@subsection Ambiguous conditions  @subsection Ambiguous conditions
@c ---------------------------------------------------------------------  @c ---------------------------------------------------------------------

@table @i  @table @i

@item  @item changing the compilation wordlist (during compilation):
The definition is put into the wordlist that is the compilation wordlist
when @code{REVEAL} is executed (by @code{;}, @code{DOES>},
@code{RECURSIVE}, etc.).

@end table  @item search order empty (@code{previous}):
@code{abort" Vocstack empty"}.

@item too many word lists in search order (@code{also}):
@c ---------------------------------------------------------------------  @code{abort" Vocstack full"}.
@node string-other,  , string-ambcond, The optional String word set
@comment  node-name,  next,  previous,  up
@subsection Other system documentation
@c ---------------------------------------------------------------------

@table @i

@item

@end table  @end table

@node Model, Emacs and GForth, ANS conformance, Top  @node Model, Emacs and GForth, ANS conformance, Top
@chapter Model  @chapter Model

 Removed from v.1.14 changed lines Added in v.1.16

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>