home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Fred Fish Collection 1.5
/
ffcollection-1-5-1992-11.iso
/
ff_progs
/
prt_util
/
psintrp.lzh
/
PSINTRP
/
LMATH.A
< prev
next >
Wrap
Text File
|
1991-08-16
|
2KB
|
125 lines
xdef ldivs
xdef ldivu
xdef lmulu * really signed
xdef lmoddivu
section one
* divide D1 by D2
* quotient in D1; remainder in D0
lmoddivu
cmp.l #$00FFFF,D2
bgt .bigdiv
move.w D1,A1
clr.w D1
swap D1
divu D2,D1
move.l D1,D0
swap D1
move.w A1,D0
divu D2,D0
move.w D0,D1
clr.w D0
swap D0
rts
.bigdiv
move.l D1,D0
clr.w D0
swap D0
swap D1
clr.w D1
move.l D2,A1
moveq #$0F,D2
1$ add.l D1,D1
addx.l D0,D0
cmp.l D0,A1
bgt 2$
sub.l A1,D0
addq.w #1,D1
2$ dbra D2,1$
rts
lmulu
move.l D2,-(SP)
move.l D0,D2
mulu D1,D2
move.l D2,A0
move.l D0,D2
swap D2
mulu D1,D2
swap D1
mulu D1,D0
add.l D2,D0
swap D0
clr.w D0
add.l D0,A0
move.l A0,D0
move.l (SP)+,D2
rts
* remainder after unsigned divide D0 by D1
* move.l D2,-(SP)
* move.l D1,D2
* move.l D0,D1
* bsr lmoddivu
* move.l (SP)+,D2
* rts
* unsigned divide D0 by D1
ldivu
move.l D2,-(SP)
move.l D1,D2
move.l D0,D1
bsr lmoddivu
move.l D1,D0
move.l (SP)+,D2
rts
* signed remainder after signed divide D0 by D1
* move.l D2,-(SP)
* move.l D1,D2
* bge lab736A
* neg.l D2
*lab736A
* move.l D0,D1
* moveq #0,D0
* tst.l D1
* bge lab7376
* neg.l D1
* not.l D0
*lab7376
* move.l D0,A0
* bsr lmoddivu
* move.w A0,D2
* beq lab7382
* neg.l D0
*lab7382
* move.l (SP)+,D2
* rts
ldivs
move.l D2,-(SP)
move.l D0,A0
moveq #0,D0
move.l D1,D2
bge 1$ same as bpl
neg.l D2
not.l D0
1$ move.l A0,D1
bge 2$ same as bpl
neg.l D1
not.l D0
2$ move.l D0,A0
bsr lmoddivu
move.l A0,D2
beq 3$ were signs the same?
neg.l D1
3$ move.l D1,D0
move.l (SP)+,D2
rts
end