	.TITLE	PROGN		
; JEFFREY KODOSKY	ARL	NOV75
; 
; FSUBR
; ENTRY:	1 ARG		<LIST>
; EXIT:		1 ARG		<S>
; ERRORS:	NONE
; CALLS:	EVAL
;		CDR
;		CAR
	.GLOBL	PROGN,ZPROGN,$ALIST,QCDR,QCAR,QEVAL
PROGN:	ROOM	3
	MOV	@R5,-(R5)
	MOV	$ALIST,2(R5)	;INSERT CURRENT CONTEXT
	CLR	R3
PROGN1:	MOV	@R5,-(R5)	;IF LIST END RETURN LAST RESULT
	BEQ	PROGN5
	QCDR		;SAVE CDR OF LIST
	MOV	(R5)+,R0
	MOV	@R5,-(R5)
	MOV	R0,2(R5)
	QCAR		;EVALUATE CAR OF LIST
	QEVAL
	MOV	(R5)+,R3;POP RESULT
	MOV	2(R5),$ALIST
	BR	PROGN1
PROGN5:	CMP	(R5)+,(R5)+
	MOV	R3,@R5
	JMP	@-(R4)
ZPROGN=.-PROGN
	.END
