	.TITLE	ICO		
; JEFFREY KODOSKY	ARL	JUN76
;
; UTILITY:	INTEGER CONVERSION FOR OUTPUT
; ENTRY:	3 ARGS (SP)	<I>;<BUF.LEN.>;<BUF.ADR.>
; EXIT:		NO ARGS	(ASCII REPRESENTATION OF I IS IN BUFFER)
;		C BIT SET AND BUFFER *-FILLED IF ERROR OCCURED
; ERRORS:	NONE
; CALLS:	NONE
; R5 PRESERVED
;(THIS ROUTINE IS $ICO02 OF FPMP WITH LISP CALLING CONVENTION)
	.GLOBL	ICO,OCO
OCO:	MOV	#OCT$25-REL$25,R0	
	BR	GO$25
ICO:	MOV	#DEC$25-REL$25,R0	
GO$25:	CLR	-(SP)	;DUMMY SPACE IN LIEU OF RETURN PC
	MOV	R4,-(SP)
	MOV	8.(SP),R3	
	MOV	6.(SP),R2	
	BGE	LPS$25	
	CLR	R2
	CLR	6(SP)
LPS$25:	MOV	4.(SP),R4	
	MOV	#' ,-(SP)	
	CMP	R0,#OCT$25-REL$25	
	BEQ	POS$25	
	TST	R4
	BGE	POS$25	
	NEG	R4	
	MOV	#'-,@SP	
POS$25:	CLR	-(SP)	
	ADD	PC,R0
REL$25:
TST$25:	TST	@R0
	BEQ	MOV$25	
	CLR	R1
SUB$25:	SUB	@R0,R4	
	BLO	BAC$25
	INC	R1	
	BR	SUB$25
BAC$25:	ADD	(R0)+,R4	
	TST	R1
	BNE	NZE$25	
	TST	@SP
	BEQ	TST$25	
NZE$25:	ADD	#60,R1	
	MOV	R1,-(SP)
	BR	TST$25
MOV$25:	ADD	R2,R3	
	ADD	#60,R4	
	MOVB	R4,-(R3)
DCR$25:	DEC	R2
	BLE	FUL$25	
	MOVB	(SP)+,-(R3)	
	BNE	DCR$25	
	MOVB	(SP)+,@R3	
FIL$25:	DEC	R2
	BEQ	DNE$25	
	MOVB	#' ,-(R3)	
	BR	FIL$25
FUL$25:	TST	(SP)+
	BNE	ERR$25	
	CMP	#' ,(SP)+
	BNE	STS$25-4.	
DNE$25:	MOV	(SP)+,R4
	MOV	(SP)+,4(SP)	
	TST	(SP)+
	MOV	(SP)+,@SP	;NO RETURN PC THERE
	ROL	(SP)+
	JMP	@-(R4)
ERR$25:	TST	(SP)+
	BNE	ERR$25
	TST	(SP)+	
	MOV	8.(SP),R3
STS$25:	MOVB	#'*,(R3)+	
	DEC	6(SP)
	BGT	STS$25	
	COM	6(SP)	
	BR	DNE$25
DEC$25:	.WORD	10000.,1000.,100.,10.,0
OCT$25:	.WORD	100000,10000,1000,100,10,0
	.END
