13. DOUBLE NUMBER EXTENSION WORD SET
13. DOUBLE NUMBER EXTENSION WORD SET
13.1 The Double Number Extension Word Set Layers
Nucleus layer
2! 2@ 2DROP 2DUP 2OVER 2ROT 2SWAP D+ D- D0= D2/
D< D= DABS DMAX DMIN DNEGATE DU<
Device layer
none
Interpreter layer
D. D.R
Compiler layer
2CONSTANT 2VARIABLE
45
13. DOUBLE NUMBER EXTENSION WORD SET
13.2 The Double Number Extension Word Set Glossary
2! 32b addr -- 79 "two-store"
32b is stored at addr. See: "number"
2@ addr -- 32b 79 "two-fetch"
32b is the value at addr. See: "number"
2CONSTANT 32b -- M,83 "two-constant"
A defining word executed in the form:
32b 2CONSTANT
Creates a dictionary entry for so that when is
later executed, 32b will be left on the stack.
2DROP 32b -- 79 "two-drop"
32b is removed from the stack.
2DUP 32b -- 32b 32b 79 "two-dupe"
Duplicate 32b.
2OVER 32b1 32b2 -- 32b1 32b2 32b3 79 "two-over"
32b3 is a copy of 32b1.
2ROT 32b1 32b2 32b3 -- 32b2 32b3 32b1 79 "two-rote"
The top three double numbers on the stack are rotated,
bringing the third double number number to the top of the
stack.
2SWAP 32b1 32b2 -- 32b2 32b1 79 "two-swap"
The top two double numbers are exchanged.
2VARIABLE -- M,79 "two-variable"
A defining word executed in the form:
2VARIABLE
A dictionary entry for is created and four bytes are
ALLOTted in its parameter field. This parameter field is to
be used for contents of the variable. The application is
responsible for initializing the contents of the variable
which it creates. When is later executed, the
address of its parameter field is placed on the stack. See:
VARIABLE
D+ wd1 wd2 -- wd3 79
See the complete definition in the Required Word Set.
D- wd1 wd2 -- wd3 79 "d-minus"
wd3 is the result of subtracting wd2 from wd1.
D. d -- M,79 "d-dot"
The absolute value of d is displayed in a free field format.
A leading negative sign is displayed if d is negative.
46
13. DOUBLE NUMBER EXTENSION WORD SET
D.R d +n -- M,83 "d-dot-r"
d is converted using the value of BASE and then displayed
right aligned in a field +n characters wide. A leading
minus sign is displayed if d is negative. If the number of
characters required to display d is greater than +n, an
error condition exists. See: "number conversion"
D0= wd -- flag 83 "d-zero-equals"
flag is true if wd is zero.
D2/ d1 -- d2 83 "d-two-divide"
d2 is the result of d1 arithmetically shifted right one bit.
The sign is included in the shift and remains unchanged.
D< d1 d2 -- flag 83
See the complete definition in the Required Word Set.
D= wd1 wd2 -- flag 83 "d-equal"
flag is true if wd1 equals wd2.
DABS d -- ud 79 "d-absolute"
ud is the absolute value of d. If d is -2,147,483,648 then
ud is the same value. See: "arithmetic, two's complement"
DMAX d1 d2 -- d3 79 "d-max"
d3 is the greater of d1 and d2.
DMIN d1 d2 -- d3 79 "d-min"
d3 is the lesser of d1 and d2.
DNEGATE d1 -- d2 79
See the complete definition in the Required Word Set.
DU< ud1 ud2 -- flag 83 "d-u-less"
flag is true if ud1 is less than ud2. Both numbers are
unsigned.
47