;*************************************************************************
;** Silver MULU                                                         **
;** Contributor: L.Lucius                               Nov 15th  1995  **
;** Modified for HOp:   Thomas Richter  (thor)          Nov  1st  1997  **
;** Function:    Modify 68000 math routines to use 68020+ instructions. **
;*************************************************************************


;*************************************************************************
;
; MULU
;
;
#match
#code
48E7 3C00                       ;   MOVEM.L     D2-D5,-(A7)
4205                            ;   CLR.B       D5
4A80                            ;   TST.L       D0
6A04                            ;   BPL.B       000E
4605                            ;   NOT.B       D5
4480                            ;   NEG.L       D0
4A81                            ;   TST.L       D1
6A04                            ;   BPL.B       0016
4605                            ;   NOT.B       D5
4481                            ;   NEG.L       D1
3400                            ;   MOVE.W      D0,D2
3601                            ;   MOVE.W      D1,D3
4840                            ;   SWAP        D0
4841                            ;   SWAP        D1
3803                            ;   MOVE.W      D3,D4
C8C2                            ;   MULU.W      D2,D4
C6C0                            ;   MULU.W      D0,D3
C4C1                            ;   MULU.W      D1,D2
C2C0                            ;   MULU.W      D0,D1
D682                            ;   ADD.L       D2,D3
2003                            ;   MOVE.L      D3,D0
4240                            ;   CLR.W       D0
4840                            ;   SWAP        D0
4843                            ;   SWAP        D3
4243                            ;   CLR.W       D3
D883                            ;   ADD.L       D3,D4
D181                            ;   ADDX.L      D1,D0
4840                            ;   SWAP        D0
4240                            ;   CLR.W       D0
4244                            ;   CLR.W       D4
4844                            ;   SWAP        D4
8084                            ;   OR.L        D4,D0
4A05                            ;   TST.B       D5
6702                            ;   BEQ.B       0048
4480                            ;   NEG.L       D0
4CDF 003C                       ;   MOVEM.L     (A7)+,D2-D5
4E75                            ;   RTS
;
;
#replace
4C00 1C00                       ;   MULS.L      D0,D0:D1
E180                            ;   ASL.L       #8,D0
E180                            ;   ASL.L       #8,D0
9241                            ;   SUB.W       D1,D1
4841                            ;   SWAP        D1
8081                            ;   OR.L        D1,D0
4E75                            ;   RTS
#end

