DATE PROG TRN < < < D E F I N I T I O N S G E N E R A L E S : < < XUNDEF:: VAL -1 < POUR NE DEFINIR QUE LES 'XX...' DANS LES < FICHIERS DE DEFINITION... CALL #SIP DEFINITION CTTE# < < PREPARATION DE L'APPEL DE #SIP UTILITAIRES# : < XXXDEF: VAL XUNDEF XXXLOC: VAL XUNDEF XXXTAB: VAL XUNDEF XXXPRO: VAL XUNDEF CALL #SIP UTILITAIRES# < < < D E F I N I T I O N D E L ' I M A G E : < < XXXVEC: VAL XUNDEF < AFIN DE NE DEFINIR QUE LES 'XXVEC'... CALL #SIP VECTEUR 512# XXXVEC: VAL XXVEC1 < DEFINITION DES CONSTANTES IMAGE/VECTEUR. CALL #SIP VECTEUR 512# PAGE < < < O P T I O N S D ' A S S E M B L A G E : < < XOPT01: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'XOPT01'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% XOPT01:: VAL EXIST < TRACE GRAPHIQUE, ET VERIFICATIONS CROI- < SEES DES EQUATIONS CALCULEES... XEIF%: VAL ENDIF PAGE < < < B A S D E L A M E M O I R E : < < ZERO: EQU $ DZS PEPROG-D+Z < < POINT D'ENTREE : < ENTRY: EQU $ LRM A,K WORD DEBUT < POINT D'ENTREE DU PROGRAMME, WORD STACK-DEPILE < INITIALISATION DE LA PILE. PSR A RSR < ON EFFECTUE AINSI UN 'GOTO' 'DEBUT'... PAGE < < < M E S S A G E S : < < TABLE < < BUFFER BANDE : < LBUFMT: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'LBUFMT'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% LBUFMT:: VAL 4096 XEIF%: VAL ENDIF BUFMT: EQU $ DZS LBUFMT/NOCMO PAGE < < < D E F I N I T I O N D U F O R M A T < D E S N O M B R E S C O M P L E X E S : < < DSEC NCA1: EQU $ < NOMBRE COMPLEXE 'ARGUMENT 1' : NCA1R: FLOAT <NILK<NILK<NILK < PARTIE REELLE, NCA1I: FLOAT <NILK<NILK<NILK < PARTIE IMAGINAIRE. DCOMP:: VAL $-NCA1 < LONGUEUR D'UN NOMBRE COMPLEXE. DSEC NCA2: EQU $ < NOMBRE COMPLEXE 'ARGUMENT 2' : NCA2R: FLOAT <NILK<NILK<NILK < PARTIE REELLE, NCA2I: FLOAT <NILK<NILK<NILK < PARTIE IMAGINAIRE. IF $-NCA2-DCOMP,,XEIF%, IF ATTENTION : 'NCA2' EST MAUVAISE !!! XEIF%: VAL ENDIF DSEC NCR: EQU $ < NOMBRE COMPLEXE 'RESULTAT : NCRR: FLOAT <NILK<NILK<NILK < PARTIE REELLE, NCRI: FLOAT <NILK<NILK<NILK < PARTIE IMAGINAIRE. IF $-NCR-DCOMP,,XEIF%, IF ATTENTION : 'NCR' EST MAUVAISE !!! XEIF%: VAL ENDIF < < < C O M M O N : < < COMMON COM: EQU $ < < MOT DESTINE AU BLOC FLOTTANT : < COMFLO: WORD NILK < MOT "BIDON" DESTINE AU BLOC FLOTTANT < POUR QU'IL Y FIT SES MERDES... ATSFLO: WORD TSFLO < POUR TESTER DE TEMPS EN TEMPS 'COMFLO'... < < INDICATEURS DE CONTROLE : < MODUL: FLOAT <NILK<NILK<NILK < SEUIL DE DEFINITION DE LA FRONTIERE < DE L'ENSEMBLE DE MANDELBROT. IERASE: WORD NEXIST < EFFACER ('EXIST'), OU NON ('NEXIST') < L'ECRAN 512... IVIDEO: WORD NEXIST < ECRIRE ('EXIST') L'IMAGE COURANTE SUR LE < DISQUE VIDEO OU PAS ('NEXIST'). IQUIT: WORD NEXIST < S'ARRETER ('EXIST') OU PAS ('NEXIST') < APRES CHAQUE IMAGE (POINT D'ARRET). PASIX: WORD W < PAS DE BALAYAGE DE L'AXE REEL, PASIY: WORD W < PAS DE BALAYAGE DE L'AXE IMAGINAIRE. SIZEX: WORD W < LARGEUR DE MARQUAGE DES POINTS, SIZEY: WORD W < HAUTEUR DE MARQUAGE DES POINTS. NIMAGE: WORD NILK < NOMBRE D'IMAGES A GENERER PAR INTER- < POLATION ENTRE LA FENETRE 'DEPART' ET < LA FENETRE 'ARRIVEE'. IBANDE: WORD NEXIST < CHOIX DU MODE D'"ENTREE" DE LA FONCTION : < 'NEXIST' : ELLE EST CALCULEE A PARTIR < DE LA FORMULE ALEATOIRE RECUR- < SIVE, < 'EXIST' : ELLE EST LUE SUR BANDE, ET < ALORS ON A INTERET A FAIRE : < (ALPHA)=0... ABLOC0: WORD K < NUMERO DU PREMIER BLOC A LIRE SUR LA < BANDE MAGNETIQUE. < NOTA : SI (ABLOC0)<0 : ON TRAVAILLE EN < SEQUENTIEL STRICT, SANS JAMAIS RE- < INITIALISER L'ADRESSE COURANTE < SUR LA BANDE... LAMBDR: FLOAT <NILK<NILK<NILK < PARTIE REELLE DE 'LAMBDA', LAMBDI: FLOAT <NILK<NILK<NILK < PARTIE IMAGINAIRE DE 'LAMBDA'. F0R: FLOAT <NILK<NILK<NILK < POUR INITIALISER LE CUMUL F0I: FLOAT <NILK<NILK<NILK < DE L'ITERATION Z <-- Z**2+C. TROISR: FLOAT 3.0 < NOMBRE COMPLEXE TROISI: FLOAT 0.0 < (3.0,0.0). DEUXR: FLOAT 2.0 < NOMBRE COMPLEXE DEUXI: FLOAT 0.0 < (2.0,0.0). ITRACE: WORD NEXIST < INDICATEUR DU TRACE DE LA "TRAJECTOIRE" < DE LA TRANSFORMATION : < 'NEXIST' : PAS DE TRACE, < 'EXIST' : TRACE. IQUITR: WORD NEXIST < INDICATEUR D'ARRET APRES CHAQUE TRACE < D'UNE TRAJECTOIRE : < 'NEXIST' : PAS D'ARRET, < 'EXIST' : ARRET. NTRACE: WORD XXNOIR < NIVEAU INITIAL MOINS UN DU TRACE DE LA < "TRAJECTOIRE" DE LA TRANSFORMATION, PTRACE: WORD I < PAS D'INCREMENTATION DES NIVEAUX DE < TRACE (SI (PTRACE)=0, ON TRACE TOUT AVEC < LE NIVEAU 'NTRACE'). IJULIA: WORD EXIST < INDIQUE LE TYPE DE L'ENSEMBLE QUE L'ON < CONSTRUIT : < 'NEXIST' : ENSEMBLE DE MANDELBROT, SOIT : < INIT : Z <-- CTTE, < ITER : Z <-- Z**2+COURANT. < 'EXIST' : ENSEMBLE DE JULIA, SOIT : < INIT : Z <-- COURANT, < ITER : Z <-- Z**2+CTTE. < OU 'CTTE' ET 'COURANT' DESIGNENT RESPEC- < TIVEMENT UNE CONSTANTE COMPLEXE, ET LE < NOMBRE COMPLEXE COURANT. IRAYON: WORD NEXIST < DOIT-ON ('EXIST') OU PAS ('NEXIST') < VISUALISER LES "RAYONS", C'EST-A-DIRE < L'ARGUMENT TETA=ARCTG(ZI/ZR) DU NOMBRE < COMPLEXE (ZR,ZI) OBTENU EN FIN D'ITE- < RATION. < < FENETRE DE DEPART : < PR0D: FLOAT <NILK<NILK<NILK < LIMITE REELLE INFERIEURE, PR1D: FLOAT <NILK<NILK<NILK < LIMITE REELLE SUPERIEURE. PI0D: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE INFERIEURE, PI1D: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE SUPERIEURE. < < FENETRE D'ARRIVEE : < PR0A: FLOAT <NILK<NILK<NILK < LIMITE REELLE INFERIEURE, PR1A: FLOAT <NILK<NILK<NILK < LIMITE REELLE SUPERIEURE. PI0A: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE INFERIEURE, PI1A: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE SUPERIEURE. < < FENETRE COURANTE : < PR0: FLOAT <NILK<NILK<NILK < LIMITE REELLE INFERIEURE, PR1: FLOAT <NILK<NILK<NILK < LIMITE REELLE SUPERIEURE. PI0: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE INFERIEURE, PI1: FLOAT <NILK<NILK<NILK < LIMITE IMAGINAIRE SUPERIEURE. < < DONNEES DE L'INTERPOLATION NON LINEAIRE : < F3: FLOAT 3.0 F5: FLOAT 5.0 F6: FLOAT 6.0 F8: FLOAT 8.0 COEF: FLOAT <NILK<NILK<NILK < POIDS DE L'INTERPOLATION BARYCENTRIQUE. COEFR0: EQU COEF < RAPPORT DE PASSAGE DU PAS REEL INFERIEUR < P(I) AU PAS P(I+1). COEFR1: EQU COEF < RAPPORT DE PASSAGE DU PAS REEL SUPERIEUR < P(I) AU PAS P(I+1). COEFI0: EQU COEF < RAPPORT DE PASSAGE DU PAS IMAGINAIRE INFE < RIEUR P(I) AU PAS P(I+1). COEFI1: EQU COEF < RAPPORT DE PASSAGE DU PAS IMAGINAIRE SUPE < RIEUR P(I) AU PAS P(I+1). EPSI: FLOAT <NILK<NILK<NILK < POUR CALCULER 'COEF'... < < RELAIS DIVERS : < ADEB9: WORD DEBUT9 AINIT1: WORD INIT01 AGEN01: WORD GEN01 AGEN02: WORD GEN02 < < CONSTANTES FLOTTANTES DE BASE : < F0: FLOAT <K<K<K < REMISE A ZERO FLOTTANTE... F1: FLOAT <W<K<K < L'UNITE EN FLOTTANT... < < DONNEES DIVERSES : < NIVOC: WORD NILK < NIVEAU COURANT DE MARQUAGE. XXXLOC: VAL YYYFLO < 'YYYFLO'. CALL #SIP UTILITAIRES# < < DEMANDE DE TEMPORISATION < APRES EFFACEMENT : < TEMPO: BYTE NVPSER;FONDOR WORD NILK < INUTILE... WORD XXXMOY < 2 PETITES SECONDES... XXXLOC: VAL YYYGOT < 'YYYGOT'. CALL #SIP UTILITAIRES# XXXVEC: VAL XXVEC2 < DEFINITION DES DONNEES DU VECTEUR 512... CALL #SIP VECTEUR 512# APOINT: WORD POINT < SOUS-PROGRAMME DE MARQUAGE D'UN POINT < DE COORDONNEES (X), DONT LE NIVEAU EST < CALCULE VIA LA TABLE 'LNIVO'. ALNIVO: WORD LNIVO,X < TABLE DE CORRESPONDANCE DES NIVEAUX POUR < LE SOUS-PROGRAMME 'POINT'. < < ACCES AUX REGISTRES DE CONTROLE : < ACTRL1: WORD RCTRL1 ACTRL2: WORD RCTRL2 < < DONNEES DES OPERATIONS < SUR LES NOMBRES COMPLEXES : < ZW1: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 1, ZW2: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 2, ZW3: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 3, ZW4: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 4, ZW5: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 5, ZW6: DZS DCOMP < NOMBRE COMPLEXE DE MANOEUVRE 6. AZAD: WORD ZAD < ADDITION COMPLEXE, AZSB: WORD ZSB < SOUSTRACTION COMPLEXE, AZMP: WORD ZMP < MULTIPLICATION COMPLEXE. < < POUR LE CALCUL DU LOGARITHME : < POLLO1: FLOAT <NILK<NILK<NILK < VARAIBLE DE MANOEUVRE... POLLO2: FLOAT <NILK<NILK<NILK POLLO3: FLOAT <NILK<NILK<NILK POLLO4: FLOAT 0.7071067 < RACINE(2)/2. POLLO5: FLOAT 1.2920088 < COEFFICIENTS POLLO6: FLOAT 2.6398577 < DU POLLO7: FLOAT 1.656763 < DEVELOPPEMENT. POLLO8: EQU F05 < CONSTANTE 1/2. POLLO9: FLOAT 0.6931472 < LN(2). < < POUR LE CALCUL DE L'EXPONENTIELLE : < POLEX1: EQU POLLO1 < VARIABLE DE MANOEUVRE... POLEX2: EQU POLLO2 POLEX3: EQU POLLO3 POLEX4: FLOAT 1.442695 < LOG2(E). POLEX5: WORD NILK < RELEVE DE L'EXPOSANT POLEX6: EQU F1 < 1.0 POLEX7: FLOAT 2 < 2. POLEX8: FLOAT 87.417488 < COEFFICIENTS POLEX9: FLOAT 0.0346573 < DU POLEY0: FLOAT -17830.91 < DEVELOPPEMENT. POLEY1: FLOAT 9.9545955 SIGNE: WORD NILK < POUR DETERMINER LE SIGNE DE X**Y... < < POUR CALCULER < LES EXPOSANTS : < XXMASK:: VAL MOCG XX7F:: VAL '7F < MAXIMUM POSITIF, XX80:: VAL -'80 < MIMIMUM NEGATIF. < < CALCUL D'UNE PUISSANCE QUELCONQUE : < ARAK: WORD RAK < CALCUL DE LA PUISSANCE P/(2**Q) D'UN < NOMBRE... EXPOP: FLOAT <NILK<NILK<NILK < EXPOSANT REEL. PAGE < < < L O C A L : < < LOCAL LOC: EQU $ < < DONNEES D'ITERATION DE LA < TRANSFORMATION COMPLEXE : < ZR: FLOAT <NILK<NILK<NILK < VALEUR COURANTE ZI: FLOAT <NILK<NILK<NILK < DU CUMUL COMPLEXE. CR: FLOAT <NILK<NILK<NILK < NOMBRE COMPLEXE CI: FLOAT <NILK<NILK<NILK < COURANT 'C'. SCR: FLOAT <NILK<NILK<NILK < ET SAVE SCI: FLOAT <NILK<NILK<NILK < LE NOMBRE COURANT 'C'... DELTAR: FLOAT <NILK<NILK<NILK < LARGEUR REELLE DE LA FENETRE, DELTAI: FLOAT <NILK<NILK<NILK < LARGEUR IMAGINAIRE DE LA FENETRE. FNC: FLOAT <XMAX+Z<K<K < LARGEUR DE L'ECRAN, FNL: FLOAT <YMAX+Z<K<K < HAUTEUR DE L'ECRAN. F2: FLOAT <W+W<K<K < < GESTION DU DISQUE VIDEO : < BUFVIW: BYTE "J";KCR XWOR%1: VAL '0000000@@@@(MOCD XWOR%3: VAL $-BUFVIW*NOCMO IF XWOR%1-K,XEIF%,,XEIF% XWOR%3: VAL XWOR%3-W XEIF%: VAL ENDIF LBUFVW:: VAL XWOR%3 < LONGUEUR DE LA COMMANDE AU DISQUE < VIDEO... XWOR%2: VAL COSBT?XASSIM=FMASK(K?NVPVDK=FCINST DEMVIW: BYTE XWOR%2;FAVW < COMMANDE DE L'ECRITURE SUR LE DISQUE < VIDEO... WORD BUFVIW=FCTA*NOCMO WORD LBUFVW BUFVIR: DZS W < BUFFER DE LECTURE DES ACQUITTEMENTS. LBUFVR:: VAL $-BUFVIR*NOCMO DEMVIR: BYTE XWOR%2;FAVR < LECTURE DES ACQUITTEMENTS DU DISQUE. WORD BUFVIR=FCTA*NOCMO WORD LBUFVR < < GESTION DU DEROULEUR : < NVPMT:: VAL '0B < 'NVP' D'ACCES AU DEROULEUR DE BANDES. DEMMT: BYTE NVPMT;XFMTWA < DEMANDE D'ECRITURE A ACCES DIRECT. WORD BUFMT=FCTA*NOCMO WORD LBUFMT WORD NILK < ADRESSE DU BLOC COURANT. DEMMTM: BYTE NVPMT;XFMTTM < DEMANDE D'ECRITURE D'UN 'TAPE-MARK'. IBUFMT: WORD LBUFMT-Z+I < INDEX COURANT DU BUFFER 'MT', ZBUFMT: WORD LBUFMT-Z+I < POUR LES TESTS "BUFFER PLEIN"... ABUFMT: WORD BUFMT,X < ET RELAI D'ACCES... < < DONNEES D'ACCES AU CURSEUR : < CURSOR: BYTE "N";NILK < CARACTERE DE DEBLOCAGE DU < CURSEUR (ERREUR A PRIORI). CURSOY: WORD NILK < COORDONNEE 'Y' D'UN POINT, CURSOX: WORD NILK < COORDONNEE 'X' D'UN POINT. LCURSO:: VAL $-CURSOR*NOCMO < LONGUEUR DU BUFFER DE CURSEUR... NLIN: EQU VECTNL < NBRE DE LIGNES/IMAGE-1. C3: WORD 3 < POUR MULTIPLIER C4: WORD 4 < PAR 4/3... OG: BYTE NVPIN;FAVOG < OPEN GRAPHIQUE DE LA CONSOLE. CU: BYTE NVPIN;FAVCU < MISE EN FONCTION DU CURSEUR GRAPHIQUE. WORD K < (AMDEM)=0... LCU: BYTE NVPIN;FAVRG < LECTURE CURSEUR GRAPHIQUE DE LA CONSOLE. WORD CURSOR-ZERO*NOCMO WORD LCURSO CG: BYTE NVPIN;FAVCG < CLOSE GRAPHIQUE DE LA CONSOLE. < < SIMULATION D'UNE REDUCTION < DE LA PRECISION DU CALCUL : < WMODUL: FLOAT <NILK<NILK<NILK < VALEUR DE 'MODUL' APRES REDUCTION < EVENTUELLE DE LA PRECISION... XREDUC: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'XREDUC'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% XREDUC:: VAL NEXIST < PAS DE REDUCTION DE PRECISION A PRIORI... XEIF%: VAL ENDIF IF XREDUC-EXIST,XEIF%9,,XEIF%9 AREDUC: WORD REDUC < SOUS-PROGRAMME DE SIMULATION... REDUCA: WORD MMOT < MASQUE SUR LES 16 PREMIERS BITS, REDUCB: WORD MMOT < MASQUE SUR LES 16 DERNIERS BITS. XEIF%9: VAL ENDIF < < DONNEES DE CALCUL DE 'ARCTG' : < ATGT1: FLOAT <NILK<NILK<NILK < ZONE DE TRAVAIL NUMERO 1, ATGT2: FLOAT <NILK<NILK<NILK < ZONE DE TRAVAIL NUMERO 2, ATGT3: FLOAT <NILK<NILK<NILK < ZONE DE TRAVAIL NUMERO 3. ATGSDX: WORD NILK < 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: EQU F1 ATGR3: FLOAT 1.7320508 < RACINE(3). ATGP1: FLOAT 0.6031058 < COEFFICIENTS ATGP2: FLOAT 0.0516045 < (P1,P2,P3,P4) ATGP3: FLOAT 0.5591371 < DU ATGP4: FLOAT 1.4087812 < POLYNOME. AARCTG: WORD ARCTG < SOUS-PROGRAMME DE CALCUL. PI: FLOAT 3.1415927 < PI, DEUXPI: FLOAT 6.2831853 < 2*PI. F255: FLOAT <XXN255<K<K < POUR PASSER D'UN ANGLE (EN NOMBRE DE < TOURS) A UN NIVEAU DE GRIS... < < CONSTANTES DE CALCUL DES SINUS ET COSINUS : < ASIN: WORD SIN < S/P DE CALCUL DU SINUS, ACOS: WORD COS < ET DU COSINUS. COS061: FLOAT <NILK<NILK<NILK < NOMBRE FLOTTANT, COS062: FLOAT <NILK<NILK<NILK COS063: WORD NILK < SIGNE. PI3141: FLOAT 3.1415926 < PI, PISUR2: FLOAT 1.5707963 < PI/2. COS067: EQU PISUR2 < COEFFICIENTS DU POLYNOME : COS068: WORD 'AD00;'5110 COS069: WORD '51FD;'9A2C COS070: WORD 'B3F9;'6CCE COS071: WORD '4FF4;'6BDD PAGE < < < T A B L E D E T R A N S C O D A G E D E S N I V E A U X : < < < ARGUMENTS D'ASSEMBLAGE : < ND=DIVISEUR DES NIVEAUX DE 'LNIVO' (0 OU 2), < NI=TRANSLATION DES NIVEAUX DE 'LNIVO' (0 OU 128)... < < NI: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'NI'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% NI:: VAL XXNOIR < LE NIVEAU INITIAL SERA LE NIVEAU NOIR. XEIF%: VAL ENDIF ND: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'ND'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% ND:: VAL W < PAS DE DIVISEUR DES NIVEAUX... XEIF%: VAL ENDIF LNIVO: EQU $ NTRN XWOR%1: VAL NIV256+NOCMO-E/NOCMO XWOR%2: VAL NIV256/NOCMO(K=FCREST TRN XWOR%3: VAL NIV256+XWOR%2 < INCREMENT DES OCTETS GAUCHES, XWOR%4: VAL XWOR%3+NOCMO-Z < INCREMENT DES OCTETS DROITS. NTRN <******************************************************************************* DO XWOR%1 BYTE K=FCDO)MFFFF+N-Z*NOCMO+XWOR%3/ND+NI;K=FCDO)MFFFF+N-Z*NOCMO+XWOR%4/ND+NI XWOR%5: VAL '0000000@@@@ < RECUPERATION DU DERNIER MOT, <******************************************************************************* TRN IF XWOR%2-K,,XEIF%, XWOR%5: VAL XWOR%5(MOCG < DANS LE CAS D'UNE TABLE DE LONGUEUR < IMPAIRE, ON EFFACE LE DERNIER OCTET < GENERE, $EQU $-D < ON REVIENT D'UN MOT EN ARRIERE, WORD XWOR%5 < ET ON REGENERE LE DERNIER MOT... XEIF%: VAL ENDIF NLS DO XC512 FLOAT <NILK<NILK<NILK < LIGNE PRECEDENTE. LST PAGE < < < P I L E D E T R A V A I L : < < STACK: EQU $ DZS 64 PROG XXXVEC: VAL XXVEC3 < DEFINITION DES PROGRAMMES VECTEUR 512... CALL #SIP VECTEUR 512# PAGE < < < M A R Q U A G E D ' U N P O I N T : < < < FONCTION : < CE SOUS-PROGRAMME MARQUE < LE POINT ARGUMENT (X,Y) AVEC < COMME NIVEAU, LE NIVEAU ARGU- < MENT (A) TRANSCODE VIA LA TA- < BLE 'LNIVO', CE QUI PERMET PAR < EXEMPLE LA SUPERPOSITION DE < PLUSIEURS IMAGES, EN FAISANT < QUE LEURS TABLES 'LNIVO' SOIENT < COMPLEMENTAIRES... < < < ARGUMENTS : < (A)=NIVEAU, < (X,Y)=COORDONNEES DU POINT. < < < RESULTAT : < (A)=NIVEAU TRANSCODE. < < POINT: EQU $ < < TRANSCODAGE DU NIVEAU : < PSR X < SAUVEGARDE DE LA COORDONNEE 'X'... LR A,X < (X)=NIVEAU ARGUMENT, LBY &ALNIVO < (A)=NIVEAU TRANSCODE, PLR X < RESTAURE : < (X)=COORDONNEE 'X'. < < MARQUAGE DU POINT : < BSR ASTORP < MARQUAGE : (X,Y) <-- (A)... < < ET RETOUR : < RSR PAGE < < < T E S T P E R I O D I Q U E D E ' C O M F L O ' : < < < FONCTION : < CE SOUS-PROGRAMME EST < APPELE DERRIERE CHAQUE < 'FDV' EXPLICITE AINSI < QU'APRES LES APPELS DE < 'RAC' ET 'CRAMR'... < < TSFLO: EQU $ PSR A LA COMFLO < TEST DE 'COMFLO' PAR UN 'LA' AFIN DE NE < PAS MODIFIER LES CODES (CARY & CO)... JAE TSFLO1 < OK... QUIT XXQUIT < E R R E U R P R O G R A M M E ... < ON A : < (A)=INDICATEURS FLOTTANTS... < BIT 0 : UNDERFLOW, < BIT 1 : OVERFLOW, < BIT 2 : DIVISION PAR ZERO, < BIT 3 : 'FIX' IMPOSSIBLE. STZ COMFLO < PUIS RAZ, CAR CES INDICATEURS SONT < REMANENTS... TSFLO1: EQU $ PLR A RSR XXXPRO: VAL YYYGOT < 'YYYGOT'. CALL #SIP UTILITAIRES# XXXPRO: VAL YYYFLO < 'YYYFLO'. CALL #SIP UTILITAIRES# PAGE < < < O P E R A T I O N S S U R L E S N O M B R E S < C O M P L E X E S : < < < FONCTION : < CES MODULES REALISENT LES OPERATIONS < DE BASE (+,-,*) SUR LES NOMBRES COMPLEXES < DE TELLE FACON QUE LE 'RESULTAT' PUISSE < ETRE L'UN DES 2 'ARGUMENTS'. < < < ARGUMENTS : < (A)=ADRESSE DE 'ARGUMENT 1', < (B)=ADRESSE DE 'ARGUMENT 2', < (Y)=ADRESSE DE 'RESULTAT'. < < USE C,NCA1 USE L,NCA2 USE W,NCR < < < A D D I T I O N : < < ZAD: EQU $ PSR A,B PSR C,L,W < SAUVEGARDE DES BASES CAR ON VA LES < UTILISER COMME POINTEURS. LR A,C < 'ARGUMENT 1', LR B,L < 'ARGUMENT 2', LR Y,W < 'RESULTAT'. #/FLD# NCA1R FAD NCA2R PSR A,B < SAVE LA PARTIE REELLE 'RESULTAT'... #/FLD# NCA1I FAD NCA2I #/FST# NCRI < PARTIE IMAGINAIRE 'RESULTAT'. PLR A,B #/FST# NCRR < PARTIE REELLE 'RESULTAT'. PLR C,L,W < RESTAURATIONS... PLR A,B RSR < ET RETOUR... < < < S O U S T R A C T I O N : < < ZSB: EQU $ PSR A,B PSR C,L,W < SAUVEGARDE DES BASES CAR ON VA LES < UTILISER COMME POINTEURS. LR A,C < 'ARGUMENT 1', LR B,L < 'ARGUMENT 2', LR Y,W < 'RESULTAT'. #/FLD# NCA1R FSB NCA2R PSR A,B < SAVE LA PARTIE REELLE 'RESULTAT'... #/FLD# NCA1I FSB NCA2I #/FST# NCRI < PARTIE IMAGINAIRE 'RESULTAT'. PLR A,B #/FST# NCRR < PARTIE REELLE 'RESULTAT'. PLR C,L,W < RESTAURATIONS... PLR A,B RSR < ET RETOUR... < < < M U L T I P L I C A T I O N : < < ZMP: EQU $ PSR A,B PSR C,L,W < SAUVEGARDE DES BASES CAR ON VA LES < UTILISER COMME POINTEURS. LR A,C < 'ARGUMENT 1', LR B,L < 'ARGUMENT 2', LR Y,W < 'RESULTAT'. #/FLD# NCA1I FMP NCA2I PSR A,B #/FLD# NCA1R FMP NCA2R XR C,K FSB -DFLOT+DEPILE,C XR C,K ADRI -DFLOT,K PSR A,B < SAVE LA PARTIE REELLE 'RESULTAT'... #/FLD# NCA1I FMP NCA2R PSR A,B #/FLD# NCA2I FMP NCA1R XR C,K FAD -DFLOT+DEPILE,C XR C,K ADRI -DFLOT,K #/FST# NCRI < PARTIE IMAGINAIRE 'RESULTAT', PLR A,B #/FST# NCRR < PARTIE REELLE 'RESULTAT'. PLR C,L,W < RESTURATIONS... PLR A,B RSR < ET RETOUR... USE L USE C PAGE < < < C A L C U L S I N U S E T C O S I N U S : < < < ARGUMENT : < A,B = ANGLE EN RADIANS, < < < RESULTAT : < A,B = LIGNE TRIGONOMETRIQUE DEMANDEE. < < COS: EQU $ < ENTRY 'COSINUS' : FSB PISUR2 < A,B = TETA-PI/2, BSR AFNEG < A,B = PI/2-TETA. SIN: EQU $ < ENTRY 'SINUS' : FST COS061 < SAVE TEMPORAIRE DE L'ANGLE. STZ COS063 JAGE COS072 BSR AFNEG FST COS061 IC COS063 COS072: EQU $ FDV DEUXPI BSR AFIX BSR AFLT FMP DEUXPI FSB COS061 BSR AFNEG FCAM PI3141 JL COS073 FSB PI3141 IC COS063 COS073: EQU $ FCAM PISUR2 JL COS074 FSB PI3141 BSR AFNEG COS074: EQU $ FDV PISUR2 FST COS061 FMP COS061 FST COS062 FMP COS071 FAD COS070 FMP COS062 FAD COS069 FMP COS062 FAD COS068 FMP COS062 FAD COS067 FMP COS061 DC COS063 JNE COS075 BSR AFNEG COS075: EQU $ RSR PAGE < < < C A L C U L D ' U N E P U I S S A N C E < Q U E L C O N Q U E R E E L L E ' P ' : < < < ARGUMENT : < (A,B)=NOMBRE 'N' ARGUMENT, < < < RESULTAT : < (A,B)='N' A LA PUISSANCE P. < < RAK: EQU $ PSR Y < < < L O G N E P E R I E N : < < LOGN: EQU $ STZ SIGNE < =0 : SIGNE "+" A PRIORI... FCAZ JGE LOGN1 < POSITIF... IC SIGNE < =1 : SIGNE "-"... LOGN1: EQU $ LR A,Y FABS ANDI XXMASK #/FST# POLLO3 FAD POLLO4 #/FST# POLLO2 LR Y,A SWBR A SARS XXMASK=K FLT #/FST# POLLO1 #/FLD# POLLO3 FSB POLLO4 FDV POLLO2 #/FST# POLLO3 FMP POLLO3 FNEG FAD POLLO7 #/FST# POLLO2 #/FLD# POLLO6 FDV POLLO2 FAD POLLO5 FMP POLLO3 FSB POLLO8 FAD POLLO1 FMP POLLO9 < < < G E S T I O N D U S I G N E D E L ' E X P O S A N T : < < PSR A,B < SAVE LE 'LOG'... #/FLD# EXPOP FABS BSR AROND < ON PREND LA PARTIE ENTIERE (PAR EXCES < OU PAR DEFAUT) DE LA VALEUR ABSOLUE DE < L'EXPOSANT... TBT NBITMO-B < QUELLE EST SA PARITE ??? JC RAK1 < IMPAIRE, 'SIGNE' RESTE TEL QUEL... STZ SIGNE < PAIRE : ON FORCE "+" (SIGNE INCHANGE)... RAK1: EQU $ PLR A,B < RESTAURATION DU LOG, FMP EXPOP < ET ON CALCULE P*LOG... < < < E X P O N E N T I E L L E : < < EXP: EQU $ FMP POLEX4 #/FST# POLEX3 FIX STA POLEX5 FLT FCAM POLEX3 JNV EXPON3 #/FLD# POLEX6 #/FST# POLEX3 JMP EXPON5 EXPON3: EQU $ CPZ POLEX3 JGE EXPON4 DC POLEX5 LA POLEX5 FLT EXPON4: EQU $ FSB POLEX3 FNEG #/FST# POLEX2 FMP POLEX2 #/FST# POLEX1 FAD POLEX8 #/FST# POLEX3 #/FLD# POLEY0 FDV POLEX3 FAD POLEX1 FMP POLEX9 FAD POLEY1 FSB POLEX2 #/FST# POLEX3 #/FLD# POLEX7 FMP POLEX2 FDV POLEX3 FAD POLEX6 #/FST# POLEX3 EXPON5: EQU $ SWBR A SARS XXMASK=K AD POLEX5 CPI XX7F JG $ < E R R E U R P R O G R A M M E ... CPI XX80 JGE EXPON6 #/FLD# F0 < ON PREND LE MINIMUM... JMP EXPON7 EXPON6: EQU $ XWOR%1: VAL XXMASK=K XWOR%1: VAL -XWOR%1 ANDI XXMASK>XWOR%1 STA POLEX5 LA POLEX3 ANDI XXMASK AD POLEX5 EXPON7: EQU $ CPZ SIGNE < PRISE EN COMPTE DU SIGNE SIMULE : JE EXP1 < POSITIF, ON LAISSE LE RESULTAT TEL QUEL.. FNEG < NEGATIF, ON INVERSE... EXP1: EQU $ BSR ATSFLO PLR Y RSR PAGE < < < C A L C U L D E L A F O N C T I O N ' A R C T G ' : < < < ARGUMENT: < (A,B)=VALEUR ARGUMENT. < < < RESULTAT: < (A,B)='ARCTG' DE L'ARGUMENT EN RADIANS. < < ARCTG: EQU $ < < SAUVEGARDES ET INITIALISATIONS. < PSR X,L STZ ATGSDX < ARGUMENT 'X' POSITIF OU NUL A PRIORI. FCAZ JGE ARCTG1 DC ATGSDX < ARGUMENT 'X' NEGATIF. ARCTG1: EQU $ FABS < U = ABS(X). FCAM ATGUN JGE ARCTG2 < < U < 1 : J RECOIT 0. < LXI K JMP ARCTG3 ARCTG2: EQU $ < < U >= 1 : J RECOIT 2 ET U RECOIT 1/U. < LXI W+W < 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 I+I,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 I,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 -I-I,X CPZR X JE ARCTG6 JL ARCTG7 ADRI -I,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,L RSR PAGE IF XREDUC-EXIST,XEIF%9,,XEIF%9 < < < S I M U L A T I O N D ' U N E P R E C I S I O N < D E C A L C U L I N F E R I E U R E : < < < ARGUMENT : < (A,B)=NOMBRE FLOTTANT SUR 32 BITS, < (REDUCA,REDUCB)=MASQUE SUR 32 BITS DES 32 BITS DE (A,B) < A CONSERVER. < < < RESULTAT : < (A,B)=NOMBRE FLOTTANT EN PRECISION REDUITE. < < REDUC: EQU $ AND REDUCA < REDUCTION DES 16 PREMIERS BITS, XR A,B AND REDUCB < REDUCTION DES 16 DERNIERS BITS. XR A,B RSR XEIF%9: VAL ENDIF PAGE < < < P O I N T D ' E N T R E E : < < DEBUT: EQU $ < < INITIALISATION DES REGISTRES : < LRM C,L,K WORD COM+DEPBAS < POSITIONNEMENT DE 'C', WORD LOC+DEPBAS < DE 'L', WORD STACK-DEPILE < ET DE 'K'. < < CONNEXION A LA 'CDA' : < CPZ IBANDE < GENERE-T'ON UNE BANDE ??? JNE GEN51 < OUI, PAS DE CONNEXION 'CDAJ'... LAI PAGER BSR AGPCDA < AFIN D'ATTEINDRE LA MEMOIRE DU '68000' < ET LA MEMOIRE 'SOLAR' QUI LA PRECEDE < AFIN D'Y METTRE 'BUF'... GEN51: EQU $ < < < E N T R Y D E R E B O U C L A G E : < < DEBUT4: EQU $ DEBUT9: EQU $ < < MODIFICATION A PRIORI DU 'PRESC' : < LRM A WORD DEBUT5 < POUR 'XXXPRE'... ACTD XXXPRE < ON CHANGE ALORS SYSTEMATIQUEMENT APRES < PASSAGE ICI LE 'PRESC' DU PROGRAMME, AFIN < DE REVENIR SUR LA VISUALISATION APRES < CHAQUE ALT-MODE (VIA 'DEBUT5'...). < < INITIALISATION A PRIORI < DU TRACE DES "TRAJECTOIRES" : < LRM A,B,X,Y WORD CORBT?BANTI=FMASK(K=FCINST WORD MMOT WORD K WORD COSBT?VELODD=FMASK(K?VECTSB=FCINST STA VECANT < PAS D'ANTI-ALIASING, STB VEPOIN < PAS DE POINTILLE, STX VEDECA < PAS DE DECALAGE DES NIVEAUX, STY VECTRS < MODE 'SBT' EN LOGIQUE BINAIRE. < < PREPARATION DE LA VALEUR < DE SEUIL DU MODULE DES < NOMBRES COMPLEXES : < #/FLD# MODUL IF XREDUC-EXIST,XEIF%9,,XEIF%9 BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... XEIF%9: VAL ENDIF #/FST# WMODUL < < INITIALISATION DU GESTIONNAIRE < DE BANDES MAGNETIQUES (A PRIORI) : < LA ABLOC0 JAL INIT20 < ON FERA DU SEQUENTIEL STRICT... STA DEMMT+ARGESC < ADRESSE DU PREMIER BLOC A LIRE, INIT20: EQU $ STZ IBUFMT < POUR FORCER LA PREMIERE LECTURE... < < CALCUL DES PAS D'INTERPOLATIONS : < < NOTONS 'D', 'C' ET 'A' RESPECTIVE- < MENT UNE COORDONNEE DE 'DEPART', < 'COURANTE' ET D''ARRIVEE'. NOTONS < AUSSI 'K' LE RAPPORT DE PASSAGE DE < L'IMAGE 'I' A L'IMAGE 'I+1'. < ON CHOISIT UNE RELATION BARYCENTRI- < QUE DU TYPE : < < C=K*C+(1-K)*A, < < SOIT : < < C=K*(C-A)+A, < < AVEC INITIALEMENT : < < C=D. < < CALCUL DE 'COEF' : < < ON PREND : < COEF=EPSI**(1/(N-1)), < LA NIMAGE < (A)=NOMBRE D'IMAGES A GENERER... CPI W JLE INT01 < IL N'Y EN A QU'UNE SEULE... ADRI -I,A < IL Y EN A PLUS D'UNE, LE NOMBRE DE PAS < ET DONC LE NOMBRE D'IMAGES MOINS UNE... FLT #/FST# FWORK < ET SAVE... #/FLD# F1 < 1, FDV FWORK < 1/(N-1), #/FST# EXPOP < ET SAVE... #/FLD# EPSI < EPSI, BSR ARAK < ELEVATION A LA PUISSANCE (EXPOP)... #/FST# COEF < COEF=EPSI**(1/(N-1)). INT01: EQU $ < < INITIALISATION DE LA < FENETRE COURANTE : < #/FLD# PR0D #/FST# PR0 < LIMITE REELLE INFERIEURE, #/FLD# PR1D #/FST# PR1 < LIMITE REELLE SUPERIEURE. #/FLD# PI0D #/FST# PI0 < LIMITE IMAGINAIRE INFERIEURE, #/FLD# PI1D #/FST# PI1 < LIMITE IMAGINAIRE SUPERIEURE. < < CHARGEMENT DU NOMBRE D'IMAGES : < LX NIMAGE < (X)=NOMBRE D'IMAGES A GENERER. < < < I N I T I A L I S A T I O N S : < < INIT01: EQU $ PSR X < SAUVEGARDE DU NOMBRE D'IMAGES A < GENERER... < < DEFINITION DE LA FENETRE < D'OBSERVATION DE L'ENSEMBLE < DE MANDELBROT : < #/FLD# PR1 < DROITE, FSB PR0 < DROITE-GAUCHE, FDV FNC < (DROITE-GAUCHE)/512, #/FST# DELTAR < SOIT LA LARGEUR REELLE... #/FLD# PI1 < HAUT, FSB PI0 < HAUT-BAS, FDV FNL < (HAUT-BAS)/512, #/FST# DELTAI < SOIT LA HAUTEUR REELLE... < < < G E N E R A T I O N D E L ' I M A G E : < < GEN69: EQU $ CPZ IBANDE < GENERE-T'ON UNE BANDE ??? JNE GEN69N < OUI, PAS D'EFFACEMENT... CPZ IERASE < FAUT-IL EFFACER ??? JE GEN69N < NON... IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF < < EFFACEMENT DE L'ECRAN : < XWOR%1: VAL NIV256=K IF BIT>XWOR%1-NIV256,,XWOR%, IF ATTENTION : LE CALCUL DU MASQUE SELECTANT TOUS IF LES PLANS EST ABSURDE !!! XWOR%: VAL ENDIF LAI NIV256-MASK)MOCD STA MCDAJ LA ARPLAN < (A)=ADRESSE DU REGISTRE DE SELECTION... BSR APWCDA < ET ON SELECTIONNE TOUS LES PLANS... LAI ERASE STA MCDAJ LA ARCMD BSR APWCDA < EFFACEMENT DE L'ECRAN, ET REINITIALISA- < TION DE TOUS LES REGISTRES... LAD TEMPO SVC < ET ON FAIT UN PETIT DODO... LAI XCTRL1 STA MCDAJ LA ACTRL1 BSR APWCDA < INITIALISATION DE 'CTRL1'. LAI XCTRL2 STA MCDAJ LA ACTRL2 BSR APWCDA < INITIALISATION DE 'CTRL2'. < < RECUPERATION DE L'IMAGE : < GEN69N: EQU $ LY VECTNL < (Y)=PARTIE IMAGINAIRE, GEN01: EQU $ LX VECTNC < (X)=PARTIE REELLE. GEN02: EQU $ PSR X,Y < SAUVEGARDE DE (REELLE,IMAGINAIRE)... < < INITIALISATION DE LA TRACE < DES "TRAJECTOIRES" : < CPZ ITRACE < FAUT-IL TRACER LES "TRAJECTOIRES" ??? JE GEN60 < NON... IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF LR X,A < OUI : SLLS XXDEDX STA VECGX2 < INITIALISATION DU LR Y,A SLLS XXDEDY STA VECGY2 < VECTEUR A TRACER. LA NTRACE STA VECTNI < ET DU NIVEAU INITIAL... GEN60: EQU $ < < PASSAGE DES COORDONNEES < ECRAN (X,Y) AU NOMBRE < COMPLEXE 'C' COURANT : < LR X,A < REELLE, FLT FMP DELTAR < MISE DANS LA FENETRE, FAD PR0 < ET TRANSLATION, #/FST# CR < SOIT LA PARTIE REELLE DE 'C', #/FST# SCR < ET SAVE A CAUSE DE "JULIA"... LR Y,A < IMAGINAIRE, FLT FMP DELTAI < MISE DANS LA FENETRE, FAD PI0 < ET TRANSLATION, #/FST# CI < SOIT LA PARTIE IMAGINAIRE DE 'C', #/FST# SCI < ET SAVE A CAUSE DE "JULIA"... < < INITIALISATION DU CUMUL 'Z' : < #/FLD# F0R NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST #/FST# ZR #/FLD# F0I NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST #/FST# ZI CPZ IJULIA < QUEL EST L'ENSEMBLE A CONSTRUIRE ??? JE GEN70 < 'MANDELBROT' : LES INITIALISATIONS SONT < DONC BONNES. IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST PRECEDENT EST IDIOT !!! XEIF%: VAL ENDIF < < CAS DE L'ENSEMBLE DE 'JULIA', IL < FAUT PERMUTER (CR,CI) ET (ZR,ZI) : < #/FLD# ZR < ZR, PSR A,B #/FLD# ZI < ZI, PSR A,B #/FLD# CR FNEG #/FST# ZR < ZR <-- -CR, #/FLD# CI FNEG #/FST# ZI < ZI <-- -CI, PLR A,B #/FST# CI < CI <-- ANCIEN ZI, PLR A,B #/FST# CR < CR <-- ANCIEN ZR. GEN70: EQU $ < < ITERATION DE LA TRANSFORMATION < Z <-- Z**3-3*(C**2)*Z+LAMBDA+2*(C**3) : < NIVCUR:: VAL XXN255 < NIVEAU DE MARQUAGE DU CURSEUR. LIMITE:: VAL NIVCUR+Z-I < NOMBRE D'ITERATIONS MAXIMAL ACCEPTE. < (LIMITE A CAUSE DU CURSEUR...) LRM X WORD LIMITE < (X)=NOMBRE D'ITERATIONS. GEN03: EQU $ LRM A,B,Y WORD ZR;ZR;ZW1 BSR AZMP < Z**2, LRM A,B,Y WORD ZR;ZW1;ZW1 BSR AZMP < Z**3. LRM A,B,Y WORD ZR;TROISR;ZW2 BSR AZMP < -3*Z, LRM A,B,Y WORD SCR;SCR;ZW3 BSR AZMP < C**2, LRM A,B,Y WORD ZW2;ZW3;ZW4 BSR AZMP < 3*Z*(C**2). LRM A,B,Y WORD ZW1;ZW4;ZW6 BSR AZSB < Z**3-3*Z*(C**2). LRM A,B,Y WORD SCR;ZW3;ZW1 BSR AZMP < C**3, LRM A,B,Y WORD DEUXR;ZW1;ZW1 BSR AZMP < 2*(C**3), LRM A,B,Y WORD LAMBDR;ZW1;ZW2 BSR AZAD < LAMBDA+2*(C**3). LRM A,B,Y WORD ZW6;ZW2;ZR BSR AZAD < Z**3-3*Z*(C**2)+LAMBDA+2*(C**3). #/FLD# ZR < ZR... < < TRACE EVENTUELLE DE LA "TRAJECTOIRE" < DE LA TRANSFORMATION (ON MARQUE LE < CHAINAGE (Z(N),(Z(N+1))) : < CPZ ITRACE < FAUT-IL TRACER LES "TRAJECTOIRES" ??? JE GEN61 < NON... IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF PSR A,B < SAVE 'ZR'. LA VECTNI AD PTRACE STA VECTNI < NIVEAU DE TRACE DU VECTEUR COURANT. LA VECGX2 LB VECGY2 STB VECGY1 < ET STA VECGX1 < CHAINAGE DE L'ORIGINE... #/FLD# ZR FSB PR0 FDV DELTAR FIX SLLS XXDEDX STA VECGX2 < GENERATION DE LA #/FLD# ZI FSB PI0 FDV DELTAI FIX SLLS XXDEDY STA VECGY2 < NOUVELLE EXTREMITE... BSR AVE512 < ET TRACE DE LA "TRAJECTOIRE"... PLR A,B < RESTAURE 'ZR'... GEN61: EQU $ < < TEST DE CONVERGENCE : < FMP ZR < ZR**2, NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST #/FST# FWORK < ET SAVE... #/FLD# ZI < ZI, NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST FMP ZI < ZI**2, NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST FAD FWORK < ZR**2+ZI**2, SOIT LE CARRE DU MODULE NLS IF XREDUC-EXIST,XEIF%9,,XEIF%9 LST BSR AREDUC < SIMULATION D'UN MANQUE DE PRECISION < DANS LES CALCULS... NLS XEIF%9: VAL ENDIF LST < DU NOMBRE COMPLEXE (ZR,ZI). FCAM WMODUL < EST-ON DANS OU HORS DE L'ENSEMBLE ??? JGE GEN04 < ON VIENT D'EN SORTIR... JDX GEN03 < A PRIORI ON Y RESTE, ON CONTINUE DONC < L'ITERATION DE : Z <-- Z**2+C... ADRI I,X < POUR RETOMBER SUR NOS PIEDS... GEN04: EQU $ IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST QUI SUIT EST IDIOT !!! XEIF%: VAL ENDIF CPZ IRAYON < FAUT-IL TRACER LES RAYONS ??? < (NOTA : ON APPELLE "RAYON" LES ARGUMENTS < TETA=ARCTG(ZI/ZR) DES NOMBRES COMPLEXES < OBTENUS EN FIN D'ITERATION. JE GEN80 < NON, LE NIVEAU DE MARQUAGE SERA LE NOMBRE < D'ITERATIONS. < < OUI, LA COULEUR DE MARQUAGE < SERA LE "RAYON" : < FCMZ ZR < LA TANGENTE NE SERAIT-ELLE PAS INFINIE ?? JNE GEN81 < NON... #/FLD# ATGPS2 < OUI, L'ARGUMENT VAUT DONC +/- PI/2. FCMZ ZI < "+" OU "-" ??? JGE GEN82 < +PI/2. FNEG < -PI/2, FAD DEUXPI < OU 3*PI/2... JMP GEN82 < VERS LE CALCUL DU NIVEAU... GEN81: EQU $ #/FLD# ZI < 'ZR' N'EST PAS NUL, FDV ZR < ON CALCULE DONC LA TANGENTE DE L'ARGUMENT FABS < AFIN DE CALCULER L'ARC-TANGENTE DANS < LE SEGMENT (0,PI/2)... BSR AARCTG < PUIS L'ARC-TANGENTE. FCMZ ZR JGE GEN83 FCMZ ZI JGE GEN84 FAD PI < ZR<0 ET ZI<0 : PI+ARCTG... JMP GEN89 GEN84: EQU $ FSB PI FNEG < ZR<0 ET ZI>=0 : PI-ARCTG... JMP GEN89 GEN83: EQU $ FCMZ ZI JGE GEN85 FSB DEUXPI FNEG < ZR>=0 ET ZI<0 : 2*PI-ARCTG... JMP GEN89 GEN85: EQU $ < ZR>=0 ET ZI>=0 : ARCTG... GEN89: EQU $ GEN82: EQU $ FDV DEUXPI < QUE L'ON PASSE DE 'RADIANS' EN NOMBRE < DE TOURS, FMP F255 < ET QUE L'ON CONVERTIT EN NIVEAU... BSR AROND JMP GEN86 < VERS SA MISE EN PLACE... < < MARQUAGE DES POINTS AVEC < LE NOMBRE D'ITERATIONS : < GEN80: EQU $ IF Z-I,,XEIF%, IF ATTENTION : CE QUI SUIT EST IDIOT !!! XEIF%: VAL ENDIF ADRI -Z,X < AFIN DE CALCULER UN NIVEAU DE GRIS... LR X,A < (A)=NIVEAU DE GRIS DU POINT COURANT, GEN86: EQU $ PLR X,Y < (X,Y)=POINT COURANT, < < MARQUAGE DU POINT (X,Y) : < PSR X,Y < ON LE SAUVE... STA NIVOC < AINSI QUE LE NIVEAU COURANT... LR X,B < (B)=COORDONNEE 'X'. LX SIZEY < (X)=HAUTEUR DES POINTS. GEN10: EQU $ PSR B,X LX SIZEX < (X)=LARGEUR DES POINTS. GEN11: EQU $ LR B,A < (A)=COORDONNEE 'X' ET VALIDATION : JAL GEN12 < HORS-ECRAN... CP VECTNC JG GEN12 < HORS-ECRAN... LR Y,A < (A)=COORDONNEE 'Y' ET VALIDATION : JAL GEN12 < HORS-ECRAN... CP VECTNL JG GEN12 < HORS-ECRAN... LA NIVOC < LE POINT COURANT EST DANS L'ECRAN : < (A)=NIVEAU A MARQUER... XR B,X < < CHOIX DU MODE DE GENERATION : < CPZ IBANDE < EN FAIT DOIT-ON ECRIRE UNE BANDE ??? JE GEN21 < NON... < < OUI, GENERATION D'UNE BANDE : < PSR A,X LX IBUFMT < (X)=INDEX DE L'OCTET COURANT, STBY &ABUFMT < (A)=OCTET COURANT... ADRI I,X < ET PREPARATION DE STX IBUFMT < L'ACCES SUIVANT... < < TEST DE L'ETAT DU BUFFER : < LR X,A < (A)=INDEX COURANT : CP ZBUFMT < LE BUFFER A-T'IL ETE VIDE (OU EST-CE < L'ETAT INITIAL) ??? JL GEN31 < NON... < < CAS OU LE BUFFER EST PLEIN : < GEN32: EQU $ LAD DEMMT < (A)=ADRESSE DE LA DEMANDE, SVC < QUE L'ON ENVOIE... JE GEN33 < OK... QUIT XXQUIT < E R R E U R D ' A S S I G N A T I O N.. JMP GEN32 < ET ON RE-TENTE... GEN33: EQU $ IC DEMMT+ARGESC < PREPARATION DE L'ADRESSE DU BLOC SUIVANT, STZ IBUFMT < (A)=INDEX DU PREMIER OCTET. GEN31: EQU $ PLR A,X JMP GEN20 < THAT'S ALL... < < NON, ON GENERE UNE IMAGE : < GEN21: EQU $ BSR APOINT < MARQUAGE DU POINT (X,Y) AVEC LE < NIVEAU (A)... GEN20: EQU $ XR B,X GEN12: EQU $ ADRI I,B < BALAYAGE HORIZONTAL... JDX GEN11 PLR B,X < RESTAURATION DE L'ABSCISSE (B) DE DEBUT < DE LIGNE... ADRI I,Y < BALAYAGE VERTICAL... JDX GEN10 PLR X,Y < ET RESTAURATION DU POINT COMPLEXE < COURANT... < < ARRET EVENTUEL APRES CHAQUE POINT : < CPZ IQUITR < FAUT-IL S'ARRETER ??? JE GEN62 < NON... IF NEXIST-K,,XEIF%, IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF QUIT XXQUIT < OUI... GEN62: EQU $ < < PASSAGE AU POINT (X,Y) ET < DONC AU NOMBRE COMPLXE 'C' SUIVANT : < LR X,A SB PASIX < PROGRESSION REELLE, LR A,X JAL GEN02X < OUI... BR AGEN02 < NON... GEN02X: EQU $ LR Y,A < OUI... SB PASIY < PROGRESSION IMAGINAIRE, LR A,Y JAL GEN01X < OUI... BR AGEN01 < NON... GEN01X: EQU $ < < OUI, TRAITEMENT DE FIN... < CPZ IQUIT < FAUT-IL S'ARRETER ??? JE GEN410 < NON... IF EXIST-K,XEIF%,,XEIF% IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF QUIT XXQUIT < OUI... GEN410: EQU $ CPZ IBANDE < A-T'ON GENERE UNE BANDE ??? JNE GEN400 < OUI, PAS D'ECRITURE VIDEO... CPZ IVIDEO < FAUT-IL ECRIRE ??? JE GEN400 < NON... IF EXIST-K,XEIF%,,XEIF% IF ATTENTION : LE TEST CI-DESSUS EST IDIOT !!! XEIF%: VAL ENDIF PSR X < OUI : LAD DEMVIW SVC < ON ECRIT L'IMAGE COURANTE... LAD DEMVIR SVC < ET ON ATTEND L'ACQUITTEMENT... PLR X GEN400: EQU $ < < PASSAGE A L'IMAGE SUIVANTE : < PLR X < (X)=NOMBRE D'IMAGES A GENERER... JDX INT02 CPZ IBANDE < A-T'ON GENERE UNE BANDE ??? JE GEN41 < NON... LAD DEMMTM SVC < OUI, ON ECRIT UN 'TAPE-MARK'... GEN41: EQU $ QUIT XXQUIT < C'EST FINI... BR ADEB9 < ET ON ITERE EVENTUELLEMENT... < < INTERPOLATION : < INT02: EQU $ #/FLD# PR0 < C, FSB PR0A < C-A, FMP COEFR0 < (C-A)*K, FAD PR0A < (C-A)*K+A, #/FST# PR0 < NOUVELLE LIMITE REELLE INFERIEURE... #/FLD# PR1 < C, FSB PR1A < C-A, FMP COEFR1 < (C-A)*K, FAD PR1A < (C-A)*K+A, #/FST# PR1 < NOUVELLE LIMITE REELLE SUPERIEURE... #/FLD# PI0 < C, FSB PI0A < C-A, FMP COEFI0 < (C-A)*K, FAD PI0A < (C-A)*K+A, #/FST# PI0 < NOUVELLE LIMITE IMAGINAIRE INFERIEURE... #/FLD# PI1 < C, FSB PI1A < C-A, FMP COEFI1 < (C-A)*K, FAD PI1A < (C-A)*K+A, #/FST# PI1 < NOUVELLE LIMITE IMAGINAIRE SUPERIEURE... BR AINIT1 < ET ON PASSE A L'IMAGE SUIVANTE... < < < E N T R Y A L T - M O D E : < < DEBUT5: EQU $ QUIT XXQUIT < A T T E N T E ... LRM C,L,K < ON REINITIALISE 'C', 'L' ET 'K' AU CAS < D'UNE RE-ENTREE PAR UN 'ALT-MODE'... WORD COM+DEPBAS < 'C', WORD LOC+DEPBAS < 'L', WORD STACK-DEPILE < 'K'. < < GESTION DU CURSEUR GRAPHIQUE : < CURS01: EQU $ LAD OG SVC 0 < OPEN GRAPHIQUE. LAD CU SVC 0 < MISE EN FONCTION CURSEUR. LAD LCU SVC 0 < LECTURE DU CURSEUR. < < PASSAGE DE L'ESPACE GRAPHIQUE < A L'ESPACE MOYENNE DEFINITION : < LA CURSOY < Y(CURSEUR). MP C4 < POUR ATTEINDRE DV C3 < TOUTE LA VIDEO... SLRS SIZYVI/XL512=K < REDUCTION VIDEO. LR A,Y < Y=Y(CURSEUR VIDEO). LA CURSOX < X(CURSEUR). SLRS SIZXVI/XC512=K < REDUCTION VIDEO. LR A,X < X=X(CURSEUR VIDEO). LBY CURSOR < A=COMMANDE ASSOCIEE. < < ANALYSE DE LA COMMANDE : < < COMMANDES RECONNUES : < < C : MARQUAGE SEUL DU CURSEUR, < F : MEMORISATION DE LA FENETRE D'ARRIVEE REDUITE < AU POINT COURANT (X,Y), < G : VERS LE DEBUT DU PROCESSUS DE GENERATION... < CPI "C" JNE CURS03 < ??? < < MARQUAGE DU CURSEUR SEUL : < LAI NIVCUR BSR APOINT < MARQUAGE DU POINT (X,Y) AVEC LE NIVEAU < MAXIMAL... JMP CURS01 < ET ON ITERE LE CURSEUR... CURS03: EQU $ CPI "F" JNE CURS02 < ??? < < MEMORISATION DE LA FENETRE < D'ARRIVEE (IDENTIQUE ET RE- < DUITE AU POINT VISE) : < LR X,A < X, FLT FMP DELTAR < X*(DROITE-GAUCHE)/512, FAD PR0 < GAUCHE+X*(DROITE-GAUCHE)/512, #/FST# PR0A < SOIENT LES LIMITES INFERIEURES #/FST# PR1A < ET SUPERIEURES REELLES. LR Y,A < Y, FLT FMP DELTAI < Y*(HAUT-BAS)/512, FAD PI0 < BAS+Y*(HAUT-BAS)/512, #/FST# PI0A < SOIENT LES LIMITES BASSES #/FST# PI1A < ET HAUTES IMAGINAIRES. JMP CURS01 < ET ON ITERE LE CURSEUR... CURS02: EQU $ CPI "G" JNE CURS01 < ??? < < LANCEMENT DE LA GENERATION < DE L'ENSEMBLE : < BSR AGOTO WORD DEBUT4 < (A)=ADRESSE D'ITERATION SUR ALT-MODE... PAGE < < < U P D A T E S : < < $EQU PR0D FLOAT -2.2 < A GAUCHE DE LA FENETRE DE DEPART, $EQU PR1D FLOAT +2.2 < A DROITE DE LA FENETRE DE DEPART. $EQU PI0D FLOAT -2.2 < EN BAS DE LA FENETRE DE DEPART, $EQU PI1D FLOAT +2.2 < EN HAUT DE LA FENETRE DE DEPART. $EQU NIMAGE WORD W < NOMBRE D'IMAGES A GENERER. $EQU EPSI FLOAT 0.000010 < EPSILON DE CALCUL DE 'COEF'. < < DEFINITION DE LA FENETRE D'ARRIVEE ('NUMFAR') : < FAR01:: VAL K < FENETRE D'ARRIVEE STANDARD. FAR02:: VAL '0@@@@+I < FENETRE D'ARRIVEE HOMOTHETIQUE NON ROTEE. FAR03:: VAL '0@@@@+I < FENETRE D'ARRIVEE DANS LES FILAMENTS. FARNN:: VAL '0@@@@ < DERNIERE FENETRE... NUMFAR: @ XWOR%1: VAL KOLF=FMASK+KOLTES=FVAL XWOR%1: VAL KOLC=FMASK+KDP=FVAL?XWOR%1 XWOR%2: VAL KOLTED=FMASK+KOL0=FVAL XWOR%2: VAL KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2 XWOR%3: VAL XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE COURANT... XWOR%4: VAL MSYMBI=FMASK+KOL0=FVAL XWOR%4: VAL MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4 XWOR%5: VAL XWOR%4=FCSYMT < ETAT DU SYMBOLE 'NUMFAR'... XWOR%6: VAL XWOR%5=FCSIGN XWOR%7: VAL XWOR%5(MSYMBN)MSYMBN=FCSIGN IF XWOR%6*XWOR%7,XEIF%,,XEIF% NUMFAR:: VAL FARNN < DERNIERE FENETRE A PRIORI... XEIF%: VAL ENDIF IF NUMFAR-FAR01,XEIF%,,XEIF% $EQU PR0A FLOAT -0.73000 < A GAUCHE DE LA FENETRE D'ARRIVEE, $EQU PR1A FLOAT -0.73000 < A DROITE DE LA FENETRE D'ARRIVEE. $EQU PI0A FLOAT 0.22429 < EN BAS DE LA FENETRE D'ARRIVEE, $EQU PI1A FLOAT 0.22429 < EN HAUT DE LA FENETRE D'ARRIVEE. XEIF%: VAL ENDIF IF NUMFAR-FAR02,XEIF%,,XEIF% $EQU PR0A FLOAT -1.792 < A GAUCHE DE LA FENETRE D'ARRIVEE, $EQU PR1A FLOAT -1.745 < A DROITE DE LA FENETRE D'ARRIVEE. $EQU PI0A FLOAT -0.25 < EN BAS DE LA FENETRE D'ARRIVEE, $EQU PI1A FLOAT 0.25 < EN HAUT DE LA FENETRE D'ARRIVEE. XEIF%: VAL ENDIF IF NUMFAR-FAR03,XEIF%,,XEIF% $EQU PR0A FLOAT -0.234254 < A GAUCHE DE LA FENETRE D'ARRIVEE, $EQU PR1A FLOAT -0.234254 < A DROITE DE LA FENETRE D'ARRIVEE. $EQU PI0A FLOAT 0.828110 < EN BAS DE LA FENETRE D'ARRIVEE, $EQU PI1A FLOAT 0.828110 < EN HAUT DE LA FENETRE D'ARRIVEE. XEIF%: VAL ENDIF $EQU MODUL XWOR%1: VAL 10 < "RAYON" COURANT... XWOR%2: VAL XWOR%1*XWOR%1 < CARRE DU "RAYON"... FLOAT <XWOR%2<K<K < POUR LE TEST DE DIVERGENCE... $EQU LAMBDR FLOAT <XWOR%1<K<K < PARTIE REELLE DE 'LAMBDA', $EQU LAMBDI FLOAT 0.0 < PARTIE IMAGINAIRE DE 'LAMBDA'. $EQU F0R FLOAT <K<K<K < VALEUR INITIALE DU CUMUL $EQU F0I FLOAT <K<K<K < DE Z <-- Z**2+I. PAGE < < < T A B L E D E S S Y M B O L E S : < < IF '00000000000@,XEIF%,,XEIF% EST XEIF%: VAL ENDIF DATE END DEBUT