	.TITLE	EQUAL		
; JEFFREY KODOSKY	ARL	NOV75
;
; SUBR
; ENTRY:	2 ARGS		<S1>;<S2>
; EXIT:		1 ARG		<BOOL>
; ERRORS:	NONE
; CALLS:	EQN
	.GLOBL	EQUAL,ZEQUAL,QEQN
EQUAL:	MOV	(R5)+,R0
	MOV	(R5)+,R1
	ROOM	6
	BIT	#2,(R0)+;ATOM[<S1>] OR NUMBER[<S1>]--->
	BNE	EQUAL1
	BIT	#3,@R0
	BEQ	EQUAL2
EQUAL1:	CMP	-(R5),-(R5)	;  EQN[<S1>;<S2>]
	QEQN
	.WORD	0
EQUAL2:	BIT	#2,(R1)+;ATOM[<S2>]--->F
	BNE	EQUAL3
	BIT	#3,@R1
	BEQ	EQUAL4
EQUAL3:	CLR	-(R5)
	JMP	@-(R4)
EQUAL4:	MOV	@R1,-(R5)	;SAVE CDRS
	MOV	@R0,-(R5)
	MOV	-(R1),-(R5)	;RECURSE WITH CARS
	MOV	-(R0),-(R5)
	MOV	#EQUAL5,(R4)+	;FAKE A TRAP
	BR	EQUAL
EQUAL5:	TST	(R5)+	;EQUAL[CAR[<S1>];CAR[<S2>]]--->
	BNE	EQUAL	;EQUAL[CDR[<S1>];CDR[<S2>]]
	CMP	(R5)+,(R5)+	;T--->F
	CLR	-(R5)
	JMP	@-(R4)
ZEQUAL=.-EQUAL
	.END
