File: DMOD.RA of Tape: Sources/Fortran/s2
(Source file text) 

/
/
/
/	D  M  O  D
/	-  -  -  -
/
/SUBROUTINE	DMOD(X,Y)
	SECT	DMOD
	JA	#DMOD
	DPCHK
	TEXT	+DMOD  +
AMODXR,	SETX	XRAMOD
	SETB	BPAMOD
STHREE,	0007			/73
	2217
	7777
	7777
	7777
	7777
BPAMOD,	F 0.0
	F 0.0
XRAMOD,	0;1;73		/73 FOR ALIGNING ON 59
XSTOR,	F 0.0
	F 0.0
AMODX,	F 0.0
	F 0.0
	ORG	10*3+BPAMOD
	FNOP
	JA	AMODXR
	0
AMDRTN,	JA	.
	EXTERN	#ARGER
AMODER,	TRAP4	#ARGER
	FCLA
	JA	AMDRTN
	BASE	0
#DMOD,	STARTD
	FLDA	10*3
	FSTA	AMDRTN
	FLDA	0
	SETX	XRAMOD
	SETB	BPAMOD
	BASE	BPAMOD
	FSTA	BPAMOD
	LDX 	1,1
	FLDA%	BPAMOD,1   /ADDR OF X
	FSTA	AMODX
	FLDA%	BPAMOD,1+  /ADDR OF Y
	FSTA	BPAMOD
	STARTE
	FLDA%	BPAMOD		/GET Y
	JEQ	AMODER		/Y=0 IS ERROR
	FLDA%	BPAMOD
	JGT	.+3		/GET ABS VALUE
	FNEG
	FSTA	BPAMOD
	FLDA%	AMODX		/GET X
	JGT	.+5
	FNEG		/GET ABS VALUE OF X
	LDX	0,1		/NOTE THE SIGN
	FSTA	AMODX	/SAV IN A TEMPORARY
	FDIV	BPAMOD	/DIVIDE BY Y
	FSTA	XSTOR		/SAVE X/Y
	XTA	3		/GET EXPONENT
	FSUB	STHREE		/CHECK SIZE
	JGE	AMODER		/TOO BIG
	FLDA	XSTOR		/ABS VALUE X/Y
	ALN	2		/FIX IT UP NOW.
	FNORM
	FMUL	BPAMOD		/MULITPLY IT.
	FNEG			/NEGATE IT.
	FADD	AMODX		/AND ADD IN X.
	JXN	AMR,1
	FNEG		/RESTORE SIGN
AMR,	JA	AMDRTN