	.TITLE	RANDOM		
; JEFFREY KODOSKY	ARL	AUG76
;
; SUBR
; ENTRY:	1 ARG		<BOOL>
; EXIT:		1 ARG		<N>
; ERRORS:	NONE
; CALLS:	IDR
;		R2ATM
; NOTE:  CALL RANDOM WITH NULL ARG TO INIT SEQUENCE, THEREAFTER
; WITH NON-NULL ARG TO CONTINUE SEQUENCE.
; (THIS ROUTINE IS TAKEN FROM $RAN V02 OF FORTRAN OTS V22)
	.GLOBL	RANDOM,ZRANDOM,QIDR,QR2ATM
RANDOM:	TST	(R5)+
	BNE	RAN2
	MOV	#3,R1	;INIT SEEDS TO 2**16 + 3
	MOV	#1,R0
	BR	RAN5
RAN2:	MOV	LO,R1	;MULT BY 2**16 + 3
	MOV	HI,R0
	ASL	R1
	ROL	R0
	ADD	LO,R1
	ADC	R0
	ADD	HI,R0
	ADD	LO,R0
	BPL	RAN5
	ADD	#100000,R0
RAN5:	MOV	R0,HI	;STORE NEXT GENERATOR
	MOV	R1,LO
	MOV	R1,-(SP)
	MOV	R0,-(SP)
	QIDR
	TST	@SP
	BEQ	RAN9
	SUB	#40*200,@SP	;ADJUST EXPONENT TO GIVE
RAN9:	QR2ATM		;RESULT BETWEEN 0. AND 1.
	.WORD	0
LO:	.WORD	3
HI:	.WORD	1
ZRANDOM=.-RANDOM
	.END
