6 !----------------------------------------------------------------------------
7 ! CLEARS , INCREMENTS , DECREMENTS
8 !-----------------------------------------------------------------------------
23 inl__1W: move.l a2,a0 ; sub.l #4,a0 ; bra 4b
24 inl__2W: move.l a2,a0 ; sub.l #8,a0 ; bra 4b
25 inl__3W: move.l a2,a0 ; sub.l #12,a0 ; bra 4b
27 inl__1W: move.l a2,a0 ; sub.l #2,a0 ; bra 4b
28 inl__2W: move.l a2,a0 ; sub.l #4,a0 ; bra 4b
29 inl__3W: move.l a2,a0 ; sub.l #6,a0 ; bra 4b
31 inl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
33 1: move.l a2,a0 ; add.l d0,a0 ; bra 4b
34 inl_pw: adroff ; move.w (a5),d0
35 6: asl.l wmu,d0 ; add.l #0+l0,d0
37 inl_qpw: move.l (sp)+,d0 ; bra 6b
38 inl_nw: adroff ; move.w (a5),d0
40 inl_qnw: move.l (sp)+,d0 ; bra 2b
41 ine_lw: adroff ; move.w (a5),d0 ; bra 5f
42 ine_qw: move.l (sp)+,d0 ; bra 5f
43 ine_w0: clr.w d0 ; move.b (a3)+,d0
44 5: asl.l wmu,d0 ; move.l d0,a0
47 !---------------------------------------------------------------------------
66 del_w_1: move.l #-1,d0 ; move.b (a3)+,d0
68 2: move.l a2,a0 ; add.l d0,a0 ; bra 4b
69 del_pw: adroff ; move.w (a5),d0
70 5: asl.l wmu,d0 ; add.l #0+l0,d0 ; bra 2b
71 del_qpw: move.l (sp)+,d0 ; bra 5b
72 del_nw: adroff ; move.w (a5),d0
74 del_qnw: move.l (sp)+,d0 ; bra 1f
75 dee_w0: clr.w d0 ; move.b (a3)+,d0
76 0: asl.l wmu,d0 ; move.l d0,a0
78 dee_lw: adroff ; move.w (a5),d0 ; bra 0b
79 dee_qw: move.l (sp)+,d0 ; bra 0b
82 9: bsr e_iovfl !error routine for integer overflow
86 !----------------------------------------------------------------------------
88 zrl__1W: cl l_1(a2) ; jmp (a4)
89 zrl__2W: cl l_2(a2) ; jmp (a4)
90 zrl_w_1: move.l #-1,d0 ; move.b (a3)+,d0
91 1: asl.l wmu,d0 ; add.l a2,d0
100 zrl_nw: adroff ; move.w (a5),d0
102 zrl_qnw: move.l (sp)+,d0 ; bra 1b
103 zrl_pw: adroff ; move.w (a5),d0
104 2: asl.l wmu,d0 ; add.l a2,d0
105 move.l d0,a0 ; cl l0(a0)
107 zrl_qpw: move.l (sp)+,d0 ; bra 2b
108 zre_lw: adroff ; move.w (a5),d0 ; bra 7f
109 zre_qw: move.l (sp)+,d0 ; bra 7f
110 zre_w0: clr.w d0 ; move.b (a3)+,d0
111 7: asl.l wmu,d0 ; add.l a6,d0
120 zrf_l: adroff ; move.w (a5),d0 ; bra 8f
123 3: asr.w #1,d0 ; dbcs d1,3b
124 bcs e_oddz ; sub.w #1,d0
125 0: cl -(sp) ; dbra d0,0b
127 zer_s0: clr.w d0 ; move.b (a3)+,d0 ; bra 8b
128 zer_l: adroff ; move.w (a5),d0 ; bra 8b
129 zer_z: mov (sp),d0 ; bra 8b
130 ! The test on illegal argument takes some time , specially in 4byte case.
132 !-----------------------------------------------------------------------
134 !-------------------------------------------------------------------------
139 and_l: adroff ; move.w (a5),d0 ; bra 1f
141 1: ble e_oddz ; move.l d0,a0
143 2: asr.l #1,d0 ; dbcs d2,2b ; bcs e_oddz
144 add.l sp,a0 ; sub.l #1,d0
145 3: mov (sp)+,d1; an d1,(a0)+
146 dbra d0,3b ; jmp (a4)
148 !------------------------------------------------------------------------------
150 ior_1W: mov (sp)+,d1; inor d1,(sp)
152 ior_s0: clr.w d0 ; move.b (a3)+,d0; bra 4f
153 ior_l: adroff ; move.w (a5),d0 ; bra 4f
155 4: ble e_oddz ; move.l d0,a0
157 5: asr.l #1,d0 ; dbcs d2,5b ; bcs e_oddz
158 add.l sp,a0 ; sub.l #1,d0
161 inor d1,(a0)+; dbra d0,3b
164 !----------------------------------------------------------------------------
166 xor_l: adroff ; move.w (a5),d0 ; bra 6f
168 6: ble e_oddz ; move.l d0,a0
170 8: asr.l #1,d0 ; dbcs d2,8b ; bcs e_oddz
171 add.l sp,a0 ; sub.l #1,d0
173 exor d1,(a0)+; dbra d0,7b
176 !----------------------------------------------------------------------------
178 com_l: adroff ; move.w (a5),d0 ; bra 0f
180 0: ble e_oddz ; move.l d7,d2
181 1: asr.l #1,d0 ; dbcs d2,1b ; bcs e_oddz
182 move.l sp,a0 ; sub.l #1,d0
183 2: nt (a0)+ ; dbra d0,2b
186 !---------------------------------------------------------------------------
188 rol_l: adroff ; move.w (a5),d0 ; bra 3f
190 3: ble e_oddz ; move.l d7,d2
191 4: asr.l #1,d0 ; dbcs d2,4b
196 0: move.l sp,a0 !d0 = #words-1 , d1 = shift count
197 5: mov (a0),d2 ; rotl d1,d2
198 mov d2,(a0)+; dbra d0,5b
202 ror_l: adroff ; move.w (a5),d0 ; bra 6f
204 6: ble e_oddz ; move.l d7,d2
205 7: asr.l #1,d0 ; dbcs d2,7b
206 bcs e_oddz ; sub.l #1,d0
210 8: mov (a0),d2 ; rotr d1,d2
211 mov d2,(a0)+; dbra d0,8b
214 !-----------------------------------------------------------------------------
216 !------------------------------------------------------------------------------
218 set_s0: clr.w d0 ; move.b (a3)+,d0
219 0: ble e_oddz ; move.l #0,d1
220 mov (sp)+,d1; move.l d0,d2
222 1: asr.l #1,d2 ; dbcs d3,1b
223 bcs e_oddz ; sub.l #1,d2
224 2: cl -(sp) ; dbra d2,2b
225 move.l sp,a0 ; move.l d1,d2
226 asr.l #3,d2 ; cmp.l d0,d2 !d2 byte number
231 bchg #1,d2 !0->3,1->2
233 bchg #0,d2 ; add.l d2,a0
234 bset d1,(a0) ; jmp (a4) !d1 mod 8 bit set
235 set_l: adroff ; move.w (a5),d0 ; bra 0b
236 set_z: mov (sp)+,d0; bra 0b
238 !----------------------------------------------------------------------------
240 inn_s0: clr.w d0 ; move.b (a3)+,d0
242 move.l d6,d1 ; mov (sp)+,d1
243 btst #0,d0 ; bne e_oddz
245 btst #1,d0 ; bne e_oddz
247 move.l sp,a0 ; add.l d0,sp
248 move.l d1,d2 ; asri #3,d2
261 bchg #0,d2 ; add.l d2,a0
262 btst d1,(a0) ; beq 7f
263 mov #1,-(sp); jmp (a4)
264 7: cl -(sp) ; jmp (a4)
265 inn_l: adroff ; move.w (a5),d0 ; bra 0b
266 inn_z: mov (sp)+,d0; bra 0b