File: AMOD.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text) 

/R=AMOD(R1,R2) SINGLE PREC. R1 MODULO R2
/
/
/ VERSION 40A 23-MAY-80 WVDM
/
/
/R:=REMAINDER OF R1/ABS(R2)

	SECT	AMOD
	ENTRY	MOD
	JA	#AMOD
	TEXT	+AMOD  +
AMODXR,	SETX	XRAMOD
	SETB	BPAMOD
BPAMOD,	F 0.0
XRAMOD,	F 0.0
AMODX,	F 0.0
AMODLM,	F 8388607.0		/LARGEST ALLOWED NUMBER
	ORG	10*3+BPAMOD
	FNOP
	JA	AMODXR
	0
AMDRTN,	JA	.
	EXTERN	#ARGER
AMODER,	TRAP4	#ARGER
	FCLA
	JA	AMDRTN
	BASE	0
MOD,
#AMOD,	STARTD
	FLDA	10*3
	FSTA	AMDRTN
	FLDA	0
	SETX	XRAMOD
	SETB	BPAMOD
	BASE	BPAMOD
	LDX	1,1	
	FSTA	BPAMOD
	FLDA%	BPAMOD,1   	/ADDR OF X
	FSTA	AMODX
	FLDA%	BPAMOD,1+  	/ADDR OF Y
	FSTA	BPAMOD
	STARTF
	FLDA%	BPAMOD		/GET Y
	JEQ	AMODER		/Y=0 IS ERROR
	JGT	.+3
	FNEG			/ABS VALUE
	FSTA	BPAMOD
	FLDA%	AMODX		/GET X
	JGT	.+5
	FNEG			/ABS VALUE
	LDX	0,1		/NOTE SIGN
	FSTA	AMODX		/SAVE IN A TEMPORARY
	JAL	AMODER		/TOO LARGE FOR REMULTIPLY ?
	FDIV	BPAMOD		/QUOTIENT
	JAL	AMODER		/TOO BIG FOR FIX ?
	ALN	0		/FIX IT UP NOW.
	FNORM
	FMUL	BPAMOD		/MULTIPLY IT.
	FNEG			/NEGATE IT.
	FADD	AMODX		/AND ADD IN X.
	JXN	AM,1		/CHECK SIGN
	FNEG
AM,	JA	AMDRTN