NMPROC: VAL "GF" < NOM DU PROCESSEUR. IDP "GF - RELEASE 01/06/1979" IDP "JOHN F. COLONNA" EOT #SIP DEFINITION CMS5# QUANTA: VAL 1 < DEFINITION DU QUANTA DISQUE IF ORDI-"S",XWOR%,,XWOR% < SUIVANT L'ORDINATEUR. QUANTA: VAL 1 XWOR%: VAL 0 EOT #SIP DEF PROCESSEUR# PROG WORD IMAGE < ENTRY POINT DU GENERATEUR. WORD 0 PIMAGE: EQU $ < P='12 !!! LRP L BR -2,L < ENTRY DANS LE PROCESSEUR. EOT #SIP DEFINITION ITEM# ITEM1: EQU ZERO+PILE-LTNI < @ITEM1. ITEM2: EQU ZERO+PILE-LTNI-LTNI DEDX: VAL 0 DEDY: VAL 0 MAXRED: VAL 10 < FACTEUR DE REDUCTION MAX. PAGE < < < L O C A L : < < < < CARTES DE CONTROLE SGF : < MAC: ASCI "!ASSIGN A=" BYTE "S";'04 MAO: ASCI "!ASSIGN A=N," LNFIC: VAL 10 < NBRE DE MOTS MAX D'UN NOM SGF. NMAO: DZS LNFIC BYTE '04;0 < PAR PRUDENCE... < < BUFFER SGF : < BUFSGF: DZS 128*QUANTA LOCAL LOC: EQU $ < < BUFFER ET MESSAGES : < CURSOR: BYTE "N";0 < CURSEUR GRAPHIQUE DE LA VISU : < OCTET0=CARACTERE DE DEBLOCAGE , < (NON A PRIORI...) WORD 0 < MOT1=Y(CURSEUR GRAPHIQUE) , WORD 0 < MOT2=X(CURSEUR GRAPHIQUE). NOMSEG: WORD 0 < SEGMENT INVALIDE INITIALEMENT. SEGSGN: DZS 4 < SEGMENT GRAPHIQUE COURANT. LONSEG: VAL $-NOMSEG*2 SEG: EQU $ DO 4 WORD -1 < N'EXISTE PAS INITIALEMENT. SEGORG: EQU SEGSGN+0 SEGEXT: EQU SEGSGN+2 SEGMS0: WORD SEG-ZERO < ADRESSE ABSOLUE DE SEG. SAVEXT: DZS 2 < SAUVEGARDE DE L'EXTREMITE DU < SEGMENT PRECEDENT. X: VAL 1 Y: VAL 0 MINT: BYTE 2;'6D;">";0 REP: WORD 0 < REPONSE DE REDUCTION. WORD 0 < POUR LES ENTREES DE SEUILS. AMRED: WORD MRED AMEFFA: WORD MEFFAC AMCOPY: WORD MCOPY AMTR: WORD MTR AMMAT: WORD MMAT-1,X MDEL: BYTE 7;'6D ASCI "DX/DY=" AMSE: WORD MSE AMSEX: WORD MSEX AMSEY: WORD MSEY AMPERX: WORD MPERX AMPERY: WORD MPERY AP: WORD MF < MESSAGES DE PERMUTATION BITS X/Y. AMFIC: WORD MFIC AMPROG: WORD MPROG MERR: BYTE 3;'6D;"?";"?" MK: BYTE 3;'6D ASCI "K=" MX: BYTE 3;'6D ASCI "X=" MY: BYTE 3;'6D ASCI "Y=" MSGF: BYTE 5;'6D ASCI "SGF?" < < DEMANDES A CMS4 : < DEMREP: WORD '0101 < LECTURE DU FACTEUR DE REDUCTION. WORD REP-ZERO*2 WORD 1 < 1 CARACTERE. DEMSE: WORD '0101 < ENTREE DES SEUILS. WORD REP-ZERO*2 WORD 3 < SOUS FORME DE 3 CARACTERES < HEXADECIMAUX. DEMOUT: WORD '0202 < EDITION MESSAGE. WORD 0 < @OCTET DU MESSAGE. WORD 0 < LONGUEUR DU MESSAGE. DEMOB: WORD '0B02 < EMISSION MESSAGE SUR '0B. WORD 0 WORD 0 ERASE: WORD '0B05 < EFFACEMENT ECRAN VISU. OG: WORD '0B03 < OPEN GRAPHIQUE VISU EMISSION. CG: WORD '0B04 < CLOSE GRAPHIQUE VISU EMISSION. WG: WORD '0B0A < AFFICHAGE SEGMENT COURANT. WORD SEG-ZERO*2 WORD 8 WGT: WORD '0B0A < AFFICHAGE SEGMENT EN ZDC. WORD SEGSGN-ZERO*2 WORD 8 DEMGS: WORD '0008 < ACCES A LA ZDC. WORD NOMSEG-ZERO*2 WORD LONSEG WORD 'FFC0 DELGS: WORD '000A < ECRITURE DANS LA ZDC. WORD NOMSEG-ZERO*2 WORD SEGSGN-NOMSEG*2 WORD 'C000 COPY: WORD '0B07 < ECRITURE DIRECTE HARD-COPY. BYTE '1B;'17;'8D;'04 < ESC,CTRL-W,R/C. DEMCCI: WORD '0001 < DEMANDE DE RETOUR AU CCI. SLEEP: WORD '0005 < DEMANDE MISE EN SOMMEIL. WORD 0 WORD 15 < POUR 15 SECONDES. DEMSGN: WORD '0402 < DEMANDE SGN OVERLAY. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DEMNOM: WORD '0101 < ENTREE NOM DE FICHIER. WORD NMAO-ZERO*2 WORD LNFIC*2 CCII: WORD '0002 < ACCES CCI INTERPRETATIF. WORD 0 WORD 80 SGFO: WORD '0A04 < OPEN NEW DE LA CLEF 1.0. WORD 1;0 SGFC: WORD '0A07 < CLOSE SAVE LA CLEF 1.0. SGFW: WORD '0A02 < ECRITURE 1 ENREGISTREMENT. WORD BUFSGF-ZERO*2 WORD 128*2*QUANTA WORD 0 < < RELAIS DIVERS : < AGOGE: WORD GOGE < RETOUR A 'GE'. AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. APRINT: WORD PRINT < EDITION D'UN MESSAGE. APRINB: WORD PRINTB < EDITION MESSAGE SUR '0B. ADRAW: WORD DRAW < AFFICHAGE SEGMENT COURANT ZDC. AOPEN1: WORD OPEN1 < OPEN GRAPHIQUE+CHOIX VISU. ARCOPY: WORD RCOPY < ROUTINE DE HARD-COPY EVENTUEL < ET TEMPORISATION ASSOCIEE. AGETS: WORD GETS < RECUPERATION DES SEUILS. ACARD: WORD CARD < ROUTINE DIRECTIONS CARDINALES. AMS: WORD MS < MODIFICATION DE L'ORIGINE DE < LA LISTE DES SEGMENTS. ATRF: WORD TRF < ROUTINE D'OPERATION MATRICIELLE < SUR LES COORDONNEES X,Y. AXY: WORD XY < ENTREE DU POINT ((X),(Y)) DANS < LA LISTE DES SEGMENTS. AXY1: WORD XY1 < RE-INSERTION DU POINT (X,Y) < DANS LA LISTE DES SEGMENTS. ASEG: WORD SEG < POINTEUR COURANT DE LA LISTE < DES SEGMENTS. AREP: WORD REP,X < POUR CONVERSION DES SEUILS. ACCIN: WORD CCIN < ACCES CCI INTERPRETATIF. ABUFS: WORD BUFSGF+1,X < ACCES BUFFER SGF. ASGF: EQU ABUFS ASTBUF: WORD STBUF < MISE DE (X,Y) DANS LE FICHIER. ACLOSF: WORD CLOSEF < FERMETURE DU FICHIER... AMAC: WORD MAC < CARTE !ASSIGN A=C. AMAO: WORD MAO < CARTE !ASSIGN A=O,... AMESS: WORD 0 < SAVE L'ADRESSE DU MESSAGE A < L'ENTREE DE GETS EN VUE DES < ERREURS DE SYNTAXE ... ATYP: WORD ITEM2+IINDIC < TYPE EVENTUEL DE L'ITEM2. AITEM2: WORD ITEM2+LTN < RELAI VERS L'ADRESSE DU < POINT D'ENTREE DE L'ITEM2. AGETGS: WORD GETGS < ACCES AU SEGMENT COURANT ZDC. AINTER: WORD INTER < INTERROGATION PRIMAIRE. AGRAVE: WORD GRAVE < CALCULS DIVERS SUR LE DESSIN. ASQRT: WORD SQRT < EXTRACTION RACINE CARREE. AENTC: WORD ENTC < ENTREE D'UNE CONSTANTE 1-9,A-Z. ADIVIS: WORD DIVIS < DIVISION EXCES/DEFAUT. < < CONSTANTES : < KIN: WORD -1 < COMPTEUR DES ENTREES DANS 'VG'. ACNSYS: ASCI ":SYS" REDUC: WORD 0 < FACTEUR DE REDUCTION=0/-1/-2. NGE: WORD "GE" < NOM DE L'OVERLAY 'GE'. DELTAX: WORD 0 < DELTAX=ABS(X-X(1ER POINT)). DELTAY: WORD 0 < DELTAY=ABS(Y-Y(1ER POINT)). SEUIL: WORD 0 < SEUIL DE TEST DE DELTAX+DELTAY. SEUILX: WORD 0 < SEUIL DE TEST DE DELATX. SEUILY: WORD 0 < SEUIL DE TEST DE DELTAY. ISGF: WORD 0 < 0 : PAS D'OPERATIONS SGF EN COURS. INSGF: WORD 0 < 0 : OPERATIONS SGF VALIDEES. MAXBUF: WORD 128*QUANTA-4/4*4 < LONGUEUR MAXIMUM UTILE D'UN < BUFFER SGF. < < CONSTANTES DE CALCULS SUR LE DESSIN : < TEMPO: EQU $ < ZONE EN RECOUVREMENT AVEC PERX/PERY. GX: WORD 0 < X(G) ENTIERE, FGX: DZS 2 < X(G) FLOTTANTE. GY: WORD 0 < Y(G) ENTIERE, FGY: DZS 2 < Y(G) FLOTTANTE. FX: DZS 2 < X(POINT COURANT). FY: DZS 2 < Y(POINT COURANT). IXX: DZS 2 < MOMENT D'INERTIE XX, IYY: DZS 2 < MOMENT D'INERTIE YY, IXY: DZS 2 < MOMENT D'INERTIE XY (=YX). IYX: EQU IXY NPT: WORD 0 < NBRE DE SEGMENTS EN ENTIER, FNPT: DZS 2 < IDEM EN FLOTTANT. DELTA: DZS 4 < DELTA,DELTA+1=DISCRIMINANT DE < L'EQUATION AUX VALEURS PROPRES < DE LA MATRICE D'INERTIE. < DELTA+2,DELTA+3=RACINE < CARRE DU DELTA. UN: DZS 2 < RESULTAT DE SQRT. V1: DZS 2 < 1ER VECTEUR PROPRE, V2: DZS 2 < 2EME VECTEUR PROPRE. LTEMPO: VAL $-TEMPO-1 < LONGUEUR DE LA ZONE TEMPO. XTEMPO: VAL 32-LTEMPO < DOIT ETRE POSITIF.... TTEMPO: EQU ZERO+XTEMPO < ERREUR, SI MAUVAIS RECOUVREMENT. ARG: DZS 2 < ARGUMENT DE SQRT, ET DIVIS. KK: WORD 0 < CONSTANTE K, KX: WORD 0 < CONSTANTE X, KY: WORD 0 < CONSTANTE Y. DEUX: FLOAT 2 DIX: FLOAT 0.1 FFACT: FLOAT 2048 FTX: FLOAT 512 FTY: FLOAT 512 MG: BYTE 1;"G" < < MATRICES DE PERMUTATION : < PERX: EQU TEMPO PERY: EQU TEMPO+16 < < ACCES EVENTUEL AU CURSEUR GRAPHIQUE : < OGT: WORD '0B03 < NE PAS UTILISER OG , CAR SINON < RISQUE D'ERREUR SUR LE NVP < SI ON NE RENTRE PAS DE < TRANSFORMATION !!! CU: WORD '0B06 < MISE EN FONCTION DU CURSEUR WORD 0 < GRAPHIQUE : IL FAUT AMDEM=0 !!! LG: WORD '0B09 < LECTURE DU CURSEUR GRAPHIQUE. WORD CURSOR-ZERO*2 WORD 6 < < PERMUTATION DES BITS D'UN MOT X/Y : < INDPEX: WORD 1 < 1 : NE PAS PERMUTER LES BITS(X) , < 0 : LES PERMUTER SUIVANT 'PERX'. INDPEY: WORD 1 < DE MEME POUR LES BITS(Y). APERX: WORD PERX-1,X < MATRICE DE PERMUTATION DES < BITS D'UNE COORDONNEE X. APERY: WORD PERY-1,X < DE MEME POUR LES COORDONNEES Y. < < MATRICE DE TRANSFORMATION : < MAT: EQU $ DM22: WORD 0 M22: WORD 0 DM21: WORD 0 M21: WORD 0 DM12: WORD 0 M12: WORD 0 DM11: WORD 0 M11: WORD 0 TY: WORD 0 < VECTEUR TRANSLATION SUR LES Y. TX: WORD 0 < VECTEUR TRANSLATION SUR LES X. AMAT: WORD MAT-1,X < POUR INITIALISER LA MATRICE. INDTR: WORD 0 < 0 : APPLIQUER LA MATRICE DE < TRANSFORMATION SUR L'IMAGE < GRAPHIQUE ; 1 : NON. SAVEX: WORD 0 < SAVE X A L'INITIALISATION DE < LA MATRICE DE TRANSFORMATION. C1023: WORD 1024-1 < X/Y MAX DE L'ECRAN. IBUF: WORD 0 < INDEX COURANT BUFFER SGF. < < PILES DE TRAVAIL : < APILE: WORD PILE-1 < PILE DE SODOME. STACK: DZS 10 < PILE DE TRAVAIL. < < SUITE DES MESSAGES (ICI A CAUSE DE SEG-ZERO UTILISEE DANS UN CPI) : < MSE: BYTE 7;'6D ASCI "SEUIL=" MSEX: BYTE 4;'6D ASCI "SX= " MSEY: BYTE 4;'6D ASCI "SY= " MEFFAC: BYTE 7;'6D ASCI "ERASE?" MCOPY: BYTE 6;'6D ASCI "COPY? " MTRAX: BYTE 4;'6D ASCI "TX= " MTRAY: BYTE 4;'6D ASCI "TY= " MTR: BYTE 7;'6D ASCI "TRANS?" MSLA: BYTE 1;"/" MM11: BYTE 5;'6D ASCI "M11=" MM12: BYTE 5;'6D ASCI "M12=" MM21: BYTE 5;'6D ASCI "M21=" MM22: BYTE 5;'6D ASCI "M22=" MMAT: EQU $ WORD MSLA;MM22 WORD MSLA;MM21 WORD MSLA;MM12 WORD MSLA;MM11 WORD MTRAY;MTRAX MRED: BYTE 7;'6D ASCI "REDUC=" M0: BYTE 3;'6D ASCI "0=" M1: BYTE 3;'6D ASCI "1=" M2: BYTE 3;'6D ASCI "2=" M3: BYTE 3;'6D ASCI "3=" M4: BYTE 3;'6D ASCI "4=" M5: BYTE 3;'6D ASCI "5=" M6: BYTE 3;'6D ASCI "6=" M7: BYTE 3;'6D ASCI "7=" M8: BYTE 3;'6D ASCI "8=" M9: BYTE 3;'6D ASCI "9=" MA: BYTE 3;'6D ASCI "A=" MB: BYTE 3;'6D ASCI "B=" MC: BYTE 3;'6D ASCI "C=" MD: BYTE 3;'6D ASCI "D=" ME: BYTE 3;'6D ASCI "E=" MF: BYTE 3;'6D ASCI "F=" LMESS: VAL MF-ME < LONGUEUR DE TOUS LES MESSAGES < RELATIFS AU PERMUTATIONS X/Y. MPERX: BYTE 4;'6D ASCI "PX? " MPERY: BYTE 4;'6D ASCI "PY? " MPROG: BYTE 20;'6D ASCI "PROGRAMME DE TRANS? " MFIC: BYTE 9;'6D ASCI "FICHIER=" PROG PAGE < < < I N S E R T I O N P O I N T C O U R A N T : < < < ARGUMENTS : < X ET Y CONTIENNENT LES COORDONEES < X ET Y DU POINT COURANT. < < XY: EQU $ PSR Y < SAVE Y. LR X,A LY KX BSR ADIVIS LR B,X < X <-- (X/KX)*KX PLR A < RESTAURE Y. LY KY BSR ADIVIS LR B,Y < Y <-- (Y/KY)*KY LR X,A < A=X(POINT COURANT). PSR X < SAVE LA COORDONNEE X. LX REDUC < X=FACTEUR DE REDUCTION. SLRD 16,X < B=X REDUIT. LR Y,A < A=Y(POINT COURANT). SLRS 0,X < A=Y REDUIT. STA &ASEG < INSERTION DANS LA LISTE. PLR X < RESTAURE LA COORDONNEE X. LA ASEG < ACCES AU POINTEUR COURANT. CP SEGMS0 < EST-ON EN BAS DE LA LISTE ??? JE E1300 < EN BAS DE LA LISTE PAS DE TEST!!! < < TEST DE PRISE EN COMPTE DU SEGMENT : < LA &ASEG < Y. SB SEG < Y-Y(1ER POINT). JAGE E1400 NGR A,A E1400: EQU $ CP SEUILY < LE SEGMENT EST-IL ADMISSIBLE ??? JL E1403 < NON , DELTAY TROP PETIT ... STA DELTAY < DELTAY=ABS(Y-Y(1ER POINT)). LR B,A < X. SB SEG+1 < X-X(1ER POINT). JAGE E1401 NGR A,A E1401: EQU $ CP SEUILX < LE SEGMENT EST-IL ADMISSIBLE ??? JL E1403 < NON , DELTAX TROP PETIT ... STA DELTAX < DELTAX=ABS(X-X(1ER POINT)). AD DELTAY < LA NORME CHOISIE POUR LES < SEGMENTS EST DELTAX+DELTAY. CP SEUIL < LE SEGMENT EST-IL ADMISSIBLE ??? JL E1403 < NON , IL EST TROP PETIT ... E1300: EQU $ < ENTRY 'XY1'. IC ASEG < PROGRESSION POINTEUR DE LISTE. STB &ASEG < INSERTION DE LA COORDONNEE X. IC ASEG < PROGRESSION POINTEUR DE LISTE. < < MISE A JOUR DU CODEM DE WG : < LA WG+2 ADRI 4,A < 1 POINT=4 OCTETS. E1402: EQU $ < SEGMENT DE TROP PETITE NORME. STA WG+2 RSR < < CAS DES SEGMENTS DE PETITE NORME : < E1403: EQU $ DC ASEG < SUPPRESSION DE L'ENTREE DC ASEG < PRECEDENTE DE LA LISTE. LA WG+2 < ACCES AU CODEM DE WG. ADRI -4,A < SUPPRESSION DU POINT PRECEDENT. JMP E1402 < VERS LA SORTIE SANS INSERTION. < < < R E - I N S E R T I O N D U 1 E R P O I N T : < < XY1: EQU $ LA SEG < A=Y(1ER PINT). LB SEG+1 < B=X(1ER POINT). STA &ASEG < RE-INSERTION Y(1ER POINT). JMP E1300 < VERS LA REINSERTION DU X , ET < LA MISE A JOUR DE WG. < < < O R I G I N E D E L A L I S T E < D E S S E G M E N T S : < < < RESULTAT : < A=CODEM(WG). < < MS: EQU $ LA WG+1 < ACCES A L'@OCTET DU BUFFER. ADRI 4,A < SUPPRESSION DU 1ER POINT DE < LA LISTE. STA WG+1 < MAJ DE WG. LA WG+2 ADRI -4,A < 1 POINT=2 MOTS=4 OCTETS. STA WG+2 < MAJ DE WG. RSR < < < A C C E S S E G M E N T Z D C : < < < RESULTAT : < SEG, < A=0 SI FIN DE LISTE ('OAB'). < < GETGS: EQU $ SEG1: EQU $ LAD DEMGS SVC 0 < ACCES AU SEGMENT COURANT. CPZ NOMSEG < EST-IL VALIDE ??? JE SEG1 < NON, ON ATTEND. STZ NOMSEG < OUI, ON L'ACQUITTE. LAD DELGS SVC 0 < < TEST DE FIN DE LISTE : < LA SEGORG+X OR SEGORG+Y OR SEGEXT+X OR SEGEXT+Y RSR < < < S E G M E N T C O U R A N T Z D C : < < DRAW: EQU $ LAD OG SVC 0 < DECHAINAGE DES SEGMENTS. LAD WGT SVC 0 < TRACE GRAPHIQUE... RSR PAGE < < < D E P L A C E M E N T S C A R D I N A U X : < < < ARGUMENT : < A=@MESSAGE A EMETTRE. < < < RESULTAT : < B=0 : ALLER DANS LA DIRECTION DEMANDEE PAR < LE MESSAGE , < =1 : NE PAS Y ALLER. < INDICATEURS POSITIONNES PAR 'CPZR B'. < < CARD1: EQU $ < CAS DES ERREURS DE REPONSES. LA AMESS < RESTAURE : A=@MESSAGE. CARD: EQU $ < ENTREE NORMALE. STA AMESS < SAVE L'@MESSAGE EN CAS D'ERREUR. BSR APRINT < ENVOI DU MESSAGE ARGUMENT. LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. LBY REP < A=REPONSE UTILISATEUR. < < REPONSES RECONNUES : < N : NE PAS Y ALLER (B=1) , < O : ALLER DANS LA DIRECTION DU MESSAGE (B=0). < LBI 0 < OUI A PRIORI ... CPI "O" JE CARD2 < OK , ON Y VA ... LBI 1 < NON A PRIORI. CPI "N" JNE CARD1 < ERREUR : REINITERROGATION ... CARD2: EQU $ CPZR B < POUR TEST EN RETOUR DE (B). RSR < RENVOIE B. PAGE < < < R E C U P E R A T I O N D E S S E U I L S : < < < FONCTION : < CETTE ROUTINE PERMET D'ENTRER < DES NOMBRE HEADECIMAUX AVEC < EMISSION PREALABLE D'UN MESSAGE , < ET ITERATION SUR FAUTE DE SYNTAXE. < LES SEUILS SONT EXPRIMES EN NOMBRE DE < POINTS ET DE LIGNE TELEVISION !!!! < < < ARGUMENT : < A=@MESSAGE DE DEMANDE DU SEUIL. < < < RESULTAT : < A=SEUIL DEMANDE. < < GETS3: EQU $ < ENTRY POUR ERREUR DE SYNTAXE. LA AMESS < RESTAURE : A=@MESSAGE. GETS: EQU $ < ENTRY NORMALE. STA AMESS < SAVE L'@MESSAGE AU CAS OU < UNE ERREUR DE SYNTAXE DANS LES < SEUILS AURAIT LIEU. BSR APRINT < EMISSION DU MESSAGE. LAD DEMSE SVC 0 < ENTRREE DES 3 CARACTERES. LXI 0 < X=INDEX DE PARCOURS DU BUFFER. LY DEMSE+2 < POUR TEST D'ARRET SUR (X). LBI 0 < CLEAR LE REGISTRE B. < < BOUCLE DE CONVERSION : < GETS1: EQU $ LBY &AREP < A=CARACTERE COURANT. CPI '04 JE GETS4 < ON ARRETE SUR 'EOT'. CPI '0D JE GETS4 < ON ARRETE SUR 'R/C'. ADRI -'30,A JAL GETS3 < ERREUR DE SYNTAXE. CPI 9 < EST-CE UN CHIFFRE ??? JLE GETS2 < OUI , OK. ADRI -'41+'39+1,A CPI 'A < EST-CE UNE LETTRE ??? JL GETS3 < NON , ERREUR. CPI 'F < VALIDATION SUPERIEURE ??? JG GETS3 < ERREUR. GETS2: EQU $ < OK , CHIFFRE HEXADECIMAL. SCRS 4 < MISE EN TETE DE A. SCLD 4 < CONCATENATION DANS B. ADRI 1,X < PROGRESSION DANS LE BUFFER. CPR X,Y < EST-CE FINI ??? JNE GETS1 < NON , ON CONTINUE .... GETS4: EQU $ < ARRET SUR 'EOM'. LR B,A < RENVOIE : A=SEUIL DEMANDE ... RSR PAGE < < < E N T R E E C O N S T A N T E : < < < ARGUMENT : < A=@MESSAGE. < < < RESULTAT : < A=CONSTANTE. < < ENTC1: EQU $ LR Y,A < RESTAURE A=@MESSAGE. ENTC: EQU $ LR A,Y < SAVE Y=@MESSAGE. BSR APRINT < EMISSION MESSAGE (A). PSR X LAD DEMREP SVC 0 < ENTREE DE LA CONSTANTE. PLR X LBY REP < A=CARACTERE REPONDU. CPI "Z" < VALIDATION SUPERIEURE. JG ENTC1 < ERREUR DE SYNTAXE... ADRI -"0",A < CONVERSION BINAIRE. JALE ENTC1 < ERREUR DE SYNTAXE... CPI 9 < EST-CE UN CHIFFRE ??? JLE ENTC2 < OUI, DE 1 A 9. ADRI -"A"+"9"+1,A < CONVERSION SUITE. CPI 9 < EST-CE DE A A Z ??? JLE ENTC1 < NON, ERREUR... ENTC2: EQU $ RSR PAGE < < < D I V I S I O N E X C E S / D E F A U T : < < < ARGUMENT : < A=DIVIDENDE, < Y=DIVISEUR. < < < RESULTAT : < B=QUOTIENT, PAR EXCES OU PAR DEFAUT. < < DIVIS: EQU $ STY ARG < SAVE LE DIVISEUR. SARD 16 < EXTENSION 32 BITS... DV ARG ADR B,B < ON DOUBLE LE RESTE. CPR Y,B < EXCES OU DEFAUT ??? JL DIVIS3 < DEFAUT... ADRI 1,A < EXCES... DIVIS3: EQU $ MP ARG < CALCUL DU DIVIDENDE EN TANT < QUE MULTIPLE DU DIVISEUR. RSR PAGE < < < O P E R A T I O N S M A T R I C I E L L E S : < < < FONCTION : < CETTE ROUTINE APPLIQUE SI CELA A < ETE DEMANDE LES TRANSFORMATIONS < MATRICIELLES ET PERMUTATIONNELLES < SUR LES COORDONNEES X ET Y. < < < ARGUMENT : < X=NBRE DE COORDONNEES A TRANSFORMER. < < TRF: EQU $ CPZ INDTR < FAUT IL TRANSFORMER L'IMAGE < GRAPHIQUE ??? JNE E6010 < NON , ALLONS L'AFFICHER ... LA WG+1 < A=@OCTET REELLE LISTE SEGMENTS. SLRS 1 < A=@MOT LISTE REELLE .... STA ASEG < REINITIALISATION DU POINTEUR < DE LISTE GRAPHIQUE. < < APPLICATION DE LA TRANSFORMATION A 1 POINT : < TR: EQU $ LA &ASEG < Y. MP M12 DV DM12 PSR A < SAVE A=M12*Y. IC ASEG LA &ASEG < X. MP M11 DV DM11 < A=M11*X. PLR B < B=M12*Y. ADR B,A < A=M11*X+M12*Y. AD TX PSR A < SAVE A=M11*X+M12*Y+TX. LA &ASEG < X. MP M21 DV DM21 PSR A < SAVE A=M21*X. DC ASEG LA &ASEG < Y. MP M22 DV DM22 < A=M22*Y. PLR B < B=M21*X. ADR B,A < A=M21*X+M22*Y. AD TY < A=M21*X+M22*Y+TY. < < PERMUTATION DES BITS DE Y TRANSFORMEE : < CPZ INDPEY < FAUT-IL PERMUTER ??? JNE PRY1 < NON ... PSR X < ET OUI , ALORS SAVE X. LR A,Y < Y=COORDONNEE Y DONT ON PERMUTE < LES BITS. LBI 0 < INITIALISATION DE LA COORDONNEE < Y PERMUTEE. LXI 16 < 16 BITS DANS UN MOT .... PRY2: EQU $ LA &APERY < A=COEFFICIENT COURANT DE LA < MATRICE DE PERMUTATION DES Y. ANDR Y,A JAE PRY3 < INTERSECTION VIDE. SBT 15,X < INTERSECTION NON VIDE. PRY3: EQU $ JDX PRY2 < AU BIT PRECEDENT. LR B,A < A=COORDONNEE Y TRANSFORMEE < ET PERMUTEE ... PLR X < RESTAURE X. PRY1: EQU $ CP C1023 < VALIDATION GRAPHIQUE. JLE TR1 < OK POUR LE MAX. LA C1023 < SI TROP GRAND , ON PREND LE MAX. TR1: EQU $ JAGE TR3 < OK , POUR LE MIN. LAI 0 < SI TROP PETIT , ON PREND LE MIN. TR3: EQU $ STA &ASEG < SAVE L'Y TRANSFORME. IC ASEG < PASSAGE A L'ENTREE SUIVANTE. PLR A < RESTAURE A=M11*X+M12*Y+TX. < < FAUT-IL PERMUTER LES BITS DE LA COORDONNEE X TRANSFORMEE ??? < CPZ INDPEX < ALORS ON PERMUTE ??? JNE PRX1 < NON. PSR X < OUI , ALORS SAVE X. LR A,Y < Y=COORDONNEE X TRANSFORMEE , < DONT ON PERMUTE LES BITS < SUIVANT LA MATRICE PERX. LBI 0 < INITIALISATION DE LA COORDONNEE < X PERMUTEE. LXI 16 < 16 BITS DANS UN MOT. PRX2: EQU $ LA &APERX < A=COEFFICIENT COURANT DE LA < MATRICE DE PERMUTATION. ANDR Y,A JAE PRX3 < INTERSECTION VIDE. SBT 15,X < INTERSECTION NON VIDE. PRX3: EQU $ JDX PRX2 < AU BIT PRECEDENT. LR B,A < A=COORDONNEE X TRANSFORMEE < PUIS PERMUTEE ... PLR X < ET ENFIN , RESTAURE X. PRX1: EQU $ CP C1023 < VALIDATION MAX. JLE TR2 < OK POUR LE MAX. LA C1023 < SI TROP GRAND , ON PREND LE MAX. TR2: EQU $ JAGE TR4 < OK POUR LE MIN. LAI 0 < SI TROP PETIT , ON PREND LE MIN. TR4: EQU $ STA &ASEG < SAVE L'X TRANSFORME. IC ASEG < PASSAGE A 6HENTREE SUIVANTE. JDX TR < PASSAGE AU POINT SUIVANT. E6010: EQU $ RSR PAGE < < < A C C E S S G F : < < < ARGUMENT : < X,Y = COORDONNEES DU POINT A INSERER < DANS LE FICHIER '0A. < < STBUF: EQU $ CPZ INSGF < ACCES SGF VALIDE ??? JNE STBUF6 < NON... PSR A,X LR X,A < A=COORDONNEE X. LX IBUF < X=INDEX COURANT BUFFER SGF. STA &ASGF < COORDONNEE X. ADRI 1,X < PROGRESSION INDEX BUFFER. STY &ASGF < COORDONNEE Y. ADRI 1,X < PROGRESSION INDEX BUFFER. LR X,A < VALIDATION INDEX BUFFER. CP MAXBUF < PLEIN ??? JL STBUF1 < NON. LAD SGFW < OUI, SVC 0 < ECRITURE DE L'ENREGISTREMENT. LAI 0 < RAZ DE L'INDEX COURANT. STBUF1: EQU $ STA IBUF < MAJ INDEX BUFFER SGF. PLR A,X STBUF6: EQU $ RSR PAGE < < < F E R M E T U R E D U F I C H I E R : < < CLOSEF: EQU $ CPZ INSGF < ACCES SGF VALIDE ??? JNE SGF5 < NON... CPZ ISGF < Y-A-T'IL EU DES OPERATION SGF ??? JE SGF5 < NON, RIEN A FAIRE... STZ ISGF < OUI, IL FAUT CLOSER... < < FERMETURE DU FICHIER '0A : < LXI -1 LYI -1 BSR ASTBUF < INSERTION DE 2 BSR ASTBUF < COUPLE (-1,-1); ON EN MET 2 < AU CAS OU UN ALT-MODE AURAIT < INTERROMPU L'INSERTION D'UN < SEGMENT. CPZ IBUF < LE BUFFER EST-IL VIDE ??? JE SGF3 < OUI, RIEN A FAIRE. LAD SGFW < NON, SVC 0 < ECRITURE DERNIER ENREGISTREMENT. SGF3: EQU $ LAD SGFC SVC 0 < CLOSE SAVE LA CLEF 1.0. LA AMAC BSR ACCIN < SAVE LE FICHIER '0A. SGF5: EQU $ LAD CG SVC 0 < REMISE EVENTUELLE DE LA VISU < D'EMISSION EN APLHA-NUMERIQUE. SGF4: EQU $ RSR PAGE < < < A C C E S C C I I N T E R P R E T A T I F : < < < ARGUMENT : < A=@MOT DE LA CARTE. < < < RESULTAT : < CODES DE CONDITION. < < CCIN: EQU $ SLLS 1 < A=@OCTET DE LA CARTE. STA CCII+1 LAD CCII SVC 0 < ENVOI DE LA CARTE CONTROLE. RSR PAGE < < < E M I S S I O N D ' U N M E S S A G E : < < < FONCTION : < EDITER UN MESSAGE ; DE PLUS SI < LE DEMANDEUR EST SOUS :SYS , < CETTE ROUTINE STABILISE L'IMAGE < VIDEO COURANTE. < < < ARGUMENT : < A=@MOT DU MESSAGE. < < PRINT: EQU $ PSR C < SAVE L'@ IMAG. LR A,C < C=@MOT DU MESSAGE. ADR A,A ADRI 1,A < A=@OCTET DU MESSAGE. STA DEMOUT+1 < MAJ DE DEMOUT. LBY 0,C < A=LONGUEUR DU MESSAGE. STA DEMOUT+2 < MAJ DE DEMOUT. LAD CG SVC 0 < CLOSE GRAPHIQUE A PRIORI. LAD DEMOUT SVC 0 < EMISSION MESSAGE. PLR C < RESTAURE C=@IMAGE VIDEO. RSR < < < E M I S S I O N M E S S A G E S U R ' 0 B : < < PRINTB: EQU $ PSR C LR A,C ADR A,A ADRI 1,A < A=@OCTET DU MESSAGE. STA DEMOB+1 LBY 0,C STA DEMOB+2 < LONGUEUR DU MESSAGE. LAD CG SVC 0 < RETOUR EN ALPHA... LAD DEMOB SVC 0 < AFFICHAGE TEXTE. PLR C RSR < < < T E N T A T I V E D ' O G : < < OPEN1: EQU $ E1200: EQU $ STZ DEMOB+2 < MISE EN PLACE D'UN CODEM=0. LAD DEMOB SVC 0 < ENVOI DE DEMOB. LR X,A < POUR TEST DU CODE DE RETOUR. CPI '84 < EST-CE 'CODEM=0' ??? JE E110 < OUI, LE NVP EST ASSIGNE, MAIS < PAS AU NVP 'DUMMY'... < < CHANGEMENT DE VISU D'EMISSION : < E1613: EQU $ LAI '02 < ON REMPLACE NVP='0B PAR NVP='02. STBY ERASE < MAJ DE ERASE. STBY OG < MAJ DE OG. STBY CG < MAJ DE CG. STBY WG < MAJ DE WG. STBY WGT < MAJ DE WGT. STBY COPY < MAJ DE COPY. STBY DEMOB JMP E1200 < PUIS NOUVELLE TENTATIVE D'OG. E110: EQU $ LAD OG SVC 0 < OPEN GRAPHIQUE.. JNE E1613 < GLUPSSS .??!!? RSR PAGE < < < H A R D - C O P Y E T T E M P O R I S A T I O N ??? < < < FONCTION : < CETTE ROUTINE PERMET D'INTERROGER < L'UTILISATEUR SUR UN HARD-COPY < EVENTUEL , ET PERMET EN TOUT CAS < D'INTERROMPRE L'EMISSION ET PAR LA < DEMANDE DE COPY D'EMETTRE UN R/C < FORT UTILE DANS LE CAS OU LES CARACTERES < GRAPHIQUES SONT RECUPERES PAR UNE < LIGNE BOUCLEE !!! < < RCOPY: EQU $ < < FAUT-IL FAIRE UN HARD-COPY DE L'IMAGE : < LAD CG SVC 0 < MISE EN ALPHA DE LA VISU. < (UTILE DANS LE CAS NVP='02). HCOPY: EQU $ LA AMCOPY BSR ACARD < ENVOI D'1N MESSAGE , ET RENVOIIE < LA REPONSE : B=0 SI OUI. JNE NCOPY < NON , RETOUR A 'GE'. LAD COPY SVC 0 LAD SLEEP SVC 0 < ET ATTENTE DE 15 SECONDES DE < FIN DE HARD-COPY. JMP HCOPY < FAUT-IL EN FAIRE ENCORE UNE ??? NCOPY: EQU $ RSR PAGE < < < C O N V E R T I S S E U R < G R A P H I Q U E - G R A P H I Q U E : < < < FONCTION : < CE PROCESSEUR RECOIT DES SEGMENTS PAR < LA ZDC, LES TRANSFORME EVENTUELLEMENT, < PUIS, LES AFFICHE... < ET LES MET EN FICHIERS COMPATI- < BLES AVEC 'LP'. < < < < WORD 0 WORD LOC+'80 WORD BRANCH IMAGE: EQU $ LRP K ADRI -1,K PLR C,L,W < INITIALISATIONS DES 3 BASES. LAD STACK-1 LR A,K < INITIALISATION DE K SUR LA PILE < DE TRAVAIL STACK. < < DECOMPTAGE DES ENTREES : < IC KIN JG GOGE < KIN>0 , IL NE S'AGIT PAS DE < LA 1ERE ENTREE ; ON EST A LA < SUITE D'UN ALT-MODE. < < CAS DE LA 1ERE ENTREE : < JMP E1000 < VERS LES INITIALISATIONS. < < < R E T O U R T E M P O R A I R E A U C C I : < < GOCCI: EQU $ LAD DEMCCI SVC 0 BR AINTER < VERS L'INTERROGATION... < < T R A I T E M E N T D E S E R R E U R S : < E1100: EQU $ LAD MERR BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR. < < < R E T O U R A ' G E ' : < < GOGE: EQU $ LA APILE LR A,K < REINITIALISATION DE K SUR < LA PILE DE SODOME. BSR ACLOSF < CLOSE LE FICHIER.... < < CHARGEMENT DE L'OVERLAY 'GE' : < LA NGE STA 0,W < MISE EN PLACE DU NOM DE 'GE' < EN TETE DE LA BRANCHE. LAI '06 STBY DEMSGN < NVP DE LOAD SOUS :SYS. E101: EQU $ LAD DEMSGN < A=@DEMSGN ; W=@BRANCH. BSR AOVL < TENTATIVE D'OVERLAY. LAD DEMCCI SVC 0 < SI OVERLAY IMPOSSIBLE , ON < FAIT UN RETOUR AU CCI. JMP E101 < PUIS NOUVELLE TENTATIVE SI !GO. < < < I N T E R R O G A T I O N P R I M A I R E : < < E1000: EQU $ GRAPH: EQU $ INTER: EQU $ LAD MINT BSR APRINT < ENVOI D'UN MESSAGE. LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. LBY REP < A=REPONSE UTILISATEUR. < < REPONSES RECONNUES : < G : CALCUL CENTRE DE GRAVITE, ET AXES D'INERTIE. < F : RETOUR A GE, < W : RETOUR TEMPORAIRE AU CCI, < S : SAUVEGARDE SGF DU DESSIN EN ZDC. < CPI "F" JE GOGE < RETOUR A GE. CPI "W" JE GOCCI < RETOUR TEMPORAIRE AU CCI. CPI "S" JE FILE < OPERATION SGF SUR LE DESSIN. CPI "G" JE GRAVE1 < CALCULS DIVERS SUR LE DESSIN. LAD MERR BSR APRINT < RIEN COMPRIS, ERREUR !!! JMP INTER < INTERROGATION... < < < C A L C U L C E N T R E D E G R A V I T E < E T A X E S D ' I N E R T I E : < < GRAVE1: EQU $ BR AGRAVE < VERS LE MODULE SPECIFIQUE... < < < O P E R A T I O N S S G F : < < FILE: EQU $ < < FAUT-IL ACCEDER AU SGF ??? < LAD MSGF BSR ACARD < ENTREE DE LA REPONSE... STB INSGF < SAVE LA REPONSE... JNE FRED < ET BIEN NON, PAS DE SGF... IC ISGF < ISGF <-- 1 : OPERATIONS < SGF EN COURS !!! < < OUVERTURE DU FICHIER : < SGF1: EQU $ LA AMAC BSR ACCIN < CLOSE SAVE '0A. LA AMFIC BSR APRINT LAD DEMNOM SVC 0 < ENTREE DU NOM DU FICHIER. LA AMAO BSR ACCIN < ESSAI D'OUVERTURE NEW. JNE SGF1 < ERREUR, ON REDEMANDE.... LAD SGFO SVC 0 < OK, OUVERTURE DE LA CLEF 1.0. STZ IBUF < IBUF <-- 0. < < CHOIX DU FACTEUR DE REDUCTION : < FRED: EQU $ LA AMRED BSR APRINT < ENVOI D'UNE INVITATION. LAD DEMREP SVC 0 < LECTURE DU FACTEUR DE REDUCTION. LBY REP < A=CARACTERE LU. ADRI -'30,A < TRANSLATION NUMERIQUE. JAL FRED < ERREUR : CARACTERE NON RECONNU. CPI MAXRED < VALIDATION FACTEUR DE REDUCTION. JG FRED < ERREUR : CARACTERE NON RECONNU. STA REDUC < MISE EN PLACE DU FACTEUR DE < REDUCTION. < < FAUT-IL TRANSFORMER L'IMAGE ??? < LA AMTR BSR ACARD < ENVOI D'UN MESSAGE ET LECTURE < DE LA REPONSE (OUI=0). STB INDTR < SAVE L'INDICATEUR DE TRANSFO. JNE E6001 < ET NON , ... E6100: EQU $ < < ACCES AU CURSEUR GRAPHIQUE DE LA VISU : < LAD OGT SVC 0 < OPEN GRAPHIQUE DE LA VISU '0B/'02 JE E6101 < OK. LAI '02 < SI NON , CHANGEMENT DE NVP. STBY OGT STBY CU STBY LG LAD OGT < TRY AGAIN , MAIS SANS REBOUCLAGE, SVC 0 < AU CAS OU ON SERAIT EN BATCH !!! E6101: EQU $ LAD CU SVC 0 < MISE EN FONCTION DU CURSEUR < GRAPHIQUE. LAD LG SVC 0 < ET LECTURE DE CELUI-CI. LBY CURSOR < A=CARACTERE DE DEBLOCAGE. LXI 10 < NE PAS L'UTILISER A PRIORI ('N'), < DONC 10 NBRES A ENTRER. < REPONSES RECONNUES : < O : TX ET TY SONT DONNEES PAR LE CURSEUR GRAPHIQUE, < N : TX ET TY SONT RENTRES AU CLAVIER. CPI "N" < FAUT-IL UTILISER LE CURSEUR ??? JE E6102 < NON , 10 NBRES A ENTRER. CPI "O" < EST-CE OUI ??? JNE E6100 < RIEN COMPRIS , REINTERROGATION. LA CURSOR+1 < OUI : A=Y(CURSEUR) , STA TY < CE QUI DONNE TRANSLATION SUR Y. LA CURSOR+2 < A=X(CURSEUR) , STA TX < CE QUI DONNE TRANSLATION SUR X. LXI 8 < IL N'Y A PLUS QUE LES 8 < COEFFICIENTS DE LA MATRICE < A ENTRER. E6102: EQU $ < < ENTREE DE LA MATRICE DE TRANSFORMATION : < IC DEMSE+2 < POUR ENTRER 4 CARACTERES. E6002: EQU $ STX SAVEX < SAVE X (PAS DE PLACE DANS < LA PILE !!!) LA &AMMAT < RECUPERATION DU MESSAGE (X). BSR AGETS < ENVOI DU MESSAGE ET CONVERSION < DU COEFFICIENT CORRESPONDANT. LX SAVEX < RESTAURE X. STA &AMAT < ET SAVE LE COEFFICIENT. JDX E6002 < AU SUIVANT. < < FAUT-IL PERMUTER LES COORDONNEES TRANSFORMEES X : < LA AMPERX BSR ACARD < ENVOI INTERROGATION ET LECTURE < DE LA REPONSE DANS B. STB INDPEX < SAVE LA REPONSE POUR X. JNE E6300 < NON ... < < ENTREE DE LA MATRICE DE PERMUTATION DES BITS DE X TRANSFORMEE : < LXI 16 < 1L COEFFICIENTS A ENTRER. LA AP < A=@1ER MESSAGE A EMETTRE. E6301: EQU $ STX SAVEX < SAVE LE DECOMPTEUR X. PSR A < SAVE L'@MESSAGE. BSR AGETS < ENVOI MESSAGE (A) ET ENTREE < D'UN COEFFICIENT. LX SAVEX < RESTAURE X. STA &APERX < SAVE LE COEFFICIENT. PLR A < RESTAURE L'@MESSAGE. ADRI -LMESS,A < PASSAGE AU MESSAGE PRECEDENT. JDX E6301 < AU PRECEDENT .... < < FAUT-IL PERTMUTER LES BITS DES COORDONNEES Y TRANSFORMEES : < E6300: EQU $ LA AMPERY < ENVOI INTERROGATION ET ENTREE < REPONSE DANS B. BSR ACARD STB INDPEY < SAVE LA REPONSE. JNE E6302 < NON ... < < ENTREE DE LA MATRICE DE PERMUTATION DES BITS DE Y TRANSFORMEE : < LXI 16 < 1L COEFFICIENTS A ENTRER. LA AP < A=@1ER MESSAGE A EMETTRE. E6303: EQU $ STX SAVEX < SAVE X. PSR A < SAVE L'@MESSAGE. BSR AGETS < EDITION MESSAGE ET ENTREE < D'UN COEFFICIENT. LX SAVEX < RESTAURE X. STA &APERY < SAVE LE COEFFICIENT. PLR A < RESTAURE L'@MESSAGE. ADRI -LMESS,A < PASSAGE AU MESSAGE PRECDENT. JDX E6303 < AU PRECEDENT ... E6302: EQU $ DC DEMSE+2 < RETOUR A 3 CARACTERES. LA AMTR BSR ACARD < FAUT-IL RERENTRER LES PARAMETRES? JE E6100 < ET OUI , ON RECOMMENCE ... E6001: EQU $ < < DOIT-ON UTILISER L'ITEM2 POUR TRANSFORMER ??? < LA AMPROG BSR ACARD < ENVOI D'UN MESSAGE ET LECTURE < DE LA REPONSE (O/N). JE PRO2 < OUI. STZ AITEM2 < NON, RAZ DU RELAI AITEM2. JMP PRO3 PRO2: EQU $ LBY &ATYP < SI OUI, ON VALIDE L'ITEM2. CPI "P" < EST-CE LE TYPE 'P' ??? JE PRO3 < OUI, OK. LAD MERR BSR APRINT < NON, ERREUR... JMP CLOSE < VERS LA FERMETURE DU FICHIER.. PRO3: EQU $ < < ENTREE DES SEUILS : < E1411: EQU $ LA AMSE BSR AGETS < DEMANDE DU SEUIL DELTAX+DELTAY. LX REDUC < X=FACTEUR DE REDUCTION. SLLS DEDX+DEDY/2,X STA SEUIL LA AMSEX BSR AGETS < DEMANDE DU SEUIL DE DELTAX. LX REDUC < X=FACTEUR DE REDUCTION. SLLS DEDX,X STA SEUILX LA AMSEY BSR AGETS < DEMANDE DU SEUIL DE DELTAY. LX REDUC < X=FACTEUR DE REDUCTION. SLLS DEDY,X STA SEUILY < < ENTREE DES CONSTANTES K, X, Y : < LAD MK BSR AENTC STA KK < K LAD MX BSR AENTC MP KK STB KX < X LAD MY BSR AENTC MP KK STB KY < Y < < FAUT-IL EFFACER L'ECRAN DE LA VISU DE RECEPPTION : < LA AMEFFA BSR ACARD < FAUT-IL EFFACER L'ECRAN ??? < < CHOIX VISU D'EMISSION : < BSR AOPEN1 < OPEN GRAPHIQUE+CHOIX VISU. CPZR B < FAUT-IL EFFACER L'ECRAN ??? JNE NEFFAC < NON ... LAD ERASE SVC 0 < OUI , EFFACEMENT DE L'ECRAN < DE LA VISU DE RECEPTION. NEFFAC: EQU $ LAD OG SVC 0 < RE-OPEN GRAPHIQUE EVENTUEL , < AU CAS OU UN ERASE AURAIT < ETE FAIT SUR LA VISU ... PAGE < < < C O N V E R S I O N G R A P H - G R A P H : < < E1001: EQU $ < < REINITIALISATIONS : < E6030: EQU $ LA SEGMS0 STA ASEG < REINITIALISATION DU POINTEUR < DE LISTE DES SEGMENTS. ADR A,A STA WG+1 STZ WG+2 < < ACCES AU SEGMENT COURANT : < BSR AGETGS < ACCES A LA ZDC, ET TEST < DE FIN DE LISTE... JANE SEG2 < OK, ENCORE DU TRAVAIL... BSR ARCOPY < C'EST LA FIN, < < FERMETURE DU FICHIER '0A : < CLOSE: EQU $ BSR ACLOSF BR AINTER < VERS L'INTERROGATION... < < TRAITEMENT DU SEGMENT COURANT : < SEG2: EQU $ CPZ AITEM2 < TRANSFORME-T'ON PAR ITEM2 ??? JE NPROG < NON... LBI 1 < OUI, B=1, PAR COMPATIBILITE < AVEC 'TA'. LAD SEGORG < A=@SEGMENT COURANT... PSR L,W BSR &AITEM2 < APPEL DE L'OVERLAY ITEM2. PLR L,W NPROG: EQU $ LA SEG+2+X STA SAVEXT+X < SAVE L'EXTREMITE DU LA SEG+2+Y STA SAVEXT+Y < SEGMENT PRECEDENT. LX SEGORG+X LY SEGORG+Y BSR AXY < INSERTION ORIGINE. LX SEGEXT+X LY SEGEXT+Y BSR AXY < INSERTION EXTREMITE. < < AFFICHAGE DE LA LISTE DES SEGMENTS : < E1009: EQU $ < < TRANSFORMATION DE L'IMAGE GRAPHIQUE : < LA WG+2 < A=NBRE D'OCTETS A EMETTRE. SLRS 2 < DIVISION PAR 4. LR A,X < X=NBRE DE POINTS A AFFICHER. BSR ATRF < TRANSFORMATION DES COORDONNEES < SU CELA A ETE DEMANDE. LA SEG+X CP SAVEXT+X < LA NOUVELLE ORIGINE, ET < L'EXTREMITE PRECEDENTE < SONT-ELLES CONFONDUES ??? JNE DIFF1 < NON... LA SEG+Y CP SAVEXT+Y < MEME QUESTION ??? JNE DIFF1 < NON... LXI 4 < 4 OCTETS DE MOINS A SORTIR. LA WG+1 ADR X,A < PROGRESSION DE L'AMDEM. STA WG+1 LA WG+2 SBR X,A < REGRESSION DU CODEM. STA WG+2 JMP INC3 < ET PAS D'OPEN GRAPHIQUE... DIFF1: EQU $ < < AFFICAHGE DE LA LISTE GRAPHIQUE (TRANSFORME OU PAS) : < LAD OG < OPEN GRAPHIQUE. SVC 0 < POUR DECHAINER LES SEGMENTS. INC3: EQU $ < ENTRY MODE INCREMENTAL. LAD WG SVC 0 < (X EST INDIFFERENT !!!) JNE E1001 < CAS DES SEGMENTS DE TROP < PETITES NORMES : LE CODEM DE < WG EST NUL... : LE CODEM DE NGRAPH: EQU $ < < SAUVEGARDE SGF DU SEGMENT COURANT : < LX SEG+0+X LY SEG+0+Y BSR ASTBUF < ORIGINE DU SEGMENT. LX SEG+2+X LY SEG+2+Y BSR ASTBUF < EXTREMITE DU SEGMENT. JMP E1001 < VERS L'ACCES AU SEGMENT SUIVANT... PAGE < < < C A L C U L D U C E N T R E D E < G R A V I T E E T A U T R E S < C O N S T A N T E S D U D E S S I N : < < GRAVE: EQU $ < < INITIALISATIONS : < STZ NPT < RAZ DU NBRE DE SEGMENTS. LAI 0 FLT FST FGX FST FGY FST IXX FST IYY FST IXY BSR AOPEN1 < OPEN GRAPHIQUE+CHOIX VISU. GRAVE2: EQU $ < < RECUPERATION DU SEGMENT COURANT : < BSR AGETGS < ACCES ZDC. JAE GRAVE3 < FIN DE LISTE... BSR ADRAW < AFFICHAGE SEGMENT COURANT. < < CUMUL DU SEGMENT COURANT : < IC NPT < COMPTE DU SEGMENT COURANT. LA SEGORG+X AD SEGEXT+X SLRS 1 < X(MILIEU SEGMENT). FLT FSB FTX < TRANSLATION SUR X. FST FX < X(MILIEUR SEGMENT). LA SEGORG+Y AD SEGEXT+Y SLRS 1 < X(MILIEU SEGMENT). FLT FSB FTY < TRANSLATION SUR Y. FST FY < Y(MILIEU SEGMENT). < < CUMUL CENTRE DE GRAVITE : < FAD FGY FST FGY < FGY <-- (FGY)+(FY). FLD FX FAD FGX FST FGX < FGX <-- (FGX)+(FX). < < CUMUL MOMENTS D'INERTIE : < FLD FY FMP FY FAD IYY FST IYY < IYY <-- (IYY)+(FY)*(FY). FLD FX FMP FX FAD IXX FST IXX < IXX <-- (IXX)+(FX)*(FX). FLD FX FMP FY FAD IXY FST IXY < IXY <-- (IXY)+(FX)*(FY). JMP GRAVE2 < VERS LE SEGMENT SUIVANT... < < FIN DE LISTE : < GRAVE3: EQU $ LA NPT JANE GRAVE4 < OK, AU MOINS 1 SEGMENT... GRAVE5: EQU $ LAD CG SVC 0 < RETOUR EN ALPHA... BR AINTER < VERS L'INTERROGATION. GRAVE4: EQU $ FLT FST FNPT < NBRE DE SEGMENTS RENCONTRES. < < REDUCTION DES MOMENTS D'INERTIE : < FLD FNPT FMP FFACT FST ARG < ARG=NPT*FACT. FLD IXX FDV ARG FST IXX < IXX FLD IYY FDV ARG FST IYY < IYY FLD IXY FDV ARG FST IXY < IXY < < VISUALISATION DU CENTRE DE GRAVITE : < FLD FGX FDV FNPT FAD FTX < TRANSLATION SUR X. FST FGX FIX STA GX < X(CENTRE DE GRAVITE). STA SEGORG+X STA SEGEXT+X FLD FGY FDV FNPT FAD FTY < TRANSLATION SUR Y. FST FGY FIX STA GY < Y(CENTRE DE GRAVITE). STA SEGORG+Y STA SEGEXT+Y BSR ADRAW < VISUALISATION DE G. LAD MG BSR APRINB < ET AFFICHAGE 'G'... < < EQUATION AUX VALEURS PROPRES : < S*S-S*(IXX+IYY)+IXX*IYY-IXY*IXY=0 < FLD IXX FSB IYY FST FX < SAVE : FX=IXX-IYY. FMP FX FST FY < SAVE : FY=FX*FX. FLD IXY FMP IXY FMP DEUX FMP DEUX < 4*IXY*IXY FAD FY FST DELTA < DELTA=(IXX-IYY)*(IXX-IYY)+4*IXY*IXY BSR ASQRT < CALCUL DE SQRT(DELTA) DANS DELTA+2. FST DELTA+2 < < CALCUL DES VECTEURS PROPRES : < V1=((IXX-IYY+SQRT(DELTA))/2,IXY) < V2=((IXX-IYY-SQRT(DELTA))/2,IXY) < FLD FX < IXX-IYY FAD DELTA+2 < IXX-IYY+SQRT(DELTA) FDV DEUX FIX STA V1+X FLD FX < IXX-IYY FSB DELTA+2 < IXX-IYY-SQRT(DELTA) FDV DEUX FIX STA V2+X FLD IXY FIX STA V1+Y STA V2+Y < < TRACE DES VECTEURS PROPRES : < (ORG EST DEJA POSITIONNEE SUR G) < LA GX AD V1+X STA SEGEXT+X LA GY AD V1+Y STA SEGEXT+Y BSR ADRAW < TRACE DE V1. LA GX AD V2+X STA SEGEXT+X LA GY AD V2+Y STA SEGEXT+Y BSR ADRAW < TRACE DE V2. BR AINTER < RETOUR A L'INTERROGATION. PAGE < < < R A C I N E C A R R E : < < < ARGUMENT : A,B. < < < RESULTAT : A,B. < < SQRT: EQU $ FCAZ JE SQRT2 < SQRT(0)=0. FST ARG < ARGUMENT LAI 1 FLT FST UN < INITIALISATION DE LA SUITE 'U'. < U0=1. SQRT1: EQU $ FLD ARG < ARGUMENT FDV UN < ARGUMENT/UN FAD UN < UN+ARGUMENT/UN FDV DEUX < (UN+ARGUMENT/UN)/2 FST UN < UN1 <-- (UN+ARGUMENT/UN)/2 < (UN ET UN1 SIGNIFIANT 'U' < INDICE N ET INDICE N+1) FMP UN < UN1*UN1 FSB ARG < UN1*UN1-ARGUMENT FABS < ABS(UN1*UN1-ARGUMENT) FCAM DIX < POSITION PAR RAPPORT A 1/10 ??? JG SQRT1 < PAS ASSEZ PRECIS... FLD UN < UN1 EST LE RESULTAT. SQRT2: EQU $ RSR PAGE < < < I M P L A N T A T I O N : < < X12: EQU ZERO+PILE-LTNI-LTNI X10: VAL X12-$ ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLEGE SI < MAUVAISE IMPLANTATION. DZS X10+1 EOT #SIP GEN PROCESSEUR#