	.TITLE	SEARCH		
; JEFFREY KODOSKY	ARL	JUL76
;
; SUBR
; ENTRY:	4 ARGS	<LIST>:<FCT1>;<FCT2>;<FCT3>
; EXIT:		1 ARG
; ERRORS:	NONE
; CALLS:	GETC
;		APPLY
;		CDR
	.GLOBL	SEARCH,ZSEARCH,QGETC,QAPPLY,QCDR
SEARCH:	ROOM	3
	QGETC
	MOV	(R5)+,R3
	MOV	(R5)+,@R3
	BEQ	SRCH4	;NULL[<LIST>]--->APPLY[<FCT3>;(NIL)]
SRCH2:	MOV	R3,-(R5)
	MOV	R3,-(R5)
	MOV	4(R5),-(R5)
	QAPPLY
	TST	(R5)+
	BNE	SRCH6	;APPLY[<FCT1>;(<LIST>)]--->
	MOV	@R5,R3	;     APPLY[<FCT2>;(<LIST>)]
	MOV	@R3,@R5	;T--->SEARCH[CDR[<LIST>];<FCT1>;<FCT2>;<FCT3>]
	QCDR
	MOV	(R5)+,@R3
	BNE	SRCH2
SRCH4:	CMP	(R5)+,(R5)+
	MOV	@R5,-(R5)
	MOV	R3,2(R5)
	BR	SRCH8
SRCH6:	MOV	(R5)+,4(R5)
	TST	(R5)+
SRCH8:	QAPPLY
	.WORD	0
ZSEARCH=.-SEARCH
	.END
