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