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

version 1.14, 1995/04/20 09:42:52 version 1.15, 1995/04/29 14:51:16
Line 1628  doc-/does-handler Line 1628  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 1679  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::    
 @end menu  @end menu
   
   
Line 1660  or if they are likely to change during t Line 1689  or if they are likely to change during t
 @c =====================================================================  @c =====================================================================
   
 @menu  @menu
 * core-idef::                     * core-idef::                   Implementation Defined Options                   
 * core-ambcond::                  * core-ambcond::                Ambiguous Conditions                
 * core-other::                    * core-other::                  Other System Documentation                  
 @end menu  @end menu
   
 @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 1882  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 2003  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 2018  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 2037  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 2067  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 =====================================================================
   
 @menu  @menu
 * block-idef::                    * block-idef::                  Implementation Defined Options                  
 * block-ambcond::                 * block-ambcond::               Ambiguous Conditions               
 * block-other::                   * block-other::                 Other System Documentation                 
 @end menu  @end menu
   
   
 @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 2095  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 2125  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 2141  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 =====================================================================
   
 @menu  @menu
 * double-idef::                   * double-ambcond::              Ambiguous Conditions              
 * double-ambcond::                
 * double-other::                  
 @end menu  @end menu
   
   
 @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 =====================================================================
   
 @menu  @menu
 * exception-idef::                * exception-idef::              Implementation Defined Options              
 * exception-ambcond::             
 * exception-other::               
 @end menu  @end menu
   
   
 @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 2188  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 =====================================================================
   
 @menu  @menu
 * facility-idef::                 * facility-idef::               Implementation Defined Options               
 * facility-ambcond::              * facility-ambcond::            Ambiguous Conditions            
 * facility-other::                
 @end menu  @end menu
   
   
 @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 2224  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 2238  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 =====================================================================
   
 @menu  @menu
 * file-idef::                     * file-idef::                   Implementation Defined Options                   
 * file-ambcond::                  * file-ambcond::                Ambiguous Conditions                
 * file-other::                    
 @end menu  @end menu
   
   
 @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 2260  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
 umask.  umask.
   
Line 2325  along with the retured mode. Line 2286  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 2312  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 2348  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 =====================================================================
   
 @menu  @menu
 * floating-idef::               floating-ambcond:: floating-other::  * floating-idef::               Implementation Defined Options
 * floating-ambcond::              * floating-ambcond::            Ambiguous Conditions            
 * floating-other::                
 @end menu  @end menu
   
   
 @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  @item width of floating-point stack:
   @code{1 floats}.
   
 @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
   alignment violations.
   
 @end table  @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.
   
 @c =====================================================================  @item @code{sf@@} or @code{sf!} used with an address that is not single-float  aligned:
 @node  The optional Locals word set, The optional Memory-Allocation word set, The optional Floating-Point word set, ANS conformance  System-dependent. Typically results in an alignment fault like other
 @comment  node-name,  next,  previous,  up  alignment violations.
 @section  
 @c =====================================================================  
   
 @menu  @item BASE is not decimal (@code{REPRESENT}, @code{F.}, @code{FE.}, @code{FS.}):
 * locals-idef::                   The floating-point number is converted into decimal nonetheless.
 * locals-ambcond::                
 * locals-other::                  
 @end menu  
   
   @item Both arguments are equal to zero (@code{FATAN2}):
   System-dependent. @code{FATAN2} is implemented using the C library
   function @code{atan2()}.
   
 @c ---------------------------------------------------------------------  @item Using ftan on an argument @var{r1} where cos(@var{r1}) is zero:
 @node locals-idef, locals-ambcond, The optional Locals word set, The optional Locals word set  System-dependent. Anyway, typically the cos of @var{r1} will not be zero
 @comment  node-name,  next,  previous,  up  because of small errors and the tan will be a very large (or very small)
 @subsection Implementation Defined Options  but finite number.
 @c ---------------------------------------------------------------------  
   
 @table @i  
   
 @item  @item @var{d} cannot be presented precisely as a float in @code{D>F}:
   The result is rounded to the nearest float.
 @end table  
   
   @item dividing by zero:
   @code{-55 throw} (Floating-point unidentified fault)
   
 @c ---------------------------------------------------------------------  @item exponent too big for conversion (@code{DF!}, @code{DF@@}, @code{SF!}, @code{SF@@}):
 @node locals-ambcond, locals-other, locals-idef, The optional Locals word set  System dependent. On IEEE-FP based systems the number is converted into
 @comment  node-name,  next,  previous,  up  an infinity.
 @subsection Ambiguous conditions  
 @c ---------------------------------------------------------------------  
   
 @table @i  @item @var{float}<1 (@code{facosh}):
   @code{-55 throw} (Floating-point unidentified fault)
   
 @item  @item @var{float}=<-1 (@code{flnp1}):
   @code{-55 throw} (Floating-point unidentified fault). On IEEE-FP systems
   negative infinity is typically produced for @var{float}=-1.
   
 @end table  @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 @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?)
   
 @c ---------------------------------------------------------------------  @item |@var{float}|>1 (@code{facos}, @code{fasin}, @code{fatanh}):
 @node locals-other,  , locals-ambcond, The optional Locals word set  @code{-55 throw} (Floating-point unidentified fault).
 @comment  node-name,  next,  previous,  up  
 @subsection Other system documentation  
 @c ---------------------------------------------------------------------  
   
 @table @i  @item integer part of float cannot be represented by @var{d} in @code{f>d}:
   @code{-55 throw} (Floating-point unidentified fault).
 @item  
   
   @item string larger than pictured numeric output area (@code{f.}, @code{fe.}, @code{fs.}):
   This does not happen.
 @end table  @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 =====================================================================
   
 @menu  @menu
 * memory-idef::                   * locals-idef::                 Implementation Defined Options                 
 * memory-ambcond::                * locals-ambcond::              Ambiguous Conditions              
 * memory-other::                  
 @end menu  @end menu
   
   
 @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 =====================================================================
   
 @menu  @menu
 * programming-idef::              * memory-idef::                 Implementation Defined Options                 
 * programming-ambcond::           
 * programming-other::             
 @end menu  @end menu
   
   
 @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 =====================================================================
   
 @menu  @menu
 * search-idef::                   * programming-idef::            Implementation Defined Options            
 * search-ambcond::                * programming-ambcond::         Ambiguous Conditions         
 * search-other::                  
 @end menu  @end menu
   
   
 @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 =====================================================================
   
 @menu  @menu
 * string-idef::                   * search-idef::                 Implementation Defined Options                 
 * string-ambcond::                * search-ambcond::              Ambiguous Conditions              
 * string-other::                  
 @end menu  @end menu
   
   
 @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.15


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