	.TITLE	GETC		
; JEFFREY KODOSKY	ARL	NOV75
;
; UTILITY:	FREE CELL FETCHER
; ENTRY:	NO ARGS
; EXIT:		1 ARG		AN EMPTY CELL
; ERRORS:	GC2, FREE SPACE EXHAUSTED
; CALLS:	RECLAIM, GARBAGE COLLECT
; R1,R2,R3 PRESERVED
	.GLOBL	GETC,FLIST,QRECLAIM,QGC2ERR
GETC:	MOV	FLIST,R0;GET FREE CELL LIST
	BNE	GETC01	;JUMP IF ITS NOT EMPTY
	QRECLAIM	;EMPTY: COLLECT GARBAGE
	TST	(R5)+	;POP NIL
	MOV	FLIST,R0;NOW GET FREE CELL LIST
	BEQ	GETC02	;JUMP IF ITS STILL EMPTY
GETC01:	MOV	R0,-(R5);PUSH POINTER TO A FREE CELL
	TST	(R0)+	;POINT TO CDR
	MOV	@R0,FLIST	;SAVE CDR OF FREE CELL LIST
	CLR	@R0	;RETURN A CLEAN CELL
	JMP	@-(R4)
GETC02:	QGC2ERR		;TRAP TO GC2 ERROR HANDLER
	.END
