;*************************************************************************
;** PCQ 1.2b                                                            **
;** Contributor: L.Lucius                               Sept 23rd 1995  **
;** Modified for HOp:   Thomas Richter  (thor)          Nov  1st  1997  **
;** Function:    Modify 68000 math routines to use 68020+ instructions. **
;*************************************************************************



;*************************************************************************
;
; DIVS
#match
#code
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       0008
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A08                            ;   BPL.B       0016
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
6100 008E                       ;   BSR.W       00A6
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0022
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; MULS()
;
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       002C
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A08                            ;   BPL.B       003A
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
614E                            ;   BSR.B       008A
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0044
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; MODS()
;
202F 0004                       ;   MOVE.L      0004(A7),D0
6A02                            ;   BPL.B       004E
4480                            ;   NEG.L       D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6A02                            ;   BPL.B       0056
4481                            ;   NEG.L       D1
614E                            ;   BSR.B       00A6
2001                            ;   MOVE.L      D1,D0
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0062
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; DIVU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6138                            ;   BSR.B       00A6
4E75                            ;   RTS
;
; MULU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6110                            ;   BSR.B       008A
4E75                            ;   RTS
;
; MODU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
222F 0008                       ;   MOVE.L      0008(A7),D1
6120                            ;   BSR.B       00A6
2001                            ;   MOVE.L      D1,D0
4E75                            ;   RTS
;
;
#replace
;
; DIVS()
;
222F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0800 0008                  ;   DIVS.L      0008(A7),D0
4E75                            ;   RTS
6A08                            ;   BPL.B       0016
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
6100 008E                       ;   BSR.W       00A6
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0022
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; MULS
;
202F 0004                       ;   MOVE.L      0004(A7),D0
4C2F 0800 0008                  ;   MULS.L      0008(A7),D0
4E75                            ;   RTS
6A08                            ;   BPL.B       003A
4481                            ;   NEG.L       D1
0A2F 0080 0004                  ;   EORI.B      #80,0004(A7)
614E                            ;   BSR.B       008A
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0044
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; MODS
;
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0801 0008                  ;   DIVSL.L     0008(A7),D1:D0
C141                            ;   EXG         D0,D1
4E75                            ;   RTS
4481                            ;   NEG.L       D1
614E                            ;   BSR.B       00A6
2001                            ;   MOVE.L      D1,D0
4A2F 0004                       ;   TST.B       0004(A7)
6A02                            ;   BPL.B       0062
4480                            ;   NEG.L       D0
4E75                            ;   RTS
;
; DIVU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0000 0008                  ;   DIVU.L      0008(A7),D0
4E75                            ;   RTS
;
; MULU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
4C2F 0000 0008                  ;   MULU.L      0008(A7),D0
4E75                            ;   RTS
;
; MODU
;
202F 0004                       ;   MOVE.L      0004(A7),D0
4C6F 0001 0008                  ;   DIVUL.L     0008(A7),D1:D0
C141                            ;   EXG         D0,D1
4E75                            ;   RTS
4C01 0000                       ;   MULU.L      D1,D0
4E75                            ;   RTS
#end

