home *** CD-ROM | disk | FTP | other *** search
- ;*************************************************************************
- ;** AmigaE 3.2a Div()/Mul() function **
- ;** Contributor: L.Lucius Sept 23rd 1995 **
- ;** Modified for HOp: Thomas Richter (thor) Nov 1st 1997 **
- ;** Function: Modify 68000 math routines to use 68020+ instructions. **
- ;*************************************************************************
-
-
- ;*************************************************************************
- ;
- ; Div()
- ;
- #match
- #code
- 202F 0008 ; MOVE.L 0008(A7),D0
- 222F 0004 ; MOVE.L 0004(A7),D1
- 4A80 ; TST.L D0
- 6B0C ; BMI.B 0040
- 4A81 ; TST.L D1
- 6A10 ; BPL.B 0048
- 4481 ; NEG.L D1
- 610C ; BSR.B 0048
- 4480 ; NEG.L D0
- 4E75 ; RTS
- 4480 ; NEG.L D0
- 4A81 ; TST.L D1
- 6AF4 ; BPL.B 003A
- 4481 ; NEG.L D1
- 4841 ; SWAP D1
- 4A41 ; TST.W D1
- 6620 ; BNE.B 006E
- 2F03 ; MOVE.L D3,-(A7)
- 4841 ; SWAP D1
- 3601 ; MOVE.W D1,D3
- 3400 ; MOVE.W D0,D2
- 4240 ; CLR.W D0
- 4840 ; SWAP D0
- 80C3 ; DIVU.W D3,D0
- 2200 ; MOVE.L D0,D1
- 4840 ; SWAP D0
- 3202 ; MOVE.W D2,D1
- 82C3 ; DIVU.W D3,D1
- 3001 ; MOVE.W D1,D0
- 4241 ; CLR.W D1
- 4841 ; SWAP D1
- 261F ; MOVE.L (A7)+,D3
- 4E75 ; RTS
- 4841 ; SWAP D1
- 48E7 1800 ; MOVEM.L D3-D4,-(A7)
- 741F ; MOVEQ #1F,D2
- 7600 ; MOVEQ #00,D3
- 7800 ; MOVEQ #00,D4
- E383 ; ASL.L #1,D3
- E380 ; ASL.L #1,D0
- E394 ; ROXL.L #1,D4
- B881 ; CMP.L D1,D4
- 6504 ; BCS.B 0088
- 9881 ; SUB.L D1,D4
- 5283 ; ADDQ.L #1,D3
- 51CA FFF0 ; DBF D2,007A
- 2204 ; MOVE.L D4,D1
- 2003 ; MOVE.L D3,D0
- 4CDF 0018 ; MOVEM.L (A7)+,D3-D4
- 4E75 ; RTS
- ;
- ;
- #replace
- 202F 0008 ; MOVE.L 0008(A7),D0
- 4C6F 0800 0004 ; DIVS.L 0004(A7),D0
- 4E75 ; RTS
- #end
-
-
-
- ;*************************************************************************
- ;
- ; Mul()
- ;
- #match
- #code
- 2643 ; MOVEA.L D3,A3
- 222F 0004 ; MOVE.L 0004(A7),D1
- 202F 0008 ; MOVE.L 0008(A7),D0
- 2400 ; MOVE.L D0,D2
- 2600 ; MOVE.L D0,D3
- C0C1 ; MULU.W D1,D0
- 4843 ; SWAP D3
- C6C1 ; MULU.W D1,D3
- 4843 ; SWAP D3
- 4243 ; CLR.W D3
- D083 ; ADD.L D3,D0
- 4841 ; SWAP D1
- C4C1 ; MULU.W D1,D2
- 4842 ; SWAP D2
- 4242 ; CLR.W D2
- D082 ; ADD.L D2,D0
- 260B ; MOVE.L A3,D3
- 4E75 ; RTS
- ;
- ;
- #replace
- 202F 0008 ; MOVE.L 0008(A7),D0
- 4C2F 0000 0004 ; MULS.L 0004(A7),D0
- 4E75 ; RTS
- #end
-
-