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-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.