NMPROC:  VAL         "VA"            < NOM DU PROCESSEUR.
         IDP         "VA - RELEASE 01/06/1979"
         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         $
<
< LISTE DES CARACTERES DE REPRESENTATION DE COMPTAGE :
<
MCAR2:   BYTE        35;'6D
         ASCI        "#VOISINS"
         BYTE        "=";'6D
         ASCI        "0123456789"
         BYTE        " ";'6D
LCAR2:   EQU         $
         ASCI        " ."            < 0 1 VOISINS,
         ASCI        ":-"            < 2 3 VOISINS,
         ASCI        "+="            < 4 5 VOISINS,
         ASCI        "H*"            < 6 7 VOISINS,
         BYTE        "$";'40         < 8 9 VOISINS.
LLCAR2:  VAL         $-LCAR2*2
         BYTE        " ";'6D
         IF          LLCAR2-10,,X100,
         IF          ERREUR D'ASSEMBLAGE VOLONTAIRE !!!
X100:    VAL         0
<
< 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).
SEG:     WORD        0;0             < POUR (TY,TX) DE POSITIONNEMENT.
Y:       VAL         0
X:       VAL         1
MNOM:    BYTE        5;'6D
         ASCI        "NOM>"
MINT:    BYTE        2;'6D;">";0
REP:     WORD        0               < REPONSE DE REDUCTION.
         WORD        0               < POUR LES ENTREES DE SEUILS.
AMRED:   WORD        MRED
AMPAS:   WORD        MPAS
AMEFFA:  WORD        MEFFAC
AMCOPY:  WORD        MCOPY
AMTR:    WORD        MTR
AMMAT:   WORD        MMAT-1,X
MDEL:    BYTE        7;'6D
         ASCI        "DX/DY="
AMPERX:  WORD        MPERX
AMPERY:  WORD        MPERY
AP:      WORD        MF              < MESSAGES DE PERMUTATION BITS X/Y.
MERR:    BYTE        3;'6D;"?";"?"
MCAR:    WORD        0               < CARACTERE DE MATERIALISATION
                                     < D'UN POINT VIDEO.
<
< 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.
DEMCAR:  WORD        '0B02           < EMISSION DU CARACTERE
         WORD        MCAR-ZERO*2     < REPRESENTATIF D'UN POINT
         WORD        1               < VIDEO.
CAR2I:   WORD        '0101           < ENTREE DE LCAR2.
         WORD        LCAR2-ZERO*2
         WORD        LLCAR2
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        4
COPY:    WORD        '0B07           < ECRITURE DIRECTE HARD-COPY.
         BYTE        '1B;'17;'8D;'04 < ESC,CTRL-W,R/C.
DEMMEM:  WORD        '0004           < DEMANDE D'ALLOCATION 8K MOTS.
         WORD        0
         WORD        '4000
RELMEM:  WORD        '0004           < DEMANDE DE RETOUR A 4K MOTS.
         WORD        0
         WORD        '2000
DEMCCI:  WORD        '0001           < DEMANDE DE RETOUR AU CCI.
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'.
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
APRINT:  WORD        PRINT           < EDITION D'UN MESSAGE.
ARCOPY:  WORD        RCOPY           < ROUTINE DE HARD-COPY EVENTUEL
                                     < ET TEMPORISATION ASSOCIEE.
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.
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.
ASEG:    WORD        SEG             < RELAI VERS LA LISTE DES
                                     < COORDONNEES Y,X DU POINT
                                     < COURANT.
ALCAR1:  WORD        LCAR1,X
ALCAR2:  WORD        LCAR2,X
LOCAR1:  WORD        LLCAR1          < LONGUEUR DE LCAR1.
                                     < CARACTERES DE REPRESENTA-
                                     < TION DES POINTS VIDEO.
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)
AMESS:   WORD        0               < SAVE L'ADRESSE DU MESSAGE A
                                     < L'ENTREE DE GETS EN VUE DES
                                     < ERREURS DE SYNTAXE ...
<
< CONSTANTE D'UN ITEM 'TEXTE' :
<
AITEM1:  WORD        ITEM1+LTN,X     < ACCES AU CONTENU DE ITEM1.
XITEM1:  WORD        0               < INDEX COURANT DE ITEM1.
KITEM1:  WORD        0               < CARACTERE D'ARRET D'EXPLORATION
                                     < DE L'ITEM (OCTET0 DE ITEM1).
