;*************************************************************************
;** Ace 2.35 MUL(S)/DIV(S)/MOD(S)                                       **
;** Contributor: L.Lucius                               Sept 23rd 1995  **
;** Modified for HOp:   Thomas Richter  (thor)          Nov  1st  1997  **
;** Function:    Modify 68000 math routines to use 68020+ instructions. **
;*************************************************************************

;*************************************************************************
;
; ACE DIVS()
;
#match
#code
202F 0008                       ;   MOVE.L      0008(A7),D0
6A02                            ;   BPL.B       0008
4480                            ;   NEG.L       D0
222F 0004                       ;   MOVE.L      0004(A7),D1
6A08                            ;   BPL.B       0016
4481                            ;   NEG.L       D1
0A2F 0080 0008                  ;   EORI.B      ;80,0008(A7)
4EB9 RRRR RRRR                  ;   JSR         00.00000104
4A2F 0008                       ;   TST.B       0008(A7)
6A02                            ;   BPL.B       0024
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
;
#replace
202F 0008                       ;   MOVE.L      0008(A7),D0
4C6F 0800 0004                  ;   DIVS.L      0004(A7),D0
4E75                            ;   RTS
#end


;*************************************************************************
;
; DIVS()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       002E
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A08                            ;   BPL.B       003C
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
4EB9 RRRR RRRR                  ;   JSR         00.00000104
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       004A
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
;
#replace
222F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0800 0008                  ;   DIVS.L      0008(A7),D0
4E75                            ;   RTS
#end


;*************************************************************************
;
; MULS()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       0054
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A08                            ;   BPL.B       0062
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
4EB9 RRRR RRRR                  ;   JSR         00.000000E8
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0070
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
;
#replace
202F 0004                       ;   MOVE.L      0004(A7),D0
4C2F 0800 0008                  ;   MULS.L      0008(A7),D0
4E75                            ;   RTS
#end



;*************************************************************************
;
; ACE MODS()
;
#match
#code
202F 0008                       ;   MOVE.L      0008(A7),D0
6A02                            ;   BPL.B       007A
4480                            ;   NEG.L       D0
222F 0004                       ;   MOVE.L      0004(A7),D1
6A02                            ;   BPL.B       0082
4481                            ;   NEG.L       D1
4EB9 RRRR RRRR                  ;   JSR         00.00000104
2001                            ;   MOVE.L      D1,D0
4A2F 0008                       ;   TST.B       0008(A7)
6A02                            ;   BPL.B       0092
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
;
#replace
202F 0008                       ;   MOVE.L      0008(A7),D0
4C6F 0801 0008                  ;   DIVSL.L     0004(A7),D1:D0
C141                            ;   EXG         D0,D1
4E75                            ;   RTS
#end



;*************************************************************************
;
; MODS()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       009C
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A02                            ;   BPL.B       00A4
4481                            ;   NEG.L       D1
4EB9 RRRR RRRR                  ;   JSR         00.00000104
2001                            ;   MOVE.L      D1,D0
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       00B4
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
;
#replace
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0801 0008                  ;   DIVSL.L     0008(A7),D1:D0
C141                            ;   EXG         D0,D1
4E75                            ;   RTS
#end


;*************************************************************************
;
; DIVU()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
4EB9 RRRR RRRR                  ;   JSR         00.00000104
4E75                            ;   RTS
;
;
#replace
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0000 0008                  ;   DIVU.L      0008(A7),D0
4E75                            ;   RTS
#end


;*************************************************************************
;
; MULU()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
4EB9 RRRR RRRR                  ;   JSR         00.000000E8
4E75                            ;   RTS
;
;
#replace
202F 0004                       ;   MOVE.L      0004(A7),D0
4C2F 0000 0008                  ;   MULU.L      0008(A7),D0
4E75                            ;   RTS
#end


;*************************************************************************
;
; MODU()
;
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
4EB9 RRRR RRRR                  ;   JSR         00.00000104
2001                            ;   MOVE.L      D1,D0
4E75                            ;   RTS
;
;
#replace
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0001 0008                  ;   DIVUL.L     0008(A7),D1:D0
C141                            ;   EXG         D0,D1
4E75                            ;   RTS
#end

