home *** CD-ROM | disk | FTP | other *** search
- ;*************************************************************************
- ;** Manx Math routines **
- ;** Contributor: L.Lucius Nov 15th 1993 **
- ;** Modified for HOp: Thomas Richter (thor) Nov 1st 1997 **
- ;** Function: Modify 68000 math routines to use 68020+ instructions. **
- ;*************************************************************************
-
-
-
- ;*************************************************************************
- ;
- ; DIVS
- ;
- #match
- #code
- 48E7 4800 ; MOVEM.L D1/D4,-(A7)
- 4284 ; CLR.L D4
- 4A80 ; TST.L D0
- 6A04 ; BPL.B 000E
- 4480 ; NEG.L D0
- 5244 ; ADDQ.W #1,D4
- 4A81 ; TST.L D1
- 6A06 ; BPL.B 0018
- 4481 ; NEG.L D1
- 0A44 0001 ; EORI.W #0001,D4
- 613E ; BSR.B 0058
- 4A44 ; TST.W D4
- 6702 ; BEQ.B 0020
- 4480 ; NEG.L D0
- 4CDF 0012 ; MOVEM.L (A7)+,D1/D4
- 4A80 ; TST.L D0
- 4E75 ; RTS
- ;
- ;
- #replace
- 4C41 0800 ; DIVS.L D1,D0
- 4E75 ; RTS
- #end
-
-
-
- ;*************************************************************************
- ;
- ; DIVU/MODU
- ;
- #match
- #code
- 48E7 3000 ; MOVEM.L D2-D3,-(A7)
- 4841 ; SWAP D1
- 4A41 ; TST.W D1
- 6628 ; BNE.B 0032
- 4841 ; SWAP D1
- 4243 ; CLR.W D3
- 80C1 ; DIVU.W D1,D0
- 680E ; BVC.B 0020
- 3400 ; MOVE.W D0,D2
- 4240 ; CLR.W D0
- 4840 ; SWAP D0
- 80C1 ; DIVU.W D1,D0
- 3600 ; MOVE.W D0,D3
- 3002 ; MOVE.W D2,D0
- 80C1 ; DIVU.W D1,D0
- 2200 ; MOVE.L D0,D1
- 4840 ; SWAP D0
- 3003 ; MOVE.W D3,D0
- 4840 ; SWAP D0
- 4241 ; CLR.W D1
- 4841 ; SWAP D1
- 4CDF 000C ; MOVEM.L (A7)+,D2-D3
- 4E75 ; RTS
- ;
- ;
- #replace
- 4C41 0001 ; DIVUL.L D1,D1:D0
- 4E75 ; RTS
- #end
-
-
- ;*************************************************************************
- ;
- ; MODS
- ;
- #match
- #code
- 48E7 4800 ; MOVEM.L D1/D4,-(A7)
- 4284 ; CLR.L D4
- 4A80 ; TST.L D0
- 6A04 ; BPL.B 000E
- 4480 ; NEG.L D0
- 5244 ; ADDQ.W #1,D4
- 4A81 ; TST.L D1
- 6A02 ; BPL.B 0014
- 4481 ; NEG.L D1
- 611A ; BSR.B 0030
- 2001 ; MOVE.L D1,D0
- 60D8 ; BRA.B FFF2
- 2F01 ; MOVE.L D1,-(A7)
- 6112 ; BSR.B 0030
- 2001 ; MOVE.L D1,D0
- 221F ; MOVE.L (A7)+,D1
- 4A80 ; TST.L D0
- 4E75 ; RTS
- ;
- ;
- #replace
- 2F01 ; MOVE.L D1,-(A7)
- 4C41 0801 ; DIVSL.L D1,D1:D0
- C141 ; EXG D0,D1
- 221F ; MOVE.L (A7)+,D1
- 4A80 ; TST.L D0
- 4E75 ; RTS
- #end
-
-
- ;*************************************************************************
- ;
- ; MULU
- ;
- #match
- #code
- 48E7 7000 ; MOVEM.L D1-D3,-(A7)
- 3401 ; MOVE.W D1,D2
- C4C0 ; MULU.W D0,D2
- 2601 ; MOVE.L D1,D3
- 4843 ; SWAP D3
- C6C0 ; MULU.W D0,D3
- 4843 ; SWAP D3
- 4243 ; CLR.W D3
- D483 ; ADD.L D3,D2
- 4840 ; SWAP D0
- C0C1 ; MULU.W D1,D0
- 4840 ; SWAP D0
- 4240 ; CLR.W D0
- D082 ; ADD.L D2,D0
- 4CDF 000E ; MOVEM.L (A7)+,D1-D3
- 4E75 ; RTS
- ;
- ;
- #replace
- 4C01 0000 ; MULU.L D1,D0
- 4E75 ; RTS
- #end
-
-