--- gforth/environ.fs 1995/11/07 18:06:38 1.8 +++ gforth/environ.fs 1997/09/13 12:04:55 1.15 @@ -22,13 +22,19 @@ Create environment-wordlist wordlist drop -: environment? ( c-addr u -- false / ... true ) +: environment? ( c-addr u -- false / ... true ) \ core environment-query environment-wordlist search-wordlist if execute true else false endif ; +: e? name environment? 0= ABORT" environmental dependency not existing" ; + +: has? name environment? IF ELSE false THEN ; + +: $has? environment? IF ELSE false THEN ; + environment-wordlist set-current get-order environment-wordlist swap 1+ set-order @@ -42,7 +48,7 @@ MAX-CHAR constant /COUNTED-STRING ADDRESS-UNIT-BITS cells 2* 2 + constant /HOLD &84 constant /PAD true constant CORE -true constant CORE-EXT? +true constant CORE-EXT 1 -3 mod 0< constant FLOORED 1 ADDRESS-UNIT-BITS cells 1- lshift 1- constant MAX-N @@ -51,11 +57,20 @@ true constant CORE-EXT? -1 MAX-N 2constant MAX-D -1. 2constant MAX-UD -0 1 2constant gforth \ minor major version +version-string 2constant gforth \ version string (for versions>0.3.0) +\ the version strings of the various versions are guaranteed to be +\ sorted lexicographically + +: return-stack-cells ( -- n ) + [ forthstart 6 cells + ] literal @ cell / ; + +: stack-cells ( -- n ) + [ forthstart 4 cells + ] literal @ cell / ; + +: floating-stack ( -- n ) + [ forthstart 5 cells + ] literal @ + [IFDEF] float float [ELSE] [ 1 floats ] Literal [THEN] / ; -\ !! RETURN-STACK-CELLS -\ !! STACK-CELLS -\ !! floating-stack \ !! max-float 15 constant #locals \ 1000 64 / \ One local can take up to 64 bytes, the size of locals-buffer is 1000