Subversion Repositories pentevo

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1186 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