Add original unix v6
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
.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
|
||||
Reference in New Issue
Block a user