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