Pristine Ack-5.5
[Ack-5.5.git] / mach / mantra / int / mloop2
1 .sect .text
2 .sect .rom
3 .sect .data
4 .sect .bss
5 .sect .text
6 !--------------------------------------------------------------------------
7 !       Load constant , load local , store local
8 !--------------------------------------------------------------------------
9
10 loc_0:  mov     d6,-(sp)
11         jmp     (a4)
12 loc_1:  loc_2:  loc_3:  loc_4:  loc_5:  loc_6:  loc_7:  loc_8:
13 loc_9:  loc_10: loc_11: loc_12: loc_13: loc_14: loc_15: loc_16:
14 loc_17: loc_18: loc_19: loc_20: loc_21: loc_22: loc_23: loc_24: 
15 loc_25: loc_26: loc_27: loc_28: loc_29: loc_30: loc_31: loc_32:
16 loc_33:
17         asr.w   #2,d0           !make the multiplication undone
18         mov     d0,-(sp)
19         jmp     (a4)
20 loc__1:
21         mov     #-1,-(sp)
22         jmp     (a4)
23 loc_s0: clr.w   d0
24         move.b  (a3)+,d0
25         mov     d0,-(sp)
26         jmp     (a4)
27 loc_s_1:        mov     #-1,d0
28         move.b  (a3)+,d0
29         mov     d0,-(sp)
30         jmp     (a4)
31 lpi_l:
32         adroff
33         move.w  (a5),d0
34         move.l  d0,-(sp)
35         jmp     (a4)
36 lpi_q:  jmp     (a4)
37
38 loc_q:  jmp     (a4)
39 #ifndef lword
40          bra    e_illins
41 #endif
42 loc_l:  adroff
43         move.w  (a5),d0
44         ext.l   d0
45         mov     d0,-(sp)
46         jmp     (a4)
47 ldc_0:  cl      -(sp)
48         cl      -(sp)
49         jmp     (a4)
50 ldc_l:
51         adroff
52         move.w  (a5),d0
53         ext.l   d0              !ext works only on d register
54 4:      move.l  d0,-(sp)
55 #ifdef  lword
56         bmi     0f
57         clr.l   -(sp)
58         bra     1f
59 0:      move.l  #-1,-(sp)
60 1:
61 #endif
62         jmp     (a4)
63 ldc_q:
64 #ifdef lword
65         tst.l   (sp)
66         bmi     0f
67         clr.l   -(sp)
68         bra     1f
69 0:      move.l  #-1,-(sp)
70 1:
71 #endif
72         jmp     (a4)
73
74 !-------------------------------------------------------------------------
75 !       offsets should be adapted for wordsize 4 .Use identifiers
76 !       l3 to l_8 for the offsets in lol_3W to lol__8 . Use the
77 !       preprocessor for conditional definitions .
78
79 lol_0:          mov     l0(a2),-(sp)    ; jmp   (a4)
80 lol_1W:         mov     l1(a2),-(sp)    ; jmp   (a4)
81 lol_2W:         mov     l2(a2),-(sp)    ; jmp   (a4)
82 lol_3W:         mov     l3(a2),-(sp)    ; jmp   (a4)
83 lol__1W:        mov     l_1(a2),-(sp)   ; jmp   (a4)
84 lol__2W:        mov     l_2(a2),-(sp)   ; jmp   (a4)
85 lol__3W:        mov     l_3(a2),-(sp)   ; jmp   (a4)
86 lol__4W:        mov     l_4(a2),-(sp)   ; jmp   (a4)
87 lol__5W:        mov     l_5(a2),-(sp)   ; jmp   (a4)
88 lol__6W:        mov     l_6(a2),-(sp)   ; jmp   (a4)
89 lol__7W:        mov     l_7(a2),-(sp)   ; jmp   (a4)
90 lol__8W:        mov     l_8(a2),-(sp)   ; jmp   (a4)
91 lol_w0:         clr.w   d0      
92                 move.b  (a3)+,d0
93                 asl.w   wmu,d0
94                 mov     l0(a2,d0),-(sp) 
95                 jmp     (a4)
96
97 lol_w_1:        move.l  #-1,d0
98                 move.b  (a3)+,d0
99                 asl.w   wmu,d0
100                 mov     0(a2,d0),-(sp)
101                 jmp     (a4)
102 lol_pw:         adroff
103                 move.w  (a5),d0
104 5:              asl.l   wmu,d0
105                 add.l   a2,d0
106                 move.l  d0,a0
107 #if     test
108                 locptr
109 7:              bra     e_badptr
110 6:
111 #endif
112                 mov     l0(a0),-(sp)
113                 jmp     (a4)
114
115 lol_nw:         adroff
116                 move.w  (a5),d0
117                 ext.l   d0
118 2:              asl.l   wmu,d0
119                 add.l   a2,d0
120                 move.l  d0,a0
121 #if     test
122                 locptr
123 7:              bra     e_badptr
124 6:
125 #endif
126                 mov     (a0),-(sp)
127                 jmp     (a4)
128 lol_qnw:        move.l  (sp)+,d0
129                 bra     2b
130 lol_qpw:        move.l  (sp)+,d0
131                 bra     5b
132
133
134 !--------------------------------------------------------------------------
135
136 ldl_0:          mov     l1(a2),-(sp)    !offset code
137                 mov     l0(a2),-(sp)    !offset code
138                 jmp     (a4)
139 ldl_w_1:        move.l  #-1,d0
140                 move.b  (a3)+,d0
141 2:              asl.l   wmu,d0
142                 add.l   a2,d0
143                 move.l  d0,a0
144 #if     test
145                 locptr
146 7:              bra     e_badptr
147 6:
148 #endif
149                 mov     word(a0),-(sp)
150                 mov     (a0),-(sp)
151                 jmp     (a4)
152 ldl_pw:         adroff
153                 move.w  (a5),d0
154 5:              asl.l   wmu,d0
155                 add.l   a2,d0
156                 move.l  d0,a0
157 #if     test
158                 locptr
159 7:              bra     e_badptr
160 6:
161 #endif
162                 mov     l1(a0),-(sp)
163                 mov     l0(a0),-(sp)
164                 jmp     (a4)
165 ldl_nw:         adroff
166                 move.w  (a5),d0
167                 ext.l   d0
168                 bra     2b
169 ldl_qpw:        move.l  (sp)+,d0
170                 bra     5b
171 ldl_qnw:        move.l  (sp)+,d0
172                 bra     2b
173
174 !-------------------------------------------------------------------------
175 loe_lw:         adroff
176                 move.w  (a5),d0
177                 bra     1f
178 loe_qw:         move.l  (sp)+,d0
179                 bra     1f
180
181 loe_w0:         loe_w1:         loe_w2:         loe_w3:         loe_w4:
182                 sub.w   #624,d0
183                 asl.w   #6,d0
184                 move.b  (a3)+,d0
185 1:              asl.l   wmu,d0
186                 add.l   a6,d0
187                 move.l  d0,a0
188 #if     test
189                 extptr
190 7:              bra     e_badptr
191 6:
192 #endif
193                 mov     (a0),-(sp)
194                 jmp     (a4)
195
196 lde_lw:         adroff
197                 move.w  (a5),d0
198                 bra     1f
199 lde_qw:         move.l  (sp)+,d0
200                 bra     1f
201
202 lde_w0:         clr.w   d0
203                 move.b  (a3)+,d0
204 1:              asl.l   wmu,d0          
205                 add.l   a6,d0
206                 move.l  d0,a0
207 #if     test
208                 extptr
209 7:              bra     e_badptr
210 6:
211 #endif
212                 mov     word(a0),-(sp)
213                 mov     (a0),-(sp)
214                 jmp     (a4)
215
216 !------------------------------------------------------------------------------
217 lil_0:          move.l  l0(a2),a0
218 #if     test
219                 locptr
220                 heaptr
221                 extptr
222 7:              bra     e_badptr
223 6:
224 #endif
225                 mov     (a0),-(sp)
226                 jmp     (a4)
227 lil_1W:         move.l  l1(a2),a0
228 #if     test
229                 locptr
230                 heaptr
231                 extptr
232 7:              bra     e_badptr
233 6:
234 #endif
235                 mov     (a0),-(sp)
236                 jmp     (a4)
237 lil_pw:         adroff
238                 move.w  (a5),d0
239                 bra     1f
240 lil_qpw:        move.l  (sp)+,d0
241                 bra     1f
242
243 lil_w0:         clr.w   d0
244                 move.b  (a3)+,d0
245 1:              asl.l   wmu,d0
246                 add.l   a2,d0
247                 move.l  d0,a0
248 #if     test
249                 locptr
250 7:              bra     e_badptr
251 6:
252 #endif
253                 move.l  l0(a0),a0
254 #if     test
255                 locptr
256                 heaptr
257                 extptr
258 7:              bra     e_badptr
259 6:
260 #endif
261                 mov     (a0),-(sp)
262                 jmp     (a4)
263
264 lil_nw:         adroff
265                 move.w  (a5),d0
266                 ext.l   d0
267                 bra     1f
268 lil_qnw:        move.l  (sp)+,d0
269                 bra     1f
270
271 lil_w_1:        move.l  #-1,d0
272                 move.b (a3)+,d0
273 1:              asl.l   wmu,d0  
274                 add.l   a2,d0
275                 move.l  d0,a0
276 #if     test
277                 locptr
278 7:              bra     e_badptr
279 6:
280 #endif
281                 move.l  (a0),a0
282 #if     test
283                 locptr
284                 heaptr
285                 extptr
286 7:              bra     e_badptr
287 6:
288 #endif
289                 mov     (a0),-(sp)
290                 jmp     (a4)
291
292 !---------------------------------------------------------------------------
293 lof_s0:         move.l  d6,d0
294                 move.b  (a3)+,d0
295                 bra     1f
296 lof_l:          adroff
297                 move.w  (a5),d0
298                 ext.l   d0
299                 bra     1f
300 lof_q:          move.l  (sp)+,d0
301                 bra     1f
302 lof_1W:         move.l  wrd,d0
303 1:              move.l  (sp)+,a0
304                 add.l   d0,a0
305 #if     test
306                 locptr
307                 heaptr
308                 extptr
309 7:              bra     e_badptr
310 6:
311 #endif
312                 mov     (a0),-(sp)
313                 jmp     (a4)
314 lof_2W:         move.l  wrd+word,d0     ;       bra     1b
315 lof_3W:         move.l  wrd+word+word,d0        ;       bra     1b
316 lof_4W:         move.l  wrd+word+word+word,d0   ;       bra     1b
317 ldf_l:          adroff
318                 move.w  (a5),d0
319                 ext.l   d0
320 2:              move.l  (sp)+,a0
321                 add.l   d0,a0
322 #if     test
323                 locptr
324                 heaptr
325                 extptr
326 7:              bra     e_badptr
327 6:
328 #endif
329                 mov     word(a0),-(sp)
330                 mov     (a0),-(sp)
331                 jmp     (a4)
332 ldf_q:          move.l  (sp)+,d0
333                 bra     2b
334
335 !-------------------------------------------------------------------------
336
337 lal_p:          adroff
338                 move.w  (a5),d0
339                 bra     1f
340 lal_qp:         move.l  (sp)+,d0
341 1:              add.l   #0+l0,d0
342                 bra     4f
343 lal_0:          pea     l0(a2)
344                 jmp     (a4)    
345 lal_w0:         clr.w   d0
346                 move.b  (a3)+,d0
347                 asl.l   wmu,d0
348                 add.l   #0+l0,d0
349                 bra     3f
350 lal_n:          adroff
351                 move.w  (a5),d0
352                 ext.l   d0
353                 bra     4f
354 lal_qn:         move.l  (sp)+,d0
355 4:              add.l   a2,d0
356                 move.l  d0,-(sp)
357                 jmp     (a4)
358 lal__1:         move.l  #-1,d0
359 3:              pea     0(a2,d0)
360                 jmp     (a4)
361 lal_w_1:        move.l  #-1,d0
362 2:              move.b  (a3)+,d0
363                 asl.l   wmu,d0
364                 bra     3b
365 lal_w_2:        move.l  #-512,d0
366                 bra     2b
367
368 lae_l:          adroff
369                 move.w  (a5),d0
370 1:              add.l   a6,d0
371                 move.l  d0,-(sp)
372                 jmp     (a4)
373 lae_q:          move.l  (sp)+,d0
374                 bra     1b
375 lae_w0:         lae_w1:         lae_w2:         lae_w3:         lae_w4:
376 lae_w5:         lae_w6:
377                 sub.w   #484,d0
378                 asl.w   #6,d0
379                 move.b  (a3)+,d0
380                 asl.w   wmu,d0
381                 pea     0(a6,d0)
382                 jmp     (a4)
383
384 !---------------------------------------------------------------------------
385 lxl_1:          move.l  l0(a2),-(sp)
386                 jmp     (a4)
387 lxl_l:          adroff
388                 move.w  (a5),d0
389                 beq     5f
390                 bgt     1f
391                 blt     e_oddz
392 1:              sub.l   #1,d0
393                 bra     2f
394 lxl_2:          move.l  #1,d0
395 2:              move.l  a2,a0
396 3:              move.l  l0(a0),a0
397 #if     test
398                 locptr
399 7:              bra     e_badptr
400 6:
401 #endif
402                 dbra    d0,3b
403                 move.l  a0,-(sp)
404                 jmp     (a4)
405 5:              move.l  a2,-(sp)
406                 jmp     (a4)
407
408 lxa_1:          move.l  #0,d0
409                 bra     3f
410 lxa_l:          adroff
411                 move.w  (a5),d0
412                 bgt     1f
413                 blt     e_oddz
414                 pea     l0(a2)
415                 jmp     (a4)
416 1:              sub.l   #1,d0
417 3:              move.l  a2,a0
418 2:              move.l  l0(a0),a0
419 #if     test
420                 locptr
421 7:              bra     e_badptr
422 6:
423 #endif
424                 dbra    d0,2b
425                 pea     l0(a0)
426                 jmp     (a4)
427
428 !-----------------------------------------------------------------------
429
430 loi_q:          move.l  (sp)+,d1;       bra     8f
431 loi_l:          adroff
432                 clr.l   d1
433                 move.w  (a5),d1
434                 bra     8f
435 loi_s0:         move.l  #0,d1
436                 move.b  (a3)+,d1
437 8:              cmp.l   #1,d1
438                 beq     loi_1
439                 cmp.l   #2,d1
440                 beq     2f
441                 move.l  d1,d0
442                 move.w  d7,d2
443 3:              asr.l   #1,d0   ;       dbcs    d2,3b
444                 bcs     e_oddz
445                 bra     5f
446 loi_1W:         loi_2W:         loi_3W:         loi_4W:
447                 asr.w   #2,d0
448                 sub.w   #168,d0
449                 move.l  d0,d1
450                 asl.w   wmu,d1
451 5:              move.l  (sp)+,a0
452                 add.l   d1,a0
453 #if     test
454                 locptr
455                 heaptr
456                 extptr
457 7:              bra     e_badptr
458 6:
459 #endif
460                 sub.l   #1,d0
461 1:              mov     -(a0),-(sp)
462                 dbra    d0,1b
463                 jmp     (a4)
464 2:              move.l  (sp)+,a0
465 #if     test
466                 locptr
467                 heaptr
468                 extptr
469 7:              bra     e_badptr
470 6:
471 #endif
472                 move.w  (a0),d0
473                 mov     d0,-(sp)
474                 jmp     (a4)
475 loi_1:          move.l  (sp)+,a0
476                 move.w  d6,d0
477 #if     test
478                 locptr
479                 heaptr
480                 extptr
481 7:              bra     e_badptr
482 6:
483 #endif
484                 move.b  (a0),d0
485                 mov     d0,-(sp)
486                 jmp     (a4)
487
488 los_z:          mov     (sp)+,d0
489                 bra     0f
490 los_l:          adroff
491                 move.w  (a5),d0
492 0:              checksize
493 2:              move.l  #0,d1   ;       move.w  (sp)+,d1 ;      bra     8b
494 4:              move.l  (sp)+,d1 ;      bra     8b