[gforth] / gforth / environ.fs  

gforth: gforth/environ.fs


1 : anton 1.2 \ environmental queries
2 : anton 1.1
3 : pazsan 1.3 \ wordlist constant environment-wordlist
4 : anton 1.1
5 : pazsan 1.3 Create environment-wordlist wordlist drop
6 :    
7 : anton 1.2 : environment? ( c-addr u -- false / ... true )
8 :     environment-wordlist search-wordlist if
9 :     execute true
10 :     else
11 :     false
12 :     endif ;
13 :    
14 :     environment-wordlist set-current
15 :     get-order environment-wordlist swap 1+ set-order
16 :    
17 :     \ assumes that chars, cells and doubles use an integral number of aus
18 :    
19 :     \ this should be computed in C as CHAR_BITS/sizeof(char),
20 :     \ but I don't know any machine with gcc where an au does not have 8 bits.
21 : anton 1.7 8 constant ADDRESS-UNIT-BITS ( -- n ) \ environment
22 : anton 1.2 1 ADDRESS-UNIT-BITS chars lshift 1- constant MAX-CHAR
23 :     MAX-CHAR constant /COUNTED-STRING
24 :     ADDRESS-UNIT-BITS cells 2* 2 + constant /HOLD
25 :     &84 constant /PAD
26 :     true constant CORE
27 : anton 1.5 true constant CORE-EXT?
28 : anton 1.2 1 -3 mod 0< constant FLOORED
29 :    
30 :     1 ADDRESS-UNIT-BITS cells 1- lshift 1- constant MAX-N
31 :     -1 constant MAX-U
32 : anton 1.1
33 : anton 1.2 -1 MAX-N 2constant MAX-D
34 :     -1. 2constant MAX-UD
35 : pazsan 1.3
36 : anton 1.5 0 1 2constant gforth \ minor major version
37 : anton 1.1
38 : anton 1.2 \ !! RETURN-STACK-CELLS
39 :     \ !! STACK-CELLS
40 : anton 1.5 \ !! floating-stack
41 :     \ !! max-float
42 : anton 1.6 15 constant #locals \ 1000 64 /
43 :     \ One local can take up to 64 bytes, the size of locals-buffer is 1000
44 : anton 1.5 maxvp constant wordlists
45 : anton 1.2
46 :     forth definitions
47 :     previous
48 : anton 1.1

CVS Admin

Powered by ViewCVS 1.0-dev
(Powered by ViewCVS)

ViewCVS and CVS Help