dsforth: moved various word groups to separate includes
[urasm.git] / dsforth / math_hlev.zas
blob6975bd9bda1280c5019177d0cff558375d27f202
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; "high-level" math words
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 ;; convert normal singed number to double
6 $FORTH_CODE_WORD S->D
7 ;; AberSoft
8 ;; ( n -- d )
9   pop   de
10   ld    hl,0
11   ld    a,d
12   and   #80
13   jr    z,s2d0
14   dec   hl
15 s2d0:
16   jp    i_pushde
17 $FORTH_END_CODE_WORD S->D
19 $FORTH_WORD +-
20 ;; AberSoft
21   0< 0BRANCH pm0
22   NEGATE
23 pm0:
24   ;S
25 $FORTH_END_WORD +-
27 $FORTH_WORD D+-
28 ;; AberSoft
29   0< 0BRANCH dpm0
30   DNEGATE
31 dpm0:
32   ;S
33 $FORTH_END_WORD D+-
35 $FORTH_WORD ABS
36 ;; AberSoft
37   DUP +- ;S
38 $FORTH_END_WORD ABS
40 $FORTH_WORD DABS
41 ;; AberSoft
42   DUP D+- ;S
43 $FORTH_END_WORD DABS
45 $FORTH_WORD MIN
46 ;; AberSoft
47   2DUP > 0BRANCH min0
48   SWAP
49 min0:
50   DROP
51   ;S
52 $FORTH_END_WORD MIN
54 $FORTH_WORD MAX
55 ;; AberSoft
56   2DUP < 0BRANCH max0
57   SWAP
58 max0:
59   DROP
60   ;S
61 $FORTH_END_WORD MAX
63 $FORTH_WORD UMIN
64 ;; AberSoft
65   2DUP U> 0BRANCH umin0
66   SWAP
67 umin0:
68   DROP
69   ;S
70 $FORTH_END_WORD UMIN
72 $FORTH_WORD UMAX
73 ;; AberSoft
74   2DUP U< 0BRANCH umax0
75   SWAP
76 umax0:
77   DROP
78   ;S
79 $FORTH_END_WORD UMAX
82 $FORTH_WORD M*
83 ;; AberSoft
84   2DUP XOR >R ABS SWAP ABS U* R> D+- ;S
85 $FORTH_END_WORD M*
87 $FORTH_WORD M/
88 ;; AberSoft
89   OVER >R >R DABS R@ ABS U/MOD R> R@ XOR +- SWAP R> +- SWAP ;S
90 $FORTH_END_WORD M/
92 $FORTH_WORD *
93 ;; AberSoft
94   M* DROP ;S
95 $FORTH_END_WORD *
97 $FORTH_WORD /MOD
98 ;; AberSoft
99   >R S->D R> M/ ;S
100 $FORTH_END_WORD /MOD
102 $FORTH_WORD /
103 ;; AberSoft
104   /MOD SWAP DROP ;S
105 $FORTH_END_WORD /
107 $FORTH_WORD MOD
108 ;; AberSoft
109   /MOD DROP ;S
110 $FORTH_END_WORD MOD
112 $FORTH_WORD */MOD
113 ;; AberSoft
114   >R M* R> M/ ;S
115 $FORTH_END_WORD */MOD
117 $FORTH_WORD */
118 ;; AberSoft
119   */MOD SWAP DROP ;S
120 $FORTH_END_WORD */
122 $FORTH_WORD M/MOD
123 ;; AberSoft
124   >R 0 R@ U/MOD R> SWAP >R U/MOD R> ;S
125 $FORTH_END_WORD M/MOD