	.TITLE	DVI		
; JEFFREY KODOSKY	ARL	MAY76
;
; UTILITY:	INTEGER DIVIDE
; ENTRY:	2 ARGS (SP)	<I1>;<I2>
; EXIT:		1 ARG (SP)	<I>=I2/I1
;		R1=REMAINDER (SAME SIGN AS I1)
;		C BIT SET AND NEGMAX RETURNED @SP IF
;			QUOTIENT =-NEGMAX
; ERRORS:	NONE
; CALLS:	NONE
; R5 PRESERVED
; ASSEMBLY SWITCHES:	EAE,EIS
;(THIS ROUTINE IS A MODIFIED VERSION OF $DVI03 OF FPMP)
; RESTRICTION:	DO NOT CALL THIS ROUTINE WITH I1=0.
	.GLOBL	DVI
	MQ=177304
	.IFNDF	EAE&EIS
DVI:	CLR	R0	
	MOV	(SP)+,R1	
	BGT	P1$17	
	DEC	R0
	NEG	R1
P1$17:	MOV	@SP,R3	
	BGT	P2$17	
	BEQ	ZER$17	
	INCB	R0	
	NEG	R3
P2$17:	MOV	R4,-(SP)
	MOV	#8.,R4	
	CLR	R2	
	SWAB	R3	
	BEQ	DIV$17	
	ASL	R4	
	SWAB	R3	
DIV$17:	ASL	R3	
	ROL	R2
	BEQ	LUP$17	
	INC	R3	
	SUB	R1,R2	
	BHIS	LUP$17	
	ADD	R1,R2	
	DEC	R3	
LUP$17:	DEC	R4
	BGT	DIV$17	
	MOV	(SP)+,R4
	NEG	R3	
	ASR	R0	
	BCS	P3$17	
	NEG	R3	
	BVS	OVFL
P3$17:	MOV	R3,@SP	
	MOV	R2,R1
	TST	R0
	BPL	.+4
	NEG	R1
	CLC
	JMP	@-(R4)
ZER$17:	CLR	@SP	
	CLR	R1
	JMP	@-(R4)
OVFL:	MOV	R3,@SP
	CLR	R1
	SEC
	JMP	@-(R4)
	.ENDC
	.IFDF	EAE
DVI:	MOV	#MQ,R0	
	MOV	(SP)+,R1	
	MOV	(SP)+,@R0	
	TST	-(R0)	
	MOV	R1,-(R0)	
	TST	(R0)+
	MOV	(R0)+,R1
	MOV	@R0,-(SP)	
	JMP	@-(R4)
	.ENDC
	.IFDF	EIS
DVI:	MOV	2(SP),R1	
	.WORD	006700	
	.WORD	071026	
	MOV	R0,@SP	
	JMP	@-(R4)
	.ENDC
	.END
