home *** CD-ROM | disk | FTP | other *** search
- .globl pow, _pow
- .globl log, exp
-
- _pow:
- mov r5,-(sp)
- mov sp,r5
- movf 4(r5),fr0
- movf 12.(r5),fr1
- jsr pc,pow
- mov (sp)+,r5
- rts pc
-
- pow:
-
- / 0^0~ is 0
-
- tstf fr0
- cfcc
- bne 1f
- tstf fr1
- cfcc
- beq bad
- rts pc
- 1:
-
- / -^i is +^i fixed sign
-
- bpl 1f
- movf fr1,-(sp)
- modf $one,fr1
- cfcc
- bne bad1
- movf (sp)+,fr1
- absf fr0
- jsr pc,1f
- bes bad
- movf fr1,-(sp)
- modf $half,fr1
- cfcc
- beq 2f
- negf fr0
- 2:
- movf (sp)+,fr1
- rts pc
- 1:
- jsr pc,log
- bes 1f
- mulf fr1,fr0
- jsr pc,exp
- 1:
- rts pc
-
- bad1:
- movf (sp)+,fr1
- bad:
- sec
- rts pc
-
- one = 40200
- half = 40000
-