2005-04-17 02:20:36 +04:00
|
| sto_ r e s . s a 3 . 1 1 2 / 1 0 / 9 0
|
| Takes t h e r e s u l t a n d p u t s i t i n w h e r e t h e u s e r e x p e c t s i t .
| Library f u n c t i o n s r e t u r n r e s u l t i n f p0 . I f f p0 i s n o t t h e
| users d e s t i n a t i o n r e g i s t e r t h e n f p0 i s m o v e d t o t h e
| correct f l o a t i n g - p o i n t d e s t i n a t i o n r e g i s t e r . f p0 a n d f p1
| are t h e n r e s t o r e d t o t h e o r i g i n a l c o n t e n t s .
|
| Input : result i n f p0 ,f p1
|
| d2 & a0 s h o u l d b e k e p t u n m o d i f i e d
|
| Output : moves t h e r e s u l t t o t h e t r u e d e s t i n a t i o n r e g o r m e m
|
| Modifies : destination f l o a t i n g p o i n t r e g i s t e r
|
| Copyright ( C ) M o t o r o l a , I n c . 1 9 9 0
| All R i g h t s R e s e r v e d
|
2006-02-12 04:55:48 +03:00
| For d e t a i l s o n t h e l i c e n s e f o r t h i s f i l e , p l e a s e s e e t h e
| file, R E A D M E , i n t h i s s a m e d i r e c t o r y .
2005-04-17 02:20:36 +04:00
STO_RES : | idnt 2 ,1 | M o t o r o l a 0 4 0 F l o a t i n g P o i n t S o f t w a r e P a c k a g e
| section 8
# include " f p s p . h "
.global sto_cos
sto_cos :
bfextu C M D R E G 1 B ( % a6 ) { #13 : #3 } ,% d0 | e x t r a c t c o s d e s t i n a t i o n
cmpib #3 ,% d0 | c h e c k f o r f p0 / f p1 c a s e s
bles c _ f p01 2 3
fmovemx % f p1 - % f p1 ,- ( % a7 )
moveql #7 ,% d1
subl % d0 ,% d1 | d1 = 7 - ( d e s t . r e g . n o . )
clrl % d0
bsetl % d1 ,% d0 | d0 i s d y n a m i c r e g i s t e r m a s k
fmovemx ( % a7 ) + ,% d0
rts
c_fp0123 :
cmpib #0 ,% d0
beqs c _ i s _ f p0
cmpib #1 ,% d0
beqs c _ i s _ f p1
cmpib #2 ,% d0
beqs c _ i s _ f p2
c_is_fp3 :
fmovemx % f p1 - % f p1 ,U S E R _ F P 3 ( % a6 )
rts
c_is_fp2 :
fmovemx % f p1 - % f p1 ,U S E R _ F P 2 ( % a6 )
rts
c_is_fp1 :
fmovemx % f p1 - % f p1 ,U S E R _ F P 1 ( % a6 )
rts
c_is_fp0 :
fmovemx % f p1 - % f p1 ,U S E R _ F P 0 ( % a6 )
rts
.global sto_res
sto_res :
bfextu C M D R E G 1 B ( % a6 ) { #6 : #3 } ,% d0 | e x t r a c t d e s t i n a t i o n r e g i s t e r
cmpib #3 ,% d0 | c h e c k f o r f p0 / f p1 c a s e s
bles f p01 2 3
fmovemx % f p0 - % f p0 ,- ( % a7 )
moveql #7 ,% d1
subl % d0 ,% d1 | d1 = 7 - ( d e s t . r e g . n o . )
clrl % d0
bsetl % d1 ,% d0 | d0 i s d y n a m i c r e g i s t e r m a s k
fmovemx ( % a7 ) + ,% d0
rts
fp0123 :
cmpib #0 ,% d0
beqs i s _ f p0
cmpib #1 ,% d0
beqs i s _ f p1
cmpib #2 ,% d0
beqs i s _ f p2
is_fp3 :
fmovemx % f p0 - % f p0 ,U S E R _ F P 3 ( % a6 )
rts
is_fp2 :
fmovemx % f p0 - % f p0 ,U S E R _ F P 2 ( % a6 )
rts
is_fp1 :
fmovemx % f p0 - % f p0 ,U S E R _ F P 1 ( % a6 )
rts
is_fp0 :
fmovemx % f p0 - % f p0 ,U S E R _ F P 0 ( % a6 )
rts
| end