.define .dvi
.sect .text
.sect .rom
.sect .data
.sect .bss

 ! signed long divide
	.sect .text
.dvi:
	move.l	4(sp),d2
	move.l	8(sp),d1
	move.l	d4,-(sp)
	clr.l	d4
	tst.l	d2	! divisor
	bpl	1f
	neg.l	d2
	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	d2,-(sp)
	jsr	.dvu
	tst	d4
	beq	5f
	neg.l	d1	! quotient
5:
	tst.l	d4
	bpl	6f
	neg.l	d0	! remainder
6:
	move.l	(sp)+,d4
	move.l	(sp)+,a0
	add.l	#8,sp
	move.l	a0,-(sp)
	rts

.align 2