TITEM1:  WORD        SI1+IINDIC      < ACCES AU TYPE DE L'ITEM1
                                     < DANS LA ZONE DE SAUVE-
                                     < GARDE DE SON EN-TETE.
NCP:     WORD        NBCAR*NBLIG     < NBRE DE CARACTERES/PAGE.
<
< 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.
         IF          ORDI-"T",XWOR%,,XWOR%
ACNSYS:  ASCI        ":SYS"
XWOR%:   VAL         0
IMOD:    WORD        0               < MODE DE REPRODUCTION :
                                     < -1 : A L'AIDE DE ITEM1,
                                     < 0  : PAR CONFIGURATION,
                                     < 1  : PAR COMPTAGE.
REDUC:   WORD        0               < FACTEUR DE REDUCTION=0/-1/-2.
KPOINT:  WORD        0               < COMPTEUR DES POINTS VOISINS DU
                                     < POINT COURANT RENCONTRES DANS
                                     < LES DIRECTIONS CARDINALES.
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.
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.
PATER:   WORD        0               < MOT CONTENANT LA CONFIGU-
                                     < RATION DES VOISINS D'UN
                                     < POINT COURANT.
<
< 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.
<
< 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) :
<
MMOD:    BYTE        45;'6D
         ASCI        "MODE (0=TEXTE, 1=CONFIGURATION, 2=COMPTAGE)="
MCHG:    BYTE        6;'6D
         ASCI        "CHGT? "
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
MPAS:    BYTE        9;'6D
         ASCI        "PAS L/C="
MRED:    BYTE        7;'6D
         ASCI        "REDUC="
MPERX:   BYTE        4;'6D
         ASCI        "PX? "
