IF VTVG,X100,,X100 NMPROC: VAL "VG" < NOM DU PROCESSEUR. IDP "VG - RELEASE 07/07/1980" X100: VAL 0 IF VTVG,,X100, ZDC: VAL 0 < ASSEMBLAGE SGN : X469,,X469 ZDC: VAL 1 < ASSEMBLAGE ZDC : ,,X469, NMPROC: VAL "VT" < NOM DU PROCESSEUR. IDP "VT - RELEASE 01/06/1979" X100: VAL 0 IDP "JOHN F. COLONNA" PROG PAGE EOT #SIP DEFINITION CMS5# 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. PAGE EOT #SIP IMAGE 256# IMAG: EQU ZERO+PILE+5 < IMAGE VIDEO. NOM: EQU ITEM1 < LE NOM DE L'IMAGE VIDEO RECOUVRE < L'EN-TETE DE L'ITEM1. EOT: EQU IMAG-2 LONG: EQU IMAG-1 < DOIT CONTENIR -1,-2,-3 SI < L'IMAGE EST BIEN VIDEO. PAGE < < < L O C A L : < < LOCAL LOC: EQU $ < < BUFFER ET MESSAGES : < LINCR: ASCI "ADBHEFJI" < LISTE DE GESTION DU MODE INCR. 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). INTENS: WORD 0 < LE MOT INTENS DOIT PRECEDER < LA LISTE DES POINTS !!! IF VTVG,,X100, IF ZDC,X469,,X469 NOMSEG: ASCI ":G" BYTE "S";'04 X469: VAL 0 IF ZDC,,X469, NOMSEG: WORD 0 < SEGMENT INVALIDE INITIALEMENT. X469: VAL 0 SEGSGN: DZS 4 < SEGMENT GRAPHIQUE COURANT. LONSEG: VAL $-NOMSEG*2 X100: VAL 0 SEG: WORD 0;0 < POUR (TY,TX) DE POSITIONNEMENT. BYTE '1E;'1E;'1E;'1E < POUR AVOIR UN NBRE D'OCTETS < MULTIPLE DE 4 (CF. CMS4). DZS 8*2 IF VTVG,X100,,X100 IF SEG-INTENS-1,,X100, IF ERREUR VOLONTAIRE D'ASSEMBLAGE !!! X100: VAL 0 MNOM: BYTE 5;'6D ASCI "NOM>" MINT: BYTE 2;'6D;">";0 REP: WORD 0 < REPONSE DE REDUCTION. WORD 0 < POUR LES ENTREES DE SEUILS. MFAST: BYTE 6;'6D ASCI "FAST? " M4014: BYTE 6;'6D ASCI "4014? " AMRED: WORD MRED AMPAS: WORD MPAS IF VTVG,X100,,X100 AMCONR: WORD MCONTR X100: VAL 0 AMIS: WORD MIS AMEFFA: WORD MEFFAC IF VTVG,X100,,X100 AMCOPY: WORD MCOPY X100: VAL 0 IF VTVG,,X100, AMFIN: WORD MFIN AMPASA: WORD MPASA X100: VAL 0 AMTR: WORD MTR AMMAT: WORD MMAT-1,X MDEL: BYTE 7;'6D ASCI "DX/DY=" AMSE: WORD MSE AMSEX: WORD MSEX AMSEY: WORD MSEY AMCONT: WORD MCONT AMPERX: WORD MPERX AMPERY: WORD MPERY AP: WORD MF < MESSAGES DE PERMUTATION BITS X/Y. AMINC: WORD MINC AMLIST: WORD MLIST AMIC: WORD MIC AMEPAI: WORD MEPAIS MW: BYTE 3;'6D;"W";"?" MNW: BYTE 4;'6D;"N";"W";"?";0 MN: BYTE 3;'6D;"N";"?" MNE: BYTE 4;'6D;"N";"E";"?";0 MERR: BYTE 3;'6D;"?";"?" IF VTVG,X100,,X100 MCU1: ASCI "!ASSIGN B=CU" BYTE NBCUS;'04 MCUS: ASCI "!ASSIGN B=" BYTE "S";'04 X100: VAL 0 < < DEMANDES A CMS4 : < DEMIN: WORD '0101 < LECTURE DU NOM DE L'IMAGE. WORD NOM-ZERO*2 WORD LNOM*2 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. 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 IF VTVG,X100,,X100 WORD 8 < POUR INITIALISER LE MODE < INCREMENTAL A PRIORI. X100: VAL 0 IF VTVG,,X100, WORD 2 < CAS DU MODE INCREMENTAL A PRIORI. X100: VAL 0 IF VTVG,,X100, IF ZDC,X469,,X469 DELGS: WORD '0302 < DELETE INITIAL DU SEGMENT. WORD NOMSEG-ZERO*2 WORD LONSEG WORD -1 DEMGS: WORD '0402 < STORE LE SEGMENT COURANT. WORD NOMSEG-ZERO*2 WORD LONSEG WORD -1 DEMSCH: WORD '0006 < PASSAGE DE MAIN. X469: VAL 0 IF ZDC,,X469, STOGS: WORD '000A < STORE SEGMENT DANS ZDC. WORD NOMSEG-ZERO*2 WORD LONSEG WORD 'FFC0 < VALIDATION DES OCTETS SEGMENT. GETGS: WORD '0008 < ACCES A LA VALIDATION DANS ZDC. WORD NOMSEG-ZERO*2 WORD SEGSGN-NOMSEG*2 WORD 'C000 X469: VAL 0 X100: VAL 0 IF VTVG,X100,,X100 FS: WORD '0B07 < MISE EN SPECIAL POINT PLOT 4014. BYTE '1B;'1C;'04;0 < 'ESC'+'FS'+'EOT'. SPPM: WORD '0B0A < L'ECRITURE GRAPHIQUE EN MMODE < 4014 EST FAITE AVEC UN COMPTE < D'OCTETS NON MULTIPLE DE 4 , < AFIN QUE CMS4 NE FASSE PAS DE < CONVERSION GRAPHIQUE EN ASCI !!!! WORD INTENS-ZERO*2+1 WORD 5 < 1 CARACTERE D'INTENSITE , PLUS < 4 CARACTERES DE COORDONNEES ... COPY: WORD '0B07 < ECRITURE DIRECTE HARD-COPY. BYTE '1B;'17;'8D;'04 < ESC,CTRL-W,R/C. X100: VAL 0 DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K MOTS. RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS. WORD '4000 WORD '2000 DEMCCI: WORD '0001 < DEMANDE DE RETOUR AU CCI. IF VTVG,X100,,X100 DEMCU1: WORD '0002 < APPEL CCI NON INTERACTIF. WORD MCU1-ZERO*2 < POUR UN !ASSIGN B=CU1. WORD 80 DEMS: WORD '0002 < APPEL DU CCI NON INTERACTIF. WORD MCUS-ZERO*2 < POUR UN !ASSIGN B=S. WORD 80 X100: VAL 0 SLEEP: WORD '0005 < DEMANDE MISE EN SOMMEIL. WORD 0 WORD 15 < POUR 15 SECONDES. SGN: WORD '0002 < ACCES A L'IMAGE VIDEO. WORD NOM-ZERO*2 WORD IMAG-NOM+LIMAG*2 WORD EOT-NOM*2 < DEPLACEMENT D'ACCES A LA VALEUR. DEMSGN: WORD '0402 < DEMANDE SGN OVERLAY. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 IF ORDI-"S",XWOR%,,XWOR% STABIL: WORD '8A01 < STABILISATION IMAGE VIDEO. WORD IMAG-ZERO*2 WORD LIMAG*2 WORD TVPV < SUR LE PROCESSEUR VERT. XWOR%: VAL 0 < < RELAIS DIVERS : < IF ORDI-"T",XWOR%,,XWOR% ASP3: WORD SP3 < ROUTINE MAITRE DE STABILISATION < DE L'IMAGE VIDEO. XWOR%: VAL 0 AGOGE: WORD GOGE < RETOUR A 'GE'. IF VTVG,,X100, AERR: WORD E1100 < RETOUR EN ERREUR A !GE. X100: VAL 0 AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. APRINT: WORD PRINT < EDITION D'UN MESSAGE. IF VTVG,X100,,X100 ARCOPY: WORD RCOPY < ROUTINE DE HARD-COPY EVENTUEL < ET TEMPORISATION ASSOCIEE. X100: VAL 0 AGETS: WORD GETS < RECUPERATION DES SEUILS. ACARD: WORD CARD < ROUTINE DIRECTIONS CARDINALES. ATEST: WORD TEST < TEST DU POINT COURANT (X,Y). AEXIST: WORD EXIST < EXISTENCE ET VALEUR D'UN POINT. AISOL: WORD ISOL < DETERMINATION POINTS ISOLES. AMS: WORD MS < MODIFICATION DE L'ORIGINE DE < LA LISTE DES SEGMENTS. AINCX: WORD INCX < INCREMENTATION DE X. AINCY: WORD INCY < INCREMENTATION DE Y. ADECX: WORD DECX < DECREMENTATION DE X. ADECY: WORD DECY < DECREMENTATION DE Y. 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. IF VTVG,X100,,X100 ACONV: WORD SEG-1,X < RELAI DE CONVERSION EN MODE 4014. ASP: WORD SP < ROUTINE MAITRE DE SORTIE CU1. X100: VAL 0 I1: WORD ITEM1 < @EN-TETE DE L'ITEM1. ASI1: WORD SI1 < @ZONE DE SAVE DE L'EN-TETE ITEM1. SI1: DZS LNOM+2 < ZONE DE SAVE EN-TETE ITEM1. AIMAG: WORD IMAG-1,X < POUR ACCES A L'IMAGE PAR JDX. ALONG: WORD LONG < POUR VALIDER L'IMAGE VIDEO. AREP: WORD REP,X < POUR CONVERSION DES SEUILS. AE1003: WORD E1003 < CAS DES POINTS NOIRS (0). AE1001: WORD E1001 < SUITE BALAYAGE VERTICAL. AE1002: WORD E1002 < POURSUITE DU BALYAGE. < (HORIZONTAL) APARA: WORD PARA < MODULE DE PARAGLYPHE. APARA5: WORD PARA5 < CAS DES POINTS ISOLES DE 'PARA'. AINC3: WORD INC3 < ECRITURE GRAPHIQUE DANS LE CAS < DU MODE INCREMENTAL. AE1009: WORD E1009 < TRACE POINT NON ISOLE. AMESS: WORD 0 < SAVE L'ADRESSE DU MESSAGE A < L'ENTREE DE GETS EN VUE DES < ERREURS DE SYNTAXE ... IF VTVG,,X100, ASTORE: WORD STORE < STORE LE SEGMENT COURANT. X100: VAL 0 < < CONSTANTES : < KIN: WORD -1 < COMPTEUR DES ENTREES DANS 'VG'. IS: WORD 0 < IS=0 : L'EN-TETE DE L'ITEM1 N'A < PAS ETE SAUVEGARDEE. ACNSYS: ASCI ":SYS" IF VTVG,X100,,X100 ISON: WORD 0 < 0 : PAS DE SON GENERE , < #0 : DU SON A ETE GENERE. X100: VAL 0 REDUC: WORD 0 < FACTEUR DE REDUCTION=0/-1/-2. FAST: WORD 0 < FAST=0 : GRAPHIQUE RAPIDE , < FAST>0 : GRAPHIQUE FIN ET LENT , IF VTVG,X100,,X100 < FAST<0 : SPECIAL POINT PLOT < MODE DU 4014. X100: VAL 0 MISOL: WORD 0 < INDICATEUR POINT ISOLE SI =0. KPOINT: WORD 0 < COMPTEUR DES POINTS VOISINS DU < POINT COURANT RENCONTRES DANS < LES DIRECTIONS CARDINALES. IF VTVG,X100,,X100 XCONTR: WORD 0 < PARAMETRE DE CONTRASTE : IL < DONNE UN DECALAGE A FAIRE SUR < LE NBRE DES VOISINS (KPOINT). X100: VAL 0 COEF: VAL 252 < PARAMETRE D'UNE COURBE CONIQUE. ACOEF: WORD -COEF POINTI: WORD 0 < 0 : TRACER LES POINTS ISOLES , < 1 : NE PAS LES TRACER. NGE: WORD "GE" < NOM DE L'OVERLAY 'GE'. ALIMAG: WORD LIMAG < NBRE DE MOTS OCCUPES PAR L'IMAGE. NMPL: WORD CNMPL < NBRE DE MOTS DE 16 BITS/LIGNE. NLIG: WORD 1024/DY-1 < NBRE DE LIGNES/IMAGE -1. NPOINT: WORD CNMPL*16-1 < NBRE DE POINTS/LIGNE-1. M101: WORD '0101 < POUR FAIRE A=B='01. 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. IW: WORD 0 < 0 : DEPLACEMENT OUEST. INW: WORD 0 < 0 : DEPLACEMENT NORD-OUEST. IN: WORD 0 < 0 : DEPLACEMENT NORD. INE: WORD 0 < 0 : DEPLACEMENT NORD-EST. CONTO: WORD 1 < 1 : DEMANDE D'UNE REPRODUCTION < NORMALE , < 0 : DEMANDE D'UN PARAGLYPHE. < -1 : MODE INCREMENTAL. KEPAIS: WORD 1 < CONSTANTE D'EPAISSISSEMENT DES TRAITS. PLIG: WORD 1 < PAS DE PASSAGE D'UNE LIGNE < A L'AUTRE. PCOL: WORD 1 < PAS DE PASSAGE D'UN POINT A < A L'AUTRE SUR UNE LIGNE. DELX: WORD 1 < PAS IMPLICITE DE VARIATION DE X. DELY: WORD 1 < PAS IMPLICITE DE VARIATION DE Y. IF VTVG,,X100, IPASA: WORD 0 < 0=EXECUTION PAS A PAS. X100: VAL 0 < < 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 < < GESTION DU MODE INCREMENTAL : < ALINCR: WORD LINCR,X < ACCES A LA LISTE DE GESTION. DEMINC: WORD '0101 < ENTREE DE LA LISTE DE GESTION. WORD LINCR-ZERO*2 WORD 8 < LA LISTE FAIT 8 CARACTERES. IINC: WORD 0 < INDICATEUR DU TYPE DE GESTION < DE KPOINT LORS DE L'INCREMENTAL. < < 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. < < 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) : < MEPAIS: BYTE 7;'6D ASCI "EPAIS=" MSE: BYTE 7;'6D ASCI "SEUIL=" MSEX: BYTE 4;'6D ASCI "SX= " MSEY: BYTE 4;'6D ASCI "SY= " MCONT: BYTE 6;'6D ASCI "PARA? " IF VTVG,X100,,X100 MCONTR: BYTE 11;'6D ASCI "CONTRASTE=" X100: VAL 0 MIS: BYTE 8;'6D ASCI "ISOLES? " MEFFAC: BYTE 7;'6D ASCI "ERASE?" IF VTVG,X100,,X100 MCOPY: BYTE 6;'6D ASCI "COPY? " X100: VAL 0 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 MPAS: BYTE 9;'6D ASCI "PAS L/C=" MRED: BYTE 7;'6D ASCI "REDUC=" MINC: BYTE 6;'6D ASCI "INCR? " MLIST: BYTE 7;'6D ASCI "LISTE?" MIC: BYTE 5;'6D ASCI "TYP=" 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? " IF VTVG,,X100, MFIN: BYTE 5;'6D ASCI "FIN?" MPASA: BYTE 20;'6D ASCI "OAB INTERMEDIAIRES? " X100: VAL 0 PROG PAGE IF ORDI-"T",XWOR%,,XWOR% TIMAG: WORD IMAG < @RELATIVE IMAGE VIDEO. EOT #SIP SP3# XWOR%: VAL 0 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 $ LR X,B < B=X(POINT COURANT). PSR X < SAVE LA COORDONNEE X. LX REDUC < X=FACTEUR DE REDUCTION. LR Y,A < A=Y(POINT COURANT). SB NLIG NGR A,A < POUR TENIR COMPTE DU FAIT QUE LES < Y VIDEOS ET GRAPHIQUES SONT < INVERSES. SLLS DEDY,X < EXPANSION GRAPHIQUE. STA &ASEG < INSERTION DANS LA LISTE. SLLD DEDX,X < EXPANSION GRAPHIQUE DE X. PLR X < RESTAURE LA COORDONNEE X. LA ASEG < ACCES AU POINTEUR COURANT. CPI SEG-ZERO < 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 PAGE < < < I N C R E M E N T A T I O N / D E C R E M E N T A T I O N < D E X E T D E Y : < < INCX: EQU $ XR A,X AD DELX < X<--(X)+(DELX). XR A,X RSR DECX: EQU $ XR A,X SB DELX < X<--(X)-(DELX). XR A,X RSR INCY: EQU $ XR A,Y AD DELY < Y<--(Y)+(DELY). XR A,Y RSR DECY: EQU $ XR A,Y SB DELY < Y<--(Y)-(DELY). XR A,Y 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 < < < 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 < < < T E S T U N P O I N T : < < < ARGUMENT : < C=@IMAG , < X ET Y CONTIENNENT L'X ET L'Y DU POINT. < < < RESULTAT : < LE CARY EST POSITIONNE PAR UN 'TBT'. < < TEST: EQU $ PSR B,X,C LR Y,A < A=Y DU POINT A TESTER. MP NMPL ADR B,C LR X,A < A= X DU POINT A TESTER. SLRS 4 < DIVISION PAR 16. ADR A,C < C=@MOT CONTENANT LE POINT. LAI 'F ANDR A,X < X=NUMERO DU BIT REPRESENTANT < LE POINT X,Y DANS LE MOT (C). LA 0,C TBT 0,X < TEST DU POINT ARGUMENT. PLR B,X,C RSR PAGE < < < E X I S T E N C E E T V A L E U R < D U P O I N T C O U R A N T : < < < ARGUMENT : < X ET Y=COORDONNEES X ET Y DU POINT COURANT. < < < RESULTAT : < A=0 : (X,Y) EXISTE ET EST A 1 , < A#0 : (X,Y) N'EXISTE PAS , OU < (X,Y) EXISTE ET EST A 0. < < EXIST: EQU $ LAI 1 < LE POINT (X,Y) N'EXISTE PAS < A PRIORI ... CPZR X < VALIDATION COORDONNEE X. JL NEXIST < (X,Y) N'EXISTE PAS. CPZR Y < VALIDATION COORDONNEE Y. JL NEXIST < (X,Y) N'EXISTE PAS. LR X,A CP NPOINT < VALIDATION COORDONNEE X. JG NEXIST < (X,Y) N'EXISTE PAS. LR Y,A CP NLIG < VALIDATION COORDONNEE Y. JG NEXIST < NX,Y) N'EXISTE PAS. < < CAS OU LE POINT (X,Y) EXISTE : < PSR B,X,C LR Y,A MP NMPL ADR B,C LR X,A SLRS 4 ADR A,C < C=@MOT CONTENANT LE POINT (X,Y). LAI 'F ANDR A,X < X=NUMERO DU BIT REPRESENTANT < LE POINT (X,Y) DANS LE MOT ((C)). LA 0,C < ACCES AU MOT. TBT 0,X < TEST DU POINT. PLR B,X,C LAI 1 SBCR A < A=0 : LE POINT (X,Y) EST A 1. JANE NEXIST < LE POINT N'EXISTE PAS. IC KPOINT < SI LE POINT EXISTE ON LE COMPTE. NEXIST: EQU $ RSR < < < P O I N T S I S O L E S : < < < RESULTATS : < B=-1 : DANS TOUS LES CAS ... < MISOL=0 : LE POINT EST PEUT-ETRE ISOLE , < OU BIEN MODE 4014 ... < =-1 : LE POINT N'EST PAS ISOLE ... < < ISOL: EQU $ LBI -1 < A PRIORI , ON PREPARE LE < COMPTAGE. CPZ FAST < QUEL EST LE MODE D'EXECUTION ??? JGE ISOL2 < CAS DU 4010 , OU TOUS LES CAS < DE GRAPHIQUE FIN. LAI -1 < DANS LE CAS 4014 , ON FAIT < COMME SI LE POINT ETAIT ISOLE. ISOL2: EQU $ JANE ISOL1 STB MISOL < ON MEMORISE QU'ON A TROUVE AU < MOINS UN VOISIN AU POINT < COURANT : < - EST , OU < - SUD-EST , OU < - SUD , OU < - SUD-OUEST. ISOL1: EQU $ 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 DEMOUT SVC 0 < EMISSION MESSAGE. PLR C < RESTAURE C=@IMAGE VIDEO. IF ORDI-"T",XWOR%,,XWOR% LA ASP3 < A=@ROUTINE DE STABILISATION. JAE PRINT1 < ON N'EST PAS SOUS :SYS !!! WORD '1EC5 < SOUS :SYS : STABILISATION DE < L'IMAGE VIDEO. PRINT1: EQU $ XWOR%: VAL 0 RSR IF VTVG,X100,,X100 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 X100: VAL 0 IF VTVG,,X100, PAGE < < < I N T E R F A C E D ' I N T E R P O L A T I O N : < < < FONCTION : < TENTE TANT QU'IL LE FAUT DE STORER < LE SEGMENT ':GS' SOUS SGN. < (OU DANS LA ZDC, SUIVANT LA VALEUR DU < PARAMETRE 'ZDC') < < < STORE: EQU $ IF ZDC,X469,,X469 INT2: EQU $ LAD DEMGS SVC 0 < TENTATIVE DE STORE LE SEGMENT. JE INT3 < OK , STORE ACCEPTE. LAD DEMSCH SVC 0 < DANS LE CAS CONTRAIRE ON REND < LA MAIN TEMPORAIREMENT. JMP INT2 < PUIS ON REFAIT UNE NOUVELLE < TENTATIVE. INT3: EQU $ X469: VAL 0 IF ZDC,,X469, LAD GETGS SVC 0 < ACCES A LA VALIDATION COURANTE. CPZ NOMSEG < TEST DE LA VALIDATION... JNE STORE < LE SEGMENT PRECEDENT N'A PAS < ENCORE ETE ACQUIS, ON REBOUCLE. DC NOMSEG < OK, IL A ETE ACQUIS, VALIDONS LAD STOGS < LE SUIVANT, SVC 0 < QUE L'ON EVOIE DANS ZDC. X469: VAL 0 RSR X100: VAL 0 PAGE < < < G E N E R A T E U R V I D E O - G R A P H I Q U E : < < < FONCTION : < CE PROCESSEUR PERMET D'AFFICHER < SUR LA VISU NVP='0B UNE IMAGE VIDEO < SOUS FORME D'UN TREILLIS DE SEGMENTS. IF VTVG,,X100, < DE PLUS, VT CONSTITUE UN INTERFACE < AVEC TA POUR LES INTERPOLATIONS < DE TYPE GRAPHIQUE (FIN DE LISTE 'OAB'). X100: VAL 0 < < WORD IMAG 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 : < < SAVE L'EN-TETE DE L'ITEM1 : < LB ASI1 < B=@ZONE DE SAVE. LA I1 < A=@EN-TETE DE L'ITEM1. LXI LNOM+1 MOVE < SAVE L'EN-TETE DE L'ITEM1. IC IS < IS=1 : EN-TETE SAUVEGARDEE. < < ALLOCATION DE 8K MOTS : < LAD DEMMEM SVC 0 IF VTVG,,X100, < < INITIALISATION SEGMENT COURANT : < IF ZDC,X469,,X469 LAD DELGS SVC 0 < DELETE PREVENTIF DE ':GS'. X469: VAL 0 IF ZDC,,X469, LAD STOGS SVC 0 < ENVOI D'UNE VALIDATION NULLE. DC NOMSEG < VALIDATION 1ER SEGMENT. X469: VAL 0 X100: VAL 0 < < ACCES A L'ACN DU DEMANDEUR : < WORD '1E25 < (A,B)=ACN DU DEMANDEUR. CP ACNSYS < EST-CE :SYS ??? JNE E3200 < NON. LR B,A < PEUT-ETRE ... CP ACNSYS+1 < EST-CE :SYS ??? JE E3201 < OUI. E3200: EQU $ < CAS OU L'ON N'EST PAS SOUS :SYS. IF ORDI-"T",XWOR%,,XWOR% STZ ASP3 < PAS DE STABILISATION DE L'IMAGE. XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% IF VTVG,X100,,X100 STZ ASP < PAS DE SORTIE SON. X100: VAL 0 XWOR%: VAL 0 E3201: EQU $ < CAS OU L'ON EST SOUS :SYS. < < ACCES ET VALIDATION DE L'IAMGE VIDEO : < LAD MNOM BSR APRINT < ENVOI D'UNE INVITATION. LAD DEMIN SVC 0 < ENTREE DU NOM DE L'IMAGE VIDEO. LAI '05 STBY SGN < NVP DE LOAD SOUS <ACN>. LAD SGN SVC 0 < TENTATIVE DE LOAD IMAGE. JE E1000 < OK , ON A TROUVE L'2MAGE. LAI '06 STBY SGN < SINON , ON ESSAYE UN NVP DE < LOAD SOUS :SYS. LAD SGN SVC 0 < TENTATIVE DE LOAD SOUS :SYS ... JE E1000 < OK , ON A TROUVE L'IMAGE. < < 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 $ IF VTVG,X100,,X100 CPZ ISON < DU SON A-T'IL ETE GENERE ??? JE E1318 < NON RIEN A FAIRE ... LAD DEMS SVC 0 < SI OUI , IL FAUT RENDRE CU1. < (CF. LE ALT-MODE DE PRESC). E1318: EQU $ X100: VAL 0 LAD CG SVC 0 < REMISE EVENTUELLE DE LA VISU < D'EMISSION EN APLHA-NUMERIQUE. < < RESTAURATION DE L'EN-TETE DE L'ITEM1 : < CPZ IS < L'EN-TETE A-T'ELLE ETE < SAUVEGARDEE ??? JE NIS < NON , RIEN A FAIRE ... LA ASI1 < A=@ZONE DE SAVE. LB I1 < B=@EN-TETE DE L'ITEM1. LXI LNOM+1 MOVE < RESTAURATION DE L'EN-TETE ITEM1. NIS: EQU $ < < RESTAURATION DE L'ESPACE MEMOIRE : < LA APILE LR A,K < REINITIALISATION DE K SUR < LA PILE DE SODOME. LAD RELMEM SVC 0 < RETOUR A 4K MOTS. < < 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 I T I A L I S A T I O N : < E1000: EQU $ < < VALIDATION DE L'IMAGE VIDEO : < LA &ALONG CPI -3 JL E1100 < ERREUR : PAS VIDEO !!! JAGE E1100 < ERREUR : FLOPPY .... IF ORDI-"S",XWOR%,,XWOR% LAD STABIL < VISUALISATION IMAGE VIDEO. SVC 0 XWOR%: VAL 0 < < QUE FAIRE DE L'IMAGE : < E1337: EQU $ LAD MINT BSR APRINT < ENVOI D'UNE INVITATION. LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. < < REPONSES RECONNUES : < F : RETOUR A GE , < G : CONVERSION VIDEO --> GRAPHIQUE DE L'IMAGE , < D : IDEM A 'G' , IF VTVG,X100,,X100 < S : RECONSTITUTION D'UN SON AYANT COMME < REPRESENTATION L'IMAGE ENTREE. X100: VAL 0 < LBY REP < A=REPONSE DE L'UTILISATEUR. CPI "F" JE GOGE < RETOUR IMMEDIAT A 'GE'. CPI "G" JE GRAPH < CONVERSION VIDEO --> GRAPHIQUE. CPI "D" JE GRAPH < CONVERSION VIDEO --> GRAPHQUE. IF VTVG,X100,,X100 CPI "S" JE SON < DEMANDE DE CONVERSION SONORE. X100: VAL 0 E1301: EQU $ LAD MERR BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR. JMP E1337 < PUIS , ON RE-INTERROGE ... IF VTVG,X100,,X100 < < < E M I S S I O N S O N : < < SON: EQU $ IF ORDI-"T",XWOR%,,XWOR% CPZ ASP3 < EST-ON SOUS :SYS ??? XWOR%: VAL 0 IF ORDI-"S",XWOR%,,XWOR% CPZ ASP < EST-ON SOUS :SYS ??? XWOR%: VAL 0 JE E1301 < NON , LE SON EST REFUSE ... < < CAS D'UNE DEMANDE SOUS :SYS : < LAD DEMCU1 SVC 0 < ASSIGNATION DU CU1 AFIN DE LE < LOUER , BIEN QU'IL SOIT ATTEINT < DIRECTEMENT EN MODE MAITRE. JNE E1301 < CU1 INACCESIBLE ... IC ISON < ON FAIT : ISON#0 !!! LA ASP E1319: EQU $ WORD '1EC5 < SI CU1 EST LOUE , ON LANCE UNE < ROUTINE MAITRE DE SORTIE DIRECTE < SUR LUI ... JMP E1319 < ON RECOMMENCE ; LA SORTIE < DE CETTE BOUCLE SE FAIT PAR < ALT-MODE DE PRESC. X100: VAL 0 < < < C O N V E R S I O N G R A P H I Q U E : < < GRAPH: EQU $ < < CHOIX DU FACTEUR DE REDUCTION : < LA AMRED BSR APRINT < ENVOI D'UNE INVITATION. LAD DEMREP SVC 0 < LECTURE DU FACTEUR DE REDUCTION. < < FACTEURS DE REDUCTION RECONNUS : < 0 : GRANDEUR REELLE , < 1 : IMAGE/2 , < 2 : IMAGE/4. < LBY REP < A=CARACTERE LU. ADRI -'30,A < TRANSLATION NUMERIQUE. JAL GRAPH < ERREUR : CARACTERE NON RECONNU. CPI DEDX+DEDY/2 < VALIDATION SUPERIEURE. JG GRAPH < ERREUR : CARACTERE NON RECONNU. NGR A,A < OK (0,1,2) : ON L'INVERSE. 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 $ < < CHOIS DE LA VITESSE : < E1011: EQU $ STZ POINTI < TRACER LES POINTS ISOLES A < PRIORI , AU CAS OU LE RAPIDE < SERAIT DEMANDE. STZ FAST < FAST=0 : RAPIDE A PRIORI. LAD MFAST BSR APRINT < ENVOI D'UNE INTERROGATION ... LAD DEMREP SVC 0 < LECTURE DE LA REPONSE. < < REPONSES RECONNUES : < O : GRAPHIQUE GROSSIER ET RAPIDE , IF VTVG,X100,,X100 < OU SPECIAL POINT PLOT MODE DU 4014 , X100: VAL 0 < N : GRAPHIQUE FIN ET LENT , < LBY REP < A=REPONSE UTILISATEUR. CPI "O" IF VTVG,X100,,X100 JE E3000 < DEMANDE DE GRAPHIQUE RAPIDE. X100: VAL 0 IF VTVG,,X100, JE E1010 < VERS LA DEMANDE DES PAS < DE PARCOURS. X100: VAL 0 IC FAST < FAST=1>0 : LENT A PRIORI. CPI "N" JE E1410 < DEMANDE GRAPHIQUE LENT. JNE E1011 < VERS UNE NOUVELLE INTERROGATION. IF VTVG,X100,,X100 < < CAS DU GRAPHIQUE RAPIDE : < E3000: EQU $ LAD M4014 BSR ACARD < DOIT-ON METTRE LE TERMINAL < EN SPECIAL POINT PLOT MODE < DANS LE CAS DU 4014 ???? ADRI -1,B < B=-1 : OUI MODE 4014 , < B=0 : NON , MODE 4010. STB FAST < FAST=0 : 4010 , < FAST=-1 : 4014. CPZR B < TEST DU MODE : 4010 OU 4014 ??? JE E1010 < CAS 4010 : VERS LA DEMANDE < DES PAS DE PARCOURS. < < CAS 4014 : < E3020: EQU $ LA AMCONR BSR APRINT < ENVOI D'UNE INVITATION DEMAN- < DANT UN CHIFFRE DECIMAL (0-9). LAD DEMREP SVC 0 < ENTREE D'UN CHIFFRE DECIMAL (???) LBY REP < A=CARACTERE RECU. ADRI -'30,A < CONVERSION BINAIRE. JAL E3020 < ERREUR DE CHIFFRE DECIMAL. CPI 9 < VALIDATION SUPERIEURE. JG E3020 < ERREUR DE CHIFFRE DECIMAL. STA XCONTR < MAJ DE XCONTR. JMP E1411 < VERS L'INTERROGATION SUR < LES DIRECTIONS CARDINALES < ET LES SEUILS. X100: VAL 0 < < FAUT-IL TRACER LES POINTS ISOLES ??? < E1410: EQU $ STZ POINTI < TRACER LES POINTS ISOLES A PRIORI LA AMIS BSR APRINT < ENVOI D'UNE INTERROGATION. LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. < < < REPONSES RECONNUES : < O : TRACER LES POINTS ISOLES , < N : IGNORER LES POINTS ISOLES. < LBY REP < A=REPONSE UTILISATEUR. CPI "O" JE E1411 < POINTI=0 : TRACER LES POINTS < ISOLES. IC POINTI < POINTI=1 : NE PAS TRACER LES < POINTS ISOLES A PRIORI. CPI "N" JNE E1410 < VERS UNE NOUVELLE INTERROGATION. < < DANS LE CAS DU GRAPHIQUE LENT , 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 CPZ FAST JL E7000 < DANS LE CAS OU LE SPECIAL < POINT PLOT MOD DU 4014 EST < DEMANDE , ON VA ENTRER DIRECTE- < MENT LES DIRECTIONS CARDINALES. < < REPRODUCTION NORMALE OU CONTOUR (PARAGLYPHE) ??? < LA AMCONT BSR ACARD < ENVOI DU MESSAGE ET LECTURE < DE LA REPONSE. STB CONTO < SAVE LA REPONSE (0=OUI). JE E1010 < OUI , PAS DE DIRECTION A < DEMANDER ... LAD M4014 BSR ACARD < VA-T'ON TRAVAILLER SUR UN 4014 ??? JNE E7000 < NON , VERS LES DIRECTIONS ... LA AMINC BSR ACARD < DANS LE CAS D'UN 4014 , FAUT-IL < FAIRE DE L'INCREMENTAL ??? JNE E7000 < NON , VERS LES DIRECTIONS... < < MODE INCREMENTAL SUR 4014 : < LAI -1 STA CONTO < ON LE MEMORISE PAR CONTO=-1. E7001: EQU $ LA AMLIST BSR ACARD < FAUT-IL ENTRER UNE LISTE DE < GESTION DE L'INCREMENTAL ??? JNE E7002 < NON. LAD MINT BSR APRINT < ET OUI , ENVOI D'UNE INVITATION. LAD DEMINC SVC 0 < ENTREE DES 8 CARACTERES DE < LA LISTE DE GESTION. E7002: EQU $ LA AMIC BSR APRINT < INVITATION D'ENTREE DU TYPE. LAD DEMREP SVC 0 < ENTREE D'1N CARACTERE DE TYPE. LBY REP < A=TYPE DEMANDE. < < DIVERS TYPES DE GESTION DE KPOINT : < BIT15=0 (TYPE 0 ET 2) : KPOINT EST RAZE AVANT < CHAQUE TEST DE VOISINNAGE , < BIT14=1 (TYPE 2 ET 3) : KPOINT EST DECREMENTE < D'UNE UNITE SI LE POINT < COURANT EXISTE ET EST A 1. < TYPM: VAL 3 < TYPE MAX RECONNU. < ADRI -'30,A < DETRANSLATION. JAL E7002 < ERREUR ... CPI TYPM < VALIDATION SUPERIEURE. JG E7002 < ERREUR ... STA IINC < SAVE LE TYPE. JMP E1010 < ON NE DEMANDE PAS LES DIRECTIONS. < < ENTREE DES DIRECTIONS CARDINALES DE PARCOURS : < E7000: EQU $ LAD MW BSR ACARD STB IW < DIRECTION OUEST. LAD MNW BSR ACARD STB INW < DIRECTION NORD-OUEST. LAD MN BSR ACARD STB IN < DIRECTION NORD. LAD MNE BSR ACARD STB INE < DIRECTION NORD-EST. < < EPAISSISSEMENT DES TRAITS : < E1010X: EQU $ LA AMEPAI BSR AGETS < EDITION MESSAGE, ET ENTREE VALEUR, JALE E1010X < ERREUR... CPI DX+DY/2 JG E1010X < ERREUR... STA KEPAIS < OK... E1010: EQU $ < < DEMANDE DU PAS DE PARCOURS DES LIGNES ET DES COLONNES : < IC DEMSE+2 < AFIN DE DEMANDER 4 CARACTERES. PAS2: EQU $ < CAS DES ERREURS DE PAS. LA AMPAS BSR AGETS < ENVOI DU MESSAGE ET RENVOI < DANS A DES 2 PAS CONCATENES. LB M101 < 2 PAS EGAUX A 1 A PRIPORI. JAE PAS1 < SI LE RESULTAT EST NUL ON < PREND DES PAS UNITAIRES A PRIORI. SLRD 16 < SINON : B<--(A) , ET A=0. PAS1: EQU $ SCRD 8 < DECONCATENATION. SCLS 8 < CADRAGE CORRECT DE A. JAE PAS2 < PAS DE COLONNE=0 : ERREUR. CPZR B JE PAS2 < PAS DE LIGNE=0 : ERREUR. STA PCOL < PAS DE PASSAGE D'UN POINT A < L'AUTRE D'UNE LIGNE. STB PLIG < PAS DE PASSAGE D'UNE LIGNE < A L'+UTRE. < < ENTREE DES PAS D'INCREMENTATION/DECREMENTATION DE X ET Y : < PAS4: EQU $ LAD MDEL BSR AGETS < ENVOI D'UN MESSAGE ET LECTURE DES < 2 CARACTERES REPONSES. LB M101 < 2 PAS EGAUX A 1 A PRIORI. JAE PAS3 < ET OUI =1 ... SLRD 16 < CADRAGE DANS B. PAS3: EQU $ SCRD 8 < ENTREE DE DELY DANS A. SCLS 8 < CADRAGE CORRECT DE DELY. JAE PAS4 < ERREUR , DELY=0. CPZR B < VALIDATION DE DELX. JE PAS4 < ERREUR , DELX=0. STA DELY < OK , MAJ DE DELY. STB DELX < OK , MAJ DE DELX. DC DEMSE+2 < RESTAURATION DE CODEM=3. IF VTVG,X100,,X100 < < FAUT-IL EFFACER L'ECRAN DE LA VISU DE RECEPPTION : < LA AMEFFA BSR ACARD < B=0 S'IL FAUT EFFACER L'ECRAN. X100: VAL 0 IF VTVG,,X100, < < DOIT-ON SEPARER CHAQUE SEGMENT < D'UN SEGMENT 'OAB' ??? SI OUI, UN < PROGRAMME GRAPHIQUE SOUS 'GV' PEUT LES < RECUPRER UN A UN ET INSERER ENTRE EUX < D'AUTRES DESSINS, PAR L'INTERMEDIAIRE < D'UNE BIBLIOTHEQUE CONTENANT UNE < PRIMITIVE 'I' PAR EXEMPLE... < LA AMPASA BSR ACARD STB IPASA < B=0 : OUI, B=1 : NON. LA AMEFFA BSR ACARD < FAUT-IL EFFACER L'ECRAN ??? JNE NEFFAC < NON. LAD ERASE SVC 0 < OUI. NEFFAC: EQU $ X100: VAL 0 < < CHOIX VISU D'EMISSION : < E1200: EQU $ LAD OG SVC 0 < TENTATIVE D'OPEN GRAPHIQUE. IF VTVG,X100,,X100 JE E110 < OK. < < CHANGEMENT DE VISU D'EMISSION : < 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 FS < MAJ DE FS. STBY SPPM < MAJ DE SPPM. STBY COPY < MAJ DE COPY. JMP E1200 < PUIS NOUVELLE TENTATIVE D'OG. E110: EQU $ 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 ... CPZ CONTO < TEST DU MODE DEMANDE ??? JGE E6070 < NORMAL OU PARAGLYPHE. < < INITIALISATION DU MODE INCREMENTAL : < LA TY STA SEG LA TX STA SEG+1 LAD WG SVC 0 < ON ENVOIE A LA VISU LES COORDON- < -NEES DU POINT (TY,TX) AU CAS < OU LE MODE SERAIT LE MODE < INCREMENTAL ; LE POINT (TY,TX) < EST DONC LE POINT DE DEPART < DU TRACE INCREMENTAL. < (PLUS DES CARACTERES 'RS'). LAI 2 STA WG+2 < CODEM(WG)=2 AU CAS OU LE MODE < SERAIT INCREMENTAL. E6070: EQU $ < NORMAL OU PARAGLYPHE. CPZ FAST < TEST DU MODE DEMANDE. JGE E3100 < CE N'EST PAS LE MODE 4014. < < CAS DU SPECIAL POINT PLOT MODE DU 4014 : < LAD FS SVC 0 < MISE DU 4014 EN SPECIAL POINT < PLOT MODE. X100: VAL 0 IF VTVG,,X100, JE E3100 < OK , NVP='0B EST ASSIGNE. BR AERR < ABORT SI NVP='0B NON ASSIGNE. X100: VAL 0 E3100: EQU $ < < C O N V E R S I O N V I D E O- < G R A P H I Q U E : < LX NLIG < INDEX DE BALYAGE VERTICAL. < < BOUCLE DE BALYAGE VERTICAL (Y) : < E1001: EQU $ LR X,Y < Y=COORDONNEE Y DE BALYAGE. PSR X < SAVE LA COORDONEE Y (X !!!). LX NPOINT < INDEX DE BALYAGE HORIZONTAL : < < BOUCLE DE BALYAGE HORIZONTAL (X) : < E1002: EQU $ PSR X,Y < SAVE LES COORDONNES X ET Y < DU POINT COURANT. CPZ CONTO < QUEL EST LE TYPE DU TRACE ??? JL INC4 < TYPE INCREMENTAL. BSR ATEST < TEST DU POINT (X,Y) ??? JC E6030 < 1 : ALLONS-Y ... BR AE1003 < 0 : RIEN A FAIRE. < < REINITIALISATIONS : < E6030: EQU $ LAI SEG-ZERO STA ASEG < REINITIALISATION DU POINTEUR < DE LISTE DES SEGMENTS. STZ WG+2 < RAZ DU CODEM DE WG. LAI 1 STA KPOINT < INITIALISATION DU COMPTEUR DES < POINTS VOISINS A 1 A CAUSE DES < POINTS ISOLES < < GENERATION DE LA LISTE DES SEGMENTS : < BSR AXY < INSERTION POINT (X,Y). CPZ FAST < TEST DU MODE DEMANDE ??? JE E1007 < CAS DU MODE RAPIDE : VERS < L'AFFICHAGE DIRECT (POINT < ISOLE). < < DISCRIMINATION MODE NORMAL/MODE CONTOUR : < CPZ CONTO JG E5003 < CAS DU MODE NORMAL. INC4: EQU $ < CAS DU MODE INCREMENTAL. BR APARA < MODE PARAGLYPHE. < < T R A C E N O R M A L : < E5003: EQU $ < < CAS D'1NE DEMANDE GRAPHIQUE FIN : < STZ MISOL < POINT ISOLE A PRIORI. < < EXPLORATION 'OUEST' : < CPZ IW < FAUT-IL ALLER VERS L'OUEST ??? JNE E500 < NON ... BSR AINCX BSR AEXIST < TEST DU POINT (X+1,Y). BSR AISOL < TEST DES POINTS ISOLES ET B=-1. BSR ADECX JAE E500 < (X+1,Y) EXISTE ET EST A 1. PSR X < SAVE COORDONNEE X. E501: EQU $ ADRI 1,B < COMPATGE SUR LA DIRECTION OUEST. BSR ADECX < DEPLACEMENT VERS L'OUEST. BSR AEXIST < TEST DE (X-I,Y). JAE E501 < (X-I,Y)=1 : CONTINUE. CPZR B < ON ARRETE SUR LE 1ER POINT A < 0 OU INEXISTANT ; A-T'ON ALORS < TROUVE DES POINTS SUR L'OUEST ??? JE E502 < NON , RIEN A FAIRE ... BSR AINCX < SI OUI , RETOUR SUR L'AVANT- < DERNIER POINT. BSR AXY1 < RE-INSERTION DU POINT ORIGINE. BSR AXY < INSERTION DU DERNIER POINT. E502: EQU $ PLR X < RESTAURE LA COORDONNE X. < < EXPLORATION 'NORD-OUEST' : < E500: EQU $ CPZ INW < FAUT-IL ALLER NORD-OUEST ??? JNE E600 < NON ... BSR AINCX BSR AINCY BSR AEXIST < TEST DU POINT (X+1,Y+1). BSR AISOL < TEST DES POINTS ISOLES ET B=-1. BSR ADECX BSR ADECY JAE E600 < (X+1,Y+1) EXISTE ET EST A 1. PSR X,Y < SAVE LES COORDONNEES X ET Y. E601: EQU $ ADRI 1,B < COMPTAGE SUR LE NORD-OUEST. BSR ADECX BSR ADECY BSR AEXIST < TEST DE (X-I,Y-J) ??? JAE E601 < (X-I,Y+J)=1 : CONTINUE ... CPZR B < SINON , A-T'ON RENCONTRE DES < POINTS SUR LE NORD-OUEST ??? JE E602 < NON , RIEN A FAIRE ... BSR AINCX < SI OUI , RETOUR SUR L'AVANT - BSR AINCY < DERNIER POINT. BSR AXY1 < REINSERTION DU POINT ORIGINE. BSR AXY < INSERTION DU DERNIER POINT. E602: EQU $ PLR X,Y < RESTORE COORDONNEES X ET Y. < < EXPLORATION 'NORD' : < E600: EQU $ CPZ IN < FAUT-IL ALLER NORD ??? JNE E700 < NON ... BSR AINCY BSR AEXIST < TEST DU POINT (X,Y+1). BSR AISOL < TEST DES POINTS ISOLES ET B=-1. BSR ADECY JAE E700 < (X,Y+1) EXISTE ET EST A 1. PSR Y < SAVE LA COORDONNEE Y. E701: EQU $ ADRI 1,B < COMPTAGE DIRECTION NORD. BSR ADECY BSR AEXIST < TEST DU POINT (X,Y-J). JAE E701 < (X,Y-J)=1 : CONTINUE. CPZR B < SINON , A-T'ON RENCONTRE < DES POINTS SUR LE NORD ??? JE E702 < NON , RIEN A FAIRE ... BSR AINCY < SI OUI , RETOUR SUR L'AVANT- < DERNIER POINT. BSR AXY1 < REINSERTION DU POINT ORIGINE. BSR AXY < INSERTION DU POINT COURANT. E702: EQU $ PLR Y < RESTAURATION DE LA COORDONNEE Y. < < EXPLORATION 'NORD-EST' : < E700: EQU $ CPZ INE < FAUT-IL ALLER NORD-EST ??? JNE E800 < NON .... BSR ADECX BSR AINCY BSR AEXIST < TEST DU POINT (X-1,Y+1). BSR AISOL < TEST DES POINTS ISOLES ET B=-1. BSR AINCX BSR ADECY JAE E800 < (X-1,Y+1) EXISTE ET EST A 1. PSR X,Y < SAVE LES COORDONNEES X ET Y. E801: EQU $ ADRI 1,B < COMPTAGE SUR LE NORD-EST. BSR AINCX BSR ADECY BSR AEXIST < TEST DU POINT (X+I,Y-J). JAE E801 < (X+I,Y-J)=1 : CONTINUE. CPZR B < A-T'ON RENCONTRE DES POINTS < SUR LE NORD-EST ??? JE E802 < NON RIEN A FAIRE ... BSR ADECX < SI OUI , RETOUR SUR L'AVANT- BSR AINCY < DERNIER POINT. BSR AXY1 < REINSERTION DU POINT ORIGINE. BSR AXY < INSERTION DU POINT COURANT. E802: EQU $ PLR X,Y < RESTAURE LES COORDONNEES X ET Y. E800: EQU $ IF VTVG,X100,,X100 CPZ FAST < EST-ON EN MODE 4014 ??? JL E3002 < CAS DU SPECIAL POINT PLOT < MODE DU 4014. X100: VAL 0 < < DETERMINATION DE L'ORIGINE DE LA LISTE DES SEGMENTS : < E1007: EQU $ LAI SEG-ZERO*2 STA WG+1 < INITILAISATION DE L'@OCTET DE < L'ORIGINE DE LA LISTE SEGMENTS. LA WG+2 < TEST DU NBRE DE POINTS*4 < INSERES DANS LA LISTE. CPI 4 < (X,Y) EST-IL UN POINT ISOLE ??? JNE E1008 < NON , ET ON A CODEM(WG)>8. < < CAS OU (X,Y) EST ISOLE : < CPZ MISOL < EST-CE UN VRAI POINT ISOLE ??? JNE E1003 < NON , IL FAIT PARTIE D'UN SEGMENT PARA5: EQU $ < CAS DES POINTS ISOLES DE 'PARA'. CPZ POINTI < FAUT-IL TRACER LES POINTS < ISOLES ??? JNE E1003 < NON , ON L'IGNORE DONC ... BSR AXY1 < ON REINSERE (X,Y) AFIN DE < TRACER UN POINT , SOIT LE < SEGMENT ((X,Y),(X,Y)). JMP E1009 < VERS LE TRACE. < < CAS OU (X,Y) N'EST PAS ISOLE : < E1008: EQU $ BSR AMS < ON SUPPRIME LE POINT (X,Y) DE < L'ORIGINE DE LA LISTE CAR ON LE < RETROUVE DE NOUVEAU EN 2EME < POINT (CF. UN SEGMENT...) IF VTVG,X100,,X100 CPI 8 < N'Y-AT'IL QU'UN SEGMENT ??? JE E1009 < OUI , ON VA L'AFFICHER ... BSR AMS < S'IL Y A PLUS D'UN SEGMENT , ON < ON SUPPRIME DE NOUVEAU LE < POINT (X,Y) , CAR ON VA ENCORE < LE TROUVER EN 4EME POSITION... X100: VAL 0 < < 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. IF VTVG,,X100, < < INTERFACE D'INTERPOLATION : < LA WG+2 SLRS 3 LR A,X < X=NBRE DE SEGMENTS A TRANSMETTRE. LA WG+1 SLRD 1+16 < B=@MOT DE LA LISTE DES SEGMENTS. INT1: EQU $ PSR X < SAVE LE DECOMPTE DES SEGMENTS. LXI 4 < 1 SEGMENT OCCUPE 4 MOTS. LAD SEGSGN < A=@MOT DU SEGMENT COURANT. XR A,B < A=EMMETTEUR=@SEGMENT, < B=RECEPTEUR=@SEGMENT SGN. MOVE < RECUPERATION SEGMENT COOURANT. XR A,B < RESTAURE A ET B. ADRI 4,B < PASSAGE A L'EVENTUEL SEGMENT < SUIVANT DE LA LISTE. BSR ASTORE < STORE SGN LE SEGMENT ':GS'. CPZ IPASA < TEST DU MODE ??? JNE NPASA < CAS DU MODE CONTINU. < < EMISSION DE 'OAB' ENTRE CHAQUE SEGMENT : < STZ SEGSGN+0 STZ SEGSGN+1 STZ SEGSGN+2 STZ SEGSGN+3 BSR ASTORE < EMISSION DE 'OAB'. NPASA: EQU $ PLR X < RESTAURE LE DECOMPTE DE SEGMENTS. JDX INT1 < PASSAGE AU SUIVANT ... X100: VAL 0 < < AFFICAHGE DE LA LISTE GRAPHIQUE (TRANSFORME OU PAS) : < LX KEPAIS < X=FACTEUR D'EPAISSISSEMENT... INC3X: EQU $ PSR X,W LAD OG SVC 0 < DECHAINAGE... LAD WG SVC 0 < EDITION DE LA LISTE... LA WG+2 SLRS 1 LR A,X < X=NOMBRE DE COORDONNEES, LA WG+1 SLRS 1 LR A,W < W=ADRESSE DE LA LISTE DES COORDONNEES. INC3Y: EQU $ IC 0,W < EPAISSISSEMENT... ADRI 1,W JDX INC3Y PLR X,W JDX INC3X JMP E1003 INC3: EQU $ < ENTRY MODE INCREMENTAL. LAD WG SVC 0 < (X EST INDIFFERENT !!!) < < CHANGEMENT DE POINT COURANT SUR LA LIGNE : < E1003: EQU $ PLR X,Y < RESTAURE LE POINT (X,Y). LA PCOL < PAS DE PASSAGE D'UN POINT < A L'AUTRE. SBR A,X < BALAYAGE HORIZONTAL. CPZR X < EST-CE FINI ??? JL E6000 < OUI , CHANGEMENT DE LIGNE. BR AE1002 < NON , ON CONTINUE A BALAYER. E6000: EQU $ < < CHANGEMENT DE LIGNE : < PLR X < RESTAURE LE NUMERO DE LIGNE. LA PLIG < PAS DE PASSAGE D'UNE LIGNE < A L'AUTRE. SBR A,X < BALAYAGE VERTICAL. CPZR X < EST-CE FINI ??? JL FIN < C'EST FINI .... BR AE1001 < ET NON , ON CONTINUE A BALAYER. FIN: EQU $ IF VTVG,X100,,X100 BSR ARCOPY < HARD-COPIES ET TEMPORISATION ??? X100: VAL 0 IF VTVG,,X100, LAD CG SVC 0 < RETOUR EN ALPHA-NUMERIQUE. LA AMFIN BSR ACARD < ENVOI MESSAGE ET LECTURE REPONSE. JNE PAFIN < NON, CE N'EST PAS FINI... < < FIN DE LISTE D'INTERPOLATION : TRANSMISSION D'UN SEGMENT REDUIT A O : < STZ SEGSGN+0 STZ SEGSGN+1 STZ SEGSGN+2 STZ SEGSGN+3 BSR ASTORE < STORE SGN DU SEGMENT OO. PAFIN: EQU $ X100: VAL 0 BR AGOGE < ET C'EST FINI ... IF VTVG,X100,,X100 < < CAS DU SPECIAL POINT PLOT MODE DU 4014 : < E3002: EQU $ LA KPOINT < ACCES AU NBRE DE VOISINS ... < A NOTER QU'ETANT DONNE LA TAILLE < D'UNE IMAGE 256*256 , UN < POINT NE PEUT AVOIR PLUS DE < 1024 VOISINS !!! LX XCONTR < X=DECALAGE DE CONTRASTE. CPZR X < DECALAGE EFFECTIF ??? JE E3014 < NON , ON LE SAUTE. SLLS 0,X < PRISE EN COMPTE DU CONTRASTE. JALE E3016 < ON EST PLUS QU'AU MAX !!! JC E3016 < LA AUSSI , ON EST AU MAX !!! E3014: EQU $ CPI COEF/2 < EST-ON AU MAX ??? JLE E3010 < NON , TOUT JUSTE , OK. E3016: EQU $ < CAS OU ON A PASSE LE MAX. LAI 127 < SI OUI , ON PREND L'INTENSITE < MAX ... JMP E3012 < VERS L'EMIISSION MAX. E3010: EQU $ MP KPOINT < CALCUL DE KPOINT*KPOINT. DV ACOEF < A=-KPOINT*KPOINT/COEF. AD KPOINT ADRI 63,A < VALEUR DE L'INTENSITE : < A=-KPOINT*KPOINT/COEF+KPOINT+63. E3012: EQU $ STA INTENS < MISE EN PLACE DE L'INTENSITE. LXI 2 < 2 COORDONNEES A CONVERTIR (X,Y). BSR ATRF < TRANSFORMATION SI DEMANDEE. < < CONVERSION ASCI DES COORDONNEES : < LYI 0 < Y CONTIENT UNE CONSTANTE DE < TRANSLATION DES COORDONNEES Y. < (DOIT DONC ETRE NUL POUR X). LXI 2 < 2 COORDONNEES A CONVERTIR. < (X PUIS Y) E3102: EQU $ LA &ACONV < A=UNE COORDONNEE X OU Y. LBI 0 < CLEAR B. SCRS 5 SCLD 5 < EXTRACTION DES POIDS FAIBLES. SLRS 5 < QUE L'ON MET DANS B. ADRI 32,A < A=1ER CARACTERE ASCI. ADRI 64,B < B=2EME CARACTERE ASCI. SWBR A,A < LE 1ER CARACTERE EST MIS A GAUCHE ORR B,A < CONCATENATION DES 2 CARACTERES. ADR Y,A < CAS DE LA COORDONNEE Y (+32). LYI 32 < POUR TRANSLATER LA COORDONNEE Y. STA &ACONV < MISE DES 2 CARACTERES DANS LE < BUFFER (SEG). JDX E3102 < A LA COORDONNEE Y. LAD SPPM SVC 0 < ENVOI DU CARACTERE D'INTENSITE , < ET DES COORDONNEES DU POINT < COURANT. JMP E1003 < VERS LE CHANGEMENT DE POINT ... X100: VAL 0 < < T R A C E P A R A G L Y P H E : < PARA: EQU $ JL INC1 < EN FAIT C'EST LE MODE INCREMENTAL BSR AINCX < M(X+1,Y). BSR AEXIST JANE PARA1 BSR AXY < INSERTION DE M(X+1,Y). PARA1: EQU $ BSR ADECX BSR ADECY < M(X,Y-1). BSR AEXIST JANE PARA2 BSR AXY1 < REINSERTION DE M(X,Y). BSR AXY < INSERTION DE M(X,Y-1). PARA2: EQU $ BSR ADECX BSR AINCY < M(X-1,Y). BSR AEXIST JANE PARA3 BSR AXY1 < REINSERTION DE M(X,Y). BSR AXY < INSERTION DE M(X-1,Y). PARA3: EQU $ BSR AINCX BSR AINCY < M(X,Y+1). BSR AEXIST JANE PARA4 BSR AXY1 < REINSERTION DE M(X,Y). BSR AXY < INSERTION DE M(X,Y+1). PARA4: EQU $ BSR ADECY < RETOUR SUR M(X,Y). < < QUE FAIRE DU POINT COURANT : < LA KPOINT < A=NBRE DE VOISINS+1. CPI 5 JE E1003 < LE POINT COURANT EST DANS UNE < TACHE SOMBRE , ON NE LE TRACE PAS CPI 1 JNE E6020 < M(X,Y) N'EST PAS ISOLE ET EST < SUR UN CONTOUR , ON LE TRACE. BR APARA5 < M(X,Y) EST ISOLE , FAUT-IL < LE TRACER ??? E6020: EQU $ BR AE1009 < TRACE DU POINT NON ISOLE. < < T R A C E I N C R E M E N T A L : < INC1: EQU $ LA IINC < TYPE DE GESTION DE KPOINT. TBT 15 < DOIT-ON LE RAZER ??? JC INC5 < NON , IL GARDE SA VALEUR ... STZ KPOINT < ET OUI ... INC5: EQU $ < < DETERMINATION DU NBRE DE VOISINS+1 DU POINT M(X,Y) : < BSR AINCX BSR AEXIST BSR ADECY BSR AEXIST BSR ADECX BSR AEXIST BSR ADECX BSR AEXIST BSR AINCY BSR AEXIST BSR AINCY BSR AEXIST BSR AINCX BSR AEXIST BSR AINCX BSR AEXIST BSR ADECX BSR ADECY BSR AEXIST < TEST DU POINT M(X,Y). < < DETERMINATION DU PARCOURS INCREMENTAL : < LBI '20 < 'SPACE' : PEN UP A PRIORI. JANE INC2 < OUI , LE POINT M(X,Y) N'EXISTE < PAS , ON FAIT DONC PEN UP ... LBI '50 < PEN DOWN , CAR M(X,Y) EXISTE. LA IINC < TYPE DE GESTION DE KPOINT. TBT 14 < DOIT-ON LE DECREMENTER ??? JNC INC2 < NON. DC KPOINT < ON RETIRE LE POINT M(X,Y) DU < COMPTE DE VOISINS. INC2: EQU $ SWBR B,B STB SEG < OCTET0(SEG)=PEN 'UP'/'DOWN'. < < CALCUL DE : M12=(M11/DM11)*M12+M21 < LA M12 MP M11 DV DM11 AD M21 STA M12 < < CALCUL DE : ((M22/DM22)*M12+DM21+KPOINT)MODULO 8 < MP M22 DV DM22 AD DM21 AD KPOINT ANDI '07 < ET CALCUL MODULO 8. LR A,X < X=FONCTION DU NBRE DE VOISINS. LBY &ALINCR < LA DIRECTION DE DEPLACEMENT < INCREMENTAL EST FONCTION DE (X). OR SEG < CONCATENATION AVEC LE PEN < 'UP'/'DOWN'. STA SEG < OCTET0(SEG)=PEN 'UP'/'DOWN' , < OCTET1(SEG)=DIRECTION INCR. < < NOTA : < POUR NE RIEN FAIRE D'ALEATOIRE , ON < PRENDRA : < M22=0 , < DM22=1 , < DM21=LE 'MODULO'. < BR AINC3 < VERS L'ECRITURE INCREMENTALE ... < < < M A T R I C E S D E P E R M U T A T I O N S < D E S B I T S D E X E T Y : < < PERX: EQU $ PERY: EQU $+16 IF VTVG,X100,,X100 < < NOTA : < CES 2 MATRICES SONT EN < RECOUVREMENT DE LA ROUTINE < D'EMISSION DU SON , MAIS CELA < N'EST PAS DANGEREUX , CAR LORSQU'ON < DEFINIT CES 2 MATRICES , ON SAIT DEJA < QU'AUCUN SON NE SERA EMIS ... < X100: VAL 0 IF VTVG,X100,,X100 PAGE < < < C O N V E R S I O N S O N : < < < FONCTION : < CETTE ROUTINE MAITRE PERMET DE SORTIR < DIRECTEMENT SUR CU1 DES INFOS SUR < UN CONVERTISSEUR DIGITAL-ANALOGIQUE ; < L'IMAGE VIDEO EST ASSIMILE A UNE < REPRESENTATION BI-DIMENSIONNELLE < DU SON ; L'AXE DES X EST L'AXE DES < TEMPS (FREQUENCE D'ECHANTILLONAGE) , < ET L'AXE DES Y (DESCENDANT) , CELUI < DES AMPLITUDES ... < < < ARGUMENT : < W=@DCT-ESCLAVE. < < LOCAL LOC1: EQU $ NLIG2: WORD 1024/DY < NBRE DE LIGNES PAR ECRAN. CU1: WORD WCUS < ECRITURE SUR LE CU SON. IMAG1: WORD IMAG < @TRANSLATABLE DE L'IMAGE. PROG WORD LOC1+'80 SP: EQU $ LRP L LA -1,L < A=@RELATIVE DU LOCAL. AD 10,W < ABSOLUTISATION AVEC SLO. LR A,L < L=@ABSOLUE DU LOCAL. < < CONVERSION IMAGE ENTIERE : < LA IMAG1 < A=@RELATIVE DE L'IMAGE. AD 10,W < ABSOLUTISATION AVEC LE SLO. LR A,C < C=@ABSOLUE DE L'IMAGE (RESIDENTE) LBI CNMPL < B=NBRE DE COLONNES DE 16 POINTS < CONTENUES DANS L'IMAGE. < < CONVERSION D'UNE COLONNE DE 16 BITS : < SP2: EQU $ LXI 0 < X=INDEX DU BIT DANS LA COLONNE. < < CONVERSION D'UNE COLONNE DE 1 BIT : < SP1: EQU $ LY NLIG2 < Y=INDEX DE LA DERNIERE LIGNE+1. PSR C < SAVE LA BASE C DE LA COLONNE < DE 16 BITS COURANTE. SP4: EQU $ LA 0,C < ACCES AU MOT COURANT DE LA < COLONNE DE RANG 16-(B). TBT 0,X < TEST DU BIT COURANT (X). JNC SP5 < BIT=0 : RIEN A FAIRE. NGR Y,A < BIT=1 : A RECOIT -LE NUMERO DE < LA LIGNE CONCERNEE , CE QUI < DONNE L'AMPLITUDE DU SIGNAL. SIO CU1 < SORTIE DIRECTE SUR LE CU1. SP5: EQU $ ADRI CNMPL,C < PASSAGE A LA LIGNE SUIVANTE. ADRI -1,Y < DECOMPTE DES LIGNES. CPZR Y < LA COLONNE DE BITS COURANTE < EST-ELLE EXPLOREE ??? JG SP4 < NON , ON CONTINUE. PLR C < OUI , ON RESTAURE LA BASE DE < CELLE-CI. ADRI 1,X < PASSAGE A LA COLONNE DE BITS < SUIVANTE. LAI 'F < MASQUE DE 4 BITS. ANDR X,A < CALCUL DE (X) MODULO 16. JANE SP1 < IL RESTE ENCORE AU MOINS UNE < COLONNE DE BITS DANS LA < COLONNE DE MOTS COURANTE. ADRI 1,C < SINON , ON PASSE A LA < COLONNE DE MOTS SUIVANTE. ADRI -1,B < ET ON DECOMPTE CELLES-CI ... CPZR B < EST-CE FINI POUR L'IMAGE ??? JG SP2 < NON , ON CONTINUE ... RSR < SI OUI , ON S'EN RETOURNE ... X100: VAL 0 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#