DF'SIF ARCTG'
ED'SIF ARCTG'
IN0
         IDP         "SIF ARCTG"
         PAGE
<
<        A R C T G ( X ).
<
<        ARGUMENT:
<                    A-B = X ARGUMENT (FLOTTANT).
<
<        RESULTAT:
<                    A-B = ARCTG(X) (FLOTTANT), EXPRIME EN RADIANS.
<
<        ATTENTION:
<                    PREVOIR QUELQUES MOTS DANS LA PILE DE L'APPELANT.
<
<        NOTA:
<                    LA METHODE DE CALCUL UTILISEE EST TIREE DE L'OUVRAGE
<                    "CALCUL DES FONCTIONS DE BASE SUR L'IBM-360" - DEPARTEMENT
<                    DE CALCUL ELECTRONIQUE DE L'X, PAR J-M GUILLEMIN
<                    ET D. GRILLOT - AOUT 67.
<
         LOCAL
LNF::    VAL         2               < LONGUEUR MOTS D'UN NOMBRE FLOTTANT.
ATGLOC:  EQU         $
ATGT1:   DZS         LNF             < ZONE DE TRAVAIL 1.
ATGT2:   DZS         LNF             < ZONE DE TRAVAIL 2.
ATGT3:   DZS         LNF             < ZONE DE TRAVAIL 3.
ATGSDX:  DZS         1               < INDICATEUR "SIGNE DE X ARGUMENT":
                                     < = 0 : POSITIF OU NUL;
                                     < < 0 : NEGATIF.
ATGPSC:  FLOAT       0.0548862
                                     < ^^ TG(PI/12).
ATGPS2:  FLOAT       1.5707963
                                     < ^^ PI/2.
ATGPS3:  FLOAT       1.0471975
                                     < ^^ PI/3.
ATGPS6:  FLOAT       0.5235988
                                     < ^^ PI/6.
ATGUN:   FLOAT       1.0
ATGR3:   FLOAT       1.7320508
                                     < ^^ RACINE DE 3.
< COEFFICIENTS P1, P2, P3, P4 DU POLYNOME:
ATGP1:   FLOAT       0.6031058
ATGP2:   FLOAT       0.0516045
ATGP3:   FLOAT       0.5591371
ATGP4:   FLOAT       1.4087812
         PROG
ARCTG:   EQU         $               < E N T R Y   ' A R C T G ( X ) '.
< SAUVEGARDES ET INITIALISATIONS.
         PSR         X,L
         LX          'FF80,C         < A CAUSE DU BLOC FLOTTANT.
         PSR         X
         LRM         L
         WORD        ATGLOC+'80
         STZ         ATGSDX          < X ARGUMENT POSITIF OU NUL A PRIORI.
         FCAZ
         JGE         ARCTG1
         DC          ATGSDX          < X ARGUMENT NEGATIF.
ARCTG1:  EQU         $
         FABS                        < U = ABS(X).
         FCAM        ATGUN
         JGE         ARCTG2
< U < 1 : J RECOIT 0.
         LXI         0
         JMP         ARCTG3
ARCTG2:  EQU         $
< U >= 1 : J RECOIT 2 ET U RECOIT 1/U.
         LXI         2               < J = 2.
         FST         ATGT1
         FLD         ATGUN
         FDV         ATGT1           < U = 1/U.
ARCTG3:  EQU         $
         FCAM        ATGPSC          < COMPARER U A TG(PI/12).
         JG          ARCTG4
< U <= TG(PI/12) : J RECOIT J+2.
         ADRI        2,X             < J = J + 2.
         JMP         ARCTG5
ARCTG4:  EQU         $
< U > TG(PI/12) : J RECOIT J+1 ET
< U RECOIT  (U * RACINE(3) - 1) / (RACINE(3) + U).
         ADRI        1,X             < J = J + 1.
         FST         ATGT1
         FMP         ATGR3
         FSB         ATGUN
         PSR         A,B
         FLD         ATGR3
         FAD         ATGT1
         FST         ATGT1
         PLR         A,B
         FDV         ATGT1           < U=(U*RACINE(3)-1)/(RACINE(3)+U).