MPERY:   BYTE        4;'6D
         ASCI        "PY? "
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.
< LISTE DES CARACTERES DE REPRESENTATION :
<
LCAR1:   EQU         $
         ASCI        " ."            < 000 000 000   000 000 001
         ASCI        ".-"            < 000 000 010   000 000 011
         ASCI        ".-"            < 000 000 100   000 000 101
         ASCI        "--"            < 000 000 110   000 000 111
         ASCI        ".:"            < 000 001 000   000 001 001
         ASCI        ",;"            < 000 001 010   000 001 011
         ASCI        ";;"            < 000 001 100   000 001 101
         ASCI        "--"            < 000 001 110   000 001 111
         ASCI        ".:"            < 000 010 000   000 010 001
         ASCI        ":;"            < 000 010 010   000 010 011
         ASCI        ";+"            < 000 010 100   000 010 101
         ASCI        ";+"            < 000 010 110   000 010 111
         ASCI        "-+"            < 000 011 000   000 011 001
         ASCI        "++"            < 000 011 010   000 011 011
         ASCI        "++"            < 000 011 100   000 011 101
         ASCI        "++"            < 000 011 110   000 011 111
         ASCI        ".:"            < 000 100 000   000 100 001
         ASCI        ":;"            < 000 100 010   000 100 011
         ASCI        ":;"            < 000 100 100   000 100 101
         ASCI        "++"            < 000 100 110   000 100 111
         ASCI        ".-"            < 000 101 000   000 101 001
         ASCI        "++"            < 000 101 010   000 101 011
         ASCI        "+="            < 000 101 100   000 101 101
         ASCI        "=="            < 000 101 110   000 101 111
         ASCI        "-;"            < 000 110 000   000 110 001
         ASCI        ";="            < 000 110 010   000 110 011
         ASCI        "=="            < 000 110 100   000 110 101
         ASCI        "=="            < 000 110 110   000 110 111
         ASCI        "-="            < 000 111 000   000 111 001
         ASCI        "+="            < 000 111 010   000 111 011
         ASCI        "+="            < 000 111 100   000 111 101
         ASCI        "=="            < 000 111 110   000 111 111
         ASCI        ".:"            < 001 000 000   001 000 001
         ASCI        ":;"            < 001 000 010   001 000 011
         ASCI        ";+"            < 001 000 100   001 000 101
         ASCI        "++"            < 001 000 110   001 000 111
         ASCI        ":)"            < 001 001 000   001 001 001
         ASCI        "))"            < 001 001 010   001 001 011
         ASCI        "/)"            < 001 001 100   001 001 101
         ASCI        "//"            < 001 001 110   001 001 111
         ASCI        ":/"            < 001 010 000   001 010 001
         ASCI        "//"            < 001 010 010   001 010 011
         ASCI        "//"            < 001 010 100   001 010 101
         ASCI        "//"            < 001 010 110   001 010 111
         ASCI        "++"            < 001 011 000   001 011 001
         ASCI        "!!"            < 001 011 010   001 011 011
         ASCI        "//"            < 001 011 100   001 011 101
         ASCI        "/<"            < 001 011 110   001 011 111
         ASCI        ";<"            < 001 100 000   001 100 001
         ASCI        "<<"            < 001 100 010   001 100 011
         ASCI        "/<"            < 001 100 100   001 100 101
         ASCI        "/<"            < 001 100 110   001 100 111
         ASCI        "++"            < 001 101 000   001 101 001
         ASCI        "++"            < 001 101 010   001 101 011
         ASCI        "++"            < 001 101 100   001 101 101
         ASCI        "//"            < 001 101 110   001 101 111
         ASCI        "=+"            < 001 110 000   001 110 001
         ASCI        "++"            < 001 110 010   001 110 011
         ASCI        "+<"            < 001 110 100   001 110 101
         ASCI        "<<"            < 001 110 110   001 110 111
         ASCI        "+<"            < 001 111 000   001 111 001
         ASCI        "+<"            < 001 111 010   001 111 011
         ASCI        "/<"            < 001 111 100   001 111 101
         ASCI        "<<"            < 001 111 110   001 111 111
         ASCI        ".:"            < 010 000 000   010 000 001
         ASCI        ":;"            < 010 000 010   010 000 011
         ASCI        ":;"            < 010 000 100   010 000 101
         ASCI        ";+"            < 010 000 110   010 000 111
         ASCI        ":;"            < 010 001 000   010 001 001
         ASCI        ";;"            < 010 001 010   010 001 011
         ASCI        ">>"            < 010 001 100   010 001 101
         ASCI        ">>"            < 010 001 110   010 001 111
         ASCI        ":;"            < 010 010 000   010 010 001
         ASCI        "!!"            < 010 010 010   010 010 011
         ASCI        "!!"            < 010 010 100   010 010 101
         ASCI        "))"            < 010 010 110   010 010 111
         ASCI        "++"            < 010 011 000   010 011 001
         ASCI        "++"            < 010 011 010   010 011 011
         ASCI        "))"            < 010 011 100   010 011 101
         ASCI        ">>"            < 010 011 110   010 011 111
         ASCI        ":;"            < 010 100 000   010 100 001
         ASCI        "<<"            < 010 100 010   010 100 011
         ASCI        "(("            < 010 100 100   010 100 101
         ASCI        "(<"            < 010 100 110   010 100 111
         ASCI        "++"            < 010 101 000   010 101 001
         ASCI        "++"            < 010 101 010   010 101 011
         ASCI        "++"            < 010 101 100   010 101 101
         ASCI        "++"            < 010 101 110   010 101 111
         ASCI        "++"            < 010 110 000   010 110 001
         ASCI        "++"            < 010 110 010   010 110 011
         ASCI        "(<"            < 010 110 100   010 110 101
         ASCI        "<<"            < 010 110 110   010 110 111
         ASCI        "+<"            < 010 111 000   010 111 001
         ASCI        "++"            < 010 111 010   010 111 011
         ASCI        "<<"            < 010 111 100   010 111 101
         ASCI        "<<"            < 010 111 110   010 111 111
         ASCI        "-+"            < 011 000 000   011 000 001
         ASCI        ";;"            < 011 000 010   011 000 011
         ASCI        ";+"            < 011 000 100   011 000 101
         ASCI        "//"            < 011 000 110   011 000 111
         ASCI        "=="            < 011 001 000   011 001 001
         ASCI        "++"            < 011 001 010   011 001 011
         ASCI        "++"            < 011 001 100   011 001 101
         ASCI        ">>"            < 011 001 110   011 001 111
         ASCI        "+?"            < 011 010 000   011 010 001
         ASCI        "??"            < 011 010 010   011 010 011
         ASCI        ">?"            < 011 010 100   011 010 101
         ASCI        ">>"            < 011 010 110   011 010 111
         ASCI        "=<"            < 011 011 000   011 011 001
         ASCI        "))"            < 011 011 010   011 011 011
         ASCI        ">>"            < 011 011 100   011 011 101
         ASCI        "//"            < 011 011 110   011 011 111
         ASCI        "/<"            < 011 100 000   011 100 001
         ASCI        "+<"            < 011 100 010   011 100 011
         ASCI        "<<"            < 011 100 100   011 100 101
         ASCI        "<<"            < 011 100 110   011 100 111
         ASCI        "=?"            < 011 101 000   011 101 001
         ASCI        "++"            < 011 101 010   011 101 011
         ASCI        "<<"            < 011 101 100   011 101 101
         ASCI        "ZZ"            < 011 101 110   011 101 111
         ASCI        "=?"            < 011 110 000   011 110 001
         ASCI        "<<"            < 011 110 010   011 110 011
         ASCI        "<<"            < 011 110 100   011 110 101
         ASCI        "&&"            < 011 110 110   011 110 111
         ASCI        "=?"            < 011 111 000   011 111 001
         ASCI        "??"            < 011 111 010   011 111 011
         ASCI        "??"            < 011 111 100   011 111 101
         ASCI        "ZZ"            < 011 111 110   011 111 111
         ASCI        ".:"            < 100 000 000   100 000 001
         ASCI        ":;"            < 100 000 010   100 000 011
         ASCI        ":;"            < 100 000 100   100 000 101
         ASCI        "\\"            < 100 000 110   100 000 111
         ASCI        "-\"            < 100 001 000   100 001 001
         ASCI        ">>"            < 100 001 010   100 001 011
         ASCI        ">>"            < 100 001 100   100 001 101
         ASCI        ">>"            < 100 001 110   100 001 111
         ASCI        "=\"            < 100 010 000   100 010 001
         ASCI        "\\"            < 100 010 010   100 010 011
         ASCI        ">>"            < 100 010 100   100 010 101
         ASCI        "LL"            < 100 010 110   100 010 111
         ASCI        "=\"            < 100 011 000   100 011 001
         ASCI        "\\"            < 100 011 010   100 011 011
         ASCI        "!L"            < 100 011 100   100 011 101
         ASCI        "LL"            < 100 011 110   100 011 111
         ASCI        ":\"            < 100 100 000   100 100 001
         ASCI        "\\"            < 100 100 010   100 100 011
         ASCI        "!L"            < 100 100 100   100 100 101
         ASCI        "LL"            < 100 100 110   100 100 111
         ASCI        "=\"            < 100 101 000   100 101 001
         ASCI        "\\"            < 100 101 010   100 101 011
         ASCI        ">>"            < 100 101 100   100 101 101
         ASCI        "44"            < 100 101 110   100 101 111
         ASCI        "=\"            < 100 110 000   100 110 001
         ASCI        "\\"            < 100 110 010   100 110 011
         ASCI        "!L"            < 100 110 100   100 110 101
         ASCI        "LL"            < 100 110 110   100 110 111
         ASCI        "=\"            < 100 111 000   100 111 001
         ASCI        "**"            < 100 111 010   100 111 011
         ASCI        ">>"            < 100 111 100   100 111 101
         ASCI        ">L"            < 100 111 110   100 111 111
         ASCI        "-\"            < 101 000 000   101 000 001
         ASCI        "++"            < 101 000 010   101 000 011
         ASCI        "??"            < 101 000 100   101 000 101
         ASCI        "22"            < 101 000 110   101 000 111
         ASCI        "=?"            < 101 001 000   101 001 001
         ASCI        "77"            < 101 001 010   101 001 011
         ASCI        "72"            < 101 001 100   101 001 101
         ASCI        "22"            < 101 001 110   101 001 111
         ASCI        "+?"            < 101 010 000   101 010 001
         ASCI        "??"            < 101 010 010   101 010 011
         ASCI        ">>"            < 101 010 100   101 010 101
         ASCI        "FE"            < 101 010 110   101 010 111
         ASCI        "??"            < 101 011 000   101 011 001
         ASCI        "22"            < 101 011 010   101 011 011
         ASCI        "FE"            < 101 011 100   101 011 101
         ASCI        "EE"            < 101 011 110   101 011 111
         ASCI        "=?"            < 101 100 000   101 100 001
         ASCI        "??"            < 101 100 010   101 100 011
         ASCI        "FE"            < 101 100 100   101 100 101
         ASCI        "EE"            < 101 100 110   101 100 111
         ASCI        "=?"            < 101 101 000   101 101 001
         ASCI        "YY"            < 101 101 010   101 101 011
         ASCI        "YH"            < 101 101 100   101 101 101
         ASCI        "YU"            < 101 101 110   101 101 111
         ASCI        "=\"            < 101 110 000   101 110 001
         ASCI        "TT"            < 101 110 010   101 110 011
         ASCI        "FE"            < 101 110 100   101 110 101
         ASCI        "EE"            < 101 110 110   101 110 111
         ASCI        "=?"            < 101 111 000   101 111 001
         ASCI        "YY"            < 101 111 010   101 111 011
         ASCI        "FE"            < 101 111 100   101 111 101
         ASCI        "EE"            < 101 111 110   101 111 111
         ASCI        "-\"            < 110 000 000   110 000 001
         ASCI        "=\"            < 110 000 010   110 000 011
         ASCI        "!\"            < 110 000 100   110 000 101
         ASCI        "=="            < 110 000 110   110 000 111
         ASCI        "=\"            < 110 001 000   110 001 001
         ASCI        "??"            < 110 001 010   110 001 011
         ASCI        "FE"            < 110 001 100   110 001 101
         ASCI        "EE"            < 110 001 110   110 001 111
         ASCI        "=\"            < 110 010 000   110 010 001
         ASCI        "TT"            < 110 010 010   110 010 011
         ASCI        "FE"            < 110 010 100   110 010 101
         ASCI        "FE"            < 110 010 110   110 010 111
         ASCI        "=\"            < 110 011 000   110 011 001
         ASCI        "TZ"            < 110 011 010   110 011 011
         ASCI        "FE"            < 110 011 100   110 011 101
         ASCI        "EE"            < 110 011 110   110 011 111
         ASCI        "=\"            < 110 100 000   110 100 001
         ASCI        "TZ"            < 110 100 010   110 100 011
         ASCI        "!L"            < 110 100 100   110 100 101
         ASCI        "LL"            < 110 100 110   110 100 111
         ASCI        "=?"            < 110 101 000   110 101 001
         ASCI        "YY"            < 110 101 010   110 101 011
         ASCI        "FE"            < 110 101 100   110 101 101
         ASCI        "EE"            < 110 101 110   110 101 111
         ASCI        "=\"            < 110 110 000   110 110 001
         ASCI        "KK"            < 110 110 010   110 110 011
         ASCI        "FE"            < 110 110 100   110 110 101
         ASCI        "$$"            < 110 110 110   110 110 111
         ASCI        "=H"            < 110 111 000   110 111 001
         ASCI        "YH"            < 110 111 010   110 111 011
         ASCI        "FE"            < 110 111 100   110 111 101
         ASCI        "EE"            < 110 111 110   110 111 111
         ASCI        "-?"            < 111 000 000   111 000 001
         ASCI        "=?"            < 111 000 010   111 000 011
         ASCI        "TC"            < 111 000 100   111 000 101
         ASCI        "TC"            < 111 000 110   111 000 111
         ASCI        "=\"            < 111 001 000   111 001 001
         ASCI        "22"            < 111 001 010   111 001 011
         ASCI        "22"            < 111 001 100   111 001 101
         ASCI        "22"            < 111 001 110   111 001 111
         ASCI        "TT"            < 111 010 000   111 010 001
         ASCI        "TT"            < 111 010 010   111 010 011
         ASCI        "TE"            < 111 010 100   111 010 101
         ASCI        "TE"            < 111 010 110   111 010 111
         ASCI        "TT"            < 111 011 000   111 011 001
         ASCI        "PP"            < 111 011 010   111 011 011
         ASCI        "TE"            < 111 011 100   111 011 101
         ASCI        "MM"            < 111 011 110   111 011 111
         ASCI        "=?"            < 111 100 000   111 100 001
         ASCI        "TT"            < 111 100 010   111 100 011
         ASCI        "FE"            < 111 100 100   111 100 101
         ASCI        "EE"            < 111 100 110   111 100 111
         BYTE        "=";'25         < 111 101 000   111 101 001
         ASCI        "MM"            < 111 101 010   111 101 011
         ASCI        "MM"            < 111 101 100   111 101 101
         ASCI        "MM"            < 111 101 110   111 101 111
         BYTE        '25;'25         < 111 110 000   111 110 001
         ASCI        "PP"            < 111 110 010   111 110 011
         ASCI        "FE"            < 111 110 100   111 110 101
         ASCI        "EE"            < 111 110 110   111 110 111
         ASCI        "##"            < 111 111 000   111 111 001
         BYTE        "#";'40         < 111 111 010   111 111 011
         ASCI        "#$"            < 111 111 100   111 111 101
         BYTE        '40;'40         < 111 111 110   111 111 111
