/ / / A L O G / - - - - / /SUBROUTINE ALOG(X) / / VERSION 5A 4-26-77 (MH) / SECT ALOG JA #ALOG 0 /WORKING SPACE FOR EXPONENT DIDDLE. 0 0 ALOGTM, 0 0 0 0 F2ALOG, F 2. FPI2, 1 3110 3755 / EXTERN #ARGER ALOG0, TRAP4 #ARGER JA ALGRTN /RETURN NOW. / EXTERN #ARGER ALOGM1, TRAP4 #ARGER JA ALGRTN TEXT +ALOG + ALOGXR, BPALOG, F 0.0 XRALOG, F 0.0 ALOG1, F 0.0 ALOG2, F 0.0 F1ALOG, F 1. / ALOGMG, 0 0 13 /CORRECT EXPONENT DIDDLER. / / / / ALOGL1, 0 3777 7742 / ALOGE2, 0 2613 4414 / ORG 10*3+BPALOG FNOP JA ALOGXR 0 ALGRTN, JA . ALOGL2, 7777 4000 4100 / ALOGL3, 7777 2517 0310 / ALOGL4, 7776 4113 7211 / ALOGL5, 7776 2535 3301 / ALOGL6, 7775 4746 0771 / ALOGL7, 7774 2236 4304 / ALOGL8, 7771 4544 1735 BASE 0 #ALOG, STARTD FLDA 10*3 FSTA ALGRTN FLDA 0 SETX XRALOG SETB BPALOG BASE BPALOG LDX 1,1 FSTA BPALOG FLDA% BPALOG,1 /ADDR OF X FSTA BPALOG STARTF FLDA% BPALOG /GET X JEQ ALOG0 /IF =0 THEN ERROR JLT ALOGM1 /IF<0 THEN ERROR LDX -1,0 /IF >0 THEN START DOING FSTA ALOG1 /SAVE IN A TEMP. FSUB F1ALOG /KNOCK OFF ONE. JEQ ALGRTN /IF ZERO EXIT. LOG(1)=0 JGE ALOGST /IF POSITIVE LOG>0 FLDA F1ALOG /NEGITE. INVERT IT. FDIV ALOG1 /BY DIVIDING INTO ONE. FSTA ALOG1 LDX 0,0 /RESET SIGN TO NEGATIVE. JA .+3 /AVOID USELESS LOAD INSTRUCTION. / ALOGST, FLDA ALO0