ARCTG5:  EQU         $
<
< FORMER Y = U * P(U ** 2) LES COEFFICIENTS DU POLYNOME ETANT ATGP1, ATGP2
< ATGP3 ET ATGP4. ON CALCULE :
< Y = U * (P1 - P2 * U ** 2 + (P3 / (P4 + U ** 2)).
<
         FST         ATGT1           < TRAV1 = U.
         FMP         ATGT1
         FST         ATGT3           < TRAV3 = U ** 2.
         FAD         ATGP4
         FST         ATGT2
         FLD         ATGP3
         FDV         ATGT2
         FAD         ATGP1
         PSR         A,B
         FLD         ATGP2
         FMP         ATGT3
         FST         ATGT3
         PLR         A,B
         FSB         ATGT3           < Y = P(U ** 2).
         FMP         ATGT1           < Y = U * P( U ** 2).
         FST         ATGT1           < TRAV1 = U * P (U ** 2).
< BRANCHEMENT SELON VALEUR DE J (REGISTRE 'X').
         ADRI        -2,X
         CPZR        X
         JE          ARCTG6
         JL          ARCTG7
         ADRI        -1,X
         CPZR        X
         JE          ARCTG8
< FAIRE Y = PI / 2 - Y.
         FLD         ATGPS2
         JMP         ARCTG9
ARCTG8:  EQU         $
< FAIRE Y = PI / 3 - Y.
         FLD         ATGPS3
ARCTG9:  EQU         $
         FSB         ATGT1           < - Y.
         JMP         ARCTG6
ARCTG7:  EQU         $
< FAIRE Y = PI / 6 + Y.
         FAD         ATGPS6
ARCTG6:  EQU         $
< AFFECTER A Y LE SIGNE DU X ARGUMENT.
         CPZ         ATGSDX          < SIGNE DU X ARGUMENT.
         JL          ARCTGA
< X ARGUMENT POSITIF OU NUL, IL FAUT QUE Y LE SOIT.
         FCAZ
         JGE         ARCTGB
         FNEG
         JMP         ARCTGB
ARCTGA:  EQU         $
< X ARGUMENT NEGATIF, IL FAUT QUE Y LE SOIT.
         FCAZ
         JL          ARCTGB
         FNEG
ARCTGB:  EQU         $
< RESTAURATIONS ET FIN...
         PLR         X
         STX         'FF80,C         < C'ETAIT A CAUSE DU BLOC FLOTTANT.
         PLR         X,L
         RSR
:F
:F
< <<'SIF ARCTG'
DF'SIF COS'
ED'SIF COS'
IN0
         IDP         "SIF COS"
<
<        SOUS-PROGRAMME DE CALCUL DU COSINUS
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<
         DEF         COS
         LOCAL
ZZZ080:  EQU         $
ZZZ081:  DZS         2               < NB EN FLOTTANT
ZZZ082:  DZS         2
ZZZ083:  DZS         1               < SIGNE
ZZZ084:  WORD        '6403;'87ED     < 2*PI
ZZZ085:  WORD        '6402;'87ED     < PI
ZZZ086:  WORD        '6401;'87ED     < PI/2
ZZZ087:  EQU         ZZZ086          < CSTES DU POLYNOME
ZZZ088:  WORD        'AD00;'5110
ZZZ089:  WORD        '51FD;'9A2C
ZZZ090:  WORD        'B3F9;'6CCE
ZZZ091:  WORD        '4FF4;'6BDD
         WORD        ZZZ080+'80
         PROG
COS:     EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W
         FSB         ZZZ086
         FNEG
         FST         ZZZ081
         STZ         ZZZ083
         JAGE        ZZZ092
         FNEG
         FST         ZZZ081
         IC          ZZZ083
ZZZ092:  EQU         $
         FDV         ZZZ084
         FIX
         FLT
         FMP         ZZZ084
         FSB         ZZZ081
         FNEG
         FCAM        ZZZ085
         JL          ZZZ093
         FSB         ZZZ085
         IC          ZZZ083
ZZZ093:  EQU         $
         FCAM        ZZZ086
         JL          ZZZ094
         FSB         ZZZ085
         FNEG
ZZZ094:  EQU         $
         FDV         ZZZ086
         FST         ZZZ081
         FMP         ZZZ081
         FST         ZZZ082
         FMP         ZZZ091
         FAD         ZZZ090
         FMP         ZZZ082
         FAD         ZZZ089
         FMP         ZZZ082
         FAD         ZZZ088
         FMP         ZZZ082
         FAD         ZZZ087
         FMP         ZZZ081
         DC          ZZZ083
         JNE         ZZZ095
         FNEG
ZZZ095:  EQU         $
         FST         2,W
         PLR         A,B,L,W
         RSR
:F
:F
< <<'SIF COS'
DF'SIF COSINUS'
ED'SIF COSINUS'
IN0
         IDP         "SIF COSINUS"
         PAGE
<
<
<        C A L C U L   D ' U N   S I N U S   E T   D ' U N   C O S I N U S  :
<
<
<        ARGUMENT :
<                    A=ADRESSE D'UNE TABLE DE 4 MOTS CONTENANT
<                      L'ANGLE TETA, PUIS A LA SUITE LE RESUL-
<                      TAT SIN(TETA).
<
<
         DSEC
ARGSIN:  EQU         $
XXTETA:  DZS         2               < ANGLE TETA ARGUMENT,
XXSINU:  DZS         2               < RESULTAT SIN(TETA).
         LOCAL
SINLOC:  EQU         $
XX2322:  FLOAT       506
XX2120:  FLOAT       420
XX1918:  FLOAT       342
XX1716:  FLOAT       272
XX1514:  FLOAT       210
XX1312:  FLOAT       156
XX1110:  FLOAT       110
XX0908:  FLOAT       72
XX0706:  FLOAT       42
XX0504:  FLOAT       20
XX0302:  FLOAT       6
XXPI:    FLOAT       3.1415926
XX2PI:   FLOAT       6.2831853
XXPI2:   FLOAT       1.5707963
XX3PI2:  FLOAT       4.7123889
XXTETB:  DZS         2               < TETA ARGUMENT TRANSLATE...
XXTETC:  DZS         2               < TETA ARGUMENT TRANSLATE AU CARRE.
XX0001:  FLOAT       1
XXASIN:  WORD        SIN             < PROGRAMME DE CALCUL DU SINUS.
         PROG
         USE         W,ARGSIN
<
<
<        C A L C U L   D U   S I N U S  :
<
<
SIN:     EQU         $
         PSR         A,B,L,W
         LRM         L
         WORD        SINLOC+'80      < BASE L,
         LR          A,W             < BASE W SUR L'ARGUMENT.
<
< TRANSLATION DE TETA :
<
         FLD         XXTETA
         FDV         XX2PI           < TETA/(2*PI).
         FIX
         FLT
         FSB         XXTETA
         FNEG                        < TETA MODULO 2*PI.
         FCAM        XXPI2
         JLE         SIN1            < 0<=TETB<=(PI/2).
         FSB         XXPI            < TETB <-- TETB-PI.
         FCAM        XXPI2
         JLE         SIN2            < (PI/2)<TETB<=(3*PI/2).
         FSB         XXPI            < TETB <-- TETB-PI.
         FNEG
SIN2:    EQU         $
         FNEG
SIN1:    EQU         $
         FST         XXTETB          < ET VOILA LE TETA TRANSLATE...
         FMP         XXTETB
         FST         XXTETC          < TETC=TETB*TETB.
<
< CALCUL DE LA SERIE :
<
         FNEG
         FDV         XX2322
         FAD         XX0001
         FMP         XXTETC
         FDV         XX2120
         FSB         XX0001
         FMP         XXTETC
         FDV         XX1918
         FAD         XX0001
         FMP         XXTETC
         FDV         XX1716
         FSB         XX0001
         FMP         XXTETC
         FDV         XX1514
         FAD         XX0001
         FMP         XXTETC
         FDV         XX1312
         FSB         XX0001
         FMP         XXTETC
         FDV         XX1110
         FAD         XX0001
         FMP         XXTETC
         FDV         XX0908
         FSB         XX0001
         FMP         XXTETC
         FDV         XX0706
         FAD         XX0001
         FMP         XXTETC
         FDV         XX0504
         FSB         XX0001
         FMP         XXTETC
         FDV         XX0302
         FAD         XX0001
         FMP         XXTETB
         FST         XXSINU          < ET VOILA LE TRAVAIL...
         FABS
         FCAM        XX0001          < VALIDATION DU RESULTAT...
         JLE         SIN3            < OK, INFERIEUR A 1...
         WORD        '1E16           < ????
SIN3:    EQU         $
         PLR         A,B,L,W
         RSR
<
<
<        C A L C U L   D U   C O S I N U S  :
<
<
COS:     EQU         $
         PSR         A,B,L,W
         LRM         L
         WORD        SINLOC+'80      < BASE L,
         LR          A,W             < W BASE LES ARGUMENTS.
         FLD         XXTETA
         PSR         A,B             < SAUVEGARDE DU TETA ARGUMENT.
         FLD         XXPI2
         FSB         XXTETA          < (PI/2)-TETA.
         FST         XXTETA          < NOUVEL ARGUMENT :
         LR          W,A             < A=ADRESSE ARGUMENT.
         BSR         XXASIN          < CALCUL DE SIN((PI/2)-TETA)=COS(TETA).
         PLR         A,B
         FST         XXTETA          < RESTAURATION DU TETA...
         PLR         A,B,L,W
         RSR
:F
:F
< <<'SIF COSINUS'
DF'SIF COTG'
ED'SIF COTG'
IN0
         IDP         "SIF COTG"
<
<        SOUS-PROGRAMME DE CALCUL DE LA COTANGENTE
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<
         DEF         COTG
         LOCAL
ZZZ130:  EQU         $
ZZZ131:  DZS         2               < NB EN FLOTTANT
ZZZ132:  DZS         2
ZZZ146:  DZS         2
ZZZ147:  WORD        '7F7F;'FFFF     < +INFINI
ZZZ148:  WORD        '807F;'0001     < -INFINI
ZZZ149:  WORD        ZZZ150          < SP DE CALCUL DU SINUS
ZZZ133:  DZS         1               < SIGNE
ZZZ134:  WORD        '6403;'87ED     < 2*PI
ZZZ135:  WORD        '6402;'87ED     < PI
ZZZ136:  WORD        '6401;'87ED     < PI/2
ZZZ137:  EQU         ZZZ136          < CSTES DU POLYNOME
ZZZ138:  WORD        'AD00;'5110
ZZZ139:  WORD        '51FD;'9A2C
ZZZ140:  WORD        'B3F9;'6CCE
ZZZ141:  WORD        '4FF4;'6BDD
         WORD        ZZZ130+'80      < RELAI VERS LE LOCAL
         PROG
COTG:    EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W
         BSR         ZZZ149
         FST         ZZZ146
         FLD         0,W
         FSB         ZZZ136
         FNEG
         BSR         ZZZ149
         FCMZ        ZZZ146
         JE          ZZZ151
         FDV         ZZZ146
ZZZ153:  EQU         $
         FST         2,W
         PLR         A,B,L,W
         RSR
ZZZ151:  EQU         $
         FCAZ
         JL          ZZZ152
         FLD         ZZZ147
         JMP         ZZZ153
ZZZ152:  EQU         $
         FLD         ZZZ148
         JMP         ZZZ153
ZZZ150:  EQU         $
         FST         ZZZ131
         STZ         ZZZ133
         JAGE        ZZZ142
         FNEG
         FST         ZZZ131
         IC          ZZZ133
ZZZ142:  EQU         $
         FDV         ZZZ134
         FIX
         FLT
         FMP         ZZZ134
         FSB         ZZZ131
         FNEG
         FCAM        ZZZ135
         JL          ZZZ143
         FSB         ZZZ135
         IC          ZZZ133
ZZZ143:  EQU         $
         FCAM        ZZZ136
         JL          ZZZ144
         FSB         ZZZ135
         FNEG
ZZZ144:  EQU         $
         FDV         ZZZ136
         FST         ZZZ131
         FMP         ZZZ131
         FST         ZZZ132
         FMP         ZZZ141
         FAD         ZZZ140
         FMP         ZZZ132
         FAD         ZZZ139
         FMP         ZZZ132
         FAD         ZZZ138
         FMP         ZZZ132
         FAD         ZZZ137
         FMP         ZZZ131
         DC          ZZZ133
         JNE         ZZZ145
         FNEG
ZZZ145:  EQU         $
         RSR
         END
:F
:F
< <<'SIF COTG'
DF'SIF EXP'
ED'SIF EXP'
IN0
         IDP         "SIF EXP"
<
<        SOUS-PROGRAMME DE CALCUL DE L'EXPONENTIELLE
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<        - MOT5 : CODE RETOUR (0-BON;1-ERREUR)
<
         DEF         EXP
         LOCAL
ZZZ020:  EQU         $
ZZZ021:  DZS         2               < NB EN FLOTTANT
ZZZ022:  DZS         2
ZZZ023:  DZS         2
ZZZ024:  WORD        '5C01;'551E     < LOG A BASE 2 DE E
ZZZ025:  DZS         1               < RELEVE DE L'EXPOSANT
ZZZ026:  WORD        '4001;'0000     < 1.0
ZZZ027:  WORD        '4002;'0000     < 2.0
ZZZ028:  WORD        '5707;'6AE1     < CSTES DU POLYNOME
ZZZ029:  WORD        '46FC;'FA70
ZZZ030:  WORD        'BA0F;'5917
ZZZ031:  WORD        '4F04;'A303
ZZZ032:  WORD        'FF00           < MASQUE
         WORD        ZZZ020+'80      < RELAI VERS LE LOCAL
         PROG
EXP:     EQU         $               < POINT D'ENTREE
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         STZ         4,W             < CODE DE RETOUR A ZERO
         FLD         0,W             < ERREUR SI NB<0
         FMP         ZZZ024
         FST         ZZZ023
         FIX
         JV          ZZZ038
         STA         ZZZ025
         FLT
         FCAM        ZZZ023
         JNV         ZZZ033
         FLD         ZZZ026
         FST         ZZZ023
         JMP         ZZZ035
ZZZ033:  EQU         $
         CPZ         ZZZ023
         JGE         ZZZ034
         DC          ZZZ025
         LA          ZZZ025
         FLT
ZZZ034:  EQU         $
         FSB         ZZZ023
         FNEG
         FST         ZZZ022
         FMP         ZZZ022
         FST         ZZZ021
         FAD         ZZZ028
         FST         ZZZ023
         FLD         ZZZ030
         FDV         ZZZ023
         FAD         ZZZ021
         FMP         ZZZ029
         FAD         ZZZ031
         FSB         ZZZ022
         FST         ZZZ023
         FLD         ZZZ027
         FMP         ZZZ022
         FDV         ZZZ023
         FAD         ZZZ026
         FST         ZZZ023
ZZZ035:  EQU         $
         SWBR        A
         SARS        8
         AD          ZZZ025
         CPI         '7F
         JG          ZZZ038
         CPI         -'80
         JGE         ZZZ036
         LAI         0
         SBT         8               < GENERATION DU 0 FLOTTANT.
         LBI         0
         JMP         ZZZ037
ZZZ036:  EQU         $
         ANDI        'FF
         STA         ZZZ025
         LA          ZZZ023
         AND         ZZZ032
         AD          ZZZ025
ZZZ037:  EQU         $
         FST         2,W
ZZZ039:  EQU         $
         PLR         A,B,L,W
         RSR
ZZZ038:  EQU         $
         LAI         1               < ERREUR
         STA         4,W
         JMP         ZZZ039
         END
:F
:F
< <<'SIF EXP'
DF'SIF LOGN'
ED'SIF LOGN'
IN0
         IDP         "SIF LOGN"
<
<        SOUS-PROGRAMME DE CALCUL DE LOGARITHME NEPERIEN
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<        - MOT5 : CODE RETOUR (0-BON;1-ERREUR)
<
         DEF         LOGN
         LOCAL
ZZZ000:  EQU         $
ZZZ001:  DZS         2               < NB FLOTTANT
ZZZ002:  DZS         2
ZZZ003:  DZS         2
ZZZ004:  WORD        '5A00;'8279     < RACINE(2)/2
ZZZ005:  WORD        '5201;'B046     < CSTES DU DEVELOPPEMENT
ZZZ006:  WORD        '5402;'79B7
ZZZ007:  WORD        '6A01;'0867
ZZZ008:  WORD        '4000;'0000     < CSTE 0.5
ZZZ009:  WORD        '5800;'B90C     < CSTE LN(2)
ZZZ010:  WORD        'FF00           < MASQUE
         WORD        ZZZ000+'80      < RELAI VERS LE LOCAL
         PROG
LOGN:    EQU         $               < POINT D'ENTREE
         PSR         A,B,Y,L,W       < PROTEGER LES REGISTRES UTILES
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         STZ         4,W             < CODE DE RETOUR A ZERO
         FLD         0,W             < ERREUR SI NB<0
         LR          A,Y
         FCAZ
         JLE         ZZZ011
         AND         ZZZ010
         FST         ZZZ003
         FAD         ZZZ004
         FST         ZZZ002
         LR          Y,A
         SWBR        A
         SARS        8
         FLT
         FST         ZZZ001
         FLD         ZZZ003
         FSB         ZZZ004
         FDV         ZZZ002
         FST         ZZZ003
         FMP         ZZZ003
         FNEG
         FAD         ZZZ007
         FST         ZZZ002
         FLD         ZZZ006
         FDV         ZZZ002
         FAD         ZZZ005
         FMP         ZZZ003
         FSB         ZZZ008
         FAD         ZZZ001
         FMP         ZZZ009
         FST         2,W
         JMP         ZZZ012
ZZZ011:  EQU         $
         LAI         1               < ERREUR (NB<0)
         STA         4,W
ZZZ012:  EQU         $
         PLR         A,B,Y,L,W
         RSR
         END
:F
:F
< <<'SIF LOGN'
DF'SIF POL-CART'
ED'SIF POL-CART'
IN0
         IDP         "SIF POL-CART"
SIN     @
         IF          3='F700,XWOR%,,XWOR%
         EOT         #SIF SINUS#
XWOR%:   VAL         0
         PAGE
<
<
<        P A S S A G E   P O L A I R E - C A R T E S I E N  :
<
<
<        ARGUMENT :
<                    A=ADRESSE D'UNE TABLE DEFINI EN DSEC.
<
<
         DSEC
ARGCAR:  EQU         $
XXRHO:   DZS         2               < RAYON POLAIRE,
XXTET:   DZS         2               < TETA EN RADIANS,
XXFLX:   DZS         2               < RESULTAT X,
XXFLY:   DZS         2               < RESULTAT Y.
         LOCAL
CARLOC:  EQU         $
XXARG:   DZS         4               < ARGUMENT POUR LE SINUS...
XXBSIN:  WORD        SIN             < SOUS-PROGRAMME DU SINUS,
XXBCOS:  WORD        COS             < SOUS-PROGRAMME DU COSINUS.
         PROG
         USE         W,ARGCAR
CART:    EQU         $
         PSR         A,B,L,W
         LRM         L
         WORD        CARLOC+'80      < BASE L,
         LR          A,W             < W BASE LES ARGUMENTS.
         FLD         XXTET
XWOR%:   VAL         XXTETA-ARGSIN
         FST         XXARG+XWOR%     < TRANSMISSION DE TETA.
         LAD         XXARG           < A=ADRESSE ARGUMENT.
         BSR         XXBSIN          < CALCUL DU SINUS,
XWOR%:   VAL         XXSINU-ARGSIN
         FLD         XXARG+XWOR%     < RECUPERATION DU SINUS...
         FMP         XXRHO
         FST         XXFLY           < Y=RHO*SIN(TETA).
         LAD         XXARG           < A=ADRESSE ARGUMENT.
         BSR         XXBCOS          < CALCUL DU COSINUS,
XWOR%:   VAL         XXSINU-ARGSIN
         FLD         XXARG+XWOR%     < RECUPERATION DU COSINUS...
         FMP         XXRHO
         FST         XXFLX           < X=RHO*COS(TETA).
         PLR         A,B,L,W
         RSR
:F
:F
< <<'SIF POL-CART'
DF'SIF POLAIRE'
ED'SIF POLAIRE'
IN0
         IDP         "SIF POLAIRE"
<
<        SOUS-PROGRAMME DE CALCUL DE COORDONNEES POLAIRES
<        A PARTIR DE COORDONNEES CARTESIENNES
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT
<        - MOT5 ET MOT6 : RESULTAT RHO
<        - MOT7 ET MOT8 : RESULTAT THETA
<
         DEF         POL
         LOCAL
ZZZ040:  EQU         $
ZZZ041:  DZS         1               < MAX
ZZZ042:  WORD        'FF00           < MASQUE
ZZZ043:  DZS         2               < NB EN FLOTTANT
ZZZ044:  DZS         2
Z100:    DZS         2
ZZZ045:  WORD        '4A00;'0000     < CSTES
ZZZ046:  WORD        '6CFF;'0000
ZZZ047:  WORD        '7000;'0000
ZZZ048:  WORD        '47FF;'544C
ZZZ049:  WORD        ZZZ050          < SS-PROG
ZZZ056:  WORD        '0080;'0000     < ZERO
DPI:     FLOAT       6.2832
PI:      FLOAT       3.1416
PIS2:    FLOAT       1.5708
UN:      FLOAT       1
PPIS2:   FLOAT       1E-2
TC0:     WORD        '5100;'F3A7     < CSTES POUR ARCTG
TC1:     WORD        '6CFF;'4920
TC2:     WORD        '6CFB;'6B37
TC3:     WORD        '5100;'F3AB
TC4:     WORD        '5100;'74D5
TC5:     WORD        '71FD;'7E2D
         WORD        ZZZ040+'80      < RELAI VERS LE LOCAL
         PROG
POL:     EQU         $
         PSR         A,B,X,Y,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W             < RHO=SQRT(X**2+Y**2)
         FMP         0,W
         FST         ZZZ043
         FLD         2,W
         FMP         2,W
         FAD         ZZZ043
         FCAZ
         JE          ZZZ053
         LR          A,Y
         ANDI        'FF
         SWBR        A
         SARS        1
         AD          ZZZ056
         TBT         8
         JNC         ZZZ051
         RBT         8
         STA         ZZZ041
         LR          Y,A
         AND         ZZZ042
         FST         ZZZ044
         FMP         ZZZ045
         FAD         ZZZ046
         JMP         ZZZ052
ZZZ051:  EQU         $
         STA         ZZZ041
         LR          Y,A
         ORI         'FF
         FST         ZZZ044
         FMP         ZZZ047
         FAD         ZZZ048
ZZZ052:  EQU         $
         BSR         ZZZ049
         SWBR        A
         BSR         ZZZ049
         AD          ZZZ041
         SWBR        A
ZZZ053:  EQU         $
         FST         4,W
         FLD         2,W             < THETA=ARCTG(Y/X)
         FDV         0,W
         JNV         Z001
         FLD         PIS2
         FCMZ        2,W
         JGE         Z002
         FAD         PI
Z002:    EQU         $
         FST         6,W
         PLR         A,B,X,Y,L,W
         RSR
Z001:    EQU         $
         FST         ZZZ043
         LYI         0
         LXI         0
         FCAZ
         JNE         Z003
         FLD         ZZZ056
         FCMZ        0,W
         JGE         Z002
         FLD         PI
         JMP         Z002
Z003:    EQU         $
         JG          Z004
         LYI         1
         FNEG
         FST         ZZZ043
Z004:    EQU         $
         FCAM        UN
         JLE         Z005
         FLD         UN
         FDV         ZZZ043
         FST         ZZZ043
         LXI         1
         FCAM        PPIS2
         JL          Z009
Z005:    EQU         $
         FMP         ZZZ043
         FST         ZZZ044
         FMP         TC5
         FAD         TC4
         FMP         ZZZ044
         FAD         TC3
         FST         Z100
         FLD         ZZZ044
         FMP         TC2
         FAD         TC1
         FMP         ZZZ044
         FAD         TC0
         FMP         ZZZ043
         FDV         Z100
Z009:    EQU         $
         CPZR        X
         JE          Z006
         FSB         PIS2
         ADRI        -1,Y
Z006:    EQU         $
         CPZR        Y
         JE          Z007
         FNEG
Z007:    EQU         $
         FCMZ        0,W
         JGE         Z008
         FAD         PI
         JMP         Z002
Z008:    EQU         $
         FCMZ        2,W
         JGE         Z002
         FAD         DPI
         JMP         Z002
ZZZ050:  EQU         $
         FST         ZZZ043
         FLD         ZZZ044
         FDV         ZZZ043
         FAD         ZZZ043
         SWBR        A
         AD          ZZZ042
         RSR
         END
<
<        SOUS-PROGRAMME DE CALCUL DE COORDONNEES POLAIRES
<        A PARTIR DE COORDONNEES CARTESIENNES
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT
<        - MOT5 ET MOT6 : RESULTAT RHO
<        - MOT7 ET MOT8 : RESULTAT THETA
<
         DEF         POL
         LOCAL
ZZZ040:  EQU         $
ZZZ041:  DZS         1               < MAX
ZZZ042:  WORD        'FF00           < MASQUE
ZZZ043:  DZS         2               < NB EN FLOTTANT
ZZZ044:  DZS         2
Z100:    DZS         2
ZZZ045:  WORD        '4A00;'0000     < CSTES
ZZZ046:  WORD        '6CFF;'0000
ZZZ047:  WORD        '7000;'0000
ZZZ048:  WORD        '47FF;'544C
ZZZ049:  WORD        ZZZ050          < SS-PROG
ZZZ056:  WORD        '0080;'0000     < ZERO
DPI:     FLOAT       6.2832
PI:      FLOAT       3.1416
PIS2:    FLOAT       1.5708
UN:      FLOAT       1
PPIS2:   FLOAT       1E-2
TC0:     WORD        '5100;'F3A7     < CSTES POUR ARCTG
TC1:     WORD        '6CFF;'4920
TC2:     WORD        '6CFB;'6B37
TC3:     WORD        '5100;'F3AB
TC4:     WORD        '5100;'74D5
TC5:     WORD        '71FD;'7E2D
         WORD        ZZZ040+'80      < RELAI VERS LE LOCAL
         PROG
POL:     EQU         $
         PSR         A,B,X,Y,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W             < RHO=SQRT(X**2+Y**2)
         FMP         0,W
         FST         ZZZ043
         FLD         2,W
         FMP         2,W
         FAD         ZZZ043
         FCAZ
         JE          ZZZ053
         LR          A,Y
         ANDI        'FF
         SWBR        A
         SARS        1
         AD          ZZZ056
         TBT         8
         JNC         ZZZ051
         RBT         8
         STA         ZZZ041
         LR          Y,A
         AND         ZZZ042
         FST         ZZZ044
         FMP         ZZZ045
         FAD         ZZZ046
         JMP         ZZZ052
ZZZ051:  EQU         $
         STA         ZZZ041
         LR          Y,A
         ORI         'FF
         FST         ZZZ044
         FMP         ZZZ047
         FAD         ZZZ048
ZZZ052:  EQU         $
         BSR         ZZZ049
         SWBR        A
         BSR         ZZZ049
         AD          ZZZ041
         SWBR        A
ZZZ053:  EQU         $
         FST         4,W
         FLD         2,W             < THETA=ARCTG(Y/X)
         FDV         0,W
         JNV         Z001
         FLD         PIS2
         FCMZ        2,W
         JGE         Z002
         FAD         PI
Z002:    EQU         $
         FST         6,W
         PLR         A,B,X,Y,L,W
         RSR
Z001:    EQU         $
         FST         ZZZ043
         LYI         0
         LXI         0
         FCAZ
         JNE         Z003
         FLD         ZZZ056
         FCMZ        0,W
         JGE         Z002
         FLD         PI
         JMP         Z002
Z003:    EQU         $
         JG          Z004
         LYI         1
         FNEG
         FST         ZZZ043
Z004:    EQU         $
         FCAM        UN
         JLE         Z005
         FLD         UN
         FDV         ZZZ043
         FST         ZZZ043
         LXI         1
         FCAM        PPIS2
         JL          Z009
Z005:    EQU         $
         FMP         ZZZ043
         FST         ZZZ044
         FMP         TC5
         FAD         TC4
         FMP         ZZZ044
         FAD         TC3
         FST         Z100
         FLD         ZZZ044
         FMP         TC2
         FAD         TC1
         FMP         ZZZ044
         FAD         TC0
         FMP         ZZZ043
         FDV         Z100
Z009:    EQU         $
         CPZR        X
         JE          Z006
         FSB         PIS2
         ADRI        -1,Y
Z006:    EQU         $
         CPZR        Y
         JE          Z007
         FNEG
Z007:    EQU         $
         FCMZ        0,W
         JGE         Z008
         FAD         PI
         JMP         Z002
Z008:    EQU         $
         FCMZ        2,W
         JGE         Z002
         FAD         DPI
         JMP         Z002
ZZZ050:  EQU         $
         FST         ZZZ043
         FLD         ZZZ044
         FDV         ZZZ043
         FAD         ZZZ043
         SWBR        A
         AD          ZZZ042
         RSR
         END
:F
:F
< <<'SIF POLAIRE'
DF'SIF SIN'
ED'SIF SIN'
IN0
         IDP         "SIF SIN"
<
<        SOUS-PROGRAMME DE CALCUL DU SINUS
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<
         DEF         SIN
         LOCAL
ZZZ060:  EQU         $
ZZZ061:  DZS         2               < NB EN FLOTTANT
ZZZ062:  DZS         2
ZZZ063:  DZS         1               < SIGNE
ZZZ064:  WORD        '6403;'87ED     < 2 PI
ZZZ065:  WORD        '6402;'87ED     < PI
ZZZ066:  WORD        '6401;'87ED     < PI/2
ZZZ067:  EQU         ZZZ066          < CSTES DU POLYNOME
ZZZ068:  WORD        'AD00;'5110
ZZZ069:  WORD        '51FD;'9A2C
ZZZ070:  WORD        'B3F9;'6CCE
ZZZ071:  WORD        '4FF4;'6BDD
         WORD        ZZZ060+'80      < RELAI VERS LE LOCAL
         PROG
SIN:     EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W
         FST         ZZZ061
         STZ         ZZZ063
         JAGE        ZZZ072
         FNEG
         FST         ZZZ061
         IC          ZZZ063
ZZZ072:  EQU         $
         FDV         ZZZ064
         FIX
         FLT
         FMP         ZZZ064
         FSB         ZZZ061
         FNEG
         FCAM        ZZZ065
         JL          ZZZ073
         FSB         ZZZ065
         IC          ZZZ063
ZZZ073:  EQU         $
         FCAM        ZZZ066
         JL          ZZZ074
         FSB         ZZZ065
         FNEG
ZZZ074:  EQU         $
         FDV         ZZZ066
         FST         ZZZ061
         FMP         ZZZ061
         FST         ZZZ062
         FMP         ZZZ071
         FAD         ZZZ070
         FMP         ZZZ062
         FAD         ZZZ069
         FMP         ZZZ062
         FAD         ZZZ068
         FMP         ZZZ062
         FAD         ZZZ067
         FMP         ZZZ061
         DC          ZZZ063
         JNE         ZZZ075
         FNEG
ZZZ075:  EQU         $
         FST         2,W
         PLR         A,B,L,W
         RSR
:F
:F
< <<'SIF SIN'
DF'SIF SINH'
ED'SIF SINH'
IN0
         IDP         "SIF SINH"
<
<        SOUS-PROGRAMME DE CALCUL DU SINUS HYPERBOLIQUE
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<        - MOT5 : CODE RETOUR (0-BON;1-ERREUR)
<
         DEF         SINH
         LOCAL
ZZZ180:  EQU         $
ZZZ181:  DZS         2               < NB EN FLOTTANT
ZZZ182:  DZS         2
ZZZ183:  DZS         2
ZZZ184:  WORD        '5C01;'551E     < LOG A BASE 2 DE E
ZZZ185:  DZS         1               < RELEVE DE L'EXPOSANT
ZZZ186:  WORD        '4001;'0000     < 1.0
ZZZ187:  WORD        '4002;'0000     < 2.0
ZZZ188:  WORD        '5707;'6AE1     < CSTES DU POLYNOME
ZZZ189:  WORD        '46FC;'FA70
ZZZ190:  WORD        'BA0F;'5917
ZZZ191:  WORD        '4F04;'A303
ZZZ192:  WORD        'FF00           < MASQUE
         WORD        ZZZ180+'80      < RELAI VERS LE LOCAL
         PROG
SINH:    EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         STZ         4,W             < CODE DE RETOUR A ZERO
         FLD         0,W             < ERREUR SI NB<0
         FMP         ZZZ184
         FST         ZZZ183
         FIX
         JV          ZZZ198
         STA         ZZZ185
         FLT
         FCAM        ZZZ183
         JNV         ZZZ193
         FLD         ZZZ186
         FST         ZZZ183
         JMP         ZZZ195
ZZZ193:  EQU         $
         CPZ         ZZZ183
         JGE         ZZZ194
         DC          ZZZ185
         LA          ZZZ185
         FLT
ZZZ194:  EQU         $
         FSB         ZZZ183
         FNEG
         FST         ZZZ182
         FMP         ZZZ182
         FST         ZZZ181
         FAD         ZZZ188
         FST         ZZZ183
         FLD         ZZZ190
         FDV         ZZZ183
         FAD         ZZZ181
         FMP         ZZZ189
         FAD         ZZZ191
         FSB         ZZZ182
         FST         ZZZ183
         FLD         ZZZ187
         FMP         ZZZ182
         FDV         ZZZ183
         FAD         ZZZ186
         FST         ZZZ183
ZZZ195:  EQU         $
         SWBR        A
         SARS        8
         AD          ZZZ185
         CPI         '7F
         JG          ZZZ198
         CPI         -'80
         JGE         ZZZ196
         LAI         0
         SBT         8               < GENERATION DU 0 FLOTTANT...
         LBI         0
         JMP         ZZZ197
ZZZ196:  EQU         $
         ANDI        'FF
         STA         ZZZ185
         LA          ZZZ183
         AND         ZZZ192
         AD          ZZZ185
ZZZ197:  EQU         $
         FST         ZZZ181
         FLD         ZZZ186
         FDV         ZZZ181
         FNEG
         FAD         ZZZ181
         FDV         ZZZ187
         FST         2,W
ZZZ199:  EQU         $
         PLR         A,B,L,W
         RSR
ZZZ198:  EQU         $
         LAI         1               < ERREUR
         STA         4,W
         JMP         ZZZ199
         END
:F
:F
< <<'SIF SINH'
DF'SIF SINUS'
ED'SIF SINUS'
IN0
         IDP         "SIF SINUS"
<
<        SOUS-PROGRAMME DE CALCUL DU SINUS
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<
         LOCAL
ZSC060:  EQU         $
ZSC062:  DZS         2               < X*X.
ZSCZA0:  FLOAT       0.7853981
ZSCZA1:  FLOAT       -0.8074543E-1
ZSCZA2:  FLOAT       0.249001E-2
ZSCZA3:  FLOAT       -0.3595E-4
ZSCZB0:  FLOAT       1
ZSCZB1:  FLOAT       -0.3084242
ZSCZB2:  FLOAT       0.1584991E-1
ZSCZB3:  FLOAT       -0.31888E-3
ZSC4SP:  FLOAT       1.2732395       < 4/PI.
ZSCZA:   WORD        0
ZSCZQ:   FLOAT       0
ZSCZR:   FLOAT       0
ZSCZS:   FLOAT       0
ZSCZM1:  FLOAT       -1
ZSCZ1:   EQU         ZSCZB0
         PROG
COS:     EQU         $               < ENTRY 'COS'.
         PSR         A,B,L,W
         LR          A,W             < W BASE LA DEMANDE...
         LAI         2               < CAS DU 'COS'.
         JMP         ZSC080
SIN:     EQU         $
         PSR         A,B,L,W
         LR          A,W             < W BASE LA DEMANDE...
         LAI         0               < A PRIORI, X>=0...
         FCMZ        0,W             < TEST DU SIGNE DE X ???
         JGE         ZSC080          < X>=0,
         LAI         4               < NON, X<0...
ZSC080:  EQU         $
         LRM         L
         WORD        ZSC060+128      < L=BASE DU LOCAL...
         STA         ZSCZA           < A=0, 2, 4 SUIVANT QU'IL S'AGIT DU
                                     < 'SIN', DU 'COS'...
         FLD         0,W             < ANGLE ARGUMENT.
         FABS
         FMP         ZSC4SP
         PSR         A,B             < SAUVEGARDE DE 4*ABS(X)/PI
         FIX
         FLT
         FST         ZSCZQ           < Q=INT(4*ABS(X)/PI),
         PLR         A,B             < A,B=4*ABS(X)/PI.
         FSB         ZSCZQ
         FST         ZSCZR           < R=4*ABS(X)/PI-Q.
         FLD         ZSCZQ
         FIX
         AD          ZSCZA
         ANDI        7               < Q0 = Q + A  MODULO 8.
         JAE         ZSC090          < CAS Q0=0,
         ADRP        A
         JMP         ZSC091          < CAS Q0=1,
         JMP         ZSC092          < CAS Q0=2,
         JMP         ZSC093          < CAS Q0=3,
         JMP         ZSC094          < CAS Q0=4,
         JMP         ZSC095          < CAS Q0=5,
         JMP         ZSC096          < CAS Q0=6,
ZSC097:  EQU         $               < CAS Q0=7.
         FLD         ZSCZ1
         FSB         ZSCZR
         FST         ZSCZR           < R=1-R.
         FNEG
         FST         ZSCZS           < S=-R.
         JMP         ZSC08A
ZSC096:  EQU         $               < CAS Q0=6.
         FLD         ZSCZM1
         FST         ZSCZS           < S=-1.
         JMP         ZSC08B
ZSC095:  EQU         $               < CAS Q0=5.
         FLD         ZSCZ1
         FSB         ZSCZR
         FST         ZSCZR           < R=1-R.
         FLD         ZSCZM1
         FST         ZSCZS           < S=-1.
         JMP         ZSC08B
ZSC094:  EQU         $               < CAS Q0=4.
         FLD         ZSCZR
         FNEG
         FST         ZSCZS           < S=R.
         JMP         ZSC08A
ZSC093:  EQU         $               < CAS Q0=3.
         FLD         ZSCZ1
         FSB         ZSCZR
         FST         ZSCZR           < R=1-R.
         FST         ZSCZS           < S=R.
         JMP         ZSC08A
ZSC092:  EQU         $               < CAS Q0=2.
         FLD         ZSCZ1
         FST         ZSCZS           < S=1.
         JMP         ZSC08B
ZSC091:  EQU         $               < CAS Q0=1.
         FLD         ZSCZ1
         FSB         ZSCZR
         FST         ZSCZR           < R=1-R.
         FLD         ZSCZ1
         FST         ZSCZS           < S=1.
         JMP         ZSC08B
ZSC090:  EQU         $               < CAS Q0=0.
         FLD         ZSCZR
         FST         ZSCZS           < S=R.
ZSC08A:  EQU         $
         LRM         A
         WORD        ZSCZA0          < A=ADRESSE DE LA SERIE 'A'.
         JMP         ZSC081
ZSC08B:  EQU         $
         LRM         A
         WORD        ZSCZB0          < A=ADRESSE DE LA SERIE 'B'.
ZSC081:  EQU         $
         PSR         W
         LR          A,W             < W=ADRESSE DE LA SERIE 'A' OU 'B'.
ZSCZC0:  VAL         0               < PREMIER TERME DE LA SERIE,
ZSCZC1:  VAL         2               < SECOND,
ZSCZC2:  VAL         4               < TROISIEME,
ZSCZC3:  VAL         6               < QUATRIEME.
         FLD         ZSCZR
         FMP         ZSCZR           < ANGLE*ANGLE.
         FST         ZSC062          < X2...
         FLD         ZSCZ1           < INITIALISATION A 1...
         PSR         A,B
         FLD         ZSCZC0,W
         FST         ZSCZQ           < INITIALISATION DU CUMUL.
         PLR         A,B
         FMP         ZSC062          < CALCUL DE X2...
         PSR         A,B
         FMP         ZSCZC1,W
         FAD         ZSCZQ
         FST         ZSCZQ           < C0+C1*X2.
         PLR         A,B
         FMP         ZSC062          < CALCUL DE X4...
         PSR         A,B
         FMP         ZSCZC2,W
         FAD         ZSCZQ
         FST         ZSCZQ           < C0+C1*X2+C2*X4.
         PLR         A,B
         FMP         ZSC062          < CALCUL DE X6...
         FMP         ZSCZC3,W
         FAD         ZSCZQ
         FMP         ZSCZS
         PLR         W
         FST         2,W
         PLR         A,B,L,W
         RSR
:F
:F
< <<'SIF SINUS'
DF'SIF SPHERIQUE'
ED'SIF SPHERIQUE'
IN0
         IDP         "SIF SPHERIQUE"
<
<        SOUS-PROGRAMME DE CALCUL DE COORDONNEES CARTESIENNES
<        A PARTIR DE COORDONNEES SPHERIQUES
<        TABLE DE TRANSMISSION POINTEE PAR LE REGISTRE A:
<        - MOT1 ET MOT2 : RHO EN FLOTTANT
<        - MOT3 ET MOT4 : THETA EN FLOTTANT
<        - MOT5 ET MOT6 : PHI EN FLOTTANT
<        - MOT7 ET MOT8 : X EN FLOTTANT(RESULTAT)
<        - MOT9 ET MOT10 : Y EN FLOTTANT(RESULTAT)
<        - MOT11 ET MOT12 : Z EN FLOTTANT(RESULTAT)
<
         DEF         SPHERE
         LOCAL
ZZZ200:  EQU         $
ZZZ201:  DZS         2               < NB EN FLOTTANT
ZZZ202:  DZS         2
ZZZ216:  WORD        ZZZ217          < SP DE CALCUL DU SINUS
ZZZ203:  DZS         1               < SIGNE
ZZZ204:  WORD        '6403;'87ED     < 2*PI
ZZZ205:  WORD        '6402;'87ED     < PI
ZZZ206:  WORD        '6401;'87ED     < PI/2
ZZZ207:  EQU         ZZZ206          < CSTES DU POLYNOME
ZZZ208:  WORD        'AD00;'5110
ZZZ209:  WORD        '51FD;'9A2C
ZZZ210:  WORD        'B3F9;'6CCE
ZZZ211:  WORD        '4FF4;'6BDD
ZZZ218:  DZS         2               < NB EN FLOTTANT
         WORD        ZZZ200+'80      < RELAI VERS LE LOCAL
         PROG
SPHERE:  EQU         $
         PSR         A,B,L,W
         LRP         L
         LB          -2,L
         LR          B,L
         LR          A,W
         FLD         4,W
         BSR         ZZZ216
         FMP         0,W
         FST         10,W
         FLD         4,W
         FSB         ZZZ206
         FNEG
         BSR         ZZZ216
         FMP         0,W
         FST         ZZZ218
         FLD         2,W
         BSR         ZZZ216
         FMP         ZZZ218
         FST         8,W
         FLD         2,W
         FSB         ZZZ206
         FNEG
         BSR         ZZZ216
         FMP         ZZZ218
         FST         6,W
         PLR         A,B,L,W
         RSR
ZZZ217:  EQU         $
         FST         ZZZ201
         STZ         ZZZ203
         JAGE        ZZZ212
         FNEG
         FST         ZZZ201
         IC          ZZZ203
ZZZ212:  EQU         $
         FDV         ZZZ204
         FIX
         FLT
         FMP         ZZZ204
         FSB         ZZZ201
         FNEG
         FCAM        ZZZ205
         JL          ZZZ213
         FSB         ZZZ205
         IC          ZZZ203
ZZZ213:  EQU         $
         FCAM        ZZZ206
         JL          ZZZ214
         FSB         ZZZ205
         FNEG
ZZZ214:  EQU         $
         FDV         ZZZ206
         FST         ZZZ201
         FMP         ZZZ201
         FST         ZZZ202
         FMP         ZZZ211
         FAD         ZZZ210
         FMP         ZZZ202
         FAD         ZZZ209
         FMP         ZZZ202
         FAD         ZZZ208
         FMP         ZZZ202
         FAD         ZZZ207
         FMP         ZZZ201
         DC          ZZZ203
         JNE         ZZZ215
         FNEG
ZZZ215:  EQU         $
         RSR
         END
:F
:F
< <<'SIF SPHERIQUE'
DF'SIF SQRT'
ED'SIF SQRT'
IN0
         IDP         "SIF SQRT"
<
<        SOUS-PROGRAMME DE CALCUL DE LA RACINE CARREE
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<        - MOT5 : CODE RETOUR (0-BON;1-ERREUR)
<
         DEF         SQRT
         LOCAL
ZZZ040:  EQU         $
ZZZ041:  DZS         1               < MAX
ZZZ042:  WORD        'FF00           < MASQUE
ZZZ043:  DZS         2               < NB EN FLOTTANT
ZZZ044:  DZS         2
ZZZ045:  WORD        '4A00;'0000     < CSTES
ZZZ046:  WORD        '6CFF;'0000
ZZZ047:  WORD        '7000;'0000
ZZZ048:  WORD        '47FF;'544C
ZZZ049:  WORD        ZZZ050          < SS-PROG
ZZZ056:  WORD        '0080           < CSTE
         WORD        ZZZ040+'80      < RELAI VERS LE LOCAL
         PROG
SQRT:    EQU         $
         PSR         A,B,Y,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         STZ         4,W             < CODE DE RETOUR A ZERO
         FLD         0,W
         FCAZ
         JL          ZZZ054
         JE          ZZZ053
         LR          A,Y
         ANDI        'FF
         SWBR        A
         SARS        1
         AD          ZZZ056
         TBT         8
         JNC         ZZZ051
         RBT         8
         STA         ZZZ041
         LR          Y,A
         AND         ZZZ042
         FST         ZZZ044
         FMP         ZZZ045
         FAD         ZZZ046
         JMP         ZZZ052
ZZZ051:  EQU         $
         STA         ZZZ041
         LR          Y,A
         ORI         'FF
         FST         ZZZ044
         FMP         ZZZ047
         FAD         ZZZ048
ZZZ052:  EQU         $
         BSR         ZZZ049
         SWBR        A
         BSR         ZZZ049
         AD          ZZZ041
         SWBR        A
ZZZ053:  EQU         $
         FST         2,W
ZZZ055:  EQU         $
         PLR         A,B,Y,L,W
         RSR
ZZZ054:  EQU         $
         LAI         1               < ERREUR
         STA         4,W
         JMP         ZZZ055
ZZZ050:  EQU         $
         FST         ZZZ043
         FLD         ZZZ044
         FDV         ZZZ043
         FAD         ZZZ043
         SWBR        A
         AD          ZZZ042
         RSR
:F
:F
< <<'SIF SQRT'
DF'SIF TG'
ED'SIF TG'
IN0
         IDP         "SIF TG"
<
<        SOUS-PROGRAMME DE CALCUL DE LA TANGENTE
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : X EN FLOTTANT
<        - MOT3 ET MOT4 : Y EN FLOTTANT(RESULTAT)
<
         DEF         TG
         LOCAL
ZZZ100:  EQU         $
ZZZ101:  DZS         2               < NB EN FLOTTANT
ZZZ102:  DZS         2
ZZZ116:  DZS         2
ZZZ117:  WORD        '7F7F;'FFFF     < +INFINI
ZZZ118:  WORD        '807F;'0001     < -INFINI
ZZZ119:  WORD        ZZZ120          < SP DE CALCUL DU SINUS
ZZZ103:  DZS         1               < SIGNE
ZZZ104:  WORD        '6403;'87ED     < 2*PI
ZZZ105:  WORD        '6402;'87ED     < PI
ZZZ106:  WORD        '6401;'87ED     < PI/2
ZZZ107:  EQU         ZZZ106          < CSTES DU POLYNOME
ZZZ108:  WORD        'AD00;'5110
ZZZ109:  WORD        '51FD;'9A2C
ZZZ110:  WORD        'B3F9;'6CCE
ZZZ111:  WORD        '4FF4;'6BDD
         WORD        ZZZ100+'80      <RELAI VERS LE LOCAL
         PROG
TG:      EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         0,W
         FSB         ZZZ106
         FNEG
         BSR         ZZZ119
         FST         ZZZ116
         FLD         0,W
         BSR         ZZZ119
         FCMZ        ZZZ116
         JE          ZZZ121
         FDV         ZZZ116
ZZZ123:  EQU         $
         FST         2,W
         PLR         A,B,L,W
         RSR
ZZZ121:  EQU         $
         FCAZ
         JL          ZZZ122
         FLD         ZZZ117
         JMP         ZZZ123
ZZZ122:  EQU         $
         FLD         ZZZ118
         JMP         ZZZ123
ZZZ120:  EQU         $
         FST         ZZZ101
         STZ         ZZZ103
         JAGE        ZZZ112
         FNEG
         FST         ZZZ101
         IC          ZZZ103
ZZZ112:  EQU         $
         FDV         ZZZ104
         FIX
         FLT
         FMP         ZZZ104
         FSB         ZZZ101
         FNEG
         FCAM        ZZZ105
         JL          ZZZ113
         FSB         ZZZ105
         IC          ZZZ103
ZZZ113:  EQU         $
         FCAM        ZZZ106
         JL          ZZZ114
         FSB         ZZZ105
         FNEG
ZZZ114:  EQU         $
         FDV         ZZZ106
         FST         ZZZ101
         FMP         ZZZ101
         FST         ZZZ102
         FMP         ZZZ111
         FAD         ZZZ110
         FMP         ZZZ102
         FAD         ZZZ109
         FMP         ZZZ102
         FAD         ZZZ108
         FMP         ZZZ102
         FAD         ZZZ107
         FMP         ZZZ101
         DC          ZZZ103
         JNE         ZZZ115
         FNEG
ZZZ115:  EQU         $
         RSR
:F
:F
< <<'SIF TG'
DF'SIF CARTESIENNE'
ED'SIF CARTESIENNE'
IN0
         IDP         "SIF CARTESIENNE"
<
<        SOUS-PROGRAMME DE CALCUL DE COORDONNEES CARTESIENNES
<        A PARTIR DE COORDONNEES POLAIRES
<        TABLE DE TRANSMISSION POINTEE PAR REGISTRE A
<        - MOT1 ET MOT2 : RHO EN FLOTTANT
<        - MOT3 ET MOT4 : THETA EN FLOTTANT
<        - MOT5 ET MOT6 : X EN FLOTTANT(RESULTAT)
<        - MOT7 ET MOT8 : Y EN FLOTTANT(RESULTAT)
<
         DEF         CART
         LOCAL
ZZZ160:  EQU         $
ZZZ161:  DZS         2               < NB EN FLOTTANT
ZZZ162:  DZS         2
ZZZ176:  WORD        ZZZ177          < SP DE CALCUL DU SINUS
ZZZ163:  DZS         1               < SIGNE
ZZZ164:  WORD        '6403;'87ED     < 2*PI
ZZZ165:  WORD        '6402;'87ED     < PI
ZZZ166:  WORD        '6401;'87ED     < PI/2
ZZZ167:  EQU         ZZZ166          < CSTES DU POLYNOME
ZZZ168:  WORD        'AD00;'5110
ZZZ169:  WORD        '51FD;'9A2C
ZZZ170:  WORD        'B3F9;'6CCE
ZZZ171:  WORD        '4FF4;'6BDD
         WORD        ZZZ160+'80      < RELAI VERS LE LOCAL
         PROG
CART:    EQU         $
         PSR         A,B,L,W
         LRP         L               < INIT. DE LA BASE L
         LB          -2,L
         LR          B,L
         LR          A,W             < @ TABLE PARAM.
         FLD         2,W
         FSB         ZZZ166
         FNEG
         BSR         ZZZ176
         FMP         0,W
         FST         4,W
         FLD         2,W
         BSR         ZZZ176
         FMP         0,W
         FST         6,W
         PLR         A,B,L,W
         RSR
ZZZ177:  EQU         $
         FST         ZZZ161
         STZ         ZZZ163
         JAGE        ZZZ172
         FNEG
         FST         ZZZ161
         IC          ZZZ163
ZZZ172:  EQU         $
         FDV         ZZZ164
         FIX
         FLT
         FMP         ZZZ164
         FSB         ZZZ161
         FNEG
         FCAM        ZZZ165
         JL          ZZZ173
         FSB         ZZZ165
         IC          ZZZ163
ZZZ173:  EQU         $
         FCAM        ZZZ166
         JL          ZZZ174
         FSB         ZZZ165
         FNEG
ZZZ174:  EQU         $
         FDV         ZZZ166
         FST         ZZZ161
         FMP         ZZZ161
         FST         ZZZ162
         FMP         ZZZ171
         FAD         ZZZ170
         FMP         ZZZ162
         FAD         ZZZ169
         FMP         ZZZ162
         FAD         ZZZ168
         FMP         ZZZ162
         FAD         ZZZ167
         FMP         ZZZ161
         DC          ZZZ163
         JNE         ZZZ175
         FNEG
ZZZ175:  EQU         $
         RSR
:F
:F
< <<'SIF CARTESIENNE'



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.