XLCAR1:  VAL         $-LCAR1*2
LLCAR1:  EQU         ZERO+XLCAR1
         PROG
         PAGE
         IF          ORDI-"T",XWOR%,,XWOR%
TIMAG:   WORD        IMAG            < @RELATIVE IMAGE VIDEO.
         EOT         #SIP SP3#
XWOR%:   VAL         0
         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
         JMP         TRAXY
DECX:    EQU         $
         XR          A,X
         SB          DELX            < X<--(X)-(DELX).
         XR          A,X
         JMP         TRAXY
INCY:    EQU         $
         XR          A,Y
         AD          DELY            < Y<--(Y)+(DELY).
         XR          A,Y
         JMP         TRAXY
DECY:    EQU         $
         XR          A,Y
         SB          DELY            < Y<--(Y)-(DELY).
         XR          A,Y
TRAXY:   EQU         $
         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 ...
         LAI         SEG-ZERO
         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 Y.
         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 X.
         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.
<                    B=NUMERO DU VOISIN TESTE (11 ETANT
<                      LE POINT COURANT) :
<                                    07 08 09
<                                    10 11 12
<                                    13 14 15
<
<
<        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
         JNC         NXIST           < LE POINT EST A 0...
         XR          B,X             < X=NUMERO DU VOISIN TESTE.
         LA          PATER           < ACCES A LA CONFIGURATION
                                     < COURANTE.
         SBT         0,X             < MARQUAGE DU VOISIN A 1.
         STA         PATER           < MAJ CONFIGURATION COURANTE.
         XR          B,X             < RESTAURE B ET X.
