Pristine Ack-5.5
[Ack-5.5.git] / mach / mantra / int / mloop3
1 .sect .text
2 .sect .rom
3 .sect .data
4 .sect .bss
5 .sect .text
6 !---------------------------------------------------------------------
7 !               STORE GROUP
8 !---------------------------------------------------------------------
9
10 stl_pw:         adroff
11                 move.w  (a5),d0
12 3:              asl.l   wmu,d0
13                 add.l   a2,d0
14                 move.l  d0,a0
15 #if test
16                 locptr
17 7:              bra     e_badptr
18 6:
19 #endif
20                 mov     (sp)+,l0(a0)    
21                 jmp     (a4)
22 stl_qpw:        move.l  (sp)+,d0
23                 bra     3b
24
25 stl_nw:         adroff
26                 move.w  (a5),d0
27                 ext.l   d0
28                 bra     1f
29 stl_qnw:        move.l  (sp)+,d0
30                 bra     1f
31 stl_w_1:        move.l  #-1,d0
32                 move.b  (a3)+,d0
33 1:              asl.l   wmu,d0
34                 add.l   a2,d0
35                 move.l  d0,a0
36 #if test
37                 locptr
38 7:              bra     e_badptr
39 6:
40 #endif
41                 mov     (sp)+,(a0)
42                 jmp     (a4)
43 stl_0:          mov     (sp)+,l0(a2)    ; jmp   (a4)
44 stl_1W:         mov     (sp)+,l1(a2)    ; jmp   (a4)
45 stl__1W:        mov     (sp)+,l_1(a2)   ; jmp   (a4)
46 stl__2W:        mov     (sp)+,l_2(a2)   ; jmp   (a4)
47 stl__3W:        mov     (sp)+,l_3(a2)   ; jmp   (a4)
48 stl__4W:        mov     (sp)+,l_4(a2)   ; jmp   (a4)
49 stl__5W:        mov     (sp)+,l_5(a2)   ; jmp   (a4)
50 sdl_w_1:        move.l  #-1,d0
51                 move.b  (a3)+,d0
52 2:              asl.l   wmu,d0
53                 add.l   a2,d0
54                 move.l  d0,a0
55 #if test
56                 locptr
57 7:              bra     e_badptr
58 6:
59 #endif
60                 mov     (sp)+,(a0)
61                 mov     (sp)+,word(a0)
62                 jmp     (a4)
63 sdl_nw:         adroff
64                 move.w  (a5),d0
65                 ext.l   d0
66                 bra     2b
67 sdl_qnw:        move.l  (sp)+,d0
68                 bra     2b
69 sdl_qpw:        move.l  (sp)+,d0
70                 bra     4f
71 sdl_pw:         adroff
72                 move.w  (a5),d0
73 4:              asl.l   wmu,d0
74                 add.l   a2,d0
75                 move.l  d0,a0
76 #if test
77                 locptr
78 7:              bra     e_badptr
79 6:
80 #endif
81                 mov     (sp)+,l0(a0)
82                 mov     (sp)+,l1(a0)
83                 jmp     (a4)
84
85 !------------------------------------------------------------------------
86
87 sde_q:          move.l  (sp)+,d0
88                 bra     1f
89 sde_l:          adroff
90                 move.w  (a5),d0
91 1:              add.l   a6,d0
92                 move.l  d0,a0
93 #if test
94                 extptr
95 7:              bra     e_badptr
96 6:
97 #endif
98                 mov     (sp)+,(a0)
99                 mov     (sp)+,word(a0)
100                 jmp     (a4)
101 ste_qw:         move.l  (sp)+,d0
102                 bra     1f
103 ste_lw:         adroff
104                 move.w  (a5),d0
105                 bra     1f
106 ste_w2:         move.w  #512,d0         ; bra   0f
107 ste_w1:         move.w  #256,d0         ; bra   0f
108 ste_w0:         clr.w   d0
109 0:              move.b  (a3)+,d0
110 1:              asl.l   wmu,d0
111                 add.l   a6,d0
112                 move.l  d0,a0
113 #if test
114                 extptr
115 7:              bra     e_badptr
116 6:
117 #endif
118                 mov     (sp)+,(a0)
119                 jmp     (a4)
120
121 !-------------------------------------------------------------------------
122
123 stf_q:          move.l  (sp)+,a0
124                 bra     0f
125 stf_l:          adroff
126                 move.l  #0,a0
127                 move.w  (a5),a0
128                 bra     0f
129 stf_2W:         move.l  wrd+word,d0     ;       move.l  d0,a0
130                 bra     0f
131 stf_s0:         clr.w   d0
132                 move.b  (a3)+,d0
133                 move.l  d0,a0
134                 bra     0f
135 stf_1W:         move.l  wrd,d0          ;       move.l  d0,a0
136 0:              add.l   (sp)+,a0
137 #if test
138                 locptr
139                 heaptr
140                 extptr
141 7:              bra     e_badptr
142 6:
143 #endif
144                 mov     (sp)+,(a0)
145                 jmp     (a4)
146 sdf_q:          move.l  (sp)+,a0
147                 bra     1f
148 sdf_l:          adroff
149                 move.l  d6,a0
150                 move.w  (a5),a0
151 1:              add.l   (sp)+,a0
152 #if test
153                 locptr
154                 heaptr
155                 extptr
156 7:              bra     e_badptr
157 6:
158 #endif
159                 mov     (sp)+,(a0)+
160                 mov     (sp)+,(a0)
161                 jmp     (a4)
162
163
164 !-----------------------------------------------------------------------------
165 sil_w0:         move.w  d6,d0
166                 move.b  (a3)+,d0
167 5:              asl.l   wmu,d0
168                 add.l   a2,d0
169                 move.l  d0,a0
170 #if test
171                 locptr
172 7:              bra     e_badptr
173 6:
174 #endif
175                 move.l  l0(a0),a0
176 #if test
177                 locptr
178                 heaptr
179                 extptr
180 7:              bra     e_badptr
181 6:
182 #endif
183                 mov     (sp)+,(a0)
184                 jmp     (a4)
185 sil_w_1:        move.l  #-1,d0
186                 move.b  (a3)+,d0
187 2:              asl.l   wmu,d0
188                 add.l   a2,d0
189                 move.l  d0,a0
190 #if test
191                 locptr
192 7:              bra     e_badptr
193 6:
194 #endif
195                 move.l  (a0),a0
196 #if test
197                 locptr
198                 heaptr
199                 extptr
200 7:              bra     e_badptr
201 6:
202 #endif
203                 mov     (sp)+,(a0)
204                 jmp     (a4)
205 sil_pw:         adroff
206                 move.w  (a5),d0
207                 bra     5b
208 sil_qpw:        move.l  (sp)+,d0
209                 bra     5b
210 sil_nw:         adroff
211                 move.w  (a5),d0
212                 ext.l   d0
213                 bra     2b
214 sil_qnw:        move.l  (sp)+,d0
215                 bra     2b
216
217 !----------------------------------------------------------------------------
218 sti_1:          move.l  (sp)+,a0
219 #if test
220                 locptr
221                 heaptr
222                 extptr
223 7:              bra     e_badptr
224 6:
225 #endif
226                 move.b  word-1(sp),(a0)
227                 add.l   wrd,sp
228                 jmp     (a4)
229 sti_q:          move.l  (sp)+,d0;       bra     0f
230 sti_l:          adroff          ;       move.w  (a5),d0 ;       bra     0f
231 sti_s0:         clr.w   d0      ;       move.b  (a3)+,d0
232 0:              asr.l   #1,d0   ;       bne     1f
233                 bcs     sti_1   ;       bra     e_oddz
234 1:              bcs     e_oddz
235 #ifdef  lword
236                 asr.l   #1,d0   ;       bne     2f
237                 move.l  (sp)+,a0;       lea     2(sp),sp
238 #if test
239                 locptr
240                 heaptr
241                 extptr
242 7:              bra     e_badptr
243 6:
244 #endif
245                 move.w  (sp)+,(a0);     jmp     (a4)
246 2:              bcs     e_oddz
247 #endif
248                 sub.l   #1,d0   ;       bra     3f
249 sti_1W:         sti_2W:         sti_3W:         sti_4W:
250                 sub.w   #876,d0 ;       asr.w   #2,d0
251 3:              move.l  (sp)+,a0
252 #if test
253                 locptr
254                 heaptr
255                 extptr
256 7:              bra     e_badptr
257 6:
258 #endif
259 4:              mov     (sp)+,(a0)+
260                 dbra    d0,4b
261                 jmp     (a4)
262 sts_l:          adroff  ;               move.w  (a5),d0
263 6:              checksize
264 4:              move.l  (sp)+,d0;       bra     0b
265 2:              move.w  (sp)+,d0;       bra     0b
266 sts_z:          mov     (sp)+,d0
267                 bra     6b
268
269 !------------------------------------------------------------------------------
270 !               POINTER ARITHMETIC
271 !------------------------------------------------------------------------------
272 adp_l:          adroff          ;       move.w  (a5),d0
273                 ext.l   d0
274                 add.l   d0,(sp);        jmp     (a4)
275 adp_q:          move.l  (sp)+,d0 ;      add.l   d0,(sp)
276                 jmp     (a4)
277 adp_1:          add.l   #1,(sp);        jmp     (a4)
278 adp_2:          add.l   #2,(sp);        jmp     (a4)
279 adp_s0:         move.l  d6,d0   ;       move.b  (a3)+,d0
280                 add.l   d0,(sp);        jmp     (a4)
281 adp_s_1:        move.l  #-1,d0  ;       move.b  (a3)+,d0
282                 add.l   d0,(sp) ;       jmp     (a4)
283 ads_l:          adroff          ;       move.w  (a5),d0
284                 bra     0f
285 ads_z:          mov     (sp)+,d0
286 0:              checksize
287 4:              move.l  (sp)+,d1 ;      add.l   d1,(sp) ;       jmp (a4)
288 2:              move.w  (sp)+,d1 ;      ext.l   d1
289                 add.l   d1,(sp) ;       jmp     (a4)
290 ads_1W:         mov     (sp)+,d0
291                 extend  d0
292                 add.l   d0,(sp);        jmp     (a4)
293 sbs_l:          adroff          ;       move.w  (a5),d0
294                 bra     0f
295 sbs_z:          mov     (sp)+,d0                !d0 contains objectsize
296 0:              checksize
297 4:              move.l  (sp)+,d1 ;      sub.l   d1,(sp)
298                 jmp     (a4)
299 2:              move.l  (sp)+,d1 ;      sub.l   d1,(sp)
300                 clr.w   (sp)+   ;       jmp     (a4)