dsforth: added "NIP" and "TUCK"
[urasm.git] / dsforth / math_bitop.zas
blobd03fd8c08f2f1f67ca5b9cc03ebc762290f2eba2
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; bitwise and logic operations
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 $FORTH_CODE_WORD AND
6 ;; AberSoft
7 ;; ( n0 n1 -- n )
8   pop   de
9   pop   hl
10   ld    a,e
11   and   l
12   ld    l,a
13   ld    a,d
14   and   h
15   ld    h,a
16   jp    i_pushhl
17 $FORTH_END_CODE_WORD AND
19 ;; "logical" and
20 $FORTH_CODE_WORD LAND
21 ;; k8
22 ;; ( n0 n1 -- 0 or 1 )
23   pop   de
24   pop   hl
25   ld    a,l
26   or    h
27   jp    z,i_pushhl
28   ex    de,hl
29   ld    a,l
30   or    h
31   jp    z,i_pushhl
32   ld    hl,1
33   jp    i_pushhl
34 $FORTH_END_CODE_WORD LAND
36 $FORTH_CODE_WORD OR
37 ;; AberSoft
38 ;; ( n0 n1 -- n )
39   pop   de
40   pop   hl
41   ld    a,e
42   or    l
43   ld    l,a
44   ld    a,d
45   or    h
46   ld    h,a
47   jp    i_pushhl
48 $FORTH_END_CODE_WORD OR
50 ;; "logical" or
51 $FORTH_CODE_WORD LOR
52 ;; k8
53 ;; ( n0 n1 -- 0 or 1 )
54   pop   de
55   pop   hl
56   ld    a,l
57   or    h
58   jr    nz,logor_push_one
59   ;; hl is 0 here
60   ld    a,d
61   or    e
62   jp    z,i_pushhl
63 logor_push_one:
64   ld    hl,1
65   jp    i_pushhl
66 $FORTH_END_CODE_WORD LOR
68 $FORTH_CODE_WORD XOR
69 ;; AberSoft
70 ;; ( n0 n1 -- n )
71   pop   de
72   pop   hl
73   ld    a,e
74   xor   l
75   ld    l,a
76   ld    a,d
77   xor   h
78   ld    h,a
79   jp    i_pushhl
80 $FORTH_END_CODE_WORD XOR