NXIST:   EQU         $
         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
         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
         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
<
<
<        R E P R O D U C T I O N   D ' U N E   I M A G E   V I D E O
<        A   L ' A I D E   D E   C A R A C T E R E S
<                    A L P H A N U M E R I Q U E S  :
<
<
<        FONCTION :
<                      LE PROCESSEUR 'VA' PERMET DE REPRODUIRE
<                    UNE IMAGE VIDEO A L'AIDE DE CARACTERES
<                    ALPHA-NUMERIQUES SUIVANT 3 MODES :
<                    0 : L'ITEM1 DOIT ALORS CONTENIR UN TEXTE
<                        TERMINE PAR UN CARACTERE DE FIN
<                        PRECISE DANS LE 1ER CARACTERE;
<                        LA REPRODUCTION SE FAIT ALORS
<                        SEQUENTIELLEMENT A L'AIDE DU TEXTE.
<                    1 : CHAQUE POINT EST MATERIALISE
<                        PAR UN CARACTERE FONCTION DE LA
<                        CONFIGUARTION DES 9 VOISINS
<                        <Y COMPRIS LE POINT COURANT).
<                    2 : IDEM A 1, MAIS FONCTION DU
<                        NOMBRE DE VOISINS (IDEM).
<
<
         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          ORDI-"T",XWOR%,,XWOR%
