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