SRRAT: use MRAT reader functions instead of CADDAR, etc.
[maxima.git] / archive / src / rat3f-hc.s
blob39ab406f03b8106e5376db270b45e1a0e69d3467
1 .comm _vs_limit,4
2 .comm _vs_base,4
3 .comm _vs_top,4
4 .comm _bds_limit,4
5 .comm _bds_top,4
6 .comm _ihs_limit,4
7 .comm _ihs_top,4
8 .comm _frs_limit,4
9 .comm _frs_top,4
10 .comm _nlj_active,4
11 .comm _nlj_fr,4
12 .comm _nlj_tag,4
13 .comm _lex_env,4
14 .comm _CMPtemp,4
15 .comm _CMPtemp1,4
16 .comm _CMPtemp2,4
17 .comm _CMPtemp3,4
18 .comm _Cnil_body,36
19 .comm _Ct_body,36
20 .comm _Scons,4
21 .comm _siSfunction_documentation,4
22 .comm _siSvariable_documentation,4
23 .comm _siSpretty_print_format,4
24 .comm _Slist,4
25 .comm _keyword_package,4
26 .comm _FIXtemp,4
27 .globl _dblrem
28 .text
29 .even
30 _dblrem:
31 link a6,#0
32 movl a6@(8),d1
33 mulsl a6@(12),d0:d1
34 divsl a6@(16),d0:d1
35 unlk a6
36 rts
37 .comm _TOPhalf,4
38 .globl _ftimes1
39 .text
40 .even
41 _ftimes1:
42 link a6,#0
43 movl a6@(8),d1
44 mulsl a6@(12),d0:d1
45 movl d1, _TOPhalf
46 unlk a6
47 rts
48 .globl _ftimes
49 .text
50 .even
51 _ftimes:
52 link a6,#0
53 moveml #0x2030,sp@-
54 movl a6@(8),a3
55 movl a6@(12),a2
56 movl a2@(4),sp@-
57 movl a3@(4),sp@-
58 jbsr _ftimes1
59 movl d0,d1
60 addql #8,sp
61 jge L5
62 moveq #-1,d2
63 cmpl _TOPhalf,d2
64 jne L11
65 movl d1,_FIXtemp
66 movl _FIXtemp,d0
67 addl #1024,d0
68 andw #-2048,d0
69 jne L8
70 movl d1,d0
71 asll #3,d0
72 addl #_small_fixnum_table,d0
73 addl #8192,d0
74 jra L9
75 L8:
76 movl _FIXtemp,sp@-
77 jbsr _make_fixnum
78 addql #4,sp
79 L9:
80 jra L3
81 L5:
82 tstl _TOPhalf
83 jne L11
84 movl d1,_FIXtemp
85 movl _FIXtemp,d0
86 addl #1024,d0
87 andw #-2048,d0
88 jne L12
89 movl d1,d0
90 asll #3,d0
91 addl #_small_fixnum_table,d0
92 addl #8192,d0
93 jra L13
94 L12:
95 movl _FIXtemp,sp@-
96 jbsr _make_fixnum
97 addql #4,sp
98 L13:
99 jra L3
100 L11:
101 movl a2,sp@-
102 movl a3,sp@-
103 jbsr _number_times
105 moveml a6@(-12),#0xc04
106 unlk a6
108 .globl _ctimes
109 .text
110 .even
111 _ctimes:
112 link a6,#0
113 moveml #0x3020,sp@-
114 movl a6@(8),a2
115 movl a6@(12),a1
116 movl a6@(16),a0
117 bfextu a2@{#0:#24},d0
118 moveq #1,d3
119 cmpl d0,d3
120 jne L15
121 bfextu a1@{#0:#24},d0
122 cmpl d0,d3
123 jne L15
124 cmpl #_Cnil_body,a0
125 jne L17
126 movl a1,sp@-
127 movl a2,sp@-
128 jbsr _ftimes
129 jra L24
130 L17:
131 bfextu a0@{#0:#24},d0
132 moveq #1,d3
133 cmpl d0,d3
134 jne L18
135 movl a0@(4),d2
136 movl d2,sp@-
137 movl a1@(4),sp@-
138 movl a2@(4),sp@-
139 jbsr _dblrem
140 movl d0,d1
141 movl d2,d0
142 asrl #1,d0
143 addw #12,sp
144 cmpl d1,d0
145 jge L20
146 subl d2,d1
147 jra L19
148 L20:
149 negl d0
150 cmpl d1,d0
151 jle L21
152 addl d2,d1
153 L21:
154 L19:
155 movl d1,_FIXtemp
156 movl _FIXtemp,d0
157 addl #1024,d0
158 andw #-2048,d0
159 jne L22
160 movl d1,d0
161 asll #3,d0
162 addl #_small_fixnum_table,d0
163 addl #8192,d0
164 jra L23
165 L22:
166 movl _FIXtemp,sp@-
167 jbsr _make_fixnum
168 addql #4,sp
169 L23:
170 jra L14
171 L18:
172 L15:
173 movl a0,sp@-
174 movl a1,sp@-
175 movl a2,sp@-
176 jbsr _number_times
177 addql #8,sp
178 movl d0,sp@-
179 jbsr _mcmod
180 L24:
181 L14:
182 moveml a6@(-12),#0x40c
183 unlk a6
185 .globl _mcmod
186 .text
187 .even
188 _mcmod:
189 link a6,#-8
190 moveml #0x3030,sp@-
191 movl a6@(8),a3
192 movl a6@(12),a2
193 cmpl #_Cnil_body,a2
194 jeq L39
195 bfextu a2@{#0:#24},d0
196 moveq #1,d3
197 cmpl d0,d3
198 jne L29
199 bfextu a3@{#0:#24},d0
200 cmpl d0,d3
201 jne L29
202 movl a2@(4),d0
203 jge L30
204 negl d0
205 L30:
206 movl d0,d2
207 asrl #1,d2
208 movl a3@(4),d1
209 divsll d0,d0:d1
210 movl d0,d1
211 cmpl d1,d2
212 jgt L32
213 subl d2,d1
214 jra L31
215 L32:
216 movl d2,d0
217 negl d0
218 cmpl d1,d0
219 jle L33
220 addl d2,d1
221 L33:
222 L31:
223 movl d1,_FIXtemp
224 movl _FIXtemp,d0
225 addl #1024,d0
226 andw #-2048,d0
227 jne L34
228 movl d1,d0
229 asll #3,d0
230 addl #_small_fixnum_table,d0
231 addl #8192,d0
232 jra L35
233 L34:
234 movl _FIXtemp,sp@-
235 jbsr _make_fixnum
236 addql #4,sp
237 L35:
238 jra L25
239 L29:
240 clrl _FIXtemp
241 movl _FIXtemp,d0
242 addl #1024,d0
243 andw #-2048,d0
244 jne L37
245 movl #_small_fixnum_table,d0
246 addl #8192,d0
247 jra L38
248 L37:
249 movl _FIXtemp,sp@-
250 jbsr _make_fixnum
251 addql #4,sp
252 L38:
253 movl d0,sp@-
254 movl a2,sp@-
255 jbsr _number_compare
256 addql #8,sp
257 tstl d0
258 jge L36
259 movl a2,sp@-
260 jbsr _number_negate
261 movl d0,a2
262 addql #4,sp
263 L36:
264 pea a6@(-8)
265 pea a6@(-4)
266 movl a2,sp@-
267 movl a3,sp@-
268 jbsr _integer_quotient_remainder_1
269 pea 2:w
270 movl a2,sp@-
271 jbsr _shift_integer
272 movl d0,sp@-
273 movl a3,sp@-
274 jbsr _number_compare
275 addw #32,sp
276 tstl d0
277 jlt L39
278 movl a2,sp@-
279 movl a3,sp@-
280 jbsr _number_minus
281 movl d0,a3
282 addql #8,sp
283 L39:
284 movl a3,d0
285 L25:
286 moveml a6@(-24),#0xc0c
287 unlk a6
289 .globl _fplus
290 .text
291 .even
292 _fplus:
293 link a6,#0
294 movl d2,sp@-
295 movl a6@(0x8),d0
296 addl a6@(0xc),d0
297 bvs overflow_case
298 movl d0,a6@(0x8)
299 jra rest
300 overflow_case:
301 movl d0,a6@(0x8)
302 tstl a6@(12)
303 jle L41
304 movl a6@(8),d2
305 andl #2147483647,d2
306 movl d2,sp@-
307 pea 1:w
308 jra L45
309 L41:
310 movl a6@(8),d2
311 andl #2147483647,d2
312 movl d2,sp@-
313 pea -2:w
314 L45:
315 jbsr _bignum2
316 addql #8,sp
317 jra end
318 rest:
319 movl a6@(8),d1
320 movl d1,d0
321 addl #1024,d0
322 andw #-2048,d0
323 jne L43
324 movl d1,d0
325 asll #3,d0
326 addl #_small_fixnum_table,d0
327 addl #8192,d0
328 jra L44
329 L43:
330 movl d1,sp@-
331 jbsr _make_fixnum
332 addql #4,sp
333 L44:
334 end:
335 movl a6@(-4),d2
336 unlk a6