Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1126 | savelij | 1 | ;---------------------------------------------------------------------------- |
2 | ; Fliesskommaroutinen fuer den PcPar68000 - Version mit 68881 |
||
3 | |||
4 | ;----------------------------------------------------------------------------- |
||
5 | ; Definitionen: |
||
6 | |||
7 | CoConst1 equ $32 ; Offsets im Konstantenrom |
||
8 | CoConstPi equ 0 ; des 6888x |
||
9 | |||
10 | ;----------------------------------------------------------------------------- |
||
11 | ; Librarykopf: |
||
12 | |||
13 | |||
14 | S_Float81Lib: dc.l S_float81libend-S_float81libstart ; Laenge |
||
15 | S_float81libstart: |
||
16 | dc.l -1 ; Speicher fuer Zeiger |
||
17 | dc.b "FLOAT",0 ; Name |
||
18 | ds 0 |
||
19 | |||
20 | |||
21 | ;----------------------------------------------------------------------------- |
||
22 | ; Sprungtabelle: |
||
23 | |||
24 | bra.l S_fadd_co68 |
||
25 | bra.l S_fsub_co68 |
||
26 | bra.l S_fmul_co68 |
||
27 | bra.l S_fdiv_co68 |
||
28 | bra.l S_fsqrt_co68 |
||
29 | bra.l S_float81libnop |
||
30 | bra.l S_float81libnop |
||
31 | bra.l S_fcmp_co68 |
||
32 | bra.l S_fitof_co68 |
||
33 | bra.l S_fftoi_co68 |
||
34 | bra.l S_fabs_co68 |
||
35 | bra.l S_float81libnop |
||
36 | bra.l S_float81libnop |
||
37 | bra.l S_float81libnop |
||
38 | bra.l S_float81libnop |
||
39 | bra.l S_fexp_co68 |
||
40 | bra.l S_fsinh_co68 |
||
41 | bra.l S_fcosh_co68 |
||
42 | bra.l S_ftanh_co68 |
||
43 | bra.l S_fcoth_co68 |
||
44 | bra.l S_float81libnop |
||
45 | bra.l S_float81libnop |
||
46 | bra.l S_float81libnop |
||
47 | bra.l S_fln_co68 |
||
48 | bra.l S_flog_co68 |
||
49 | bra.l S_fasinh_co68 |
||
50 | bra.l S_facosh_co68 |
||
51 | bra.l S_fatanh_co68 |
||
52 | bra.l S_facoth_co68 |
||
53 | bra.l S_float81libnop |
||
54 | bra.l S_float81libnop |
||
55 | bra.l S_fsin_co68 |
||
56 | bra.l S_fcos_co68 |
||
57 | bra.l S_ftan_co68 |
||
58 | bra.l S_fcot_co68 |
||
59 | bra.l S_float81libnop |
||
60 | bra.l S_float81libnop |
||
61 | bra.l S_float81libnop |
||
62 | bra.l S_float81libnop |
||
63 | bra.l S_fasin_co68 |
||
64 | bra.l S_facos_co68 |
||
65 | bra.l S_fatan_co68 |
||
66 | bra.l S_facot_co68 |
||
67 | |||
68 | S_float81libnop: rts |
||
69 | |||
70 | ;---------------------------------------------------------------------------- |
||
71 | |||
72 | fpu on |
||
73 | S_fadd_co68: |
||
74 | addq.l #1,_fadd_cnt.w |
||
75 | fmove.s d0,fp0 |
||
76 | fadd.s d1,fp0 |
||
77 | fmove.s fp0,d0 |
||
78 | rts |
||
79 | |||
80 | |||
81 | S_fsub_co68: |
||
82 | addq.l #1,_fadd_cnt.w |
||
83 | fmove.s d0,fp0 |
||
84 | fsub.s d1,fp0 |
||
85 | fmove.s fp0,d0 |
||
86 | rts |
||
87 | |||
88 | |||
89 | S_fmul_co68: |
||
90 | addq.l #1,_fmul_cnt.w |
||
91 | fmove.s d0,fp0 |
||
92 | fsglmul.s d1,fp0 |
||
93 | fmove.s fp0,d0 |
||
94 | rts |
||
95 | |||
96 | |||
97 | S_fdiv_co68: |
||
98 | addq.l #1,_fdiv_cnt.w |
||
99 | fmove.s d0,fp0 |
||
100 | fsgldiv.s d1,fp0 |
||
101 | fmove.s fp0,d0 |
||
102 | rts |
||
103 | |||
104 | |||
105 | S_fmul2_co68: |
||
106 | addq.l #1,_fmul_cnt.w |
||
107 | fmove.s d0,fp0 |
||
108 | fscale.w d1,fp0 |
||
109 | fmove.s fp0,d0 |
||
110 | rts |
||
111 | |||
112 | |||
113 | S_fitof_co68: |
||
114 | fmove.l d0,fp0 |
||
115 | fmove.s fp0,d0 |
||
116 | rts |
||
117 | |||
118 | |||
119 | S_fftoi_co68: |
||
120 | fmove.s d0,fp0 |
||
121 | fmove.l fp0,d0 |
||
122 | rts |
||
123 | |||
124 | |||
125 | S_fsqrt_co68: |
||
126 | addq.l #1,_fsqrt_cnt.w |
||
127 | fsqrt.s d0,fp0 |
||
128 | fmove.s fp0,d0 |
||
129 | rts |
||
130 | |||
131 | |||
132 | S_fabs_co68: bclr #31,d0 ; ganz einfach... |
||
133 | rts |
||
134 | |||
135 | |||
136 | S_fcmp_co68: |
||
137 | fmove.s d0,fp0 |
||
138 | fcmp.s d1,fp0 |
||
139 | fbeq.l S_fcmp_coeq ; Variante 1:gleich |
||
140 | fbgt.l S_fcmp_cogt ; Variante 2:groeer |
||
141 | |||
142 | moveq #1,d0 ; Bedingung "kleiner" |
||
143 | cmp.w #2,d0 ; erzeugen |
||
144 | rts |
||
145 | S_fcmp_cogt: |
||
146 | moveq #2,d0 ; Bedingung "groesser" |
||
147 | cmp.w #1,d0 ; erzeugen |
||
148 | rts |
||
149 | S_fcmp_coeq: |
||
150 | cmp.w d0,d0 ; Bedingung "gleich" |
||
151 | rts ; erzeugen |
||
152 | |||
153 | |||
154 | S_fexp_co68: |
||
155 | fetox.s d0,fp0 |
||
156 | fmove.s fp0,d0 |
||
157 | rts |
||
158 | |||
159 | |||
160 | S_fsinh_co68: |
||
161 | fsinh.s d0,fp0 |
||
162 | fmove.s fp0,d0 |
||
163 | rts |
||
164 | |||
165 | |||
166 | S_fcosh_co68: |
||
167 | fcosh.s d0,fp0 |
||
168 | fmove.s fp0,d0 |
||
169 | rts |
||
170 | |||
171 | |||
172 | S_ftanh_co68: |
||
173 | ftanh.s d0,fp0 |
||
174 | fmove.s fp0,d0 |
||
175 | rts |
||
176 | |||
177 | |||
178 | S_fcoth_co68: |
||
179 | fmove.s d0,fp0 |
||
180 | fsinh.x fp0,fp1 |
||
181 | fcosh.x fp0 |
||
182 | fsgldiv.x fp1,fp0 |
||
183 | fmove.s fp0,d0 |
||
184 | rts |
||
185 | |||
186 | |||
187 | S_fln_co68: |
||
188 | flogn.s d0,fp0 |
||
189 | fmove.s fp0,d0 |
||
190 | rts |
||
191 | |||
192 | |||
193 | S_flog_co68: |
||
194 | flog10.s d0,fp0 |
||
195 | fmove.s fp0,d0 |
||
196 | rts |
||
197 | |||
198 | |||
199 | S_fasinh_co68: |
||
200 | fmove.s d0,fp0 |
||
201 | fmove.x fp0,fp1 |
||
202 | fmul.x fp1,fp0 |
||
203 | fmovecr.x #CoConst1,fp2 |
||
204 | fadd.x fp2,fp0 |
||
205 | fsqrt.x fp0 |
||
206 | fadd.x fp1,fp0 |
||
207 | flogn.x fp0 |
||
208 | fmove.s fp0,d0 |
||
209 | rts |
||
210 | |||
211 | |||
212 | S_facosh_co68: |
||
213 | fmove.s d0,fp0 |
||
214 | fmove.x fp0,fp1 |
||
215 | fmul.x fp1,fp0 |
||
216 | fmovecr.x #CoConst1,fp2 |
||
217 | fsub.x fp2,fp0 |
||
218 | fsqrt.x fp0 |
||
219 | fadd.x fp1,fp0 |
||
220 | flogn.x fp0 |
||
221 | fmove.s fp0,d0 |
||
222 | rts |
||
223 | |||
224 | |||
225 | S_fatanh_co68: |
||
226 | fatanh.s d0,fp0 |
||
227 | fmove.s fp0,d0 |
||
228 | rts |
||
229 | |||
230 | |||
231 | S_facoth_co68: |
||
232 | fmovecr.x #CoConst1,fp0 |
||
233 | fdiv.s d0,fp0 |
||
234 | fatanh.x fp0 |
||
235 | fmove.s fp0,d0 |
||
236 | rts |
||
237 | |||
238 | |||
239 | S_fcos_co68: |
||
240 | fcos.s d0,fp0 |
||
241 | fmove.s fp0,d0 |
||
242 | rts |
||
243 | |||
244 | |||
245 | S_fsin_co68: |
||
246 | fsin.s d0,fp0 |
||
247 | fmove.s fp0,d0 |
||
248 | rts |
||
249 | |||
250 | |||
251 | S_ftan_co68: |
||
252 | ftan.s d0,fp0 |
||
253 | fmove.s fp0,d0 |
||
254 | rts |
||
255 | |||
256 | |||
257 | S_fcot_co68: |
||
258 | fsincos.s d0,fp0:fp1 |
||
259 | fsgldiv.x fp1,fp0 |
||
260 | fmove.s fp0,d0 |
||
261 | rts |
||
262 | |||
263 | |||
264 | S_fatan_co68: |
||
265 | fatan.s d0,fp0 |
||
266 | fmove.s fp0,d0 |
||
267 | rts |
||
268 | |||
269 | |||
270 | S_facot_co68: |
||
271 | fatan.s d0,fp1 |
||
272 | fmovecr.x #CoConstPi,fp0 |
||
273 | fscale.w #-1,fp0 |
||
274 | fsub.x fp1,fp0 |
||
275 | fmove.s fp0,d0 |
||
276 | rts |
||
277 | |||
278 | |||
279 | S_fasin_co68: |
||
280 | fasin.s d0,fp0 |
||
281 | fmove.s fp0,d0 |
||
282 | rts |
||
283 | |||
284 | |||
285 | S_facos_co68: |
||
286 | facos.s d0,fp0 |
||
287 | fmove.s fp0,d0 |
||
288 | rts |
||
289 | |||
290 | S_float81libend: |
||
291 | |||
292 | fpu off |
||
293 |