<
< 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.
         STZ         ASP3            < PAS DE STABILISATION DE L'IMAGE.
E3201:   EQU         $               < CAS OU L'ON EST SOUS :SYS.
XWOR%:   VAL         0
<
< 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         $
         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
<
<
<        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         $
<
< 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.
<
< CHOIX DU MODE DE REPRODUCTION :
<
MOD1:    EQU         $
         LAD         MMOD
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMREP
         SVC         0               < ENTREE DU MODE DEMANDE (0, 1, 2).
         LBY         REP             < A=MODE.
         ADRI        -'30,A          < CONVERSION BINAIRE.
         JAL         MOD1            < ERREUR.
         CPI         2
         JG          MOD1            < ERREUR.
         ADRI        -1,A            < A=-1/0/+1.
         STA         IMOD            < SAVE LE MODE DEMANDE.
<
< INITIALISATIONS SPECIFIQUES :
<
         JAE         MOD2            < CAS CONFIGURATION.
         JAGE        MOD3            < CAS COMPTAGE.
<
< -1 : CAS DES TEXTES :
<
         LBY         &TITEM1         < ACCES AU TYPE DE ITEM1.
         CPI         "T"             < EST-CE TYPE 'TEXTE' ???
         JNE         MOD1            < NON, TEXTE REFUSE...
         LXI         0               < INDEX DU 1ER CARACTERE.
         LBY         &AITEM1         < ACCES AU 1ER CARACTERE, QUI
         STA         KITEM1          < EST LE CARACTERE D'ARRET.
         JMP         MOD4            < ET C'EST TOUT.
