	.TITLE	PUT		
; JEFFREY KODOSKY	ARL	NOV75
;
; SUBR
; ENTRY:	3 ARGS		<LITATM1>;<LITATM2>;<S>
; EXIT:		1 ARG		<LITATM1 WITH MODIFIED PROP LIST>
; ERRORS:	NONE
; CALLS:	SPL
;		GETC
	.GLOBL	PUT,ZPUT,QSPL,QGETC
PUT:	ROOM	3
	MOV	(R5)+,R0;IGNORE CALL IF ARG1 IS NOT LITATM
	MOV	(R5)+,R1
	BIT	#2,(R0)+
	BNE	PUT9
	BIT	#2,@R0
	BNE	PUT9
	BIT	#1,@R0
	BEQ	PUT9
	CMP	-(R5),-(R5)
	MOV	R1,-(R5)
	TST	-(R0)
	MOV	R0,-(R5);SPL[<LIT1>;<LIT2>]
	QSPL
	MOV	(R5)+,R0
	BEQ	PUT5	;JUMP IF INDICATOR NOT FOUND
	MOV	2(R0),R0;OTHERWISE MODIFY PROP LIST
	MOV	(R5)+,R1
	TST	(R5)+
	MOV	@R5,@R0	;REPLACE OLD VALUE WITH <S>
	MOV	R1,@R5
	JMP	@-(R4)
PUT5:	QGETC
	MOV	(R5)+,R3
	QGETC
	MOV	(R5)+,R2
	MOV	(R5)+,R0;<LITATM1>
	MOV	2(R0),R1
	DEC	R1	;REMOVE LITATM FLAG BIT
	INC	R2	;NEW PROP LIST POINTER WITH FLAG
	MOV	R2,2(R0)
	DEC	R2
	MOV	(R5)+,(R2)+	;<LITATM2> IS INDICATOR
	MOV	R3,@R2
	MOV	(R5)+,(R3)+	;<S> IS VALUE
	MOV	R1,@R3	;TACK ON REST OF PROP LIST
	MOV	R0,-(R5);RETURN <LITATM1>
	JMP	@-(R4)
PUT9:	CLR	@R5	;IGNORE CALL AND RETURN NIL
	JMP	@-(R4)
ZPUT=.-PUT
	.END
