| 1 | / |
| 2 | / |
| 3 | / |
| 4 | / A M O D |
| 5 | / - - - - |
| 6 | / |
| 7 | /SUBROUTINE AMOD(X,Y) |
| 8 | / |
| 9 | / VERSION 5A 4-27-77 PT |
| 10 | / |
| 11 | SECT AMOD |
| 12 | ENTRY MOD |
| 13 | JA #AMOD |
| 14 | TEXT +AMOD + |
| 15 | AMODXR, SETX XRAMOD |
| 16 | SETB BPAMOD |
| 17 | BPAMOD, F 0.0 |
| 18 | XRAMOD, F 0.0 |
| 19 | AMODX, F 0.0 |
| 20 | ORG 10*3+BPAMOD |
| 21 | FNOP |
| 22 | JA AMODXR |
| 23 | 0 |
| 24 | AMDRTN, JA . |
| 25 | EXTERN #ARGER |
| 26 | AMODER, TRAP4 #ARGER |
| 27 | FCLA |
| 28 | JA AMDRTN |
| 29 | BASE 0 |
| 30 | MOD, |
| 31 | #AMOD, STARTD |
| 32 | FLDA 10*3 |
| 33 | FSTA AMDRTN |
| 34 | FLDA 0 |
| 35 | SETX XRAMOD |
| 36 | SETB BPAMOD |
| 37 | BASE BPAMOD |
| 38 | LDX 1,1 |
| 39 | FSTA BPAMOD |
| 40 | FLDA% BPAMOD,1 /ADDR OF X |
| 41 | FSTA AMODX |
| 42 | FLDA% BPAMOD,1+ /ADDR OF Y |
| 43 | FSTA BPAMOD |
| 44 | STARTF |
| 45 | FLDA% BPAMOD /GET Y |
| 46 | JEQ AMODER /Y=0 IS ERROR |
| 47 | JGT .+3 |
| 48 | FNEG /ABS VALUE |
| 49 | FSTA BPAMOD |
| 50 | FLDA% AMODX /GET X |
| 51 | JGT .+5 |
| 52 | FNEG /ABS VALUE |
| 53 | LDX 0,1 /NOTE SIGN |
| 54 | FSTA AMODX /SAV IN A TEMPORARY |
| 55 | FDIV BPAMOD /DIVIDE BY Y |
| 56 | JAL AMODER /TOO BIG. |
| 57 | ALN 0 /FIX IT UP NOW. |
| 58 | FNORM |
| 59 | FMUL BPAMOD /MULITPLY IT. |
| 60 | FNEG /NEGATE IT. |
| 61 | FADD AMODX /AND ADD IN X. |
| 62 | JXN AM,1 /CHECK SIGN |
| 63 | FNEG |
| 64 | AM, JA AMDRTN |
| 65 | \f |