<
< +1 : CAS DU COMPTAGE :
<
MOD3:    EQU         $
         LAD         MCHG
         BSR         ACARD           < FAUT-IL CHANGER LES CODES ???
         JNE         MOD4            < NON, C'EST TOUT...
         LAD         MCAR2           < OUI, ON ENVOIE AU PREALABLE
         BSR         APRINT          < LES CODES INITIAUX.
         LAD         CAR2I
         SVC         0               < PUI, ON ENTRE LES NOUVEAUX.
         JMP         MOD4            < ET C'EST TOUT...
<
< 0 : CAS DES CONFIGURATIONS :
<
MOD2:    EQU         $
<
< FAUT-IL EFFACER L'ECRAN DE LA VISU DE RECEPPTION :
<
MOD4:    EQU         $
         LA          AMEFFA
         BSR         ACARD           < B=0 S'IL FAUT EFFACER L'ECRAN.
<
< CHOIX VISU D'EMISSION :
<
E1200:   EQU         $
         LAD         OG
         SVC         0               < TENTATIVE D'OPEN GRAPHIQUE.
         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        COPY            < MAJ DE COPY.
         STBY        DEMCAR          < MAJ DE DEMCAR.
         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 ...
<
<        C O N V E R S I O N   V I D E O-
<        G R A P H I Q U E  :
<
         LXI         0               < INDEX DE BALAYAGE VERTICAL (Y).
<
< BOUCLE DE BALYAGE VERTICAL (Y) :
<
E1001:   EQU         $
         LR          X,Y             < Y=COORDONNEE Y DE BALYAGE.
         PSR         X               < SAVE LA COORDONEE Y (X !!!).
         LXI         0               < INDEX DE BALAYAGE HORIZONTAL (X).
<
< BOUCLE DE BALYAGE HORIZONTAL (X) :
<
E1002:   EQU         $
         PSR         X,Y             < SAVE LES COORDONNES X ET Y
                                     < DU POINT COURANT.
         STZ         KPOINT          < RAZ DU NBRE DE VOISIN DE (X,Y).
         STZ         PATER           < RAZ DE LA CONFIGURATION.
         CPZ         IMOD            < TEST DU MODE CHOISI :
         JGE         MOD20           < CAS COMPTAGE/CONFIGURATION.
<
< INSERTION D'UN TEXTE :
<
         LBI         11              < X,Y (POINT COURANT).
         BSR         AEXIST
         JANE        FIN2            < LE POINT COURANT N'EXISTE PAS,
                                     < DONC RIEN A FAIRE....
         PSR         X               < S'IL EXISTE ON SAVE SON X;
                                     < (SON Y EST BON).
         JMP         MOD8            < VERS L'EDITION...
<
< CAS DES COMPTAGES/CONFIGURATIONS :
<
MOD20:   EQU         $
         BSR         ADECX
         BSR         ADECY
         LBI         7               < X-DX,Y-DY.
         BSR         AEXIST
         BSR         AINCX
         LBI         8               < X,Y-DY.
         BSR         AEXIST
         BSR         AINCX
         LBI         9               < X+DX,Y-DY.
         BSR         AEXIST
         BSR         AINCY
         LBI         12              < X+DX,Y.
         BSR         AEXIST
         BSR         ADECX
         LBI         11              < X,Y (POINT COURANT).
         PSR         X               < SAVE LE POINT
         PSR         Y               < COURANT.
         BSR         AEXIST
         BSR         ADECX
         LBI         10              < X-DX,Y.
         BSR         AEXIST
         BSR         AINCY
         LBI         13              < X-DX,Y+DY.
         BSR         AEXIST
         BSR         AINCX
         LBI         14              < X,Y+DY.
         BSR         AEXIST
         BSR         AINCX
         LBI         15              < X+DX,Y+DY.
         BSR         AEXIST
         PLR         Y               < RESTAURE Y(POINT COURANT).
