PROG
IDP "LAX - RELEASE 14 - 30/10/80"
IDP "P. FRANCONNET"
ZERO: EQU $
DZS '10
WORD RUN
WORD ENTRY
RUN: EQU $
LRP L
BR -1,L < ALLONS-Y.
<
<
< P R O G R A M M E D E C A L C U L E T D E
<
< V I S U A L I S A T I O N D E L A P R O P A G A T I O N
<
< D ' U N S I G N A L.
<
LNF: VAL 2 < LONGUEUR MOTS D'UN NOMBRE EN FLOTTANT.
INIDKU: VAL '0000 < PREMIER BLOC DISPONIBLE DKU.
XWORK: VAL -12
VALIDA: VAL INIDKU>XWORK < POUR VALIDATION ADRESSES SECTEURS.
NMVU0: VAL 101 < NB MAX DE VALEURS DE U0.
PILE: DZS 30 < PILE POUR 'K'.
VINIT: DZS NMVU0*LNF < VALEURS INITIALES DE U0.
<
ENTIM: EQU $ < EN-TETE IMAGE VIDEO.
DZS 1 < SPARE.
WORD 1 < MODE TRACE = 'SBT'.
DZS 4 < INUTILISE.
YXV: DZS 4 < (Y1,X1),(Y2,X2).
IMAG: DZS 256*16 < IMAGE VIDEO.
FIMAG: EQU $
LIMAG: VAL FIMAG-IMAG < LONGUEUR MOTS IMAGE.
XDOL1: VAL IMAG-ZERO
XDOL2: VAL $-ZERO
$EQU ZERO+XDOL1
NBD: DZS 3 < NOMBRE DECIMAL SAISI EN ASCI.
FNBD: EQU $
REPH: EQU NBD < NOMBRE HEXA SAISI EN ASCI.
MCDAI: ASCI "!CDA"
BYTE "I";'04
FMCDAI: EQU $
<
< MESSAGES STANDARD POUR LE S/P 'ENVOI'.
<
M: EQU $+256
MSORVI: BYTE '6D;"V"
ASCI "ISU?"
WORD 0
MVISU: BYTE '6D;"S"
ASCI "ORTIR SUR VI"
WORD 0
MTV: BYTE '6D;"T";"V";"?";0
MCATAL: BYTE '6D;"C"
ASCI "ATALOGUER?"
WORD 0
MAINIT: BYTE '6D;"A"
ASCI "DR. INITIALE="
WORD 0
MMEMH: BYTE '6D;"M"
ASCI "EMOIRE HAUTE?"
WORD 0
MNINI: BYTE '6D;"N"
ASCI "UMERO IM. INITIALE="
WORD 0
MMETH: BYTE '6D;"M"
ASCI "ETHODE (L,W,S,C)?"
WORD 0
MPERT: BYTE '6D;"P"
ASCI "ERTURBATION (N/2/4)?"
WORD 0
MEPS: BYTE '6D;"E"
ASCI "PSILON="
WORD 0
MSLASH: BYTE "/";0
MDX: BYTE '6D;"D"
ASCI "ELTA X = 1/"
WORD 0
MDT: BYTE '6D;"D"
ASCI "ELTA T = 1/"
WORD 0
MDIRAC: BYTE '6D;"D"
ASCI "IRAC?"
WORD 0
MTYPS: BYTE '6D;"T"
ASCI "YPE SIGNAL (U/V/T/C/S)?"
WORD 0
MNETAP: BYTE '6D;"N"
ASCI "OMBRE D'ETAPES="
WORD 0
MOBSC: BYTE '6D;"O"
ASCI "BSERVATEUR VITESSE C?"
WORD 0
MVIS: BYTE '6D;"V"
ASCI "ISUALISATION:"
WORD 0
MSUPER: BYTE '6D;"S"
ASCI "UPERPOSITION?"
WORD 0
MCATS: BYTE '6D;"C"
ASCI "ATALOGUER LA SUPERPOSITION?"
WORD 0
MENV: BYTE '6D;"E"
ASCI "NVELOPPE?"
WORD 0
MNBENV: BYTE '6D;"U"
ASCI "N SUR "
WORD 0
MMULX: BYTE '6D;"M"
ASCI "ULX="
WORD 0
MMULY: BYTE '6D;"M"
ASCI "ULY="
WORD 0
MTX: BYTE '6D;"T";"X";"=";0
MTY: BYTE '6D;"T";"Y";"=";0
MTR: BYTE '6D;"T"
ASCI "RACER UNE ETAPE SUR "
WORD 0
MRAZ: BYTE '6D;"R"
ASCI "AZ?"
WORD 0
XDOL1: VAL $-ZERO
IF FIMAG-ZERO-XDOL1,,,XWOR%
IF E R R E U R (RECOUVREMENT TROP LONG).
XWOR%: VAL 0
$EQU ZERO+XDOL2
<
< MESSAGES IMPLANTES EN MEMOIRE "HAUTE".
<
M2: EQU $+256
MIMCR2: BYTE '6D;"I"
ASCI "MAGE CREEE EN "
WORD 0
MNIMC: WORD '0708;0;0;0 < EDITION NUMERO IMAGE CREEE.
WORD '0700 < POUR AVOIR UNE CLOCHE !
MESPM: BYTE '6D;"E"
ASCI "SPACE MEMOIRE INSUFFISANT"
WORD 0
MINEG: BYTE '6D;"I"
ASCI "NEGALITE!!"
WORD '0700
PAGE
COMMON
COM: EQU $
DZS 1 < POUR LE BLOC FLOTTANT.
<
< RELAIS DE SOUS-PROGRAMMES.
<
AINI: WORD INI < INITIALISATIONS.
ACALC: WORD CALCUL < CALCULS ETAPE COURANTE.
ASP1SM: WORD SP1SM < SP1 SAUTE-MOUTON.
ASP2SM: WORD SP2SM < SP2 SAUTE-MOUTON.
AVISUA: WORD VISUAL < VISUALISATION DES RESULTATS DE L'ETAPE.
ATRANS: WORD TRANS < TRANSFORMATION DES COORDONNEES X,Y
< EN COORDONNEES GRAPHIQUES.
ATRACE: WORD TRACE < TRACE GRAPHIQUE ET EVENTUELLEMENT VIDEO.
ACOMP: WORD COMP < COMPARAISON IMAGE GENEREE :: IMAGE DKU.
ADIFF: WORD DIFF < DIFFUSION / RELECTURE IMAGE.
AENVOI: WORD ENVOI < ENVOI D'UN MESSAGE STANDARD.
AQREP: WORD QREP < ENVOI QUESTION ET DEMANDE REPONSE.
AQREPN: WORD QREPN < ENVOI QUESTION ET DEMANDE, VALIDATION
< ET CONVERSION DE LA REPONSE QUI DOIT
< ETRE UN NOMBRE DECIMAL.
AFIX: WORD FIX < ARRONDI ET FIX NOMBRE FLOTTANT.
ACVAD: WORD CVAD < CONVERSION ASCI-DECIMAL --> BINAIRE.
ACVDA: WORD CVDA < CONVERSION BINAIRE --> ASCI-DECIMAL.
ACONVH: WORD CONVH < CONVERSION ASCI --> HEXA.
AMOVE: WORD MOVE < MOVE "MANUEL" !
AECH: WORD ECH < ECHANGE DE DEUX ZONES MEMOIRE.
ARAZ: WORD RAZ < RAZ ECRAN VISU (IMAGE RESIDENTE).
ARZ123: WORD RAZ123 < RAZ STACK RVB.
ACATAL: WORD CATAL < CATALOGAGE IMAGE COURANTE.
ASUPER: WORD SUPER < SUPERPOSITION DU SIGNAL INITIAL.
< FONCTIONS DE CALCUL DE U0 (CONDITION INITIALE).
AUDEX: DZS 1
AFUNI: WORD FUNIT < "UNITE".
AFUNI1: WORD FUNI1 < "UNITE 1".
AFTRIA: WORD FTRIAN < "TRIANGLE".
AFCLOC: WORD FCLOCH < "CLOCHE".
AFSIN: WORD FSIN < "SINUS PI*X".
<
ASIN: WORD SIN < S/P DE CALCUL DE SIN(X).
<
< DIVERS.
<
MASVI: ASCI "!ASSIGN B=VI"
VISU: BYTE 0;'04
FMASVI: EQU $
MASO: ASCI "!ASSIGN B="
BYTE "O";'04
FMASO: EQU $
MCLOS: ASCI "!CLOSE"
BYTE '04
FMCLOS: EQU $
<
REP: DZS 1 < ZONE REPONSE.
AXTRAV: WORD ZERO,X < RELAI DE TRAVAIL.
NETAP: DZS 1 < CONTIENT N : TRACER UNE ETAPE SUR N.
ISORVI: DZS 1 < INDICATEUR SORTIE VISU ACTIVE:
< = 0 : NON,
< = 1 : OUI.
ISORTV: DZS 1 < INDICATEUR SOTIE TV DEMANDEE :
< = 0 : NON,
< = 1 : OUI.
ICATAL: DZS 1 < INDICATEUR CATALOGAGE:
< = 0 : NE PAS CATALOGUER,
< = 1 : CATALOGUER SUR DKU.
ICATS: DZS 1 < INDICATEUR CATALOGAGE IMAGE SUPERPOSEE,
< = 0 / 1 : COMME 'ICATAL'
ISUPER: DZS 1 < INDICATEUR SUPERPOSITION DEMANDEE:
< = 0 : PAS DE SUPERPOSITION,
< = 1 : SUPERPOSITION.
CSUPER: DZS 1 < COULEUR DE L'IMAGE SUPERPOSEE :
< = 0,1,2,3 : RIEN,R,V,B.
IENV: DZS 1 < INDICATEUR MODE "ENVELOPPE":
< = 0 : NON,
< = 1 : OUI.
IOBSC: DZS 1 < INDICATEUR "OBSERVATEUR VITESSE C":
< = 0 : NON,
< = 1 : OUI.
NBENV: DZS 1 < UN SIGNAL SUR 'NBENV'.
ITRAV: DZS 1 < MOT DE TRAVAIL.
AINIDK: WORD INIDKU < ADRESSE INITIALE AUTORISEE SUR DKU.
NIMC: DZS 1 < NUMERO IMAGE COURANTE (POUR CATAL SGN).
IRAZ: DZS 1 < INDICATEUR RAZ AVANT VISUALISATION :
< = 0 : PAS DE RAZ,
< = 1 : RAZ.
TYPU: DZS 1 < INDICATEUR TYPE "UNITE":
< = 0 : TYPE "UNITE" OU "UNITE1",
< = 1 : TYPE "TRIANGLE","CLOCHE" OU "SIN".
IMETH: DZS 1 < METHODE UTILISEE:
< = 0 : LAX,
< = 1 : LAX-WENDROFF,
< = 2 : SCHEMA AUX CARACTERISTIQUES,
< =-1 : SAUTE-MOUTON.
IMODSM: DZS 1 < MODE EN SAUTE-MOUTON:
< = 0 : MODE NORMAL (NOTER QUE SI METHODE
< UTILISEE # SAUTE-MOUTON, ALORS
< 'IMODSM' = 0);
< = 1 : MODE "PERTURBATION2";
< =-1 : MODE "PERTURBATION4".
IMEMH: DZS 1 < INDICATEUR "MEMOIRE HAUTE" DANS
< LA CDA IMAGE:
< = 0 : NON,
< = 1 : OUI (MODE "AVEUGLE").
ALM3IM: WORD LIMAG*3 < LONGUEUR MOTS DE 3 IMAGES.
AXIM: WORD IMAG-1,X < POUR RAZ IMAGE.
AFTABL: WORD FTABLO < ADRESSE FIN TABLEAU.
<
< CONSTANTES ET VARIABLES FIXES ET FLOTTANTES ...
<
ZEROF: FLOAT 0.0
UN: FLOAT 1.0
UNDEMI: FLOAT 0.5
DEUX: FLOAT 2.0
TROIS: FLOAT 3.0
FDEUX: EQU DEUX
FQUATR: FLOAT 4.0
FSIX: FLOAT 6.0
FDIX: FLOAT 10.0
PI: FLOAT 3.1415926
TRAV: DZS LNF < ZONE DE TRAVAIL.
DELTAX: DZS LNF < DELTA X.
DELTAT: DZS LNF < DELAT T.
TC: DZS LNF < T COURANT.
NBETAP: DZS 1 < NOMBRE D'ETAPES.
MULX: DZS LNF < MULTIPLICATEUR X.
MULY: DZS LNF < MULTIPLICATEUR Y.
TX: DZS LNF < TRANSLATION EN X.
TXOBS: DZS LNF < TRANSLATION SUPPLEMENTAIRE EN X
< (SI L'OBSERVATEUR SE DEPLACE A LA
< LA VITESSE C; CF 'IOBSC').
TY: DZS LNF < TRANSLATION EN Y.
ETAPEC: DZS 1 < NUMERO DE L'ETAPE COURANTE (0,1,...).
GAMMA: DZS LNF < GAMMA=C*(DELTAT/DELTAX) AVEC C=1.
GAMMA2: DZS LNF < GAMMA AU CARRE.
< COEFFICIENTS A UTILISER.
C0: DZS LNF < COEFFICIENT "ZERO".
CM1: DZS LNF < COEFFICIENT "MOINS 1".
CP1: DZS LNF < COEFFICIENT "PLUS 1".
< COEFFICIENTS METHODE LAX.
COEFM1: DZS LNF < COEFFICIENT "MOINS 1" =
< 0.5 * (1+GAMMA).
COEFP1: DZS LNF < COEFFICIENT "PLUS 1" =
< 0.5 * (1-GAMMA).
< COEFFICIENTS LAX-WENDROFF.
A0: DZS LNF < A "ZERO".
AM1: DZS LNF < A "MOINS 1"
AP1: DZS LNF < A "PLUS 1".
< COEFFICIENTS SCHEMA AUX CARACTERISTIQUES.
B0: DZS LNF < B "ZERO".
BM1: EQU GAMMA < B "MOINS 1" = GAMMA.
< COEFFICIENTS SAUTE-MOUTON.
SM0: EQU UN < SM "ZERO".
SMM1: EQU GAMMA < SM "MOINS 1".
SMP1: DZS LNF < SM "PLUS 1" = (1-GAMMA).
EPS: DZS LNF < EPSILON ('IMODSM' # 0).
PERT: DZS LNF < COEFFICIENT "PERTURBATION 2/4".
< ZONES DE TRAVAIT SAUTE-MOUTON.
TRAV2: DZS 1
TRAV3: DZS 1
TRAV5: DZS 1
FTRAV4: DZS LNF
<
X: DZS LNF < X COURANT FLOTTANT.
Y: DZS LNF < Y COURANT FLOTTANT.
NBVU0: DZS 1 < NOMBRE DE VALEURS DE U ZERO.
XINIT: FLOAT 0.0 < X INITIAL.
<
DIX0: WORD 1 < DIX PUISSANCE ZERO.
DIX1: WORD 10 < ... 1.
DIX2: WORD 100 < ... 2.
DIX3: WORD 1000 < ... 3.
DIX4: WORD 10000 < ... 4.
DIX: EQU DIX1 < DIX.
C1024: WORD 1024 < POUR VALIDATIONS (X,Y).
<
AINF: WORD TABLO < ADRESSE INFERIEURE DES U (N-1).
ASUP: DZS 1 < ADRESSE SUPERIEURE DES U (N-1).
<
< DEMANDES A CMS5.
<
DMCLOS: WORD '0002 < !CLOSE.
WORD MCLOS-ZERO*2
WORD FMCLOS-MCLOS*2
DMASVI: WORD '0002 < !ASSIGN B=VIX.
WORD MASVI-ZERO*2
WORD FMASVI-MASVI*2
DMASO: WORD '0002 < !ASSIGN B=O.
WORD MASO-ZERO*2
WORD FMASO-MASO*2
DMREP: WORD '0101 < DEMANDE REPONSE 1 CARACTERE.
WORD REP-ZERO*2
WORD 1
AM: WORD M < POUR LE S/P 'ENVOI'.
DMOUT: WORD '0202 < ENVOI MESSAGE UL 2.
DZS 1
DZS 1
DMTRV: WORD '8A01 < TRACE VIDEO.
WORD ENTIM-ZERO*2
WORD FIMAG-ENTIM*2
WORD 0 < PAS DE VISUALISATION.
DMDIFF: WORD '8A01 < DIFFUSION IMAGE.
WORD IMAG-ZERO*2
WORD LIMAG*2
COUL: DZS 1 < COULEUR.
DMDIR: WORD '8A06 < ECRITURE DIRECTE SUR DKU.
DZS 1 < ADRESSE STACK RVB.
WORD '4000 < 2 COMPOSANTES (3EME = TIMING).
DZS 1 < ADRESSE SECTEUR QUANTA 3.
DMRR: WORD '8A01 < READ ROUGE.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD '40+1
DMWR: WORD '8A01 < WRITE ROUGE.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD 1
DMRV: WORD '8A01 < READ VERT.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD '40+2
DMWV: WORD '8A01 < WRITE VERT.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD 2
DMRB: WORD '8A01 < READ BLEU.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD '40+3
DMWB: WORD '8A01 < WRITE BLEU.
WORD IMAG-ZERO*2
WORD LIMAG*2
WORD 3
ALIMAG: WORD LIMAG < LONGUEUR MOTS IMAGE.
AIMAG: WORD IMAG < ADRESSE MOT IMAGE.
AOMH: WORD LIMAG*3*2 < ADRESSE OCTETS MEMOIRE HAUTE EN CDAI.
DMRAZ: WORD '0B05 < RAZ ECRAN VISU.
DMOG: WORD '0B03 < OPEN GRAPHIQUE.
COORD: EQU $ < COORDONNEES GRAPHIQUES.
Y1: DZS 1
X1: DZS 1
Y2: DZS 1
X2: DZS 1
DMTRGR: WORD '0B0A < TRACE GRAPHIQUE.
WORD COORD-ZERO*2
WORD 4*2
DMNBD: WORD '0101 < LECTURE NOMBRE DECIMAL.
WORD NBD-ZERO*2
WORD FNBD-NBD*2
AXNBD: WORD NBD,X < RELAI D'ACCES A CE NOMBRE.
DMGETM: WORD '0004 < DEMANDE MEMOIRE.
DZS 1 < INUTILISE.
WORD '8000 < 16 K MOTS.
DMREPH: WORD '0101 < DEMANDE NOMBRE HEXA.
WORD REPH-ZERO*2
WORD 4
DMCDAI: WORD '0002 < !CDAI.
WORD MCDAI-ZERO*2
WORD FMCDAI-MCDAI*2
<
TABSIN: DZS 2*LNF < TABLE POUR LE S/P 'SIN'.
PAGE
PROG
ENTRY: EQU $
LRM C,K < COMMON ET PILE.
WORD COM+'80
WORD PILE-1
<
BSR AINI < INITIALISATION.
BSR ARZ123 < RAZ EVENTUEL DES STACKS RVB.
BSR AVISUA < VISUALISATION SIGNAL INITIAL (ETAPE 0).
BSR ACATAL < CATALOGAGE EVENTUEL.
<
LX NBETAP < NOMBRE D'ETAPES.
LAX1: EQU $ < BOUCLE PRINCIPALE (VARIATION DE T
< PAR PAS DE DELTA T).
PSR X < SAVE COUNT.
FLD TC < T COURANT.
FAD DELTAT < + DELTA T.
FST TC < NOUVEAU T COURANT.
IC ETAPEC < NOUVEAU NUMERO D'ETAPE COURANTE.
BSR ACALC < CALCUL ETAPE COURANTE.
BSR AVISUA < VISUALISATION DES RESULTATS DE L'ETAPE.
BSR ASUPER < SUPERPOSITION (EVENTUELLE) SIGNAL INITIAL
BSR ACATAL < CATALOGAGE EVENTUEL.
PLR X < RECUPERATION COUNT.
JDX LAX1 < SUIVANT...
<
FIN: EQU $
LAD DMCLOS < !CLOSE.
SVC 0
WORD '1E16
JMP $-1 < PROGRAMME NON REUTILISABLE.
PAGE
XDOL2: VAL $-ZERO
$EQU ZERO+XDOL1
INI: EQU $
<
< I N I T I A L I S A T I O N S . ..
<
< CE SONT ESSENTIELLEMENT :
<
< - ASSIGNATION DE LA VISU SUR LAQUELLE SE FERA LE TRACE,
< - CHOIX DE LA SORTIE VIDEO,
< - CHOIX DE LA METHODE DE CALCUL,
< - CHOIX DU TYPE DE SIGNAL,
< - DELTA X, DELTA T,
< - CALCUL DES COEFFICIENTS GAMMA, COEFM1, COEFP1,
< - VALEURS DE LA FONCTION U A L'INSTANT 0,
< - VALEUR FINALE DE T,
< - PARAMETRES POUR LA VISUALISATION :
< - FACTEURS MULTIPLICATIFS EN X ET Y,
< - TRANSLATIONS EN X ET Y,
< - MISE A ZERO DU NUMERO DE L'ETAPE COURANTE ('ETAPEC'),
< - ...
<
< DEMANDE DE MEMOIRE.
LAD DMGETM
SVC 0
JE $+2
WORD '1E16
< CHOIX DE LA SORTIE VISU.
LAD DMCLOS < !CLOSE A PRIORI.
SVC 0
INI0: EQU $
STZ ISORVI < SORTIE VISU = NON A PRIORI.
LAI MSORVI-M
BSR AQREP < QUESTION / REPONSE.
CPI "N"
JE INI2 < NON.
CPI "O"
JNE INI0 < REPONSE INCORRECTE.
IC ISORVI < SORTIE VISU.
INI1: EQU $
LAD DMCLOS < !CLOSE.
SVC 0
LAI MVISU-M < PROPOSITION.
BSR AQREP < QUESTION / REPONSE.
CPI '04
JE INI11 < ASSIGNER L'OUTPUT.
CPI '0D
JE INI11 < ASSIGNER L'OUTPUT.
STBY VISU < VISU A ASSIGNER.
LAD DMASVI < !ASSIGN B=VIX.
SVC 0
JNE INI1
JMP INI2
INI11: EQU $
LAD DMASO < !ASSIGN B=O.
SVC 0
INI2: EQU $
< CHOIX DE LA SORTIE TV.
STZ ISORTV < SORTIE TV = NON A PRIORI.
STZ COUL < PAS DE COULEUR A PRIORI.
STZ ICATAL < PAS DE CATALOGAGE A PRIORI.
LAI MTV-M < PROPOSITION.
BSR AQREP < QUESTION / REPONSE.
CPI "N"
JE INI3 < PAS DE TV.
CPI "O"
JNE INI2 < REPONSE INCORRECTE.
LAI 2 < SIGNAL CALCULE TOUJOURS DANS STACK VERT.
STA COUL
IC ISORTV < OPTION TV ACTIVE.
STZ IMEMH < A PRIORI, MODE NON-AVEUGLE.
STZ DMDIR+1 < IDEM.
LAD DMCDAI < FAIRE DE TOUTES FACONS !CDAI.
SVC 0
JE $+2
ACTD
<
< CHOIX DE L'OPTION CATALOGAGE.
<
INI7: EQU $
< 'ICATAL' DEJA INITIALISE.
LAI MCATAL-M
BSR AQREP < QUESTION / REPONSE.
CPI "N"
JE INI3 < NON.
CPI "O"
JNE INI7 < REPONSE INCORRECTE.
IC ICATAL < INDICATEUR CATAL = OUI.
INI74: EQU $
< PROPOSER LA GENERATION EN MEMOIRE HAUTE DE LA CDAI.
LAI MMEMH-M
BSR AQREP
CPI "N"
JE INI73
CPI "O"
JNE INI74
IC IMEMH < MEMOIRE HAUTE.
LA AOMH < ADRESSE OCTETS POUR DEMANDE D'ECHANGE
STA DMDIR+1 < DIRECT AVEC DKU.
INI73: EQU $
LAI MAINIT-M
BSR AENVOI
LAD DMREPH < REPONSE = ADRESSE SECTEUR EN HEXA.
SVC 0
LA DMREPH+1 < ADRESSE OCTET REPONSE.
BSR ACONVH < 'A' <-- ADRESSE EN BINAIRE...
JNE INI73 < REPONSE INCORRECTE.
STA DMDIR+3 < IDEM POUR ECRITURE DIRECTE.
SLRS 12 < POUR VALIDATION.
CPI VALIDA
JL INI73 < INVALIDE...
INI3: EQU $
<
< CHOIX DE LA METHODE DE CALCUL.
<
STZ IMETH < LAX A PRIORI.
STZ IMODSM < A PRIORI.
LAI MMETH-M
BSR AQREP
CPI "L"
JE INIH < LAX.
CPI "W"
JE INIJ < LAX-WENDROFF.
CPI "C"
JE INIM < SCHEMA AUX CARACTERISTIQUES.
CPI "S"
JNE INI3 < REPONSE INCORRECTE.
DC IMETH < SAUTE-MOUTON.
INI30: EQU $
< EN SAUTE-MOUTON, ON A 3 MODES: NORMAL, PERTURBATION2 ET PERTURBATION4.
LAI MPERT-M < CHOIX DU MODE.
BSR AQREP
CPI "N"
JE INI32
CPI "2"
JE INI33
CPI "4"
JNE INI30
DC IMODSM < MODE PERTURBATION4.
JMP INI31
INI33: EQU $
IC IMODSM < MODE PERTURBATION2.
INI31: EQU $
< DEMANDER EPSILON (SOUS FORME NUMERATEUR / DENOMINATEUR).
LAI MEPS-M
BSR AQREPN
PSR A < NUMERATEUR.
LAI MSLASH-M
BSR AQREPN
FLT
FST FTRAV4 < DENOMINATEUR.
PLR A
FLT
FDV FTRAV4
FST EPS
INI32: EQU $
JMP INIH
INIM: EQU $
LAI 2
STA IMETH < SCHEMA AUX CARACTERISTIQUES.
JMP INIH
INIJ: EQU $
IC IMETH < LAX-WENDROFF.
INIH: EQU $
<
< CHOIX DE DELTA X.
<
LAI MDX-M < PROPOSITION.
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
STA NBVU0
IC NBVU0 < NOMBRE DE VALEURS DE U ZERO.
CPI NMVU0 < VALIDATION.
JGE INIH < DELTAX TROP PETIT !
FLT
FST DELTAX
FLD UN
FDV DELTAX
FST DELTAX < DELTA X.
<
< CHOIX DE DELTA T.
<
LAI MDT-M < PROPOSITION.
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
FLT
FST DELTAT
FLD UN
FDV DELTAT
FST DELTAT < DELTA T.
<
< CHOIX DE L'OPTION "DIRAC".
<
INIQ: EQU $
LAI MDIRAC-M
BSR AQREP
CPI "N"
JE INI8
CPI "O"
JNE INIQ
LAI 2
STA NBVU0 < DEUX VALEURS DE U0.
FLD UN < CETTE VALEUR ETANT 1/DELTAX.
FDV DELTAX
LRM W
WORD TABLO
FST 0,W < ET VOILA, EVIDEMMENT, LA QUESTION DU
FST LNF,W
JMP INIB < TYPE DE SIGNAL NE SE POSE PAS...
<
< ACQUISITION OU GENERATION DES 'NBVU0' VALEURS DE U0.
<
INI8: EQU $
STZ TYPU < TYPE "UNITE" OU "UNITE1" A PRIORI.
LAI MTYPS-M < PROPOSITION TYPE DE SIGNAL.
BSR AQREP
CPI "U"
JE INIU
CPI "V"
JE INIV
CPI "T"
JE INIT
CPI "C"
JE INICL
CPI "S"
JNE INI8
< TYPE "SINUS PI * X ".
IC TYPU < TYPE "TRIANGLE","CLOCHE" OU "SIN".
LA AFSIN
JMP INI9
INICL: EQU $
< TYPE "CLOCHE".
IC TYPU < TYPE "CLOCHE","TRIANGLE" OU "SIN".
LA AFCLOC
JMP INI9
< TYPE "TRIANGLE".
INIT: EQU $
IC TYPU < TYPE "TRIANGE","CLOCHE" OU "SIN".
LA AFTRIA
JMP INI9
< TYPE "UNITE 1".
INIV: EQU $
LA AFUNI1
JMP INI9
< TYPE "UNITE".
INIU: EQU $
LA AFUNI
INI9: EQU $
STA AUDEX < RELAI DU SP DE CALCUL DE U(X).
LX NBVU0 < NOMBRE DE VALEURS A GENERER.
FLD ZEROF
FST X < X COURANT.
LRM W < ADRESSE COURANTE DE STOCKAGE.
WORD TABLO
INI5: EQU $ < BOUCLE DE CALCUL.
FLD X < X COURANT.
BSR AUDEX < RENVOIE 'A','B' = U(X)
FST 0,W < STOCKAGE.
ADRI LNF,W
FLD X
FAD DELTAX
FST X < NOUVEL X COURANT.
JDX INI5
<
< NOMBRE D'ETAPES...
<
INIB: EQU $
LAI MNETAP-M < PROPOSITION.
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
JALE INIB < CE NOMBRE DOIT ETRE > 0.
STA NBETAP < NOMBRE D'ETAPES.
<
< T COURANT INITIAL.
<
FLD ZEROF
FST TC < T COURANT INITIAL.
<
< ETAPE COURANTE = 0.
<
STZ ETAPEC
<
< PARAMETRES DE VISUALISATION.
<
LAI MVIS-M
BSR AENVOI
INIC1: EQU $
<
< OBSERVATEUR A LA VITESSE C ...
<
STZ IOBSC < OPTION INACTIVE A PRIORI.
LAI MOBSC-M
BSR AQREP
CPI "N"
JE INIC
CPI "O"
JNE INIC1
IC IOBSC < OPTION ACTIVE...
INIC: EQU $
<
< CHOIX DE LA SUPERPOSITION.
<
STZ ISUPER < PAS DE SUPERPOSITION A PRIORI.
STZ CSUPER < NI DE COULEUR DE SUPERPOSITION,
STZ ICATS < NI DE CATALOGAGE DE SUPERPOSITION.
LAI MSUPER-M
BSR AQREP < QUESTION / REPONSE.
CPI "N"
JE INID
CPI "O"
JNE INIC < REPONSE INCORRECTE.
LAI 1 < SIGNAL SUPERPOSE TOUJOURS DANS ROUGE.
IC ISUPER < SUPERPOSITION = OUI.
CPZ ISORTV < TEST TV ACTIVE.
JE $+2 < SI NON, PAS DE COULEUR DE SUPERPOSITION.
STA CSUPER < COULEUR DE LA SUPERPOSITION.
< REMPLIR 'VINIT', VALEURS INITIALES DE U0 POUR LE S/P 'SUP'.
LA NBVU0
SLLS 1
LR A,X < LONGUEUR.
LRM A,B
WORD TABLO < EMETTEUR.
WORD VINIT < RECEPTEUR.
MOVE
< FAUT-IL CATALOGUER LES IMAGES DE SUPERPOSITION ?
CPZ ISORTV < TEST TV ACTIVE.
JE INID
INIE: EQU $
LAI MCATS-M
BSR AQREP < QUESTION / REPONSE.
CPI "N"
JE INID
CPI "O"
JNE INIE
LA ICATAL < OUI, MEME OPTION QUE POUR ...
STA ICATS < ... LES IMAGES "PRIMAIRES"
INID: EQU $
<
< FACTEUR MULTIPLICATIF EN X.
<
LAI MMULX-M
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
FLT
FST MULX
<
< FACTEUR MULTIPLICATIF EN Y.
<
LAI MMULY-M
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
FLT
FST MULY
<
< TRANSLATION EN X.
<
LAI MTX-M
BSR AQREPN
FLT
FST TX
<
< TRANSLATION EN Y.
<
LAI MTY-M
BSR AQREPN
FLT
FST TY
<
< CALCUL DES COEFFICIENTS GAMMA, COEFFICIENT "MOINS 1", COEFFICIENT "PLUS 1".
<
FLD DELTAT
FDV DELTAX
FST GAMMA < GAMMA = DELTAT / DELTAX.
FMP GAMMA
FST GAMMA2 < GAMMA ** 2.
<
FLD UN
FAD GAMMA
FST COEFM1
FLD UNDEMI
FMP COEFM1
FST COEFM1 < COEFM1 = (1/2) * (1+GAMMA).
<
FLD UN
FSB GAMMA
FST B0 < B "ZERO" = (1-GAMMA); SCHEMA AUX
< CARACTERISTIQUES.
FST COEFP1
FLD UNDEMI
FMP COEFP1
FST COEFP1 < COEFP1 = (1/2) * (1-GAMMA).
<
< CALCUL DES COEFFICIENTS A "ZERO", A "MOINS 1", A "PLUS 1".
<
FLD UN
FSB GAMMA2
FST A0 < A0 = (1-GAMMA**2).
<
FLD UNDEMI
FMP GAMMA
FST AM1
FST AP1
FLD UNDEMI
FMP GAMMA2
FST TRAV
FAD AM1
FST AM1 < AM1 = ((1/2)*GAMMA)+((1/2)*GAMMA**2).
FLD TRAV
FSB AP1
FST AP1 < AP1 =-((1/2)*GAMMA)+((1/2)*GAMMA**2).
<
< DEFINITION DES COEFFICIENTS A UTILISER.
<
LA IMETH < METHODE UTILISEE.
JAE INIK < LAX.
CPI 1
JE ININ < LAX-WENDROFF.
CPI 2
JE INIP < SCHEMA AUX CARACTERISTIQUES.
< SAUTE-MOUTON.
FLD ZEROF
FSB GAMMA
FST SMP1 < SM "PLUS 1" = -GAMMA.
< NOTER QUE SM0 ET SMM1 VALENT RESPECTI-
< VEMENT 1 ET GAMMA.
CPZ IMODSM < TEST DU MODE SAUTE-MOUTPON.
JE INI35
< SAUTE-MOUTON, MODE PERTURBATION: CALCULER LE COEFF DE PERTURBATION.
FLD GAMMA
FMP EPS
CPZ IMODSM
JG INI34
FNEG
INI34: EQU $
FST PERT
INI35: EQU $
<
< REMARQUE: POUR L'INSTANT, ON FAIT COMME
< SI LA METHODE ETAIT LAX-WENDROFF,
< ET CE N'EST QU'A L'ETAPE 2 QUE L'ON
< BASCULERA SUR LES COEFFICIENTS SAUTE-
< MOUTON.
JMP ININ < FAIRE COMME SI...
< SCHEMA AUX CARACTERISTIQUES.
INIP: EQU $
FLD GAMMA
FST CM1
FLD B0
FST C0
FLD ZEROF
FST CP1
JMP INIL
< LAX - WENDROFF.
ININ: EQU $
FLD A0
FST C0
FLD AP1
FST CP1
FLD AM1
FST CM1
JMP INIL
< LAX TOUT COURT.
INIK: EQU $
FLD COEFM1
FST CM1
FLD COEFP1
FST CP1
FLD ZEROF < COEF ZERO = 0.
FST C0
INIL: EQU $
<
< TRACER UNE ETAPE SUR ...
<
LAI MTR-M
BSR AQREPN < QUESTION / REPONSE NB DECIMAL.
STA NETAP < UNE SUR 'NETAP'.
<
< CHOIX DE L'OPTION RAZ.
<
INI6: EQU $
LAI MRAZ-M
BSR AQREP < QUESTION / REPONSE.
STZ IRAZ < RAZ = NON A PRIORI.
CPI "N"
JE INI4 < NON.
CPI "O"
JNE INI6 < REPONSE INCORRECTE.
IC IRAZ < OPTION ACTIVE.
INI4: EQU $
<
< CHOIX DE "ENVELOPPE".
<
STZ IENV < MODE "ENVELOPPE" = NON A PRIORI.
LAI MENV-M
BSR AQREP
CPI "N"
JE INIG
CPI "O"
JNE INI4
IC IENV < MODE "ENVELOPPE" = OUI.
LAI MNBENV-M
BSR AQREPN
MP NETAP
STB NBENV < ON PRENDRA UN SIGNAL SUR 'NBENV'
< POUR FAIRE L'ENVELOPPE.
INIG: EQU $
LRM A < POUR LES MESSAGES IMPLANTES EN MEMOIRE
WORD M2 < HAUTE A ENVOYER PAR LE S/P ENVOI.
STA AM
RSR
PAGE
<
< R O U T I N E S D E C A L C U L D E S U 0 ( X ).
<
< ARGUMENTS:
< 'A'-'B' = X COURANT FLOTTANT (0<=X<=1).
< 'W' BASE LE U0 COURANT (QUI EST UTILISABLE COMME
< DOUBLE-MOT DE TRAVAIL.
<
< RESULTAT:
< 'A'-'B' = U0(X).
<
< FONCTION "UNITE".
FUNIT: EQU $
FLD UN
RSR
< FONCTION "UNITE 1".
FUNI1: EQU $
FCAZ
JV FUNI11
LR X,A < IL VAUT MIEUX TESTER REGISTRE 'X' A 1
< PLUTOT QUE 'A'-'B' = UN FLOTTANT, CAR
< IL SE PEUT QUE CETTE DERNIERE CONDITION
< NE SOIT JAMAIS EXACTEMENT REMPLIE (PAR
< EXEMPLE, SI DELTAX = 1/6 ....!).
CPI 1
JNE FUNIT
FUNI11: EQU $ < X=0 OU X=1, U0(X)=1/2.
FLD UNDEMI
RSR
< FONCTION "TRIANGLE".
FTRIAN: EQU $
FCAM UNDEMI
JNCV FTRI1
FMP DEUX < X < 1/2 --> U0(X) = 2X.
RSR
FTRI1: EQU $
FMP DEUX
FST 0,W
FLD DEUX
FSB 0,W < X >= 1/2 --> U0(X) = 2 (1-X).
RSR
< FONCTION "CLOCHE".
FCLOCH: EQU $
FCAM UNDEMI
JNCV FCL1
< X <= 1/2 --> FAIRE X <-- 2X.
FMP DEUX
JMP FCL2
< X > 1/2 --> FAIRE X <-- 2(1-X).
FCL1: EQU $
FMP DEUX
FST 0,W
FLD DEUX
FSB 0,W
FCL2: EQU $
< FAIRE : U0(X) = -2*X**3 + 3X**2.
FST 0,W
FMP 0,W
FST TRAV < X AU CARRE.
FMP 0,W
FMP DEUX
FST 0,W < 2*X**3
FLD TROIS
FMP TRAV < 3*X**2.
FSB 0,W < -2*X**3 + 3*X**2.
RSR
< FONCTION "SINUS PI * X".
FSIN: EQU $
FMP PI < PI * X.
FST TABSIN < POUR LE S/P 'SIN'.
LAD TABSIN < ADRESSE ARGUMENT.
BSR ASIN
FLD TABSIN+LNF < 'A'-'B' = SIN (PI * X).
RSR
PAGE
<
< 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
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
PAGE
CVAD: EQU $
<
< C O N V E R S I O N E N B I N A I R E D A N S ' A '
<
< D ' U N N O M B R E D E C I M A L S A I S I E N A S C I.
<
< ARGUMENTS:
< - 'A' = ADRESSE MOT DE LA CHAINE DE CARACTERES ASCI
< TERMINEE PAR <EOT> OU <RETURN> ET DE LONGUEUR
< MAXIMUM 6 OCTETS.
<
< RESULAT:
< - AU RETOUR, FAIRE:
< JE OK < 'A' = NOMBRE EN BINAIRE.
< JNE ERREUR < NOMBRE INCORRECT.
<
PSR B,X,Y,W < SAUVEGARDES.
<
LR A,B < 'B' = ADRESSE DEBUT ZONE POUR SBS.
LAI '0D < CARACTERE A RECHERCHER.
LXI 0 < RANG DU PREMIER CARACTERE.
LYI FNBD-NBD*2 < NOMBRE D'OCTETS DE LA ZONE.
IF FNBD-NBD*2-6,XWOR%,XWOR%,
IF E R R E U R : 'NBD' TROP LONG.
XWOR%: VAL 0
SBS < SEARCH '0D.
JNC CVAD1 < '0D EXISTE.
LXI FNBD-NBD*2 < '0D N'EXISTE PAS.
CVAD1: EQU $
PSR X
LAI '04 < CHERCHONS AUSSI '04.
LXI 0
SBS < SEARCH '04.
JNC CVAD7 < '04 EXISTE.
LXI FNBD-NBD*2 < '04 N'EXISTE PAS.
CVAD7: EQU $
< NOUS ALLONS PRENDRE LE MIN DES INDEX '0D ET '04; SI CE MIN VAUT
< FNBD-NBD*2, ALORS C'EST QUE NI '0D NI '04 N'EXISTENT...
PLR A
CPR X,A
JLE CVAD3
LR X,A
CVAD3: EQU $
LR A,X < CE SERA FAIT...
CPI FNBD-NBD*2
JE CVAD2 < NI '0D NI '04, ERREUR.
JAE CVAD4 < REPONSE VIDE, 0 SUPPOSE.
< REPONSE NON VIDE, CONVERSION DECIMAL --> BINAIRE.
LYI 0 < NOMBRE COURANT.
LRM W
WORD DIX0 < 'W' BASE LES PUISSANCES DE DIX.
CVAD5: EQU $
ADRI -1,X < CHIFFRE SUIVANT (DE DROITE A GAUCHE).
LBY &AXNBD < CRACTERE COURANT.
ADRI -"0",A
JAL CVAD2 < ERREUR.
CPI 9
JG CVAD2 < ERREUR.
MP 0,W < CHIFFRE COURANT * 10 PUISSANCE COURANTE.
ADR B,Y < NOUVEAU NOMBRE COURANT.
ADRI 1,W < PISSANCE DE DIX SUIVANTE.
CPZR X
JG CVAD5 < AU SUIVANT.
LR Y,A < 'A' = NOMBRE EN BINAIRE.
CVAD4: EQU $
LBI 0 < OK.
JMP CVAD6
CVAD2: EQU $
LBI 1 < ERREUR.
CVAD6: EQU $
CPZR B < POUR TEST AU RETOUR.
PLR B,X,Y,W < RESTAURATIONS.
RSR
PAGE
QREPN: EQU $
<
< E N V O I Q U E S T I O N E T D E M A N D E V A L I D A T I O N
<
< E T C O N V E R S I O N D E L A R E P O N S E Q U I
<
< D O I T E T R E U N N O M B R E D E C I M A L.
<
< ARGUMENT:
< 'A' = ARGUMENT D'APPEL POUR LE S/P 'ENVOI'.
<
< RESULTAT:
< 'A' = NOMBRE VALIDE, CONVERTI EN BINAIRE.
<
PSR X,Y < SAUVEGARDES.
<
LR A,Y < SAVE ARGUMENT D'APPEL S/P ENVOI.
QREPN1: EQU $
BSR AENVOI < ENVOI QUESTION.
LAD DMNBD < LECTURE REPONSE (NB DECIMAL).
SVC 0
LRM A < ADRESSE ZONE REPONSE.
WORD NBD
BSR ACVAD < CONVERSION EN BINAIRE DANS 'A'.
JE QREPN2 < REPONSE CORRECTE (CONVERSION OK).
LR Y,A < REPONSE INCORRECTE, RECOMMENCER...
JMP QREPN1
QREPN2: EQU $
PLR X,Y < RESTAURATIONS.
RSR
PAGE
QREP: EQU $
<
< E N V O I Q U E S T I O N E T D E M A N D E R E P O N S E
<
< LA REPONSE EST DE 1 CARACTERE (PAR EXEMPLE
< OUI/NON).
<
< ARGUMENT:
< 'A' = ARGUMENT D'APPEL DU S/P ENVOI POUR
< POSER UNE QUESTION.
<
< RESULTAT:
< 'A' ( 8-15 ) = REPONSE.
<
PSR X
BSR AENVOI < ENVOI QUESTION
LAD DMREP < DEMANDE REPONSE
SVC 0
LBY REP < CHARGEMENT REPONSE DANS 'A'.
PLR X
RSR
PAGE
<
< CONVERSION EN BINAIRE D'UN NOMBRE HEXADECIMAL SAISI
< EN ASCI (PAR EXEMPLE, NUMERO DE SECTEUR)
<
< ARGUMENTS:
< 'A' = ADRESSE OCTET DES 4 CARACTERES ASCI
<
< RESULTAT:
< 'A' = NOMBRE EN BINAIRE, A VALIDER EN FAISANT AU RETOUR:
< JE OK OU
< JNE ERREUR
<
CONVH: EQU $
PSR B,X,Y,W < SAUVEGARDES
LR A,Y < Y = ADRESSE CARACTERE EN COURS
LXI 4 < INIT COUNT
CONVH1: EQU $
LR X,W < SAUVEGARDE COUNT
LR Y,X < INDEX CARACTERE
LBY &AXTRAV < CARACTERE
CPI "0"
JL CONVH3 < ERREUR
CPI "9"
JLE CONVH2
CPI "A"
JL CONVH3 < ERREUR
CPI "F"
JG CONVH3 < ERREUR
ADRI -7,A
CONVH2: EQU $
ADRI -'30,A
SLLS 12
SCLD 4 < CHIFFRE HEXA DANS 'B'
ADRI 1,Y < CARACTERE SUIVANT
LR W,X < RESTAURATION COUNT
JDX CONVH1 < AU SUIVANT
<
SLLD 16 < CONVERSION OK
JMP CONVH9
<
CONVH3: EQU $
LBI 1 < ERREUR
CONVH9: EQU $
CPZR B < POUR TEST AU RETOUR.
PLR B,X,Y,W < RESTAURATIONS
RSR
XDOL1: VAL $-ZERO
IF FIMAG-ZERO-XDOL1,,,XWOR%
IF E R R E U R (RECOUVREMENT TROP LONG).
XWOR%: VAL 0
$EQU ZERO+XDOL2
PAGE
CALCUL: EQU $
<
< C A L C U L S D E S V A L E U R S D E U A
<
< L ' E T A P E C O U R A N T E ' E T A P E C '.
<
LA ETAPEC
JAG $+2
ACTD
CPI 1
JE CAL1
CPZ IMETH < TEST METHODE.
JGE $+2
BSR ASP1SM < SAUTE-MOUTON.
<
< ETAPE 2 ET SUIVANTES : IL FAUT ECRASER DANS 'TABLO' LES RESULTATS DE L'ETAPE
< N-2 PAR CEUX DE L'ETAPE N-1, DE TELLE FACON QUE 'TABLO' NE CONTIENNE
< JAMAIS DE RESULTATS PLUS ANCIENS QUE CEUX DE L'ETAPE N-1.
<
LRM B
WORD TABLO < ZONE RECEPTRICE ( A ECRASER...).
<
LA ETAPEC
ADRI -1,A
SLLS 1
AD NBVU0
SLLS 1
LR A,X < LONGUEUR MOTS A TRANSFERER (LONGUEUR
< MOTS DES RESULTATS DE L'ETAPE (N-1).
<
ADRI -2*LNF,A
ADR B,A < ADRESSE ZONE EMETTRICE (RESULTATS DE
< L'ETAPE (N-1).
BSR AMOVE < MOVE "MANUEL" ! (A CAUSE DES
< RECOUVREMENTS!).
CPZ IMETH < TEST METHODE.
JGE $+2
BSR ASP2SM < SAUTE-MOUTON.
CAL1: EQU $
LA ETAPEC
ADRI -1,A
SLLS 1
AD NBVU0
SLLS 1
LRM W
WORD TABLO
ADR A,W < 'W' = ADRESSE DE STOCKAGE DANS 'TABLO'
< DU PREMIER RESULTAT U(J,N) DE L'ETAPE
< COURANTE N ('ETAPEC').
LR W,A
CP AFTABL < TEST DEPASSEMENT DU TABLEAU.
JL CAL7
LAI MESPM-M2 < ESPACE MEMOIRE INSUFFISANT.
BSR AENVOI
WORD '1E16
CAL7: EQU $
LAD -LNF,W
STA ASUP < ADRESSE SUPERIEURE DES RESULTATS DE
< L'ETAPE (N-1).
<
LRM L < POUR ACCEDER AU RESULTATS DE L'ETAPE
WORD TABLO-LNF < (N-1).
LA ETAPEC
SLLS 1
AD NBVU0
LR A,X < NOMBRE DE RESULTATS A CALCULER A
< L'ETAPE COURANTE.
CAL2: EQU $
CPZ IMETH < TEST METHODE.
JGE CAL21
FLD 0,W < C'EST SAUTE-MOUTON, SAUVER U(J,(N-2)).
CPZ IMODSM
JE CAL23
FLD &TRAV5 < MODE PERTURBATION...
CAL23: EQU $
FST FTRAV4
CAL21: EQU $
LAD -LNF,L < ADRESSE DE L'ELEMENT U((J-1),(N-1)).
CP AINF < VALIDATION.
JGE CAL3
FLD ZEROF < INEXISATNT, DONC ON PREND ZERO.
JMP CAL4
CAL3: EQU $
FLD -LNF,L < U((J-1),(N-1)).
CAL4: EQU $
FMP CM1
FST 0,W < COEFM1 * U((J-1),(N-1)).
<
LAD 0,L < ADRESSE ELEMENT U(J,(N-1)).
CP ASUP
JG CAL9
CP AINF
JL CAL9
FLD 0,L < L'ELEMENT EXISTE.
JMP CALA
CAL9: EQU $
FLD ZEROF < ELEMENT INEXISTANT, PRENDRE 0.
CALA: EQU $
CPZ IMETH < TEST METHODE.
JGE CAL22
PSR A < C'EST SAUTE-MOUTON.
LA ETAPEC
CPI 2 < TEST NUMERO ETAPE COURANTE.
PLR A
JL CAL22 < ON FAIT ENCORE COMME SI LAX-WENDROFF...
FLD FTRAV4 < PRENDRE U(J,(N-2)).
CAL22: EQU $
FMP C0 < COEF 0 * U(J,(N-1)) OU, SI SAUTE-
< MOUTON : C0 * U(J,(N-2)).
FAD 0,W
FST 0,W < CUMUL.
LAD LNF,L < ADRESSE DE L'ELEMENT U((J+1),(N-1)).
CP ASUP < VALIDATION.
JLE CAL5
FLD ZEROF < INEXISTANT, DONC ON PREND ZERO.
JMP CAL6
CAL5: EQU $
FLD LNF,L < U((J+1),(N-1)).
CAL6: EQU $
FMP CP1 < COEFP1 * U((J+1),(N-1)).
FAD 0,W
FST 0,W < U (J,N).
<
ADRI LNF,W < SUIVANT ...
ADRI LNF,L < SUIVANT ...
LR W,A
CP AFTABL < TEST DEPASSEMENT DU TABLEAU.
JL CAL8
LAI MESPM-M2 < ESPACE MEMOIRE INSUFFISANT.
BSR AENVOI
WORD '1E16
CAL8: EQU $
< ICI, SI L'ON EST EN MODE SAUTE-MOUTON-PERTURBATION ET QUE ETAPE COURANTE
< EST >= 2, ALORS ON CALCULE ET UN RAJOUTE A U(J,N) LE TERME DE PERTURBATION
< QUI DOIT AVOIR POUR EFFET D'ADOUCIR LES OSCILLATIONS...
CPZ IMODSM
JE CAL81
LA ETAPEC
CPI 2
JL CAL81
PSR W < SAVE W COURANT.
LA TRAV5
LR A,W < ADRESSE DE U(J,(N-2)).
ADRI LNF,A < CE SERA FAIT...
STA TRAV5
CPZ IMODSM
JL CAL82
< MODE PERTURBATION2.
FLD FDEUX
FMP 0,W
FNEG
FAD -LNF,W
FAD LNF,W
FMP PERT
JMP CAL83
CAL82: EQU $
< MODE PERTURBATION4.
FLD -LNF,W
FAD LNF,W
FMP FQUATR
FST FTRAV4
FLD FSIX
FMP 0,W
FSB FTRAV4
FAD LNF*2,W
FAD -LNF*2,W
FMP PERT
CAL83: EQU $
PLR W < RESTAURATION W.
FAD -LNF,W < ET MISE A JOUR DE U(J,N)...
FST -LNF,W < ... SACHANT QUE 'W' AVAIT DEJA ETE
< INCREMENTE.
CAL81: EQU $
JDX CAL2 < SUIVANT ...
<
< CALCUL DE LA TRANSLATION 'TXOBS' (LIEE AU DEPLACEMENT DE L'OBSERVATEUR).
FLD ZEROF < 0 A PRIORI.
CPZ IOBSC < OPTION ACTIVE?
JE VIS7
LA ETAPEC
FLT
FMP DELTAT
FNEG
VIS7: EQU $
FST TXOBS
RSR
PAGE
SP1SM: EQU $
<
< S A U T E - M O U T O N S / P 1.
<
< BASCULEMENT EVENTUEL DES COEFFICIENTS (LAX-WENDROFF --> SAUTE-M),
< ET PROTECTION DES RESULTATS DE L'ETAPE N-2.
<
< ARGUMENT:
< 'A' = ETAPE COURANTE (DE PLUS, 'A' > 1 !!!!).
<
< ATTENTION:
< SI METHODE SAUTE-MOUTON-PERTURBATION, ALORS ON PROTEGE
< LES RESULTATS DE L'ETAPE (N-2) UN PEU PLUS LOIN, ET
< ENCADRES DE SUFFISAMMENT DE ZEROS.
<
CPI 2
JG SP1SM1
< ETAPE 2, BASCULER SUR LES COEFFICIENTS SAUTE-MOUTON.
FLD SM0
FST C0
FLD SMM1
FST CM1
FLD SMP1
FST CP1
SP1SM1: EQU $
< LONGUEUR MOTS A PROTEGER.
LA ETAPEC
ADRI -2,A
SLLS 1
AD NBVU0
SLLS 1 < 2((ETAPEC-2)*2+NBVU0).
LR A,X < 'X' = LONGUEUR.
STX TRAV3 < POUR TOUT A L'HEURE...
< ADRESSES EMETTRICE ET RECEPTRICE.
LRM B
WORD TABLO
<
LA ETAPEC
SLLS 1
ADRI -3,A
AD NBVU0
SLLS 2 < 4(2*ETAPEC-3+NBVU0).
ADR B,A < ADRESSE DE SAUVEGARDE.
XR A,B < 'A' = EMETTRICE, 'B' = RECEPTRICE.
STB TRAV2 < POUR TOUT A L'HEURE...
CPZ IMODSM
JE SP1SM2
< MODE SATUTE-MOUTON-PERTURBATION.
ADRI 4*LNF,B < SAUVER L'ETAPE (N-2) PLUS LOIN...
LR B,W
PSR A
FLD ZEROF
LXI 4 < METTRE 4 ZEROS FLOTTANTS.
SP1SM3: EQU $
FST 0,W
ADRI LNF,W
JDX SP1SM3
<
PLR A < ORIGINE.
LR W,B < DESTINATION.
LX TRAV3 < LONGUEUR.
MOVE
ADRI -2*LNF,W
LR W,A
STA TRAV5 < POUR LES CALCULS.
LR B,A
AD TRAV3
LR A,W
FLD ZEROF
LXI 4 < METTRE 4 ZEROS FLOTTANTS EN QUEUE.
SP1SM4: EQU $
FST 0,W
ADRI LNF,W
JDX SP1SM4
JMP SP1SMF
SP1SM2: EQU $
MOVE < PROTECTION. SI L'ON TRAPPE, TANT PIS.
SP1SMF: EQU $
RSR
<
<
SP2SM: EQU $
<
< S A U T E - M O U T O N S / P 2.
<
< PLACER LES RESULTATS DE ETAPE N-2 ENCADRES A GAUCHE ET A DROITE
< PAR DEUX FOIS DEUX NOMBRE NULS, A L'EMPLACEMENT DE TABLO DESTINE A
< RECEVOIR LES RESULTATS DE L'ETAPE COURANTE.
<
< ARGUMENTS:
< - 'A' + 2*LNF = ADRESSE IMPLANTATION RESULT. ETAPE COURANTE
< - 'TRAV2' = ADRESSE ZONE DE SAUVEGARDE ETAPE N-2.
< - 'TRAV3' = LONGUEUR DE CETTE ZONE DE SAUVEGARDE.
<
< ATTENTION:
< SI SAUTE-MOUTON-PERTURBATION, NE RIEN FAIRE DANS CE S/P.
<
CPZ IMODSM
JNE SP2SMF
ADRI 2*LNF,A
PSR A < ADRESSE RESULT. ETAPE COURANTE.
LR A,W
FLD ZEROF < METTRE 0.0, 0.0
FST 0,W
ADRI LNF,W
FST 0,W
PLR B
ADRI 2*LNF,B < ADRESSE ZONE RECEPTRICE.
LA TRAV2 < ADRESSE ZONE EMETTRICE.
LX TRAV3 < LONGUEUR.
BSR AMOVE < MOVE "MANUEL" (RECOUVREMENTS !).
LR B,W
ADR X,W < METTRE 0.0, 0.0
FLD ZEROF
FST 0,W
ADRI LNF,W
FST 0,W
SP2SMF: EQU $
RSR
PAGE
VISUAL: EQU $
<
< V I S U A L I S A T I O N G R A P H I Q U E
<
< ( E T E V E N T U E L L E M E N T V I D E O )
<
< D E S R E S U L T A T S D E L ' E T A P E C O U R A N T E.
<
< FAUT-IL VISUALISER ?
CPZ ISORVI
JNE VIS4 < AU MOINS VISUALISATION GRAPHIQUE.
CPZ ISORTV
JE VIS3 < NI GRAPHIQUE NI TV !!!
VIS4: EQU $
< FAUT-IL VISUALISER L'ETAPE COURANTE ?
LAI 0
LB ETAPEC
DV NETAP
CPZR B < RESTE NUL ?
JNE VIS3 < SI NON, PAS DE VISUALISATION.
CPZ IENV < TEST MODE "ENVELOPPE".
JE VIS5
LAI 0 < FAUT-IL GENERER CE SIGNAL POUR
< L'ENVELOPPE ?
LB ETAPEC
DV NBENV
CPZR B
JNE VIS3 < NE PAS RETENIR CE SIGNAL.
< MODE ENVELOPPE, IL FAUT RELIRE L'IMAGE CONTENANT LES SIGNAUX DEJA GENERES
< POUR Y AJOUTER LE SIGNAL COURANT.
LB COUL
SBT 16+9 < 'INPUT'.
STB COUL
LAD DMDIFF < LECTURE IMAGE.
BSR ADIFF
RBT 16+9 < 'OUTPUT'.
STB COUL
JMP VIS6 < RETENIR CE SIGNAL.
VIS5: EQU $
< FAUT-IL RAZER ?
CPZ IRAZ
JE $+2
BSR ARAZ < OUI.
< CALCUL X COURANT.
VIS6: EQU $
LA ETAPEC
FLT
FMP DELTAX
FST X
FLD XINIT < X INITIAL.
FSB X < X COURANT = X INITIAL - ( ETAPE
< COURANTE * DELTAX ).
FST X < X COURANT.
< NOMBRE DE POINTS A VISUALISER.
LA ETAPEC
SLLS 1
AD NBVU0 < NB DE POINTS A VISUALISER =
< ETAPE COURANTE * 2 + NB DE VALEURS
< DE U EN ZERO.
LR A,X < NOMBRE DE POINTS A VISUALISER.
< POINT INITIAL.
FLD ZEROF
FST Y < Y = 0 ...
< ... ET X = X COURANT.
BSR ATRANS < TRANSFORMATION DE (X,Y) EN COORDONNEES
< GRAPHIQUES.
<
LY TYPU < "FRONT MONTANT" NON ENCORE TRACE (SI
< TYPE DE SIGNAL = "UNTE" OU "UNITE1").
LRM W
WORD TABLO < ADRESSE DU PREMIER Y A AFFICHER SI
< ETAPE COURANTE = 0.
CPZ ETAPEC
JE VIS1
LA ETAPEC
ADRI -1,A
SLLS 1
AD NBVU0
SLLS 1
ADR A,W < ADRESSE DU PREMIER Y A AFFICHER SI
< ETAPE COURANTE > 0.
VIS1: EQU $ < BOUCLE DE TRACE.
FLD 0,W
FST Y < Y COURANT.
<
CPZR Y
JNE VIS2
< FRONT MONTANT NON ENCORE TRACE.
FCAZ < Y COURANT NUL ?
JV VIS2 < OUI, RIEN A FAIRE.
FST TRAV < SAVE Y COURANT.
FLD ZEROF
FST Y < Y COURANT RECOIT 0.
BSR ATRANS < TRANSFORMATION DE (X,Y) EN
< COORDONNEES GRAPHIQUES.
BSR ATRACE < ET TRACE.
FLD TRAV
FST Y < RESTAURATION Y COURANT.
ADRI 1,Y < FRONT MONTANT TRACE.
VIS2: EQU $
BSR ATRANS < TRANSFORMATION (X,Y) EN COORDONNEES
< GRAPHIQUES.
BSR ATRACE < TRACE GRAPHIQUE (ET VIDEO EVENTUEL).
ADRI LNF,W < ADRESSE Y SUIVANT.
FLD X
FAD DELTAX
FST X < NOUVEL X COURANT.
JDX VIS1
< POINT FINAL POUR LE "FRONT DESCENDANT".
FLD ZEROF
FST Y
FLD X
FSB DELTAX < ON A INCREMENTE X UNE FOIS DE TROP.
FST X
BSR ATRANS
BSR ATRACE
< VISUALISER L'IMAGE RESIDENTE OBTENUE:
CPZ ISORTV
JE VIS3
LAD DMDIFF < DIFFUSION.
BSR ADIFF
<
VIS3: EQU $
RSR
PAGE
SUPER: EQU $
<
< S U P E R P O S I T I O N D U S I G N A L I N I T I A L
<
< A U S I G N A L C O U R A N T.
<
< CE SIGNAL SERA ENVOYE (SI TV) SUR LA COULEUR 'ISUPER'.
< ON VA LE GENERER EN UTILISANT LE S/P 'VISUAL' A QUI ON VA
< DEVOIR FAIRE CROIRE UN TAS DE CHOSES, MAIS POUR LA BONNE
< CAUSE....
CPZ ISUPER
JE SUPFIN
< FAUT-IL TRACER A CETTE ETAPE ?
LAI 0
LB ETAPEC
DV NETAP
CPZR B
JNE SUPFIN < NON.
< ECHANGER LES VALEURS INITIALES AVEC CELLES DU DEBUT DE TABLO.
LA NBVU0
SLLS 1
LR A,X < LONGUEUR.
LRM A,B
WORD VINIT < VALEURS INITIALES.
WORD TABLO < TABLEAU.
PSR A,B,X < POUR TOUT A L'HEURE.
BSR AECH < ECHANGE...
FLD XINIT < SAUVER 'XINIT',
PSR A,B < ET VOILA...
FST X
LA ETAPEC < ET LE REMPLACER PAR UN FAUX!
FLT
FMP DELTAT
FAD X
FST XINIT < ET VOILA...
<
LA ETAPEC < SAUVER LE NUMERO D'ETAPE COURANTE,
LB COUL < LA COULEUR COURANTE,
LX IRAZ < L'INDICATEUR DE RAZ,
PSR A,B,X
STZ ETAPEC < ETAPE 0 !
LA CSUPER < REMPLACER COULEUR,
STA COUL
< FAIRE CROIRE QUE 'IENV' = 0.
LA IENV
STZ IENV
STA ITRAV
STZ IRAZ
CPZ ISORTV
JE SUP1 < PAS DE TV, PAS DE RAZ.
IC IRAZ < TV, DONC RAZ.
SUP1: EQU $
< APPELONS MAINTENANT 'VISUAL' !
BSR AVISUA
<
< ET RESTAURONS...
<
LA ITRAV
STA IENV < RESTAURATION DE 'IENV'.
PLR A,B,X
STA ETAPEC
STB COUL
STX IRAZ
PLR A,B
FST XINIT
PLR A,B,X < POUR NOUVEL ECHANGE...
BSR AECH < ET VOILA.
SUPFIN: EQU $
RSR
PAGE
ECH: EQU $
<
< E C H A N G E D E D E U X Z O N E S M E M O I R E.
<
< ARGUMENTS:
< - 'A' = ADRESSE ZONE 1.
< - 'B' = ADRESSE ZONE 2.
< - 'X' = LONGUEUR MOTS.
<
PSR A,B,X
PSR L,W
LR A,L
LR B,W
ECH1: EQU $
LA 0,L
XM 0,W
STA 0,L
ADRI 1,W
ADRI 1,L
JDX ECH1
PLR L,W
PLR A,B,X
RSR
PAGE
TRANS: EQU $
<
< T R A N S F O R M A T I O N D E ( X , Y ) F L O T T A N T S
<
< E N C O O R D O N N E E S G R A P H I Q U E S.
<
< ARGUMENTS:
< - X ET Y DU COMMON.
< - MULX, MULY, TX, TY.
<
< RESULTATS:
< - X ET Y INCHANGES,
< - DANS LA DEMANDE GRAPHIQUE, (X2,Y2) --> (X1,Y1),
< (X2,Y2) <-- (X,Y) TRANSFORMES.
< - 'A' ET 'B' DETRUITS.
<
LA X2
STA X1
LA Y2
STA Y1
<
FLD X
FAD TXOBS < TRANSLATION LIEE A LA VITESSE DE L'OBSER-
< VATEUR.
FMP MULX
FAD TX
BSR AFIX
STA X2
<
FLD Y
FMP MULY
FAD TY
BSR AFIX
STA Y2
<
RSR
<
FIX: EQU $
<
< A R R O N D I E T F I X D ' U N N O M B R E F L O T T A N T.
FAD UNDEMI
FIX
RSR
PAGE
TRACE: EQU $
<
< T R A C E G R A P H I Q E E V E N T U E L E T V I D E O
<
< E V E N T U E L D ' U N S E G M E N T.
<
PSR A,B,X,W
<
LRM A,B,X
WORD COORD < COORDONNEES GRAPHIQUES.
WORD YXV < COORDONNEES VIDEO.
WORD 4
MOVE
<
CPZ ISORVI
JNE TRACE4 < TRACE GRAPHIQUE DEMANDE.
CPZ ISORTV
JE TRACE1 < NI GRAPHIQUE, NI TV.
< TRACE VIDEO SEUL, PAS DE "FILTRAGE" DES COORDONNEES.
TRACE2: EQU $
LAD DMTRV < TRACE VIDEO.
SVC 0
JE $+2
WORD '1E16
JMP TRACE1
< TRACE GRAPHIQUE ET EVENTUELLEMENT VIDEO.
TRACE4: EQU $
LRM W < POUR BASER LES COORDONNEES.
WORD COORD
LXI 4 < FILTRAGE.
TRACE3: EQU $
LA 0,W
JAL TRACE1
CP C1024
JGE TRACE1
ADRI 1,W
JDX TRACE3
< ICI, LES COORDONNEES SONT TOUTES DANS L'ECRAN, DONC ON TRACE.
LAD DMOG < OPEN GRAPHIQUE.
SVC 0
JE $+2
WORD '1E16
LAD DMTRGR < TRACE GRAPHIQUE.
SVC 0
JE $+2
WORD '1E16
CPZ ISORTV < TEST TRACE VIDEO DEMANDE.
JNE TRACE2 < TRACE GRAPHIQUE DEMANDE.
TRACE1: EQU $
PLR A,B,X,W
RSR
PAGE
CATAL: EQU $
<
< C A T A L O G A G E D E L ' I M A G E C O U R A N T E.
<
CPZ ICATAL < CATALOGAGE DEMANDE ?
JE CATFIN < NON.
< ETAPE A RETENIR ?
LAI 0
LB ETAPEC
DV NETAP
CPZR B
JNE CATFIN
< FAUT-IL AUSSI CATALOGUER L'IMAGE SUPERPOSEE ?
CPZ ICATS
JNE CATAL2 < OUI.
BSR ARAZ < RAZER L'IMAGE SUPERPOSEE (EVENTULLE).
LB COUL
LA CSUPER < COULEUR SUPERPOSITION.
STA DMDIFF+3
LAD DMDIFF
BSR ADIFF
STB COUL
CATAL2: EQU $
<
< CATALOGUER LES IMAGES R ET V DE LA CDAI EN ECRITURE DIRECTE DKU.
<
CATAL1: EQU $
LAD DMDIR
SVC 0
JE $+2
ACTD
BSR ACOMP < COMPARAISON STACKS R ET V :: IMAGE DKU,
JNE CATAL1 < SI DIFFERENTES, REECRITURE SUR DKU.
LAI '17 < ON N'UTILISE QUE '17 DES 32
< Q-SECTEURS NECESSAIRES A UNE IMAGE 12K.
AD DMDIR+3 < PROGRESSION ADRESSE SECTEUR.
STA DMDIR+3
SLRS 12
CPI VALIDA < VALIDATION.
JGE $+2
ACTD
LAI MIMCR2-M2 < MESSAGE "IMAGE CREEE EN ..."
BSR AENVOI
LRM Y < POUR EDITER LE NUMERO IMAGE
WORD MNIMC-ZERO*2+2 < COURANTE.
LA NIMC < NUMERO IMAGE COURANTE.
BSR ACVDA < EDITION.
LAI MNIMC-M2 < ET ENVOI.
BSR AENVOI
IC NIMC < NOUVEAU NUMERO IMAGE COURANTE.
CATFIN: EQU $
RSR
PAGE
CVDA: EQU $
<
< C O N V E R S I O N - E D I T I O N E N D E C I M A L
<
< F O R M A T A S C I D ' U N N O M B R E B I N A I R E
<
< C O N T E N U D A N S ' A '.
<
< ARGUMENTS:
< - 'A' = NOMBRE EN BINAIRE.
< - 'Y' = ADRESSE OCTET D'EDITION DE CE NOMBRE
< ( ZONE D'EDITION DE 6 OCTETS MAXIMUM: 5 CHIFFRES
< PLUS LE SIGNE).
<
PSR A,B,X,Y < SAUVEGARDES.
PSR W
<
XR Y,W
LYI " " < SI POSITIF, PAS DE SIGNE.
JAGE $+2
LYI "-" < NOMBRE NEGATIF, SIGNE MOINS.
XR Y,W < 'W' CONTIENT LE SIGNE.
<
LXI 5 < 5 CHIFFRES MAXI.
CVDA1: EQU $
SARD 16
DV DIX
CPZR B < TEST SIGNE DU RSTE.
JGE $+2
NGR B < CHIFFRE POSITIF.
ADRI "0",B < POUR EDITION FUTURE.
PSR B < PUSH CHIFFRE COURANT.
JDX CVDA1
PSR W < PUSH SIGNE.
<
LXI 6 < SIGNE PLUS 5 CHIFFRES.
CVDA2: EQU $
LR X,W < SAVE COUNT.
LR Y,X < INDEX COURANT.
PLR A < PULL SIGNE / CHIFFRE COURANT.
STBY &AXTRAV < STOCKAGE SIGNE / CHIFFRE.
LR W,X < RECUPERATION COUNT.
ADRI 1,Y < INDEX CHIFFRE SUIVANT.
JDX CVDA2
<
PLR W < RESTAURATIONS.
PLR A,B,X,Y
RSR
PAGE
MOVE: EQU $
<
< M O V E " M A N U E L ".
<
< ARGUMENTS:
< - 'A' = ADRESSE ZONE EMETTRICE.
< - 'B' = ADRESSE ZONE RECEPTRICE.
< - 'X' = LONGUEUR.
<
PSR A,B,X
PSR L,W
<
LR A,L
LR B,W
MOVE1: EQU $
LA 0,L
STA 0,W
ADRI 1,L
ADRI 1,W
JDX MOVE1
PLR L,W
PLR A,B,X
RSR
RAZ: EQU $
<
< R A Z E C R A N G R A P H I Q U E E T I M A G E
<
< R E S I D E N T E E V E N T U E L L E M E N T.
<
PSR A,X
LAD DMRAZ < RAZ ECRAN GRAPHIQUE.
SVC 0
CPZ ISORTV < OPTION VIDEO ?
JE RAZ1
< RAZ IMAGE RESIDENTE.
LX ALIMAG < LONGUEUR MOTS IMAGE.
STZ &AXIM
JDX $-1
RAZ1: EQU $
PLR A,X
RSR
<
RAZ123: EQU $
<
< R A Z D U S T A C K R V B.
<
CPZ COUL < VISUALISATION ACTIVE?
JE RZF
PSR A,B,X
LRM X
WORD LIMAG
STZ &AXIM
JDX $-1
LXI 3
LAD DMDIFF
LB COUL < SAVE COULEUR CHOISIE.
RZ1: EQU $
STX COUL
BSR ADIFF
JDX RZ1
STB COUL < RESTAURE COULEUR.
PLR A,B,X
RZF: EQU $
RSR
PAGE
<
< D I F F U S I O N O U R E C U P E R A T I O N I M A G E.
<
<
< ARGUMENTS:
< -'A' = ADRESSE DEMANDE DE TYPE '8A01.
< - 'IMEMH': INDICATEUR MEMOIRE HAUTE/BASSE POUR L'ECHANGE
< AVEC LA CDA IMAGE.
<
DIFF: EQU $
PSR A,B,X,W
CPZ IMEMH
JNE DIFF1
SVC 0
JE $+2
WORD '1E16
JMP DIFFF < C'EST TOUT.
DIFF3: EQU $ < ECHANGE AVEC LA CDAI, MOT PAR MOT!
PSR X
LXI 1
OP: EQU $
RCDA
ADRI 1,A
ADRI 1,B
PLR X
JDX DIFF3
JMP DIFFF
DIFF1: EQU $
LRM X < LONGUEUR ECHANGE.
WORD LIMAG
LR A,W < ADRESSE DEMANDE DE TYPE '8A01.
LA 3,W
ANDI '0003 < NUMERO DE LA COMPOSANTE.
ADRI -1,A < NUMERO COMPOSANTE - 1.
SLLS 12 < ADRESSE RELATIVE COMPOSANTE.
AD ALM3IM < ADRESSE ABSOLUE COMPOSANTE EN CDAI.
LRM B < ADRESSE MEMOIRE IMAGE A ECHANGER.
WORD IMAG
PSR A
LA 3,W
TBT 9 < TEST SENS DE L'ECHANGE.
JC DIFF2
< FAIRE UN WCDA.
LRM A,W
WORD 1 < WCDA, SECOND MOT.
WORD OP+1
JMP DIFF4
< FAIRE UN RCDA.
DIFF2: EQU $
LRM A,W
WORD 0 < RCDA, SECOND MOT.
WORD OP+1
DIFF4: EQU $
STA 0,W < OPERATION RCDA / WCDA.
PLR A < ADRESSE CDAI.
JMP DIFF3 < ALLONS-Y.
<
DIFFF: EQU $
PLR A,B,X,W
RSR
PAGE
<
< V A L I D A T I O N D E L ' I M A G E S T O C K E E
<
< S U R D K U.
<
< DANS CE SOUS-PROGRAMME, ON COMPARE L'IMAGE QU'ON VIENT D'ECRIRE SUR
< DKU EN ECRITURE "DIRECTE" (CF: LA DEMANDE 'DMDIR'), AVEC L'IMAGE
< PRESENTE DANS LA MEMOIRE D'IMAGE (CDAI(R) ET CDAI(V)).
< S'IL Y A DIFFERENCE, ON REITERERA L'ECRITURE.
<
< - ARGUMENTS:
< DEMANDE 'DMDIR'.
< CDAI(R) ET CDAI(V) (L'IMAGE FAIT 8K MOTS).
<
< - RESULTAT:
< AU RETOUR, FAIRE:
< JE EGALITE
< JNE INEGALITE
<
< - NOTA:
< AU RETOUR, LES STACKS SONT INCHANGES, IL N'EST DONC
< PAS NECESSAIRE DE REGENERER L'IMAGE, IL Y A JUSTE A
< RELANCER UN ORDRE D'ECRITURE SUR DKU.
<
< -METHODE UTILISEE:
< 1/ IR (IMAGE RESIDENTE) <-- CDAI(R),
< CDAI(B) <-- CDAI(V).
< 2/ CDAI(R) ET CDAI(V) <-- IMAGE DKU.
< 3/ COMPARAISON:
< CDAI(R) :: IR, ET CDAI(V) :: CDAI(B).
< 4/ RESTAURATION:
< CDAI(R) <-- IR ET CDAI(V) <-- CDAI(B).
<
COMP: EQU $
PSR A,B,X,Y
PSR L,W
<
< SAUVEGARDE DES CDAI(R) ET CDAI(V).
<
LAD DMRV < IR <-- CDAI(V).
BSR ADIFF
LAD DMWB < CDAI(B) <-- IR.
BSR ADIFF
LAD DMRR < IR <-- CDAI(R).
BSR ADIFF
<
< LECTURE DE L'IMAGE DKU.
<
LB DMDIR
LA DMDIR
RBT 14 < PASSAGE EN MODE LECTURE.
STA DMDIR
LAD DMDIR
SVC 0
JE $+2
ACTD
STB DMDIR < RETOUR EN MODE ECRITURE.
<
< COMPARAISON IR :: CDAI(R).
<
LX ALIMAG < NOMBRE DE MOTS.
LRM W < ADRESSE PREMIER MOT IR.
WORD IMAG
COMP1: EQU $
PSR X
LY 0,W < MOT COURANT IR.
LXI 1
LR W,A
SB AIMAG < RANG DU MOT DANS L'IMAGE.
SLLS 1
AD DMDIR+1 < POUR ETRE DANS LA BONNE ZONE DE CDAI.
SLRS 1 < ADRESSE MOT EN CDAI.
LR W,B < ADRESSE MOT EN MEMOIRE.
< READ MOT.
RCDA
LR Y,A < MOT INITIAL.
CP 0,W < COMPARAISON.
STY 0,W < RESTAURATION DU MOT INITIAL.
PLR X
JNE COMPNE < INEGALITE...
ADRI 1,W < AU SUIVANT.
JDX COMP1
<
LX ALIMAG < NOMBRE DE MOTS.
LRM W < ADRESSE PREMIER MOT.
WORD IMAG
COMP2: EQU $
PSR X
LY 0,W < SAUVEGARDE MOT DE IR.
LXI 1
LR W,A
SB AIMAG < RANG DU MOT DANS STACK.
AD ALIMAG < POUR ACCES CDAI(V).
SLLS 1
AD DMDIR+1 < POUR ACCES A LA BONNE ZONE DE CDAI.
SLRS 1 < ADRESSE CDAI.
LR W,B < ADRESSE MEMOIRE
< ACCES AU MOT DE CDAI(V).
RCDA
LA 0,W
LR A,L < MOT DE CDAI(V).
LXI 1
LR W,A
SB AIMAG
AD ALIMAG < POUR ACCES AU MOT...
AD ALIMAG < ... DE CDAI(B).
SLLS 1
AD DMDIR+1 < POUR ACCES A LA BONNE ZONE DE CDAI.
SLRS 1 < ADRESSE CDAI.
< ACCES AU MOT DE CDAI(B).
RCDA
LR L,A < MOT DE CDAI(V)
CP 0,W < COMPARAISON.
STY 0,W < RESTAURATION IR.
PLR X
JNE COMPNE < INEGALITE...
ADRI 1,W < AU SUIVANT.
JDX COMP2
<
< EGALITE, Y <-- 0.
<
LYI 0
JMP COMPR < VERS RETOUR.
<
< INEGALITE, Y <-- 1.
<
COMPNE: EQU $
LYI 1
<
< RESTAURATION DE CDAI(R) ET CDAI(V) (DANS LE CAS D'INEGALITE...).
<
LAD DMWR < CDAI(R) <-- IR.
BSR ADIFF
LAD DMRB < IR <-- CDAI(B).
BSR ADIFF
LAD DMWV < CDAI(V) <-- IR.
BSR ADIFF
LAI MINEG-M2 < MESSAGE PREVENANT QU'IL Y A EU INEGALITE.
BSR AENVOI
<
< RETOUR...
<
COMPR: EQU $
CPZR Y < POUR TEST EN RETOUR.
PLR L,W
PLR A,B,X,Y
RSR
PAGE
ENVOI: EQU $
<
< ENVOI D'UN MESSAGE SUR UL '02
<
< EN ENTREE
<
< A=DEPLACEMENT MOTS DU MESSAGE A ENVOYER PAR RAPPORT
< A M. TOUT MESSAGE EST DELIMITE PAR '00
<
<
< NOTA: ON A
< EN TABLE: M: EQU $+256
< MES1: ASCI "TEXTE..."
< WORD 0
< EN COMMON: AM: WORD M
< APPEL PAR: LAI MESI-M
< BSR AENVOI
<
PSR A,X
AD AM < @ MOT MESSAGE
ADR A,A < @ OCT MESSAGE
STA DMOUT+1
STZ DMOUT+2
LR A,X
ENV1: EQU $ < BOUCLE JUSQU'A DELIM '00
LBY &AXTRAV
JAE ENV2
IC DMOUT+2 < LONGUEUR='+1
ADRI 1,X
JMP ENV1
ENV2: EQU $
LAD DMOUT
SVC 0
PLR A,X
RSR
TABLO: EQU $ < TABLEAU DES VALEURS CALCULEES.
XWORK: VAL TABLO-ZERO
XWORK1: VAL '4000-'10-XWORK
FTABLO: EQU TABLO+XWORK1
NBNB: VAL FTABLO-TABLO/LNF <NOMBRE DE NOMBRES STOCKABLES.
LST
NDS
END
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.