Diff for /gforth/Attic/gforth.ds between versions 1.40 and 1.42

version 1.40, 1996/11/11 16:59:16 version 1.42, 1997/01/14 16:30:50
Line 567  versions can be found through Line 567  versions can be found through
 @cite{Forth: The new model} by Jack Woehr (Prentice-Hall, 1993) is an  @cite{Forth: The new model} by Jack Woehr (Prentice-Hall, 1993) is an
 introductory book based on a draft version of the standard. It does not  introductory book based on a draft version of the standard. It does not
 cover the whole standard. It also contains interesting background  cover the whole standard. It also contains interesting background
 information (Jack Woehr was in the ANS Forth Technical Committe). It is  information (Jack Woehr was in the ANS Forth Technical Committee). It is
 not appropriate for complete newbies, but programmers experienced in  not appropriate for complete newbies, but programmers experienced in
 other languages should find it ok.  other languages should find it ok.
   
Line 641  default specified in the image (typicall Line 641  default specified in the image (typicall
   
 As explained above, the image-specific command-line arguments for the  As explained above, the image-specific command-line arguments for the
 default image @file{gforth.fi} consist of a sequence of filenames and  default image @file{gforth.fi} consist of a sequence of filenames and
 @code{-e @var{forth-code}} options that are interpreted in the seqence  @code{-e @var{forth-code}} options that are interpreted in the sequence
 in which they are given. The @code{-e @var{forth-code}} or  in which they are given. The @code{-e @var{forth-code}} or
 @code{--evaluate @var{forth-code}} option evaluates the forth  @code{--evaluate @var{forth-code}} option evaluates the forth
 code. This option takes only one argument; if you want to evaluate more  code. This option takes only one argument; if you want to evaluate more
Line 855  doc-dmax Line 855  doc-dmax
 The format of floating point numbers recognized by the outer (aka text)  The format of floating point numbers recognized by the outer (aka text)
 interpreter is: a signed decimal number, possibly containing a decimal  interpreter is: a signed decimal number, possibly containing a decimal
 point (@code{.}), followed by @code{E} or @code{e}, optionally followed  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  by a signed integer (the exponent). E.g., @code{1e} is the same as
 @code{+1.0e+0}. Note that a number without @code{e}  @code{+1.0e+0}. Note that a number without @code{e}
 is not interpreted as floating-point number, but as double (if the  is not interpreted as floating-point number, but as double (if the
 number contains a @code{.}) or single precision integer. Also,  number contains a @code{.}) or single precision integer. Also,
Line 1510  Gforth currently supports cells (@code{W Line 1510  Gforth currently supports cells (@code{W
 with @code{W:}, @code{D:} etc.) produces its value and can be changed  with @code{W:}, @code{D:} etc.) produces its value and can be changed
 with @code{TO}. A variable-flavoured local (defined with @code{W^} etc.)  with @code{TO}. A variable-flavoured local (defined with @code{W^} etc.)
 produces its address (which becomes invalid when the variable's scope is  produces its address (which becomes invalid when the variable's scope is
 left). E.g., the standard word @code{emit} can be defined in therms of  left). E.g., the standard word @code{emit} can be defined in terms of
 @code{type} like this:  @code{type} like this:
   
 @example  @example
Line 1569  definition? Which local is meant, if the Line 1569  definition? Which local is meant, if the
 two independent control flow paths?  two independent control flow paths?
   
 This should be enough detail for nearly all users, so you can skip the  This should be enough detail for nearly all users, so you can skip the
 rest of this section. If you relly must know all the gory details and  rest of this section. If you really must know all the gory details and
 options, read on.  options, read on.
   
 In order to implement this rule, the compiler has to know which places  In order to implement this rule, the compiler has to know which places
Line 1622  are entered only through the @code{BEGIN Line 1622  are entered only through the @code{BEGIN
 @code{BEGIN}...@code{UNTIL} loops and it is implemented in our  @code{BEGIN}...@code{UNTIL} loops and it is implemented in our
 compiler. When the branch to the @code{BEGIN} is finally generated by  compiler. When the branch to the @code{BEGIN} is finally generated by
 @code{AGAIN} or @code{UNTIL}, the compiler checks the guess and  @code{AGAIN} or @code{UNTIL}, the compiler checks the guess and
 warns the user if it was too optimisitic:  warns the user if it was too optimistic:
 @example  @example
 IF  IF
   @{ x @}    @{ x @}
Line 2080  you see similar colon definitions, you c Line 2080  you see similar colon definitions, you c
 @code{CREATE..DOES>}. E.g., an assembler usually defines several words  @code{CREATE..DOES>}. E.g., an assembler usually defines several words
 that look very similar:  that look very similar:
 @example  @example
 : ori, ( reg-taget reg-source n -- )  : ori, ( reg-target reg-source n -- )
     0 asm-reg-reg-imm ;      0 asm-reg-reg-imm ;
 : andi, ( reg-taget reg-source n -- )  : andi, ( reg-target reg-source n -- )
     1 asm-reg-reg-imm ;      1 asm-reg-reg-imm ;
 @end example  @end example
   
Line 2090  This could be factored with: Line 2090  This could be factored with:
 @example  @example
 : reg-reg-imm ( op-code -- )  : reg-reg-imm ( op-code -- )
     create ,      create ,
 DOES> ( reg-taget reg-source n -- )  DOES> ( reg-target reg-source n -- )
     @@ asm-reg-reg-imm ;      @@ asm-reg-reg-imm ;
   
 0 reg-reg-imm ori,  0 reg-reg-imm ori,
Line 2149  CREATE name ( ... -- ... ) Line 2149  CREATE name ( ... -- ... )
 DOES>  DOES>
   @var{code} ;    @var{code} ;
 @end example  @end example
 This is equivalwent to the standard  This is equivalent to the standard
 @example  @example
 :noname  :noname
 DOES>  DOES>
Line 2423  doc-postpone, Line 2423  doc-postpone,
   
 At present, the @var{w} part of a compilation token is an execution  At present, the @var{w} part of a compilation token is an execution
 token, and the @var{xt} part represents either @code{execute} or  token, and the @var{xt} part represents either @code{execute} or
 @code{compile,}. However, don't rely on that kowledge, unless necessary;  @code{compile,}. However, don't rely on that knowledge, unless necessary;
 we may introduce unusual compilation tokens in the future (e.g.,  we may introduce unusual compilation tokens in the future (e.g.,
 compilation tokens representing the compilation semantics of literals).  compilation tokens representing the compilation semantics of literals).
   
Line 2464  are meant to support a different style o Line 2464  are meant to support a different style o
 tracing/stepping debuggers used in languages with long turn-around  tracing/stepping debuggers used in languages with long turn-around
 times.  times.
   
 A much better (faster) way in fast-compilig languages is to add  A much better (faster) way in fast-compiling languages is to add
 printing code at well-selected places, let the program run, look at  printing code at well-selected places, let the program run, look at
 the output, see where things went wrong, add more printing code, etc.,  the output, see where things went wrong, add more printing code, etc.,
 until the bug is found.  until the bug is found.
Line 3040  find what they search. Note that it is p Line 3040  find what they search. Note that it is p
 names with @code{nextname} (should it not?).  names with @code{nextname} (should it not?).
   
 @item @code{>IN} greater than input buffer:  @item @code{>IN} greater than input buffer:
 The next invocation of a parsing word returns a string wih length 0.  The next invocation of a parsing word returns a string with length 0.
   
 @item @code{RECURSE} appears after @code{DOES>}:  @item @code{RECURSE} appears after @code{DOES>}:
 Compiles a recursive call to the defining word, not to the defined word.  Compiles a recursive call to the defining word, not to the defined word.
Line 3053  closed file may lead to unpredictable re Line 3053  closed file may lead to unpredictable re
 THROW}.  THROW}.
   
 In the future, Gforth may be able to restore input source specifications  In the future, Gforth may be able to restore input source specifications
 from other than the current input soruce.  from other than the current input source.
   
 @item data space containing definitions gets de-allocated:  @item data space containing definitions gets de-allocated:
 Deallocation with @code{allot} is not checked. This typically resuls in  Deallocation with @code{allot} is not checked. This typically results in
 memory access faults or execution of illegal instructions.  memory access faults or execution of illegal instructions.
   
 @item data space read/write with incorrect alignment:  @item data space read/write with incorrect alignment:
Line 3131  and you can give commands to Gforth inte Line 3131  and you can give commands to Gforth inte
 available depend on how you invoke Gforth.  available depend on how you invoke Gforth.
   
 @item program data space available:  @item program data space available:
 @code{sp@@ here - .} gives the space remaining for dictionary and data  @code{UNUSED .} gives the remaining dictionary space. The total
 stack together.  dictionary space can be specified with the @code{-m} switch
   (@pxref{Invocation}) when Gforth starts up.
   
 @item return stack space available:  @item return stack space available:
 By default 16 KBytes. The default can be overridden with the @code{-r}  You can compute the total return stack space in cells with
 switch (@pxref{Invocation}) when Gforth starts up.  @code{s" RETURN-STACK-CELLS" environment? drop .}. You can specify it at
   startup time with the @code{-r} switch (@pxref{Invocation}).
   
 @item stack space available:  @item stack space available:
 @code{sp@@ here - .} gives the space remaining for dictionary and data  You can compute the total data stack space in cells with
 stack together.  @code{s" STACK-CELLS" environment? drop .}. You can specify it at
   startup time with the @code{-d} switch (@pxref{Invocation}).
   
 @item system dictionary space required, in address units:  @item system dictionary space required, in address units:
 Type @code{here forthstart - .} after startup. At the time of this  Type @code{here forthstart - .} after startup. At the time of this
 writing, this gives 70108 (bytes) on a 32-bit system.  writing, this gives 80080 (bytes) on a 32-bit system.
 @end table  @end table
   
   
Line 3290  strange number; e.g., @code{-1000 THROW} Line 3293  strange number; e.g., @code{-1000 THROW}
 @table @i  @table @i
   
 @item encoding of keyboard events (@code{EKEY}):  @item encoding of keyboard events (@code{EKEY}):
 Not yet implemeted.  Not yet implemented.
   
 @item duration of a system clock tick  @item duration of a system clock tick
 System dependent. With respect to @code{MS}, the time is specified in  System dependent. With respect to @code{MS}, the time is specified in
Line 3314  other single-tasking systems, it should Line 3317  other single-tasking systems, it should
 @table @i  @table @i
   
 @item @code{AT-XY} can't be performed on user output device:  @item @code{AT-XY} can't be performed on user output device:
 Largely terminal dependant. No range checks are done on the arguments.  Largely terminal dependent. No range checks are done on the arguments.
 No errors are reported. You may see some garbage appearing, you may see  No errors are reported. You may see some garbage appearing, you may see
 simply nothing happen.  simply nothing happen.
   
Line 3363  System dependent. Gforth just uses the f Line 3366  System dependent. Gforth just uses the f
 @code{FILE-STATUS} returns the most powerful file access mode allowed  @code{FILE-STATUS} returns the most powerful file access mode allowed
 for the file: Either @code{R/O}, @code{W/O} or @code{R/W}. If the file  for the file: Either @code{R/O}, @code{W/O} or @code{R/W}. If the file
 cannot be accessed, @code{R/O BIN} is returned. @code{BIN} is applicable  cannot be accessed, @code{R/O BIN} is returned. @code{BIN} is applicable
 along with the retured mode.  along with the returned mode.
   
 @item input file state after an exception when including source:  @item input file state after an exception when including source:
 All files that are left via the exception are closed.  All files that are left via the exception are closed.
Line 3462  nearest, and break ties by rounding to e Line 3465  nearest, and break ties by rounding to e
 bit of the mantissa is 0).  bit of the mantissa is 0).
   
 @item size of floating-point stack:  @item size of floating-point stack:
 @code{s" FLOATING-STACK" environment? drop .}. Can be changed at startup  @code{s" FLOATING-STACK" environment? drop .} gives the total size of
 with the command-line option @code{-f}.  the floating-point stack (in floats). You can specify this on startup
   with the command-line option @code{-f} (@pxref{Invocation}).
   
 @item width of floating-point stack:  @item width of floating-point stack:
 @code{1 floats}.  @code{1 floats}.
Line 4012  lies in the body (which is illegal in th Line 4016  lies in the body (which is illegal in th
 making the code field larger for all words this solution becomes legal  making the code field larger for all words this solution becomes legal
 again. We use this approach for the indirect threaded version. Leaving  again. We use this approach for the indirect threaded version. Leaving
 a cell unused in most words is a bit wasteful, but on the machines we  a cell unused in most words is a bit wasteful, but on the machines we
 are targetting this is hardly a problem. The other reason for having a  are targeting this is hardly a problem. The other reason for having a
 code field size of two cells is to avoid having different image files  code field size of two cells is to avoid having different image files
 for direct and indirect threaded systems (@pxref{System Architecture}).  for direct and indirect threaded systems (@pxref{System Architecture}).
   
Line 4206  comply to some restrictions: addresses h Line 4210  comply to some restrictions: addresses h
 special words (@code{A!}, @code{A,}, etc.) in order to make the code  special words (@code{A!}, @code{A,}, etc.) in order to make the code
 relocatable. Cells, floats, etc., have to be stored at the natural  relocatable. Cells, floats, etc., have to be stored at the natural
 alignment boundaries@footnote{E.g., store floats (8 bytes) at an address  alignment boundaries@footnote{E.g., store floats (8 bytes) at an address
 dividable by~8. This happens automatically in our system when you use  divisible by~8. This happens automatically in our system when you use
 the ANS Forth alignment words.}, in order to avoid alignment faults on  the ANS Forth alignment words.}, in order to avoid alignment faults on
 machines with stricter alignment. The image file is produced by a  machines with stricter alignment. The image file is produced by a
 metacompiler (@file{cross.fs}).  metacompiler (@file{cross.fs}).
Line 4368  A team led by Bill Ragsdale implemented Line 4372  A team led by Bill Ragsdale implemented
 implementation of fig-Forth for the 6502 based on microForth.  implementation of fig-Forth for the 6502 based on microForth.
   
 The principal architect of microForth was Dean Sanderson. microForth was  The principal architect of microForth was Dean Sanderson. microForth was
 FORTH, Inc.'s first off-the-shelf product. It was developped in 1976 for  FORTH, Inc.'s first off-the-shelf product. It was developed in 1976 for
 the 1802, and subsequently implemented on the 8080, the 6800 and the  the 1802, and subsequently implemented on the 8080, the 6800 and the
 Z80.  Z80.
   

Removed from v.1.40  
changed lines
  Added in v.1.42


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