.define .dvi ! signed long divide .text .dvi: movem.l d0/d4,.savdvi move.l (sp)+,.retdvi move.l (sp)+,d0 move.l (sp)+,d1 clr.l d4 tst.l d0 ! divisor bpl 1f neg.l d0 not d4 1: tst.l d1 ! dividend bpl 2f neg.l d1 not d4 swap d4 not d4 swap d4 2: move.l d1,-(sp) move.l d0,-(sp) jsr .dvu tst d4 beq 5f neg.l d1 ! quotient 5: tst.l d4 bpl 6f neg.l d2 ! remainder 6: movem.l .savdvi,d0/d4 move.l .retdvi,-(sp) rts .data .savdvi: .space 12 .retdvi: .long 0 .text .align 2