Diff for /gforth/kernel/vars.fs between versions 1.13 and 1.24

version 1.13, 1999/03/08 21:36:08 version 1.24, 2000/09/23 15:47:12
Line 1 Line 1
 \ VARS.FS      Kernal variables  \ VARS.FS      Kernal variables
   
 \ Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc.  \ Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc.
   
 \ This file is part of Gforth.  \ This file is part of Gforth.
   
Line 16 Line 16
   
 \ You should have received a copy of the GNU General Public License  \ You should have received a copy of the GNU General Public License
 \ along with this program; if not, write to the Free Software  \ along with this program; if not, write to the Free Software
 \ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  \ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
   
 hex \ everything now hex!                               11may93jaw  hex \ everything now hex!                               11may93jaw
   
Line 26  hex \ everything now hex! Line 26  hex \ everything now hex!
 \ "a true flag ... [is] a single-cell value with all bits set"  \ "a true flag ... [is] a single-cell value with all bits set"
 \ better definition: 0 0= constant true ( no dependence on 2's compl)  \ better definition: 0 0= constant true ( no dependence on 2's compl)
  -1 Constant true ( -- f ) \ core-ext   -1 Constant true ( -- f ) \ core-ext
 \G CONSTANT: f is a cell with all bits set.  \G @code{Constant} -- @i{f} is a cell with all bits set.
 \ see starts looking for primitives after this word!  \ see starts looking for primitives after this word!
   
   0 Constant false ( -- f ) \ core-ext    0 Constant false ( -- f ) \ core-ext
 \G CONSTANT: f is a cell with all bits clear.  \G @code{Constant} -- @i{f} is a cell with all bits clear.
   
   [IFUNDEF] cell 
 1 cells Constant cell ( -- u ) \ gforth  1 cells Constant cell ( -- u ) \ gforth
   \G @code{Constant} -- @code{1 cells}
   [THEN]
   
 1 floats Constant float ( -- u ) \ gforth  1 floats Constant float ( -- u ) \ gforth
   \G @code{Constant} -- the number of address units corresponding to a floating-point number.
   
 20 Constant bl ( -- c-char ) \ core  20 Constant bl ( -- c-char ) \ core b-l
 \G c-char is the character value for a space.  \G @i{c-char} is the character value for a space.
 \ used by docon:, must be constant  \ used by docon:, must be constant
   
 FF Constant /line  FF Constant /line
Line 45  FF Constant /line Line 50  FF Constant /line
 10 Constant l/s  10 Constant l/s
 400 Constant chars/block  400 Constant chars/block
   
 $20 8 2* cells + 2 + cell+ constant word-pno-size ( -- u )  20 8 2* cells + 2 + cell+ constant word-pno-size ( -- u )
 create holdbuf word-pno-size chars allot  create holdbuf word-pno-size chars allot
 holdbuf word-pno-size chars + aconstant holdbuf-end  holdbuf word-pno-size chars + aconstant holdbuf-end
 avariable holdptr holdbuf-end holdptr a!  avariable holdptr holdbuf-end holdptr a!
