Blame | Last modification | View Log | Download | RSS feed
;----------------------------------------------------------------------------; Fliesskommaroutinen fuer den PcPar68000 - Version mit 68881;-----------------------------------------------------------------------------; Definitionen:CoConst1 equ $32 ; Offsets im KonstantenromCoConstPi equ 0 ; des 6888x;-----------------------------------------------------------------------------; Librarykopf:S_Float81Lib: dc.l S_float81libend-S_float81libstart ; LaengeS_float81libstart:dc.l -1 ; Speicher fuer Zeigerdc.b "FLOAT",0 ; Nameds 0;-----------------------------------------------------------------------------; Sprungtabelle:bra.l S_fadd_co68bra.l S_fsub_co68bra.l S_fmul_co68bra.l S_fdiv_co68bra.l S_fsqrt_co68bra.l S_float81libnopbra.l S_float81libnopbra.l S_fcmp_co68bra.l S_fitof_co68bra.l S_fftoi_co68bra.l S_fabs_co68bra.l S_float81libnopbra.l S_float81libnopbra.l S_float81libnopbra.l S_float81libnopbra.l S_fexp_co68bra.l S_fsinh_co68bra.l S_fcosh_co68bra.l S_ftanh_co68bra.l S_fcoth_co68bra.l S_float81libnopbra.l S_float81libnopbra.l S_float81libnopbra.l S_fln_co68bra.l S_flog_co68bra.l S_fasinh_co68bra.l S_facosh_co68bra.l S_fatanh_co68bra.l S_facoth_co68bra.l S_float81libnopbra.l S_float81libnopbra.l S_fsin_co68bra.l S_fcos_co68bra.l S_ftan_co68bra.l S_fcot_co68bra.l S_float81libnopbra.l S_float81libnopbra.l S_float81libnopbra.l S_float81libnopbra.l S_fasin_co68bra.l S_facos_co68bra.l S_fatan_co68bra.l S_facot_co68S_float81libnop: rts;----------------------------------------------------------------------------fpu onS_fadd_co68:addq.l #1,_fadd_cnt.wfmove.s d0,fp0fadd.s d1,fp0fmove.s fp0,d0rtsS_fsub_co68:addq.l #1,_fadd_cnt.wfmove.s d0,fp0fsub.s d1,fp0fmove.s fp0,d0rtsS_fmul_co68:addq.l #1,_fmul_cnt.wfmove.s d0,fp0fsglmul.s d1,fp0fmove.s fp0,d0rtsS_fdiv_co68:addq.l #1,_fdiv_cnt.wfmove.s d0,fp0fsgldiv.s d1,fp0fmove.s fp0,d0rtsS_fmul2_co68:addq.l #1,_fmul_cnt.wfmove.s d0,fp0fscale.w d1,fp0fmove.s fp0,d0rtsS_fitof_co68:fmove.l d0,fp0fmove.s fp0,d0rtsS_fftoi_co68:fmove.s d0,fp0fmove.l fp0,d0rtsS_fsqrt_co68:addq.l #1,_fsqrt_cnt.wfsqrt.s d0,fp0fmove.s fp0,d0rtsS_fabs_co68: bclr #31,d0 ; ganz einfach...rtsS_fcmp_co68:fmove.s d0,fp0fcmp.s d1,fp0fbeq.l S_fcmp_coeq ; Variante 1:gleichfbgt.l S_fcmp_cogt ; Variante 2:groeermoveq #1,d0 ; Bedingung "kleiner"cmp.w #2,d0 ; erzeugenrtsS_fcmp_cogt:moveq #2,d0 ; Bedingung "groesser"cmp.w #1,d0 ; erzeugenrtsS_fcmp_coeq:cmp.w d0,d0 ; Bedingung "gleich"rts ; erzeugenS_fexp_co68:fetox.s d0,fp0fmove.s fp0,d0rtsS_fsinh_co68:fsinh.s d0,fp0fmove.s fp0,d0rtsS_fcosh_co68:fcosh.s d0,fp0fmove.s fp0,d0rtsS_ftanh_co68:ftanh.s d0,fp0fmove.s fp0,d0rtsS_fcoth_co68:fmove.s d0,fp0fsinh.x fp0,fp1fcosh.x fp0fsgldiv.x fp1,fp0fmove.s fp0,d0rtsS_fln_co68:flogn.s d0,fp0fmove.s fp0,d0rtsS_flog_co68:flog10.s d0,fp0fmove.s fp0,d0rtsS_fasinh_co68:fmove.s d0,fp0fmove.x fp0,fp1fmul.x fp1,fp0fmovecr.x #CoConst1,fp2fadd.x fp2,fp0fsqrt.x fp0fadd.x fp1,fp0flogn.x fp0fmove.s fp0,d0rtsS_facosh_co68:fmove.s d0,fp0fmove.x fp0,fp1fmul.x fp1,fp0fmovecr.x #CoConst1,fp2fsub.x fp2,fp0fsqrt.x fp0fadd.x fp1,fp0flogn.x fp0fmove.s fp0,d0rtsS_fatanh_co68:fatanh.s d0,fp0fmove.s fp0,d0rtsS_facoth_co68:fmovecr.x #CoConst1,fp0fdiv.s d0,fp0fatanh.x fp0fmove.s fp0,d0rtsS_fcos_co68:fcos.s d0,fp0fmove.s fp0,d0rtsS_fsin_co68:fsin.s d0,fp0fmove.s fp0,d0rtsS_ftan_co68:ftan.s d0,fp0fmove.s fp0,d0rtsS_fcot_co68:fsincos.s d0,fp0:fp1fsgldiv.x fp1,fp0fmove.s fp0,d0rtsS_fatan_co68:fatan.s d0,fp0fmove.s fp0,d0rtsS_facot_co68:fatan.s d0,fp1fmovecr.x #CoConstPi,fp0fscale.w #-1,fp0fsub.x fp1,fp0fmove.s fp0,d0rtsS_fasin_co68:fasin.s d0,fp0fmove.s fp0,d0rtsS_facos_co68:facos.s d0,fp0fmove.s fp0,d0rtsS_float81libend:fpu off