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 |
|
|