Line 66  Create main-task  has? OS [IF] 100 [ELSE Line 71  Create main-task  has? OS [IF] 100 [ELSE
 main-task   main-task 
 UNLOCK tup ! LOCK  UNLOCK tup ! LOCK
   
 Variable udp \ user area size? -anton  Variable udp ( -- a-addr ) \ gforth
   \ user area size? -anton
   
 AUser next-task        main-task next-task !  AUser next-task        main-task next-task !
 AUser prev-task        main-task prev-task !  AUser prev-task        main-task prev-task !
 AUser save-task        0 save-task !  AUser save-task        0 save-task !
 AUser sp0 ( -- a-addr ) \ gforth  AUser sp0 ( -- a-addr ) \ gforth
 \G USER VARIABLE: Initial value of the data stack pointer.  \G @code{User} variable -- initial value of the data stack pointer.
 \ sp0 is used by douser:, must be user  \ sp0 is used by douser:, must be user
     ' sp0 Alias s0 ( -- a-addr ) \ gforth      ' sp0 Alias s0 ( -- a-addr ) \ gforth
 \G OBSOLETE alias of @code{sp0}  \G OBSOLETE alias of @code{sp0}
   
 AUser rp0 ( -- a-addr ) \ gforth  AUser rp0 ( -- a-addr ) \ gforth
 \G USER VARIABLE: Initial value of the return stack pointer.  \G @code{User} variable -- initial value of the return stack pointer.
     ' rp0 Alias r0 ( -- a-addr ) \ gforth      ' rp0 Alias r0 ( -- a-addr ) \ gforth
 \G OBSOLETE alias of @code{rp0}  \G OBSOLETE alias of @code{rp0}
   
 AUser fp0 ( -- a-addr ) \ gforth  AUser fp0 ( -- a-addr ) \ gforth
 \G USER VARIABLE: Initial value of the floating-point stack pointer.  \G @code{User} variable -- initial value of the floating-point stack pointer.
 \ no f0, because this leads to unexpected results when using hex  \ no f0, because this leads to unexpected results when using hex
   
 AUser lp0 ( -- a-addr ) \ gforth  AUser lp0 ( -- a-addr ) \ gforth
 \G USER VARIABLE: Initial value of the locals stack pointer.  \G @code{User} variable -- initial value of the locals stack pointer.
     ' lp0 Alias l0 ( -- a-addr ) \ gforth      ' lp0 Alias l0 ( -- a-addr ) \ gforth
 \G OBSOLETE alias of @code{lp0}  \G OBSOLETE alias of @code{lp0}
   
 AUser handler   \ pointer to last throw frame  AUser handler   \ pointer to last throw frame
   has? backtrace [IF]
 User backtrace-empty \ true if the next THROW should store a backtrace  User backtrace-empty \ true if the next THROW should store a backtrace
 AUser backtrace-rp0 \ rp at last call of interpret  AUser backtrace-rp0 \ rp at last call of interpret
   [THEN]
 \ AUser output  \ AUser output
 \ AUser input  \ AUser input
   
Line 104  AUser "error            0 "error ! Line 112  AUser "error            0 "error !
 [IFUNDEF] #tib          \ in ec-Version we may define this ourself  [IFUNDEF] #tib          \ in ec-Version we may define this ourself
  User tibstack          \ saves >tib in execute   User tibstack          \ saves >tib in execute
  User >tib              \ pointer to terminal input buffer   User >tib              \ pointer to terminal input buffer
  User #tib ( -- a-addr ) \ core-ext   User #tib ( -- a-addr ) \ core-ext number-t-i-b
  \G USER VARIABLE: a-addr is the address of a cell containing   \G @code{User} variable -- @i{a-addr} is the address of a cell containing
  \G the number of characters in the terminal input buffer.   \G the number of characters in the terminal input buffer.
  \G OBSOLESCENT: @code{source} superceeds the function of this word.   \G OBSOLESCENT: @code{source} superceeds the function of this word.
   
  User >in ( -- a-addr ) \ core   User >in ( -- a-addr ) \ core to-in
  \G USER VARIABLE: a-addr is the address of a cell containing the   \G @code{User} variable -- @i{a-addr} is the address of a cell containing the
  \G char offset from the start of the terminal input buffer to the   \G char offset from the start of the input buffer to the start of the
  \G start of the parse area   \G parse area.
                         0 >in ! \ char number currently processed in tib                          0 >in ! \ char number currently processed in tib
 [THEN]  [THEN]
 has? file [IF]  has? file [IF]
  User blk ( -- a-addr ) \ block   User blk ( -- a-addr ) \ block b-l-k
  \G USER VARIABLE: a-addr is the address of a cell containing zero   \G @code{User} variable -- @i{a-addr} is the address of a cell containing zero
  \G (in which case the input source is not a block and can be identified   \G (in which case the input source is not a block and can be identified
  \G by @code{source-id}) or the number of the block currently being   \G by @code{source-id}) or the number of the block currently being
  \G interpreted. A Standard program should not alter @code{blk} directly.   \G interpreted. A Standard program should not alter @code{blk} directly.
Line 137  has? file [IF] Line 145  has? file [IF]
 [THEN]  [THEN]
   
  User base ( -- a-addr ) \ core   User base ( -- a-addr ) \ core
  \G USER VARIABLE: a-addr is the address of a cell that stores the   \G @code{User} variable -- @i{a-addr} is the address of a cell that stores the
  \G number base used by default for number conversion during input and output.   \G number base used by default for number conversion during input and output.
                         A base !                          A base !
  User dpl               -1 dpl !   User dpl ( -- a-addr ) \ gforth
    \G @code{User} variable -- @i{a-addr} is the address of a cell that stores the                 
    \G position of the decimal point in the most recent numeric conversion.
    \G Initialised to -1. After the conversion of a number containing no
    \G decimal point, @code{@ dpl} is -1. After the conversion of @code{2.} it holds
    \G 0. After the conversion of 234123.9 it contains 1, and so forth.
    -1 dpl !
   
  User state ( -- a-addr ) \ core,tools-ext   User state ( -- a-addr ) \ core,tools-ext
  \G Recommended reading: @cite{@code{State}-smartness--Why it is evil   \G @code{User} variable -- @i{a-addr} is the address of a cell
  \G and how to exorcise it},   \G containing the compilation state flag. 0 => interpreting, -1 =>
  \G @url{http://www.complang.tuwien.ac.at/papers/ertl98.ps.gz}; short   \G compiling.  A program shall not directly alter the value of
  \G version: Don't use @code{state}! @xref{Interpretation and   \G @code{state}. The following Standard words alter the value in
  \G Compilation Semantics} for an alternative. USER VARIABLE: a-addr   \G @code{state}: @code{:} (colon) @code{;} (semicolon) @code{abort}
  \G is the address of a cell containing the compilation state flag. 0   \G @code{quit} @code{:noname} @code{[} (left-bracket) @code{]}
  \G => interpreting, -1 => compiling.  A program shall not directly   \G (right-bracket) @code{;code}. Don't use @code{state}! For an
  \G alter the value of @code{state}. The following Standard words   \G alternative see @ref{Interpretation and Compilation Semantics}.
  \G alter the value in @code{state}: @code{:} (colon) @code{;}   \ Recommended reading: @cite{@code{State}-smartness--Why it is evil
  \G (semicolon) @code{abort} @code{quit} @code{:noname} @code{[}   \ and how to exorcise it},
  \G (left-bracket) @code{]} (right-bracket) @code{;code}   \ @url{http://www.complang.tuwien.ac.at/papers/ertl98.ps.gz}; short
                         0 state !   \ version: Don't use @code{state}!
    0 state !
   
 AUser normal-dp         \ the usual dictionary pointer  AUser normal-dp         \ the usual dictionary pointer
 AUser dpp               normal-dp dpp !  AUser dpp               normal-dp dpp !

Removed from v.1.13  
changed lines
  Added in v.1.24


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