File: SIN.LS of Disk: V50/Source/Source-Listing-RALF-1
(Source file text)
RALF V50A 8-APR-92 PAGE 1 /R=SIN(R) SINGLE PREC. TRIG. SINE / / / VERSION 50A 22-MAY-80 WVDM / / SECT SIN 00000 1030 JA #SIN 00001 0070 EXTERN #ARGER 00002 4000 SINER, TRAP4 #ARGER 00003 0000 00004 2311 TEXT +SIN + 00005 1640 00006 4040 00007 1100 SINXR, SETX XRSIN 00010 0016 00011 1110 SETB BPSIN 00012 0013 00013 0000 BPSIN, F 0.0 00014 0000 00015 0000 00016 0000 XRSIN, F 0.0 00017 0000 00020 0000 00021 0000 SIN1, F 0.0 00022 0000 00023 0000 00024 0000 SIN2, F 0.0 00025 0000 00026 0000 00027 0001 F1SIN, F 1. 00030 2000 00031 0000 00032 0001 FPI2SN, 1 /PI DIVIDED BY 2 00033 3110 3110 00034 3755 3755 00035 0002 FPISIN, 2 /PI 00036 3110 3110 00037 3755 3755 00040 0003 F2PISN, 3 /TWO PI 00041 3110 3110 00042 3755 3755 ORG 10*3+BPSIN 00043 0040 FNOP 00044 1030 JA SINXR 00045 0007 00046 0000 0 00047 1030 SINRTN, JA . 00050 0047 / 00051 7764 SINC9, 7764 00052 2501 2501 00053 7015 7015 / 00054 7771 SINC7, 7771 RALF V50A 8-APR-92 PAGE 1-1 00055 5464 5464 00056 5515 5515 / 00057 7775 SINC5, 7775 00060 2431 2431 00061 5362 5362 / 00062 0000 SINC3, 0000 00063 5325 5325 00064 0414 0414 / 00065 7770 SINTST, 7770 00066 2000 2000 00067 0000 0000 BASE 0 00070 0006 #SIN, STARTD 00071 0210 FLDA 10*3 00072 6400 FSTA SINRTN 00073 0047 00074 0200 FLDA 0 00075 1100 SETX XRSIN 00076 0016 00077 1110 SETB BPSIN 00100 0013 BASE BPSIN 00101 0101 LDX 1,1 00102 0001 00103 6200 FSTA BPSIN 00104 0610 FLDA% BPSIN,1 /ADDR OF X 00105 6200 FSTA BPSIN 00106 0005 STARTF 00107 0600 FLDA% BPSIN /GET X 00110 0100 LDX -1,0 /SET SIGN TO POSITIVE. 00111 7777 00112 1060 JGT SINMOD /IF POSITIVE BYPASS FUDGE. 00113 0121 00114 1000 JEQ SINRTN /IF ZERO EXIT. 00115 0047 00116 0003 FNEG /NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X) 00117 0100 LDX 0,0 /SET SIGN TO MINUS. 00120 0000 00121 1070 SINMOD, JAL SINER /IF SIGN CAN'T INT, THEN ERROR. 00122 0002 00123 3207 FDIV F2PISN /REDUCE TO BELOW TWO PI. 00124 6202 FSTA SIN1 /SAVE IN A TEMP. 00125 0010 ALN 0 00126 0004 FNORM /INTERGIZE IT. 00127 0003 FNEG 00130 1202 FADD SIN1 /RECALL NUMBER. AC NOW <0 00131 4207 FMUL F2PISN /NOW MULTIPLY BACK. 00132 6203 FSTA SIN2 /AND SAVE AWAY. 00133 2206 FSUB FPISIN /SUBTRACT OFF PI. 00134 1050 JLT SINP /LESS THEN PI. 00135 0143 00136 6203 FSTA SIN2 /RESTORE AS 2. 00137 0030 XTA 0 /INVERT THE SIGN. RALF V50A 8-APR-92 PAGE 1-2 00140 0003 FNEG 00141 2204 FSUB F1SIN /SIN(X-PI)=-SIN(X) 00142 0020 ATX 0 /AND PUT BACK. / 00143 0203 SINP, FLDA SIN2 /RECALL MAGIC GOODY. 00144 2205 FSUB FPI2SN /TEST TO SEE IF X<PI/2 00145 1050 JLT SINPP /YEP. 00146 0152 / 00147 0206 FLDA FPISIN /SIN(X)=SIN(PI-X) 00150 2203 FSUB SIN2 00151 6203 FSTA SIN2 /AND STORE IT BACK. / 00152 0203 SINPP, FLDA SIN2 /GET THE MAGIC NUMBER. 00153 2216 FSUB SINTST /SEE IF ITS CLOSE TO AN EDGE 00154 1060 JGT SINPPP /IT IS NOT 00155 0164 00156 0203 FLDA SIN2 /RECALL NUMBER IF TOO SMALL 00157 2000 JXN SINRTN,0 /EXIT IF SAME SIGN. 00160 0047 00161 0003 FNEG /ELSE NEGATE IT. 00162 1030 JA SINRTN 00163 0047 00164 0203 SINPPP, FLDA SIN2 /RECALL NUMBER TO BE WORKED ON. 00165 3205 FDIV FPI2SN /DIVIDE BY PI OVER TWO. 00166 6203 FSTA SIN2 /AND STORE BACK. 00167 4203 FMUL SIN2 /MULTIPLY OUT. 00170 6202 FSTA SIN1 00171 4212 FMUL SINC9 /NOW DO THE STANDARD ITERATION. 00172 1213 FADD SINC7 00173 4202 FMUL SIN1 00174 1214 FADD SINC5 00175 4202 FMUL SIN1 00176 1215 FADD SINC3 00177 4202 FMUL SIN1 00200 1205 FADD FPI2SN /ADD IN PI OVER 2 00201 4203 FMUL SIN2 /DO THE FINAL MULTIPLY. 00202 2000 JXN SINRTN,0 /SHALL WE NEGATE 00203 0047 00204 0003 FNEG /YEP 00205 1030 JA SINRTN /AND RETURN. 00206 0047 RALF V50A 8-APR-92 PAGE 2 RALF V50A 8-APR-92 PAGE 2-1 NO ERRORS 23 SYMBOLS, NO ABS REFS # C 00000 #ARGER X 00000 #MAIN S 00000 #SIN 00070 BPSIN 00013 FPISIN 00035 FPI2SN 00032 F1SIN 00027 F2PISN 00040 SIN S 00207 SINC3 00062 SINC5 00057 SINC7 00054 SINC9 00051 SINER 00002 SINMOD 00121 SINP 00143 SINPP 00152 SINPPP 00164 SINRTN 00047 SINTST 00065 SINXR 00007 SIN1 00021 SIN2 00024 XRSIN 00016