<
< CHOIX DU CARACTERE DE REPRESENTATION :
<
MOD5:    EQU         $
         CPZ         IMOD            < DISCRIMINATION...
         JG          MOD6            < CAS DU COMPTAGE.
         JE          MOD7            < CAS DES CONFIGURATIONS.
         WORD        '1E16           < E R R E U R   P R O G !!!
<
< CAS DES TEXTES :
<
MOD8:    EQU         $
         IC          XITEM1          < PROGRESSION INDEX ITEM1.
         LA          XITEM1
         CP          NCP             < VALIDATION DE XITEM1.
         JL          MOD9            < OK...
MOD10:   EQU         $
         STZ         XITEM1          < REINITIALISATION DE XITEM1.
         JMP         MOD8            < ET ON RECOMMENCE...
MOD9:    EQU         $
         LR          A,X             < X=INDEX COURANT ITEM1.
         LBY         &AITEM1         < A=CARACTERE COURANT.
         CP          KITEM1          < EST-CE LE CARACTERE DE FIN ???
         JNE         MOD11           < NON, VERS L'EDITION.
         ADRI        -1,X            < OUI, A-T'ON DEJA EDITE ???
         CPZR        X
         JNE         MOD10           < OUI, ON REINITIALISE XITEM1.
         DC          XITEM1          < NON, C'EST DONC KITEM1
                                     < QUE L'ON VA EDITER...
         JMP         MOD11           < VERS L'EDITION.
<
< CAS DES CONFIGURATIONS :
<
MOD7:    EQU         $
         LA          PATER           < A=CONNFIGUARTION DES VOISINS.
         CP          LOCAR1          < VALIDATION...
         JL          MOD12           < OK..
         WORD        '1E16           < E R R E U R   P R O G  !!!!
MOD12:   EQU         $
         LR          A,X
         LBY         &ALCAR1         < A=CARACTERE CHOISI.
         JMP         MOD11           < VERS L'EDITION.
<
< CAS DU COMPTAGE :
<
MOD6:    EQU         $
         LA          KPOINT          < A=NBRE DE VOISINS.
         CPI         LLCAR2          < VALIDATION...
         JL          MOD13           < OK...
         WORD        '1E16           < E R R E U R   P R O G !!!
MOD13:   EQU         $
         LR          A,X
         LBY         &ALCAR2         < A=CARACTERE CHOISI.
<
< EDITION :
<
MOD11:   EQU         $
         CPI         " "
         JLE         FIN1            < LES CARACTERES 'SPACE' ET
                                     < CTRL-XXX N'ONT PAS BESOIN
                                     < D'ETRE EDITES...
         STBY        MCAR            < RANGEMENT DU CARACTERE.
<
< MISE DES COORDONNEES AU FORMAT GRAPHIQUE :
<
         LX          REDUC           < X=FACTEUR DE REDUCTION.
         LR          Y,A             < A=COORDONNEE Y.
         SB          NLIG
         NGR         A,A
         SLLS        DEDY,X
         STA         SEG+Y
         PLR         A               < A=COORDONNEE X.
         SLLS        DEDX,X
         STA         SEG+X
         LXI         1               < 1 COUPLE (X,Y) A TRANSFORMER.
         BSR         ATRF
         LAD         OG
         SVC         0               < OPEN GRAPHIQUE.
         LAD         WG
         SVC         0               < POSITIONNEMENT EN X,Y.
         LAD         CG
         SVC         0               < CLOSE GRAPHIQUE.
         LAD         DEMCAR
         SVC         0               < EDITION DU CARACTERE CHOISI.
FIN2:    EQU         $
<
< 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.
         ADR         X,A             < BALAYGE HORIZONTAL.
         CP          NPOINT          < EST-CE FINI ???
         JG          E6000           < OUI, CHANGEMENT DE LIGNE.
         LR          A,X
         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.
         ADR         X,A             < BALAYAGE VERTICAL.
         CP          NLIG            < EST-CE FINI ???
         JG          FIN             < ET OUI...
         LR          A,X
         BR          AE1001          < ET NON , ON CONTINUE A BALAYER.
FIN:     EQU         $
         BSR         ARCOPY          < HARD-COPIES ET TEMPORISATION ???
         BR          AGOGE           < ET C'EST FINI ...
FIN1:    EQU         $
         ADRI        -1,K            < IL RESTE EN EFFET UN
         JMP         FIN2            < REGISTRE X EMPILE.
<
<
<        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
         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#



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.