PAGE
         IDP         "RV - JOHN F. COLONNA 20/09/1979"
<
<
<        P R O C E S S E U R   D E   P A R C O U R S
<        D E S   R E G I S T R E S   C O U L E U R  :
<
<
NMPROC:: VAL         "RV"
         EOT         #SIP DEFINITION ITEM#
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP IMAGE 256#
         EOT         #SIP DEF PROCESSEUR#
         WORD        PRV             < POINT D'ENTREE REEL.
         WORD        0
         PROG
PRUN:    EQU         $
         LRP         L
         BR          -2,L            < ENTREE PAR "GE"...
ITEM2:   EQU         ZERO+PILE-LTNI-LTNI
         PAGE
<
<
<        P A R A M E T R E S   G E N E R A U X  :
<
<
NOCMO::  VAL         2               < NOMBRE D'OCTETS PAR MOT,
NBITOC:: VAL         8               < NOMBRE DE BITS PAR OCTET...
NBRHEX:: VAL         4               < NOMBRE DE CHIFFRES HEXA PAR MOT.
FGR::    VAL         0               < FONCTION DE LECTURE,
FGRE::   VAL         1               < FONCTION DE LECTURE AVEC ECHO,
FGW::    VAL         2               < FONCTION D'ECRITURE.
NVPV:    VAL         2               < NVP DE LA VISU,
NVPC:    VAL         NVPV            < NVP UTILISE POUR LE CURSEUR GRAPHIQUE.
NVPCU::  VAL         '8B             < POUR ACCEDER AU 'CU3'...
X::      MOT         1               < COORDONNEE X,
Y::      MOT         0               < COORDONNEE Y.
<
<
<        F O R M A T   D E S   O R D R E S   ' C U 3 '  :
<                    ( M O T 1 )
<
<
CUNIVO:: VAL         '000F           < NIVEAU DE GRIS,
LREG::   VAL         CUNIVO+1=0
CUREG::  VAL         '0070           < NUMERO DE REGISTRE,
CUBAN::  VAL         '0080           < NUMERO DE BANK EN POSITIONNEMENT,
CUREB::  VAL         CUBAN?CUREG     < ADRESSE COMPLETE DES REGISTRES.
CUCOLO:: VAL         '0700           < SELECTION DES COULEURS,
XXR::    VAL         '10             < SELECTION ROUGE (DECALEE A DROITE),
XXV::    VAL         '20             < SELECTION VERT (DECALEE A DROITE),
XXB::    VAL         '40             < SELECTION BLEU (DECALEE A DROITE).
CUDIFF:: VAL         '0800           < NUMERO DE BANK EN DIFFUSION.
CUINIT:: VAL         '8000           < POUR INITIALISER LE CONTROLEUR.
<
<
<        F O R M A T   D E S   O R D R E S   ' C U 3 '  :
<                    ( M O T 2 )
<
<
MOT2::   VAL         1               < DEPLACEMENT D'ACCES AU MOT2...
CUCLIR:: VAL         '0001           < CLEAR LA CARTE 'TV'.
CUIN::   VAL         '0002           < MISE DE LA CARTE EN MODE IN/OUT.
CUINR::  VAL         '0004           < OUVERTURE DU ROBINET ROUGE,
CUINV::  VAL         '0008           < OUVERTURE DU ROBINET VERT,
CUINB::  VAL         '0010           < OUVERTURE DU ROBINET BLEU.
CUMODI:: VAL         '0060           < MODE D'ENTREE :
MODBI::  VAL         '0000           < BINAIRE INVERSE,
MODB::   VAL         '0060           < BINAIRE,
MODC2::  VAL         '0020           < LIBRE...
MODCI::  VAL         '0040           < SELECTION DU POIDS DES BITS ENTRES :
                                     < =0 : 3 BITS DE POIDS FORTS,
                                     < =1 : 3 BITS DE POIDS FAIBLES SUIVANTS.
CUPROM:: VAL         '1F00           < NUMERO DE LA FONCTION DE TRANSFERT 'IN'.
<
<
<        P A R A M E T R E S   D E   L A   M A T R I C E  :
<
<
UNITEX:: VAL         16              < UNITE SUR L'AXE DES X ::KGX1.
UNITEY:: VAL         10              < UNITE SUR L'AXE DES Y ::KAY1.
ORGKXY:: VAL         8*8             < UNITES ORIGINES ::K8X8Y8.
ORGX::   VAL         ORGKXY*1        < ABSCISSE DE L'ORIGINE DE LA MATRICE,
ORGY::   VAL         ORGKXY*1        < ORDONNEE DE LA MATRICE.
LONGMX:: VAL         8               < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE
                                     < DES X EXPRIMEE EN 'UNITEX'.
LONGMY:: VAL         16              < LONGUEUR D'UNE SOUS-MATRICE SUR L'AXE
                                     < DES Y EXPRIMEE EN 'UNITEY'.
NMX::    VAL         4               < NOMBRE DE SOUS-MATRICES LE LONG DE X,
NMY::    VAL         4               < NOMBRE DE SOUS-MATRICES LE LONG DE Y.
NBAN::   VAL         2               < NOMBRE DE BANKS.
         PAGE
<
<
<        M E S S A G E S  :
<
<
MCDAI:   ASCI        "!CDA"
         BYTE        "I";'04
MERR:    BYTE        1;'07           < ENVOI DE LA CLOCHE SUR ERREUR...
MZDC:    BYTE        5;'6D
         ASCI        "ZDC?"
MRVB:    BYTE        5;'0D
         ASCI        " RVB"
M1:      BYTE        1;"1"
M2:      BYTE        1;"2"
M3:      BYTE        1;"3"
MMOINS:  BYTE        1;"-"
MRC:     BYTE        1;'6D
MREG:    BYTE        3;'6D
         ASCI        "R="
MVAL:    BYTE        3;'6D
         ASCI        "V="
MCAM:    BYTE        4;'6D
         ASCI        "CAM:"
MAD:     BYTE        7;'6D
         ASCI        "APROM="
MMOD:    BYTE        5;'6D
         ASCI        "MOD="
MCONT:   BYTE        5;'6D
         ASCI        "SEQ?"
MR:      BYTE        3;'6D;"R";"?"
MV:      BYTE        3;'6D;"V";"?"
MB:      BYTE        3;'6D;"B";"?"
MI:      BYTE        4;'6D
         ASCI        "IN?"
MTRANS:  BYTE        3;'6D
         ASCI        "T="
MPRVB:   BYTE        5;'6D
         ASCI        "RVB="
MOVFL:   BYTE        5;'6D
         ASCI        "OVFL"
MOFF:    BYTE        7;'6D
         ASCI        "IT OFF"
MON:     BYTE        6;'6D
         ASCI        "IT ON"
MNIV1:   BYTE        3;'6D
         ASCI        "D="
MNIV2:   BYTE        3;'6D
         ASCI        "A="
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
< BUFFERS ET DIVERS :
<
BUFCU:   DZS         MOT2+1          < POUR ENVOYER LES ORDRES 'CU3'.
LBUFCG:: VAL         3
BUFCG:   DZS         LBUFCG          < BUFFER DU RETICULE DE LA VISU.
BUFX:    EQU         BUFCG+1+X
BUFY:    EQU         BUFCG+1+Y
LSEG:    VAL         LBUFCG-1*2
NOMSEG:  WORD        0               < MOT DE VALIDATION DES SEGMENTS.
SEG:     DZS         LSEG            < SEGMENT COURANT.
REP:     DZS         NBRHEX/NOCMO    < BUFFER D'ENTREE HEXA-DECIMAL.
XWOR%1:  VAL         CUREB=0
XWOR%2:  VAL         -XWOR%1
LTCU:    VAL         CUREB>XWOR%2+1  < LONGUEUR DES TABLES DE COULEUR.
SMOT2:   WORD        0               < SAUVEGARDE DES ORDRES CAMERA POUR
                                     < PASSAGE DE LA COMMANDE "K" A "U".
<
< RELAIS DIVERS :
<
ABRANC:  WORD        BRANCH          < ADRESSE DE LA BRANCHE D'OVERLAY.
AOVL:    WORD        OVL             < SOUS-PROGRAMME D'OVERLAY.
APRINT:  WORD        PRINT           < EDITION D'UN MESSAGE.
AHEX:    WORD        HEX             < CONVERSION HEXA --> BINAIRE.
AENTER:  WORD        ENTER           < ENTREE D'UNE REPONSE OUI/NON.
AVALXY:  WORD        VALXY           < SOUS-PROGRAMME DE VALIDATION (X,Y).
ARETIC:  WORD        RETIC           < SOUS-PROGRAMME DE GESTION DU RETICULE.
ALOOP:   WORD        LOOP            < MODULE D'INTERROGATION...
ASTOZD:  WORD        STOZDC          < ENVOI EN ZDC,
AGETZD:  WORD        GETZDC          < ACCES A LA ZDC.
ASPCU:   WORD        SPCU            < S/P DE REINITIALISATION REGISTRES.
ASTHEX:  WORD        STHEX           < CONVERSION ASCI D'UN MOT SOUS FORME
                                     < "U;XXXX" COMPATIBLE AVEC 'TV/TI'.
APTRAN:  WORD        PTRAN           < ENTREE DE LA TRANSLATION COULEURS.
APERMU:  WORD        PERMUT          < ENTREE DE LA PERMUTATION (R,V,B).
ASP1:    WORD        SP1             < TRANSLATION ET ENVOI COULEUR.
ASP2:    WORD        SP2             < RECUPERATION PERMUTATION DES COULEURS.
ASP3:    WORD        SP3             < ENVOI DES 3 COMPOSANTES.
ASP4:    WORD        SP4             < GENERATION REGISTRE ET ENVOI 'STHEX'.
AROND:   WORD        ROND            < ARRONDI D'UN NIVEAU INTERPOLE...
AMEMCU:  WORD        MEMCU           < MEMORISATION DES ORDRES AU 'CU'
                                     < DANS LES TABLES DE COULEUR.
AIITEM:  WORD        IITEM           < S/P D'INITIALISATION DE L'ITEM1.
ASTIT:   WORD        STIT            < SOUS-PROGRAMME DE RANGEMENT D'UN
                                     < CARACTERE DANS L'ITEM1.
ATEST:   WORD        TEST            < TEST DU POINT VIDEO (X,Y).
ASP5:    WORD        SP5             < TEST POINT SUR UNE COMPOSANTE ET ENVOI
                                     < D'UN MESSAGE.
ARET:    WORD        RETICX
ALINIT:  WORD        LINIT-1,X       < LISTE D'INITIALISATION DU 'CRT'...
AREP:    WORD        REP,X           < ACCES AU BUFFER D'ENTREE HEXA.
AKOM:    WORD        KOM,X           < ACCES AUX MODULES SPECIFIQUES...
<
< ACCES A L'ITEM1 :
<
AITEM1:  WORD        ZERO+PILE-LTNI+LTN,X
XITEM1:  WORD        NBCAR           < INDEX COURANT DE L'ITEM1 ; ON LAISSE
                                     < LA PREMIERE LIGNE LIBRE...
LITEM1:  WORD        NBCAR*NBLIG     < LONGUEUR DE L'ITEM1.
PITEM1:  WORD        -1              < INDICATEUR DE PREMIER ACCES A L'ITEM1...
MITEM1:  WORD        1               < 1 : PAS DE MEMORISATION DES COULEURS
                                     <     DANS L'ITEM1,
                                     < -1: MEMORISATION A CHAQUE COMMANDE
                                     <     "P"/"Q"/"C"/"D"/"B" ; D'AUTRE PART,
                                     <     LORS DE L'INTERPOLATION "J", DANS CES
                                     <     CONDITIONS, ON INTERPOLE EN NE CHAN-
                                     <     GEANT PAS LE NUMERO DE REGISTRE, IL
                                     <     RESTE DONC EGAL EN PERMANENCE AU RE-
                                     <     GISTRE DE DEPART ('NIV1'), ET PERMET
                                     <     DONC DES INTERPOLATIONS ENTRE 2 PA-
                                     <     LETTES : L'UNE DANS LE JEU 0, ET
                                     <     L'AUTRE DANS LE JEU 1 ; ON INTER-
                                     <     POLERA DONC EN 7 OU 8 FOIS AINSI :
                                     <     1 --> 9, 2 -->A,..., 7 --> F...
<
< DEMANDES :
<
DEMBAC:  WORD        '0602           < DEMANDE DE RETOUR A "GE".
         WORD        BRANCH-ZERO*NOCMO
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*NOCMO
         WORD        -1
NGE:     ASCI        "GE"            < NOM DE L'OVERLAY "GE".
DEMCDA:  WORD        '0002           < ENVOI DE "!CDAI"...
         WORD        MCDAI-ZERO*NOCMO
         WORD        80
DEMCU:   BYTE        NVPCU;FGW       < ACCES A 'CU3'...
         WORD        BUFCU-ZERO*NOCMO
         WORD        NOCMO
DEMCU2:  BYTE        NVPCU;FGW       < ACCES AU MOT2 DE 'CU3'...
         WORD        BUFCU-ZERO*NOCMO
         WORD        MOT2+1*NOCMO
DEMMES:  BYTE        NVPV;FGW        < ECRITURE DES MESSAGES.
         WORD        0               < ADRESSE OCTET DU MESSAGE,
         WORD        0               < LONGUEUR OCTET DU MESSAGE.
DEMHEX:  BYTE        NVPV;FGRE       < ENTREE D'UN NOMBRE HEXA-DECIMAL.
         WORD        REP-ZERO*NOCMO
         WORD        NBRHEX
DEMRVB:  BYTE        NVPV;FGRE       < ENTREE DE LA PERMUTATION DES COULEURS.
         WORD        REP-ZERO*NOCMO+TVPR
         WORD        TVPB
OG:      BYTE        NVPC;3          < MISE EN GRAPHIQUE,
CG:      BYTE        NVPC;4          < MISE EN ALPHA-NUMERIQUE,
CU:      BYTE        NVPC;6          < MISE EN FONCTION DU RETICULE,
         WORD        0
LG:      BYTE        NVPC;9          < LECTURE DU RETICULE.
         WORD        BUFCG-ZERO*NOCMO
         WORD        LBUFCG*NOCMO
DEMIN:   BYTE        NVPV;FGRE       < ENTREE D'UN CARACTERE...
         WORD        BUFCG-ZERO*NOCMO
         WORD        1
DEMCCI:  WORD        '0001           < ACCES CCI.
DEMSEG:  WORD        '0008           < ACCES SEGMENT EN ZDC.
         WORD        NOMSEG-ZERO*NOCMO
         WORD        LSEG+1*NOCMO
XXXZDC:: VAL         'FFC0           < MOT DE VALIDATION DE LZ ZDC.
         WORD        XXXZDC
DELSEG:  WORD        '000A           < ENVOI DE L'ACQUITTEMENT EN ZDC.
         WORD        NOMSEG-ZERO*NOCMO
         WORD        NOCMO
YYYZDC:: VAL         'C000           < MOT DE VALIDATION DE L'ACQUITTEMENT
         WORD        YYYZDC
STOGS:   WORD        '000A           < ENVOI D'UN SEGMENT EN ZDC.
         WORD        NOMSEG-ZERO*NOCMO
         WORD        LSEG+1*NOCMO
         WORD        XXXZDC
GETGS:   WORD        '0008           < ATTENTE D'UN ACQUITTEMENT.
         WORD        NOMSEG-ZERO*NOCMO
         WORD        NOCMO
         WORD        YYYZDC
<
< CONSTANTES, ET VARIABLES :
<
INDZDC:  WORD        0               < 0=NE PAS EMETTRE EN ZDC.
WORK1:   WORD        0               < VARIABLES DE
WORK2:   WORD        0               < TRAVAIL...
COORDX:  WORD        0               < COORDONNEE X COURANTE,
COORDY:  WORD        0               < COORDONNEE Y COURANTE.
MINX:    WORD        ORGX            < POUR
MINY:    WORD        ORGY            <      VALIDER
MAXX:    WORD        UNITEX*LONGMX*NMX+ORGX <       LES COORDONNEES
MAXY:    WORD        UNITEY*LONGMY*NMY+ORGY <                       (X,Y).
ANMX:    WORD        NMX             < NOMBRE DE SOUS-MATRICES SUR X,
ANMY:    WORD        NMY             < ET SUR Y.
ALMX:    WORD        UNITEX*LONGMX   < LONGUEUR SUR X D'UNE SOUS-MATRICE,
ALMY:    WORD        UNITEY*LONGMY   < ET SUR Y.
AUX:     WORD        UNITEX          < LONGUEUR SUR X D'UNE CELLULE,
AUY:     WORD        UNITEY          < ET SUR Y.
NUMBAN:  WORD        0               < NUMERO DU BANK EN POSITIONNEMENT,
NUMDIF:  WORD        0               < ET EN DIFFUSION.
NUMMAT:  WORD        0               < NUMERO DE LA MATRICE DANS LE JEU,
NUMREG:  WORD        0               < NUMERO COMPLET DE REGISTRE.
NIVEAU:  WORD        0               < NIVEAU SELECTIONNE,
COLOUR:  WORD        0               < COULEUR SELECTIONNEE.
CTRANS:  WORD        0               < CONSTANTE DE TRANSLATION DES NIVEAUX
                                     < DE GRIS AVEC LA COMMANDE "G".
AXXR:    WORD        XXR             < PERMUTATION DU ROUGE,
AXXV:    WORD        XXV             < PERMUTATION DU VERT,
AXXB:    WORD        XXB             < PERMUTATION DU BLEU.
SAVEC:   WORD        0               < SAVE LE CONTENU D'UN MOT DE LA MEMOIRE
                                     < DES COULEURS.
SAVET:   WORD        0               < TRANSLATION SUR 'SAVEC'.
ANBCAR:  WORD        NBCAR
<
< DONNEES D'INTERPOLATION :
<
NIV1:    WORD        0               < NIVEAU DE DEPART,
NIV2:    WORD        0               < NIVEAU D'ARRIVEE.
ROUGE1:  FLOAT       0
VERT1:   FLOAT       0
BLEU1:   FLOAT       0
ROUGE2:  FLOAT       0
VERT2:   FLOAT       0
BLEU2:   FLOAT       0
FPAS:    FLOAT       0               < PAS D'INTERPOLATION.
F05:     FLOAT       0.5             < POUR LES ARRONDIS...
<
< DONNEES POUR LA GESTION DE L'IMAGE DE TV :
<
NOM:     EQU         ZERO+PILE+5-LNOM-2
IMAG:    EQU         NOM+LNOM+2
DEMMEM:  WORD        '0004           < DEMANDE D'ALLOCATION 8K-MOTS.
RELMEM:  WORD        '0004           < DEMANDE DE RETOUR A 4K MOTS.
         WORD        '4000
         WORD        '2000           < 8K OCTETS.
STDKU:   WORD        '8A01           < STABILISATION IMAGE.
         WORD        IMAG-ZERO*NOCMO
         WORD        LIMAG*NOCMO
         WORD        0               < SELECTION COULEUR.
NLIG:    WORD        LIMAG/CNMPL-1   < NOMBRE DE LIGNE D'UNE TRAME-1.
NMPL:    WORD        CNMPL           < NOMBRE DE MOTS PAR LIGNE.
TEMPO::  VAL         4*2             < NOMBRE DE CLIGNOTEMENTS...
<
< PROGRAMMATION DES REGISTRES DU CONTROLEUR DE 'CRT' :
<
NREG::   VAL         16              < NOMBRE DE REGISTRES ACCESSIBLES EN
                                     < LECTURE/ECRITURE...
XWOR%1:  VAL         -NBITOC
XWOR%2:  VAL         CUINIT>XWOR%1
REG1:    BYTE        XWOR%2?'00;0    < ADRESSE DE REGISTRE,
REG2:    BYTE        XWOR%2?'08;0    < ADRESSE DE REGISTRE.
REG3:    BYTE        XWOR%2?'02;0    < VALEUR DU REGISTRE,
REG4:    BYTE        XWOR%2?'0A;0    < VALEUR DU REGISTRE.
REG5:    BYTE        XWOR%2?'07;0    < POUR DESACTIVER...
DEMR1:   BYTE        NVPCU;FGW       < PROGRAMMATION DU CONTROLEUR...
         WORD        REG1-ZERO*NOCMO
         WORD        NOCMO
DEMR2:   BYTE        NVPCU;FGW
         WORD        REG2-ZERO*NOCMO
         WORD        NOCMO
DEMR3:   BYTE        NVPCU;FGW
         WORD        REG3-ZERO*NOCMO
         WORD        NOCMO
DEMR4:   BYTE        NVPCU;FGW
         WORD        REG4-ZERO*NOCMO
         WORD        NOCMO
DEMR5:   BYTE        NVPCU;FGW
         WORD        REG5-ZERO*NOCMO
         WORD        NOCMO
<
< LIGNE D'IMAGE :
<
LIG0::   VAL         0
LIG1::   VAL         1
NCOOL::  VAL         3               < NOMBRE DE STACKS COULEURS,
KDECAL:: VAL         8               < AMPLITUDE DU DECALAGE VERTICAL...
ALIMAG:  WORD        LIMAG
LIGNE:   DZS         CNMPL+1         < (+1 POUR LE DECALAGE CIRCULAIRE)
<
< PILE DE TRAVAIL :
<
STACK:   DZS         10
         PAGE
<
<
<        T A B L E   D E S  :C O M M A N D E S  :
<
<
REP0:    VAL         "0"             < PREMIERE COMMANDE.
KOM:     EQU         $-REP0          < ELLES COMMENCENT A "0"...
         WORD        RETIC0          < 0 : ACCES AU BANK0
         WORD        RETIC1          < 1 : ACCES AU BANK1
         WORD        ERROR           < 2
         WORD        ERROR           < 3
         WORD        ERROR           < 4
         WORD        ERROR           < 5
         WORD        ERROR           < 6
         WORD        ERROR           < 7
         WORD        ERROR           < 8
AERROR:  WORD        ERROR           < 9 (ET RELAI...)
         WORD        ERROR           <
         WORD        ERROR           < ;
         WORD        DECAL           < < : DECALAGE DES IMAGES CAMERAS
         WORD        ERROR           < =
         WORD        ERROR           < >
         WORD        ERROR           < ?
         WORD        ERROR           < @
         WORD        PGETC           < A : MEMORISATION D'UNE COULEUR
         WORD        PSTOC           < B : ET SON TRANSFERT AILLEURS
         WORD        RETICC          < C : COULEUR AVEC CUMUL
         WORD        RETICD          < D : ACCES A LA 'ZDC' EN MODE 'C'
         WORD        ERROR           < E
         WORD        RETICF          < F : FIN, RETOUR A 'GE'
         WORD        GCOUL           < G : RECUPERATION DE LA MEMOIRE COULEURS
         WORD        ERROR           < H
         WORD        RETII1          < I : INITIALISATION DE LA CARTE
         WORD        GINT            < J : INTERPOLATION ENTRE DEUX NIVEAUX
         WORD        RETIK1          < K : COMMANDE DE LA CAMERA
         WORD        ERROR           < L
         WORD        SCOLOR          < M : BASCULE MEMORISATION COULEURS
         WORD        RETICN          < N : INVALIDATION DE L'EMISSION 'ZDC'
         WORD        ERROR           < O
         WORD        RETICP          < P : COULEUR AVEC REINITIALISATION
         WORD        RETICQ          < Q : ACCES A LA 'ZDC' EN MODE 'P'
         WORD        IREG            < R : PROGRAMMATION DES REGISTRES 'CRT'
         WORD        RETICS          < S : VALIDATION DE L'EMISSION 'ZDC'
         WORD        RETICT          < T : TEST DU POINT VIDEO COURANT
         WORD        RETICU          < U : ENTREE D'UNE TRAME MODE "K" ANTERIEUR
         WORD        RETIKA          < V : ENTREE D'UNE TRAME EN MODE NORMAL
         WORD        RETICW          < W : RETOUR TEMPORAIRE AU CCI
REPZ:    VAL         $-KOM-1         < DERNIERE COMMANDE.
         PAGE
<
<
<        I N I T I A L I S A T I O N   D U   C O N T R O L E U R
<                    D U   C R T  :
<
<
<        ATTENTION :
<                      AU MOMENT DE L'EMISSION, ON
<                    SUPERPOSE 'CUINIT' A CHAQUE
<                    COMMANDE...
<
<
LINIT:   EQU         $
         WORD        '0700
         WORD        '0A02;'0202;'080F;'000F;'0A01;'0201;'080E;'000E
         WORD        '0A00;'0200;'080D;'000D;'0A00;'0200;'080C;'000C
         WORD        '0A06;'0206;'080B;'000B;'0A05;'0205;'080A;'000A
         WORD        '0A07;'0207;'0809;'0009;'0A01;'0201;'0808;'0008
         WORD        '0A22;'0222;'0807;'0007;'0A20;'0220;'0806;'0006
         WORD        '0A00;'0200;'0805;'0005;'0A26;'0226;'0804;'0004
         WORD        '0A03;'0203;'0803;'0003;'0A24;'0224;'0802;'0002
         WORD        '0A20;'0220;'0801;'0001;'0A27;'0227;'0800;'0000
         WORD        '0700
LLINIT:: VAL         $-LINIT         < LONGUEUR DE LA LISTE...
         PAGE
         PROG
<
<
<        V A L I D A T I O N   D E   ( X , Y ) ,
<        E T   G E N E R A T I O N   D E S   O R D R E S  :
<
<
<        FONCTION :
<                      CE SOUS-PROGRAMME RECOIT UN COUPLE
<                    (X,Y) QU'IL VALIDE, IL DETERMINE ENSUITE
<                    SI CELA EST POSSIBLE, LES DIFFERENTS
<                    PARAMETRES DE COULEUR...
<
<
<        ARGUMENTS :
<                    (X,Y)=COORDONNEES DU POINT COURANT,
<
<
<        RESULTAT :
<                    A=0 : (X,Y) ETAIT VALIDE,
<                     #0 : (X,Y) ETAIT HORS DE LA MATRICE...
<
<
VALXY:   EQU         $
         PSR         X,Y
         STX         COORDX          < SAUVEGARDE DES COORDONNEES.
         STY         COORDY
         LR          X,A             < VALIDATION DE X :
         CP          MINX
         JL          VALXY1          < ERREUR...
         CP          MAXX
         JGE         VALXY1          < ERREUR...
         LR          Y,A             < VALIDATION DE Y :
         CP          MINY
         JL          VALXY1          < ERREUR...
         CP          MAXY
         JGE         VALXY1          < ERREUR...
<
< TRAITEMENT D'UN COUPLE VALIDE (X,Y) :
<
         LR          X,A
         SB          MINX            < REDUCTION A L'ORIGINE,
         SARD        NBITMO
         DV          ALMX
         STA         NUMMAT          < (PROVISOIRE) : NUMERO DE LA COLONNE.
         LR          B,A
         SARD        NBITMO
         DV          AUX
         STA         COLOUR          < COULEUR DESIREE (ON NEGLIGE B...).
         LR          Y,A
         SB          MINY            < REDUCTION A L'ORIGINE,
         SARD        NBITMO
         DV          ALMY
         STA         NUMBAN          < (PROVISOIRE) : NUMERO DE LA LIGNE.
         LR          B,A
         SARD        NBITMO
         DV          AUY
         STA         NIVEAU          < NIVEAU DESIRE (ON NEGLIGE B...).
         LA          NUMBAN
         MP          ANMX            < NUMERO-LIGNE*NMX
         LR          B,A
         AD          NUMMAT          < NUMERO DE LA SOUS-MATRICE :
         STA         NUMMAT          < QUE L'ON RANGE A PRIORI...
         STA         NUMREG
         STZ         NUMBAN          < ET BANK 0 A PRIORI...
         CPI         NMX*NMY/NBAN    < 0 OU 1 ???
         JL          VALXY2          < 0...
         IC          NUMBAN          < 1...
         ADRI        -NMX*NMY/NBAN,A
         STA         NUMMAT
VALXY2:  EQU         $
<
< PREPARATION DE L'ORDRE A 'CU3' :
<
         LA          NIVEAU
         SLLS        CUNIVO=0
         STA         BUFCU
         LA          NUMMAT          < NUMERO DE REGISTRE.
         SLLS        CUREG=0
         OR          BUFCU
         STA         BUFCU
         LA          NUMBAN          < NUMERO DE BANK EN ENREGISTREMENT.
         SLLS        CUBAN=0
         OR          BUFCU
         STA         BUFCU
         LA          COLOUR          < COULEURS DESIREES.
         SLLS        CUCOLO=0
         OR          BUFCU
         STA         BUFCU
         LA          NUMDIF          < NUMERO DE BANK EN DIFFUSION.
         SLLS        CUDIFF=0
         OR          BUFCU
         STA         BUFCU
<
< ET C'EST FINI...
<
         LAI         0               < RETOUR OK...
VALXY3:  EQU         $
         PLR         X,Y
         RSR
VALXY1:  EQU         $
         LAI         1               < RETOUR EN ERREUR...
         JMP         VALXY3
         PAGE
<
<
<        I N I T I A L I S A T I O N   R E G I S T R E S  :
<
<
SPCU:    EQU         $
         LB          BUFCU           < B=SAUVEGARDE DE L'ORDRE A 'CU3'.
         LRM         A
         WORD        CUCOLO?CUNIVO   < A=SELECTION DES 3 COULEURS AU
                                     < NIVEAU MINIMUM.
         ORR         B,A
         STA         BUFCU
         BSR         AMEMCU          < MEMORISATION DES COULEURS...
         SVC         0               < REINITIALISATION DES REGISTRES...
         STB         BUFCU           < REINITIALISATION DE L'ORDRE...
         RSR
         PAGE
<
<
<        E N V O I   D ' U N   S E G M E N T   E N   Z D C  :
<
<
STOZDC:  EQU         $
         PSR         A,X
         LA          INDZDC
         TBT         NBITMO-1        < EST-CE VALIDE ???
         JNC         STO1            < NON...
         LA          BUFX
         STA         SEG+0+X
         STA         SEG+2+X
         LA          BUFY
         STA         SEG+0+Y
         STA         SEG+2+Y
         LAD         GETGS           < OUI...
STO2:    EQU         $
         SVC         0               < ACCES A L'ACQUITTEMENT PRECEDENT...
         CPZ         NOMSEG          < A-T'IL ETE ACQUITTE ???
         JNE         STO2            < NON, ON ATTEND...
         DC          NOMSEG          < OUI, NOMSEG=-1,
         LAD         STOGS
         SVC         0               < ET ON ENVOIE LE SEGMENT COURANT.
STO1:    EQU         $
         PLR         A,X
         RSR
         PAGE
<
<
<        A C C E S   A   U N   S E G M E N T   E N   Z D C  :
<
<
<        RESULTAT :
<                    A=0 SUR FIN DE LISTE ('OAB').
<
<
GETZDC:  EQU         $
         PSR         X
         LAD         DEMSEG
GET1:    EQU         $
         SVC         0               < ACCES AU SEGMENT COURANT...
         CPZ         NOMSEG          < EST-IL VALIDE ???
         JE          GET1            < NON, ON ATTEND...
         STZ         NOMSEG          < OUI, NOMSEG=0,
         LAD         DELSEG
         SVC         0               < ET ON L'ACQUITTE...
         LA          SEG+0+X
         OR          SEG+0+Y
         OR          SEG+2+X
         OR          SEG+2+Y         < A=0 SI 'OAB'...
         PLR         X
         RSR
         PAGE
<
<
<        T E S T   D ' U N   P O I N T  :
<
<
<        ARGUMENTS :
<                    X ET Y CONTIENNENT L'X ET L'Y DU POINT ,
<                    C=@IMAG.
<
<
<        RESULTAT :
<                    CARY POISITIONNE PAR LE POINT (0/1).
<
<
TEST:    EQU         $
         LA          STDKU+3
         EORI        TVIN            < MISE EN MODE SORTIE SUR LA TRAME
         STA         STDKU+3         < COURANTE...
         PSR         B,X,C
         LR          Y,A             < A=COORDONNEE Y DU POINT.
         MP          NMPL
         ADR         B,C
         LR          X,A             < A=COORDONNEE X DU POINT.
         SLRS        NBITMO=0
         ADR         A,C             < C#MOT CONTENANT LE POINT (X,Y).
         LAI         NBITMO-1
         ANDR        A,X             < X=NUMERO DU POINT DANS LE MOT (C)
         LBI         TEMPO           < NOMBRE DE CLIGNOTEMENTS.
INVER:   EQU         $
         LA          0,C
         IBT         0,X             < INVERSION...
         STA         0,C
         PSR         X
         LAD         STDKU
         SVC         0               < CLIGNOTEMENT...
         PLR         X
         ADRI        -1,B
         CPZR        B
         JG          INVER           < ON CONTINUE...
         LA          0,C
         TBT         0,X             < TEST DU POINT.
         PLR         B,X,C
         RSR
         PAGE
<
<
<        E D I T I O N   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=ADRESSE DU MESSAGE, DONT LE 1ER OCTET
<                      EST LA LONGUEUR.
<
<
PRINT:   EQU         $
         PSR         A,X,W
         LR          A,W             < W=ADRESSE MOT DU MESSAGE.
         ADR         A,A
         ADRI        NOCMO-1,A
         STA         DEMMES+1        < ADRESSE DU MESSAGE,
         LBY         0,W
         STA         DEMMES+2        < LONGUEUR DU MESSAGE.
         LAD         DEMMES
         SVC         0               < EDITION DU MESSAGE.
         PLR         A,X,W
         RSR
         PAGE
<
<
<        C O N V E R S I O N   H E X A   -->   B I N A I R E  :
<
<
<        ARGUMENT :
<                    LE BUFFER 'REP'.
<
<
<        RESULTAT :
<                    B=0 : (A)=VALEUR BINAIRE,
<                    B#0 : ERREUR DE SYNTAXE HEXA-DECIMALE.
<                    LES INDICATEURS POSITIONNES SUR (B).
<
<
HEX:     EQU         $
BASE10:  VAL         10
BASE16:  VAL         16
         PSR         X,Y
         LYI         NBRHEX
         LXI         0               < INDEX DU BUFFER DE REPONSE.
         LBI         0               < CLEAR LE REGISTRE B.
HEX1:    EQU         $
         LBY         &AREP           < A=CARACTERE COURANT DU BUFFER.
         ADRI        -"0",A
         JAL         HEX4            < ERREUR : CARACTERE NON RECONNU.
         CPI         BASE10          < EST-CE UN CHIFFRE ???
         JL          HEX2            < OUI , C'EST UN CHIFFRE.
         ADRI        -"A"+"9"+1,A    < NON.
         CPI         BASE10          < VALIDATION.
         JL          HEX4            < ERREUR : CARACTERE NON RECONNU.
         CPI         BASE16          < VALIDATION.
         JGE         HEX4            < ERREUR : CARACTERE NON RECONNU.
HEX2:    EQU         $
         SCRS        NBITMO/NBRHEX   < MISE DES 4 BITS EN TETE DE A.
         SCLD        NBITMO/NBRHEX   < ET CONCATENATION A B.
         ADRI        1,X             < PROGRESSION DE L'INDEX.
         CPR         X,Y             < EST-CE FINI ???
         JNE         HEX1            < NON , ON CONTINUE.
         LR          B,A             < A=VALEUR BINAIRE DE (REP).
         LBI         0               < B=0 : RETOUR OK.
HEX3:    EQU         $
         PLR         X,Y
         CPZR        B               < POSITIONNEMENT DES INDICATEURS.
         RSR
<
< RETOURS EN ERREUR :
<
HEX4:    EQU         $
         LR          B,A             < A=VALEUR COURANTE...
         LBI         1               < B#0.
         JMP         HEX3            < VERS LA SORTIE ...
         PAGE
<
<
<        E N T R E E   D ' U N E   R E P O N S E   O U I / N O N  :
<
<
<        ARGUMENT :
<                    A=ADRESSE D'UN MESSAGE A EDITER,
<                    X=NUMERO D'UN BIT A METTRE A 1 DANS 'A' SI 'OUI'.
<
<
<        RESULTAT :
<                    A=0 SI 'NON',
<                      LE BIT A(X)=1 SI 'OUI'.
<
<
ENTER:   EQU         $
         PSR         B,Y
         LR          A,Y             < Y=SAVE L'ADRESSE DU MESSAGE SI ERREUR.
         LBI         0               < CLEAR LA REPONSE A PRIORI...
ENTER1:  EQU         $
         LR          Y,A
         BSR         APRINT          < EDITION DU MESSAGE ARGUMENT,
         PSR         X
         LAD         DEMIN
         SVC         0               < ENTREE DE LA REPONSE,
         PLR         X
         LBY         BUFCG           < A=REPONSE,
         CPI         "N"
         JE          ENTER2          < "N" : B=0...
         CPI         "O"
         JNE         ENTER1          < ITERATION SUR ERREUR...
         SBT         NBITMO,X        < "O" : B(X)=1...
ENTER2:  EQU         $
         LR          B,A             < A=REPONSE...
         PLR         B,Y
         RSR
         PAGE
<
<
<        M E M O R I S A T I O N   C O U L E U R S  :
<
<
<        RESULTAT :
<                    A=ADRESSE DE 'DEMCU'.
<
<
MEMCU:   EQU         $
         CPZ         MITEM1          < MEMORISE-T'ON ???
         JG          MEMCU1          < 1 : NON...
         LA          BUFCU           < OUI, A=CODE DE COULEURS,
         BSR         ASTHEX          < QUE L'ON MET EN ITEM1...
MEMCU1:  EQU         $
         LAD         DEMCU           < A=ADRESSE DE 'DEMCU'.
         RSR
         PAGE
<
<
<        I N I T I A L I S A T I O N   I T E M 1  :
<
<
IITEM:   EQU         $
         LAI         NBCAR
         STA         XITEM1          < REINITAILISATION DE L'INDEX ITEM1...
         LXI         IINDIC-LTN*NOCMO
         LAI         "T"
         STBY        &AITEM1         < MISE EN MODE "TEXTE",
         LXI         LRITEM-LTN
         LA          LITEM1
         STA         &AITEM1         < ET DE LA LONGUEUR D'UN TEXTE...
         LR          A,X             < ET ON CLEAR...
         LAI         " "
SCOL5:   EQU         $
         ADRI        -1,X
         STBY        &AITEM1         < REMISE A " "...
         ADRI        1,X
         JDX         SCOL5
         RSR
         PAGE
<
<
<        R A N G E M E N T   D A N S   I T E M 1  :
<
<
<        FONCTION :
<                      CE SOUS-PROGRAMME RANGE LE CARACTERE
<                    ARGUMENT DANS 'ITEM1' A L'INDEX 'XITEM1' ;
<                    EN CAS DE DEBORDEMENT, ON NE FAIT PAS
<                    PROGRESSER CELUI-CI...
<
<
<        ARGUMENT :
<                    A=CARACTERE.
<
<
STIT:    EQU         $
         PSR         A,X
         LX          XITEM1          < X=INDEX DE L'ITEM1,
         STBY        &AITEM1         < ET ON Y RANGE (A)...
         LR          X,A
         ADRI        1,A             < PROGRESSION DE L'INDEX,
         CP          LITEM1          < ET VALIDATION PRELIMINAIRE...
         JL          STIT1           < OK...
         LAI         MRC-ZERO
         BSR         APRINT
         LAI         MOVFL-ZERO
         BSR         APRINT          < SIGNALISATION DU DEBORDEMENT.
         JMP         STIT2           < ET C'EST TOUT...
STIT1:   EQU         $
         STA         XITEM1          < MISE A JOUR DE L'INDEX COURANT...
STIT2:   EQU         $
         PLR         A,X
         RSR
         PAGE
<
<
<        C O N V E R S I O N   A S C I  :
<
<
<        FONCTION :
<                      CE SOUS-PROGRAMME EFFECTUE LA
<                    CONVERSION DE L'ARGUMENT (A) EN
<                    ASCI, SOIT 'XXXX, PUIS RANGE EN
<                    ITEM1 LA CHAINE DE CARACTERES
<                    U;XXXX QUI EST COMPATIBLE AVEC
<                    LES PROCESSEURS 'TI' ET 'TV'...
<
<
<        ARGUMENT :
<                    A=VALEUR HEXA-DECIMALE.
<
<
STHEX:   EQU         $
         PSR         B,X
<
<        NOTA :
<                      ON N'OPTIMISE PLUS EN
<                    FONCTION DE LA NULLITE DE
<                    'CTRANS' AVEC SAUT VERS
<                    'STHEX5' DEPUIS QUE LA PERMU-
<                    TATION DES COULEURS EST INTRODUITE...
<
         LBI         0
         SCRS        LREG
         SCLD        LREG
         XR          A,B             < A=NIVEAU DE GRIS,
         AD          CTRANS          < ET TRANSLATION...
         CPI         CUNIVO
         JL          STHEX3          < OK...
         LAI         CUNIVO          < MAJORATION...
STHEX3:  EQU         $
         JAGE        STHEX4          < OK...
         LAI         0               < MINORATION...
STHEX4:  EQU         $
         ORR         B,A             < RECONCATENATION...
         STA         BUFCU           < MISE DANS LE BUFFER DE 'CU3',
         PSR         A,X
         LAD         DEMCU
         SVC         0               < ENVOI, ET TRANSLATION COULEUR...
         PLR         A,X
STHEX5:  EQU         $
         SCLS        NBITMO/NBRHEX
         ORI         4
         SCRS        NBITMO/NBRHEX   < MISE SOUS LA FORME '4XXX.
         LR          A,B
         LAI         " "
         BSR         ASTIT           < MISE DE
         BSR         ASTIT           < CARACTERES
         BSR         ASTIT           < 'SPACE'...
         LAI         "U"
         BSR         ASTIT           < "U"
         LAI         ";"
         BSR         ASTIT           < "U;"
         LXI         NBRHEX
STHEX1:  EQU         $
         LAI         0               < CLEAR 'A'...
         SLLD        NBITMO/NBRHEX
         CPI         BASE10          < CHIFFRE OU LETTRE ???
         JL          STHEX2          < CHIFFRE...
         ADRI        "A"-"9"-1,A     < LETTRE...
STHEX2:  EQU         $
         ADRI        "0",A
         BSR         ASTIT           < "U;XXXX"
         JDX         STHEX1
         PLR         B,X
         RSR
         PAGE
<
<
<        E N T R E E   D E   L A   P E R M U T A T I O N
<                    D E S   C O U L E U R S  :
<
<
<        FONCTION :
<                      CE MODULE PERMET DE PERMUTER
<                    LES CANAUX DE SORTIE ENTRE EUX,
<                    ET AINSI PAR EXEMPLE D'ENVOYER
<                    LE ROUGE-LOGIQUE SUR LE BLEU
<                    PHYSIQUE, ET AINSI D'ENVOYER
<                    LE ROUGE SUR LE MONITEUR NOIR
<                    ET BLANC SI CELUI-CI NE RECOIT
<                    QUE LE BLEU...
<
<
<        ARGUMENT :
<                    B=VALEUR PAR DEFAUT,
<                    X=INDEX DE LA COULEUR.
<
<
<        RESULTAT :
<                    X=VALEUR DEMANDEE.
<
<
SP2:     EQU         $
         LBY         &AREP           < (A)=CARACTERE COURANT,
XXABS::  VAL         0               < CANAL COULEUR ABSENT...
         LXI         XXABS           < ABSENT A PRIORI,
         CPI         "X"             < ABSENT ???
         JE          SP21            < OUI...
         LXI         XXR             < ROUGE A PRIORI,
         CPI         "R"             < ROUGE ???
         JE          SP21            < OUI...
         LXI         XXV             < VERT A PRIORI,
         CPI         "V"             < VERT ???
         JE          SP21            < OUI...
         LXI         XXB             < BLEU A PRIORI...
         CPI         "B"             < BLEU ???
         JE          SP21            < OUI...
         LAI         MERR-ZERO
         BSR         APRINT          < ERREUR !!!
         LR          B,X             < ON FORCE LA VALEUR PAR DEFAUT...
SP21:    EQU         $
         RSR                         < ET C'EST TOUT...
         PAGE
<
<
<        G E S T I O N   D U   R E T I C U L E  :
<
<
<        FONCTION :
<                      CE SOUS-PROGRAMME PERMET D'ENTRER LE
<                    RETICULE DE LA VISU ET D'AGIR EN CONSEQUENCES...
<                    LES COMMANDES RECONNUES SONT :
<                    F : FIN,
<                    C : SELECTION COULEUR, EN LAISSANT INCHANGES
<                        LES 0, 1 OU 2 AUTRES REGISTRES NON SELECTIONNES,
<                    P : SELECTION COULEUR, EN REMETTANT AU PREALABLE LES
<                        3 REGISTRES AU NOIR,
<                    0 : DIFFUSION DU BANK0,
<                    1 : DIFFUSION DU BANK1.
<                    W : RETOUR AU CCI,
<                    D : RECOIT DES SEGMENTS EN ZDC, ET POUR CHACUN
<                        D'ENTRE-EUX, IL EN PREND L'EXTREMITE (X,Y),
<                        ET FAIT COMME SI "C" AVAIT ETE RECU AU
<                        RETICULE ; CECI DURE JUSQU'A UN 'OAB'...
<                    Q : "Q" EST A "P", CE QUE "D" EST A "C"...
<                    S : VALIDE L'EMISSION EN ZDC POUR CHAQUE "C",
<                    N : INVALIDE "S",
<                    T : TESTE LE POINT VIDEO COURANT POINTE PAR LE
<                        RETICULE...
<                    K : COMMANDE DE LA CAMERA...
<                    < : POSITIONNEMENT CORRECT DES IMAGES ENTREES
<                        PAR LA CAMERA...
<                    V : ENTREE D'UNE TRAME EN MODE NORMAL...
<                    U : ENTREE D'UNE TRAME DANS LE MODE "K" ANTERIEUR...
<                    I : INITIALISATION DE LA CARTE.
<                    M : BASCULE DE LA MEMORISATION DES COULEURS ("OFF" A
<                        L'APPEL DE "RV").
<                    G : GENERATION DE L'ITEM1 A PARTIR DE LA MEMOIRE
<                        DES COULEURS DE CMS5.
<                    R : PROGRAMMATION INDIVIDUELLE DES REGISTRES DU
<                        CONTROLEUR DE 'CRT'.
<                    A : MEMORISATION ET TRANSLATION DE LA COULEUR D'UNE
<                        DES 16 SOUS-MATRICES DE LA PALETTE,
<                    B : ET TRANSFERT DE CELLE-CI VERS L'UNE QUELCONQUE
<                        DES 16 SOUS-MATRICES DE LA PALETTE (EMETTEUR
<                        PAR "A" ET RECEPTEUR PAR "B" POUVANT ETRE
<                        CONFONDUS).
<
<
<
< "R" : PROGRAMMATION DES REGISTRES DU CONTROLEUR DE 'CRT' :
<
IREG:    EQU         $
         LAI         MREG-ZERO
         BSR         APRINT
         LAD         DEMHEX
         SVC         0
         BSR         AHEX            < CONVERSION DE L'ADRESSE DE REGISTRE :
         JNE         IREG            < ERREUR...
         JAL         IREG            < ERREUR...
         CPI         NREG
         JGE         IREG            < ERREUR...
         LR          A,B             < B=ADRESSE DU REGISTRE SELECTIONNE...
         LBY         REG1
         STB         REG1
         STBY        REG1
         LBY         REG2
         STB         REG2
         STBY        REG2
IREG1:   EQU         $
         LAI         MVAL-ZERO
         BSR         APRINT
         LAD         DEMHEX
         SVC         0
         BSR         AHEX            < CONVERSION DE LA VALEUR DU REGISTRE :
         JNE         IREG1           < ERREUR...
         JAL         IREG1           < ERREUR...
         CPI         1>NBITOC-1
         JG          IREG1           < ERREUR...
         LR          A,B             < B=VALEUR DU REGISTRE SELECTIONNE...
         LBY         REG3
         STB         REG3
         STBY        REG3
         LBY         REG4
         STB         REG4
         STBY        REG4
         LAD         DEMR5
         SVC         0               < OUVERTURE...
         LAD         DEMR1
         SVC         0               < ENVOI DE 'REG1',
         LAD         DEMR2
         SVC         0               < ENVOI DE 'REG2',
         LAD         DEMR3
         SVC         0               < ENVOI DE 'REG3',
         LAD         DEMR4
         SVC         0               < ENVOI DE 'REG4'.
         LAD         DEMR5
         SVC         0               < FERMETURE...
         BR          ALOOP           < A L'ORDRE SUIVANT...
<
< "M" : MEMORISATION EN ITEM1 DES TABLES DE COULEUR :
<
SCOLOR:  EQU         $
         IC          PITEM1          < PREMIERE FOIS ???
         JG          SCOL4           < NON...
         BSR         AIITEM          < INITIALISATION DE L'ITEM1...
SCOL4:   EQU         $
         LA          MITEM1
         NGR         A,A             < INVERSION DE LA BASCULE...
         STA         MITEM1
         LAI         MRC-ZERO
         BSR         APRINT
         LAI         MOFF-ZERO       < OFF A PRIORI...
         CPZ         MITEM1          < ???
         JG          SCOL1           < OFF...
         LAI         MON-ZERO        < ON...
SCOL1:   EQU         $
         BSR         APRINT
         BR          ALOOP           < A L'ORDRE SUIVANT...
<
< "I" : INITIALISATION DE LA CARTE :
<
RETII1:  EQU         $
         LAI         CUCLIR
         STA         BUFCU+MOT2
         LAD         DEMCU2
         SVC         0               < 'CLEAR' DE LA CARTE...
         STZ         BUFCU+MOT2
         LXI         LLINIT          < X=NOMBRE D'INITIALISATION.
         LAD         DEMCU           < A=ADRESSE DE LA DEMANDE D'INITIALISATION.
INIT1:   EQU         $
         LB          &ALINIT
XWOR%1:  VAL         CUINIT=0-NBITMO+1
         SBT         NBITMO+XWOR%1   < POUR DISCRIMINER D'AVEC LES ORDRES DE
                                     < COULEUR...
         STB         BUFCU
         PSR         X
         SVC         0               < INITIALISATION...
         PLR         X
         JDX         INIT1           < A LA SUIVANTE...
         STZ         BUFCU
         JMP         RETIK2          < VERS LA REMISE EN FONCTION...
<
< U : ENTREE D'UNE TRAME DANS LE MODE "K" ANTERIEUR :
<
RETICU:  EQU         $
         LA          SMOT2           < A=ORDRES CAMERA ANTERIEUR,
         JMP         RETICL          < VERS L'ENVOI...
<
< V : ENTREE D'UNE TRAME CAMERA EN MODE NORMAL :
<
RETIKA:  EQU         $
PROMN::  VAL         '0000           < ADRESSE DE PROM STANDARD,
MODEN::  VAL         '0000           < MODE D'ENTREE STANDARD...
                                     < (ON RENTRE 3 BITS DE POIDS FORTS)
XWOR%2:  VAL         CUIN?CUINR?CUINV?CUINB
XWOR%1:  VAL         CUMODI=0
XWOR%2:  VAL         MODEN>XWOR%1?XWOR%2
XWOR%1:  VAL         CUPROM=0
XWOR%2:  VAL         PROMN>XWOR%1?XWOR%2
         LRM         A
         WORD        XWOR%2          < ENTREE SUR TOUTES LES COULEURS,
RETICL:  EQU         $               < ENTRY POUR "U"...
         STA         BUFCU+MOT2      < EN MODE STANDARD...
         LAD         DEMCU2
         SVC         0               < ENTREE,
RETICM:  EQU         $
         STZ         BUFCU+MOT2      < ET STOP IMMEDIAT AFIN DE
         JMP         RETIK2          < N'ENTRER QU'UNE TRAME...
<
< "K" : COMMANDE DE LA CAMERA :
<
RETIK1:  EQU         $
         STZ         BUFCU+MOT2      < INITIALISATION DU CUMUL DES ORDRES...
         LAI         MRC-ZERO
         BSR         APRINT          < A CAUSE DU RETICULE DE LA VISU...
         LAI         MCAM-ZERO
         BSR         APRINT          < EDITION DE "CAMERA:".
XWOR%1:  VAL         CUIN=0
         LXI         NBITMO-1-XWOR%1
         LAI         MI-ZERO
         BSR         AENTER          < 'IN' OU 'OUT' ???
         JAE         RETIK2          < 'OUT'...
         OR          BUFCU+MOT2      < 'IN'...
         STA         BUFCU+MOT2
XWOR%1:  VAL         CUINR=0
         LXI         NBITMO-1-XWOR%1
         LAI         MR-ZERO
         BSR         AENTER          < SELECTION ROBINET ROUGE...
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
XWOR%1:  VAL         CUINV=0
         LXI         NBITMO-1-XWOR%1
         LAI         MV-ZERO
         BSR         AENTER          < SELECTION ROBINET VERT...
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
XWOR%1:  VAL         CUINB=0
         LXI         NBITMO-1-XWOR%1
         LAI         MB-ZERO
         BSR         AENTER          < SELECTION ROBINET BLEU...
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
RETIK3:  EQU         $
         LAI         MMOD-ZERO
         BSR         APRINT          < "MODE=".
         LAD         DEMHEX
         SVC         0               < ENTREE DU MODE...
         BSR         AHEX            < ET CONVERSION BINAIRE...
         JNE         RETIK3          < ERREUR...
XWOR%1:  VAL         CUMODI=0
XWOR%2:  VAL         -XWOR%1
         JAL         RETIK3          < MAUVAIS MODE...
         CPI         CUMODI>XWOR%2   < VALIDATION,
         JG          RETIK3          < ERREUR...
         SLLS        XWOR%1
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
RETIK4:  EQU         $
         LAI         MAD-ZERO
         BSR         APRINT          < "ADR PROM=".
         LAD         DEMHEX
         SVC         0               < ENTREE DE L'ADRESSE DE LA FONCTION
                                     < DE TRANSFERT EN PROM...
         BSR         AHEX            < ET CONVERSION BINAIRE,
         JNE         RETIK4          < ERREUR...
XWOR%1:  VAL         CUPROM=0
XWOR%2:  VAL         -XWOR%1
         JAL         RETIK4          < ERREUR...
         CPI         CUPROM>XWOR%2   < VALIDATION,
         JG          RETIK4          < ERREUR...
         SLLS        XWOR%1
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
         STA         SMOT2           < SAUVEGARDE POUR "U"...
         LAI         MCONT-ZERO
         LXI         NBITMO-1
         BSR         AENTER          < "CONTINU?"...
         PSR         A               < SAUVEGARDE DE LA REPONSE...
         LAD         DEMCU2
         SVC         0               < ENVOI DE L'ORDRE CAMERA...
         PLR         A               < RESTAURE LA REPONSE A "CONTINU?" :
         JAE         RETICM          < "N" : ON NE RENTRE QU'UNE TRAME...
         JMP         RETICX          < "O" : ON RENTRE EN CONTINU...
RETIK2:  EQU         $
         LAD         DEMCU2
         SVC         0               < ENVOI DU MOT2 DE 'CU3' (ORDRES CAMERA)...
         JMP         RETICX          < VERS L'ORDRE SUIVANT...
RETIC:   EQU         $
<
< ENTREE DU RETICULE :
<
RETICX:  EQU         $
LOOP:    EQU         RETICX          < MODULE D'INTERROGATION...
         LAD         OG
         SVC         0               < MISE EN GRAPHIQUE,
         LAD         CU
         SVC         0               < MISE EN FONCTION DU RETICULE,
         LAD         LG
         SVC         0               < LECTURE DU RETICULE.
<
< ANALYSE DE L'ORDRE :
<
         LBY         BUFCG           < A=CARACTERE DE DEBLOCAGE DE LA VISU.
         CPI         REP0            < ET VALIDATION...
         JL          ERROR           < ERREUR...
         CPI         REPZ            < VALIDATION, SUITE...
         JG          ERROR           < ERREUR...
         LR          A,X             < X=COMMANDE DEMANDEE,
         LA          &AKOM           < A=ADRESSE DU MODULE DE TRAITEMENT...
         LX          BUFX            < X=COORDONNEE X,
         LY          BUFY            < Y=COORDONNEE Y.
         PSR         A
         RSR                         < BRANCHEMENT AU MODULE SPECIFIQUE...
<
< ERREUR :
<
RETICY:  EQU         $
ERROR:   EQU         RETICY          < MODULE D'ERREUR...
         LAD         CG
         SVC         0               < RETOUR EN ALPHANUMERIQUE...
         LAI         MERR-ZERO
         BSR         APRINT
         JMP         RETICX          < ET ON RECOMMENCE...
<
< "F" : RETOUR A "GE" :
<
RETICF:  EQU         $
         STZ         BUFY
         STZ         BUFX
         BSR         ASTOZD          < ENVOI D'UN 'OAB'...
         LRM         W,K
         WORD        BRANCH          < (W)=ADRESSE DE LA BRANCHE D'OVERLAY,
         WORD        PILE-1          < (K)=ADRESSE DE LA PILE 'SMC'...
         LA          NGE
         STA         &ABRANC         < MISE EN PLACE DU NOM DE "GE".
         LAD         RELMEM
         SVC         0
         LAD         DEMBAC
         BSR         AOVL            < ET ON REVIENT A "GE"...
         JMP         RETICY          < IMPOSSIBLE...
<
< "W" : RETOUR AU CCI :
<
RETICW:  EQU         $
         LAD         DEMCCI
         SVC         0
         JMP         RETICX
<
< "0" : SELECTION DU BANK0 EN DIFFUSION :
<
RETIC0:  EQU         $
         STZ         NUMDIF          < ET C'EST TOUT...
         JMP         RETIC9          < VERS LA SELECTION.
<
< "1" : SELECTION DU BANK1 EN DIFFUSION :
<
RETIC1:  EQU         $
         STZ         NUMDIF
         IC          NUMDIF          < FACILE...
RETIC9:  EQU         $
         LA          NUMDIF
         SLLS        CUDIFF=0
         STA         BUFCU           < JUSTE UN ORDRE DE SELECTION...
         JMP         RETIC8
<
< "S" : VALIDATION EMISSION ZDC POUR "C" :
<
RETICS:  EQU         $
         STZ         INDZDC
         IC          INDZDC
         JMP         RETICX
<
< "N" : INVALIDATION EMISSION ZDC DE "C" :
<
RETICN:  EQU         $
         STZ         INDZDC
         JMP         RETICX
<
< "C" : SELECTION DE LA COULEUR...
<
RETICC:  EQU         $
         BSR         AVALXY          < VALIDATION DE (X,Y)...
         JANE        RETICY          < ERREUR DE POSITIONNEMNT...
         BSR         ASTOZD          < ENVOI EVENTUEL EN ZDC...
RETIC8:  EQU         $
         BSR         AMEMCU
RETICZ:  EQU         $
         SVC         0               < OK, ON ENVOIE L'ORDRE DE COULEUR...
         JMP         RETICX
<
< "P" : SELECTION COULEUR AVEC REINITIALISATION AU NOIR PREALABLE :
<
RETICP:  EQU         $
         BSR         AVALXY          < VALIDATION (X,Y)....
         JANE        RETICY          < ERREUR...
         BSR         ASPCU           < REINITIALISATION DES REGISTRES.
         JMP         RETIC8          < VERS SON ENVOI...
<
< "D" : ACCES A LA ZDC EN MODE "C" :
<
RETICD:  EQU         $
         BSR         AGETZD          < ACCES A LA ZDC :
         JAE         RETICX          < 'OAB' : RETOUR AU RETICULE...
SEGX:    EQU         SEG+2+X         < X(EXTREMITE).
SEGY:    EQU         SEG+2+Y         < Y(EXTREMITE).
         LX          SEGX
         LY          SEGY
         BSR         AVALXY          < VALIDATION DE (X,Y).
         JANE        RETICY          < ON ARRETE --> RETICULE...
         BSR         AMEMCU
         SVC         0               < OK, ON PROGRAMME LE 'CU3'...
         JMP         RETICD          < ET ON REBOUCLE...
<
< "Q" : ACCES A LA ZDC EN MODE "P" :
<
RETICQ:  EQU         $
         BSR         AGETZD          < ACCES A LA ZDC :
         JAE         RETICX          < 'OAB' : RETOUR AU RETICULE...
         LX          SEGX
         LY          SEGY
         BSR         AVALXY          < VALIDATION DE (X,Y)...
         JANE        RETICY          < ERREUR : RETOUR AU RETICULE...
         BSR         ASPCU           < REINITIALISATION DES REGISTRES...
         BSR         AMEMCU
         SVC         0               < ET ON COMMANDE LE 'CU3'...
         JMP         RETICQ          < ET ON REBOUCLE...
<
< "T" : TEST DU POINT VIDEO COURANT :
<
RETICT:  EQU         $
         LAI         MRC-ZERO
         BSR         APRINT
         LR          Y,A
         SLRS        DEDY
         SB          NLIG
         NGR         A,Y             < Y=Y(POINT VIDEO COIRANT).
         LR          X,A
         SLRS        DEDX
         LR          A,B             < B=X(POINT VIDEO COURANT).
         LAI         TVIN?TVPR
         BSR         ASP5            < TEST DU POINT (X,Y) SUR LA TRAME "1" :
         JNC         E1              < 0...
         LAI         M1-ZERO
E1:      EQU         $
         BSR         APRINT          < 1 : ON LE DIT...
         LAI         TVIN?TVPV
         BSR         ASP5            < TEST DU POINT (X,Y) SUR LA TRAME "2" :
         JNC         E2              < 0...
         LAI         M2-ZERO
E2:      EQU         $
         BSR         APRINT          < 1 : ON LE DIT...
         LAI         TVIN?TVPB
         BSR         ASP5            < TEST DU POINT (X,Y) SUR LA TRAME "3" :
         JNC         E3              < 0...
         LAI         M3-ZERO
E3:      EQU         $
         BSR         APRINT          < 1 : ON LE DIT...
         BR          ARET            < VERS L'INTERROGATION...
<
<
<        T E S T   P O I N T   :
<
<
<        ARGUMENT :
<                    (A)=NUMERO DE TRAME.
<
<
<        RESULTAT :
<                    (A)=ADRESSE MESSAGE.
<
<
SP5:     EQU         $
         STA         STDKU+3
         LAD         STDKU
         SVC         0               < LECTURE DE LA TRAME "1".
         LR          B,X
         BSR         ATEST           < TEST DU POINT (X,Y) SUR "1".
         LAI         MMOINS-ZERO
         RSR
         PAGE
<
<
<        M E M O R I S A T I O N   D ' U N E   C O U L E U R  :
<
<
PGETC:   EQU         $
         BSR         AVALXY          < RECUPERATION DU REGISTRE DEMANDE :
AERR:    JANE        ERROR           < ERREUR...
         BSR         APTRAN          < ENTREE DE LA TRANSLATION.
         STA         SAVET           < SAUVEGARDE DE LA TRANSLATION DEMANDEE.
         BSR         APERMU          < ENTREE DE LA PERMUTATION (R,V,B)...
         LAI         NSPCOL
         SBT         0
         ACTD        1
         LR          B,A             < A=ADRESSE DE LA MEMOIRE DES COULEURS,
         AD          NUMREG          < A=ADRESSE DU REGISTRE DEMANDE,
         ACTD        1
         STB         SAVEC           < ET SAUVEGARDE DE SON CONTENU...
         BR          ARET
<
<
<        E N T R E E   T R A N S L A T I O N  :
<
<
PTRAN:   EQU         $
         LAI         MTRANS-ZERO
         BSR         APRINT
         LAD         DEMHEX
         SVC         0
         BSR         AHEX
         JNE         PTRAN           < ERREUR...
         RSR
<
<
<        E N T R E E   P E R M U T A T I O N   ( R , V , B )  :
<
<
PERMUT:  EQU         $
         LAI         MPRVB-ZERO
         BSR         APRINT          < MESSAGE,
         LAD         DEMRVB
         SVC         0               < ENTREE DE LA LISTE DE PERMUTATION :
         LAI         XXR             < INITIALISATION A PRIORI...
         STA         AXXR
         LAI         XXV
         STA         AXXV
         LAI         XXB
         STA         AXXB
         LXI         TVPR            < INDEX DU PREMIER :
         LBY         &AREP           < (A)=PREMIER CARACTERE :
         CPI         '04             < EST-CE "EOT" ???
         JE          PERMU1          < OUI, ON ARRETE...
         CPI         '0D             < EST-CE "R/C" ???
         JE          PERMU1          < OUI, ON ARRETE...
         LBI         XXR             < NON,
         BSR         ASP2            < PERMUTATION DU ROUGE.
         STX         AXXR
         LXI         TVPV
         LBI         XXV
         BSR         ASP2            < PERMUTATION DU VERT.
         STX         AXXV
         LXI         TVPB
         LBI         XXB
         BSR         ASP2            < PERMUTATION DU BLEU.
         STX         AXXB
PERMU1:  EQU         $
         RSR
         PAGE
<
<
<        T R A N S F E R T   D ' U N E   C O U L E U R  :
<
<
PSTOC:   EQU         $
         BSR         AVALXY          < RECUPERATION DU REGISTRE DEMANDE :
         JANE        AERR
         LY          NUMREG          < Y=REGISTRE DEMANDE,
         LB          SAVEC
         SLLD        LREG            < B=VALEUR A LUI DONNER...
         BSR         ASP3            < GENERATION DU (B,V,R)...
         BR          ARET            < ET C'EST TOUT...
<
<
<        G E N E R A T I O N   D U   ( B , V , R )  :
<
<
<        ARGUMENT :
<                    (B)=CONTENU DU REGISTRE COURANT,
<                    (Y)=NUMERO DU REGISTRE COURANT.
<
<
SP3:     EQU         $
         LA          AXXB
         BSR         ASP1            < GENERATION DU BLEU,
         LA          AXXV
         BSR         ASP1            < GENERATION DU VERT,
         LA          AXXR
         BSR         ASP1            < GENERATION DU BLEU.
         RSR
<
<
<        T R A N S L A T I O N   E T   E N V O I   C O U L E U R  :
<
<
SP1:     EQU         $
         IF          XXABS-0,,XWOR%,
         IF          ATTENTION : LE 'JAE' ET CELUI DE 'SP4' EST IDIOT !!!
XWOR%:   VAL         0
         JAE         SP14            < CAS D'UNE COMPOSANTE ABSENTE...
         ORR         Y,A             < CONCATENATION NUMERO DE REGISTRE,
         SLLD        LREG            < CONCATENATION DU NIVEAU DE GRIS,
         PSR         B
         LBI         0
         SCRS        LREG
         SCLD        LREG
         XR          A,B             < A=NIVEAU DE GRIS SEUL,
         AD          SAVET           < QUE L'ON TRANSLATE,
         CPI         CUNIVO          < ET QUE L'ON VALIDE :
         JL          SP11            < OK...
         LAI         CUNIVO          < MINORATION...
SP11:    EQU         $
         JAGE        SP12            < OK...
         LAI         0               < MAJORATION...
SP12:    EQU         $
         ORR         B,A             < RECONCATENATION...
         PLR         B
         STA         BUFCU
         LA          NUMDIF          < NUMERO DU BANK DE DIFFUSION.
         SLLS        CUDIFF=0
         OR          BUFCU
         STA         BUFCU
         BSR         AMEMCU          < AFIN DE PERMETTRE DES INTERPOLATIONS
                                     < ENTRE 2 PALETTES REGISTRE PAR REGISTRE
                                     < LORSQUE MITEM1=-1.
         SVC         0               < ET ENVOI DE LA COULEUR...
SP13:    EQU         $
         RSR
<
< MISE A JOUR DE 'B' POUR UN
< CANAL COULEUR ABSENT :
<
SP14:    EQU         $
         SLLD        LREG
         JMP         SP13            < ET ON SORT...
         PAGE
<
<
<        M E M O I R E   D E S   C O U L E U R S  :
<
<
GCOUL:   EQU         $
<
< ENTREE DE LA TRANSLATION :
<
         BSR         APTRAN          < ENTREE DE LA TRANSLATION...
         STA         CTRANS          < CONSTANTE DE TRANSLATION DES NIVEAUX
                                     < DE GRIS...
<
< ENTREE DE LA PERMUTATION DES COULEURS :
<
         BSR         APERMU
<
< GENERATION :
<
         BSR         AIITEM          < INITIALISATION DE L'ITEM1...
         STZ         XITEM1          < RETOUR EN DEBUT D'ITEM,
         LAI         "&"             < ET GENERATION DU DEBUT DU PROGRAMME...
         BSR         ASTIT
         LAI         "R"
         BSR         ASTIT
         LAI         "V"
         BSR         ASTIT
         LAI         "B"
         BSR         ASTIT
         LAI         ";"
         BSR         ASTIT
         LAI         " "
         BSR         ASTIT
         BSR         ASTIT
         BSR         ASTIT
         BSR         ASTIT
         BSR         ASTIT
         BSR         ASTIT
         BSR         ASTIT
         LAI         ">"
         BSR         ASTIT
         LAI         "R"
         BSR         ASTIT
         LAI         "V"
         BSR         ASTIT
         LAI         "B"
         BSR         ASTIT
         LAI         "("
         BSR         ASTIT
         LAI         "*"
         BSR         ASTIT
         LAI         ";"
         BSR         ASTIT
         LAI         "G"
         BSR         ASTIT
         LAI         NBCAR
         STA         XITEM1          < POSITIONNEMENT SUR LA 2EME LIGNE...
         LAI         NSPCOL
         SBT         0
         ACTD        1
         LR          B,Y             < Y=ADRESSE DE LA MEMOIRE DES COULEURS,
         LXI         0               < X=NUMERO DES REGISTRES DANS LA MEMOIRE.
GCOUL1:  EQU         $
         LR          Y,A
         ACTD        1               < B=CONTENU DU REGISTRE COURANT (X).
         SLLD        LREG            < ET ELIMINATION DES PREMIERS BITS...
<
< CANAL BLEU :
<
         LA          AXXB            < CANAL BLEU,
         BSR         ASP4            < POUR MISE DANS L'ITEM1.
<
< CANAL VERT :
<
         LA          AXXV            < CANAL VERT,
         BSR         ASP4            < POUR MISE DANS L'ITEM1.
<
< CANAL ROUGE :
<
         LA          AXXR            < CANAL ROUGE,
         BSR         ASP4            < POUR MISE DANS L'ITEM1.
<
< REGISTRE SUIVANT :
<
         ADRI        1,Y
         ADRI        1,X
         LR          X,A
XWOR%1:  VAL         CUREG=0
XWOR%1:  VAL         -XWOR%1
         CPI         CUREG>XWOR%1+1  < CHANGE-T'ON DE JEU ???
         JNE         GCOUL2          < NON...
         LA          XITEM1          < OUI, ON CHANGE DE LIGNE :
         SLRD        NBITMO
         DV          ANBCAR
         ADRI        1,A
         MP          ANBCAR
         STB         XITEM1
GCOUL2:  EQU         $
XWOR%1:  VAL         CUREB=0
XWOR%1:  VAL         -XWOR%1
         CPI         CUREB>XWOR%1
         JLE         GCOUL1          < AU SUIVANT...
         LA          XITEM1
         SLRD        NBITMO
         DV          ANBCAR
         ADRI        1,A
         MP          ANBCAR
         ADRI        -2,B
         STB         XITEM1          < POSITIONNEMENT AU BOUT DE LE DERNIERE
                                     < LIGNE...
         LAI         "F"
         BSR         ASTIT
         LAI         ")"
         BSR         ASTIT
         STZ         CTRANS          < REINITIALISATION DE CTRANS...
         BR          ARET            < FINI...
<
<
<        P R E P A R A T I O N   R E G I S T R E
<        E T   E N V O I   A   L ' I T E M 1  :
<
<
SP4:     EQU         $
         JAE         SP14            < CANAL ABSENT, VERS LA MISE A JOUR DE 'B'.
         ORR         X,A             < ADRESSE DU REGISTRE,
         SLLD        LREG            < NIVEAU DE GRIS,
         BSR         ASTHEX          < ET MISE EN ITEM1...
SP41:    EQU         $
         RSR
         PAGE
<
<
<        R E C A L A G E   D E S   I M A G E S   C A M E R A S  :
<
<
DECAL:   EQU         $
XWOR%1:  VAL         CUREG=0
XWOR%1:  VAL         -XWOR%1
XWOR%1:  VAL         CUREG>XWOR%1
         IF          1>NCOOL-1-XWOR%1,,XWOR%,
         IF          ATTENTION : INCOMPATIBILITE 'CUREG' ET 'NCOOL' !!!
XWOR%:   VAL         0
         LRM         A,B,X
         WORD        0               < A=ADRESSE RELATIVE EN 'CDAI',
         WORD        LIGNE           < B=ADRESSE RECEPTRICE.
         WORD        LIMAG/CNMPL*NCOOL
         PSR         A,B,X
DECAL1:  EQU         $
         PSR         A,B,X
         LXI         CNMPL
         RCDA
                                     < LECTURE D'UNE LIGNE MONOCHROME,
         XM          LIGNE+LIG0      < RECUPERATION DU PREMIER MOT ET SAVE (A),
         STA         LIGNE+CNMPL     < QUE L'ON MET EN QUEUE,
         LA          LIGNE+LIG0      < RESTAURE L'ADRESSE EN "CDAI",
         ADRI        1,B             < AFIN DE DECALER CIRCULAIREMENT A GAUCHE,
         LXI         CNMPL
         WCDA
                                     < REECRITURE DE LA LIGNE MONOCHROME DECALEE
                                     < CIRCULAIREMENT A GAUCHE...
         PLR         A,B,X
         ADRI        CNMPL,A         < PASSAGE A LA LIGNE SUIVANTE,
         JDX         DECAL1          < SI ELLE EXISTE...
         PLR         A,B,X
         ADRI        CNMPL-1,A       < AFIN D'ATTEINDRE LA DERNIERE COLONNE...
         LXI         NCOOL           < NOMBRE DE STACKS,
DECAL4:  EQU         $
         PSR         X
         LXI         KDECAL          < (X)=NOMBRE DE LIGNES DE DECALAGE...
DECAL5:  EQU         $
         PSR         A,B,X
         LR          A,Y             < Y=SAVE L'ADRESSE DE DEPART DE LA TRAME...
         LRM         X
         WORD        LIMAG/CNMPL+1   < AFIN DE SE MORDRE LA QUEUE... (+1 POUR
                                     < FAIRE UN DECALAGE CIRCULAIRE)
         STZ         LIGNE+LIG1      < PAR PROPRETE PURE...
DECAL2:  EQU         $
         PSR         X
         XM          LIGNE+LIG1      < (ET SAVE (A))
         STA         LIGNE+LIG0      < DECALAGE...
         LA          LIGNE+LIG1      < ET RESTAURE (A)...
         ADRI        -CNMPL,A        < PASSAGE A UN MOT PLUS HAUT...
         CPR         Y,A             < SORT-ON DU STACK COURANT ???
         JGE         DECAL3          < NON, (A)>=(Y)...
         AD          ALIMAG          < ENFIN MODULO 'LIMAG'...
DECAL3:  EQU         $
         ADRI        1,B             < PASSAGE SUR LIGNE+1,
         LXI         1
         RCDA
                                     < ACCES AU MOT(A-KDECAL),
         ADRI        -1,B
         LXI         1
         WCDA
                                     < QUE L'ON A SAUVEGARDE DANS LIGNE+1,
                                     < ET QUE L'ON ECRASE PAR LIGNE+0...
         PLR         X
         JDX         DECAL2          < PASSAGE AU MOT PRECEDENT...
         PLR         A,B,X
         JDX         DECAL5          < ET ITERONS 'KDECAL' FOIS 1 LIGNE...
         PLR         X
         AD          ALIMAG          < PASSAGE AU STACK SUIVANT...
         JDX         DECAL4          < S'IL EXISTE...
         BR          ARET            < ET C'EST TOUT...
         PAGE
<
<
<        I N T E R P O L A T I O N  :
<
<
GINT:    EQU         $
<
< ENTREE DE LA TRANSLATION :
<
         BSR         APTRAN          < ENTREE DE LA TRANSLATION...
         STA         SAVET           < TRANSLATION SYSTEMATIQUE.
<
< ENTREE DE LA PERMUTATION :
<
         BSR         APERMU
<
< ENTREE DU NIVEAU DE DEPART :
<
GINT1:   EQU         $
         LAI         MNIV1-ZERO
         BSR         APRINT
         LAD         DEMHEX
         SVC         0
         BSR         AHEX
         JNE         GINT1           < ERREUR...
         JAL         GINT1           < ERREUR...
         CPI         LTCU-1
         JG          GINT1           < ERREUR...
         STA         NIV1            < NIVEAU DE DEPART.
<
< ENTREE DU NIVEAU D'ARRIVEE :
<
GINT2:   EQU         $
         LAI         MNIV2-ZERO
         BSR         APRINT
         LAD         DEMHEX
         SVC         0
         BSR         AHEX
         JNE         GINT2           < ERREUR...
         JAL         GINT2           < ERREUR...
         CPI         LTCU-1
         JG          GINT2           < ERREUR...
         CP          NIV1
         JLE         GINT1           < ERREUR, IL FAUT NIV1<NIV2...
         STA         NIV2            < NIVEAU D'ARRIVEE.
<
< ACCES AUX REGISTRES DE COULEUR :
<
         LAI         NSPCOL
         SBT         0
         ACTD        1
         LR          B,A             < (A)=ADRESSE DE LA MEMOIRE DES COULEURS.
         LR          B,Y             < ET SAVE DANS 'Y'...
<
< ACCES AUX COULEURS DE 'NIV2' :
<
         AD          NIV2            < (A)=ADRESSE DU REGISTRE (NIV2),
         ACTD        1
         LAI         0
         SLLD        LREG+LREG
         STA         BLEU2           < BLEU2,
         LAI         0
         SLLD        LREG
         STA         VERT2           < VERT2,
         LAI         0
         SLLD        LREG
         FLT
         FST         ROUGE2          < ROUGE2,
<
< ACCES AUX COULEURS DE 'NIV1' :
<
         LR          Y,A
         AD          NIV1            < (A)=ADRESSE DU REGISTRE (NIV1),
         ACTD        1
         LAI         0
         SLLD        LREG
         PSR         B               < SAVE LE CONTENU DU REGISTRE (NIV1)...
         SLLD        LREG
         STA         BLEU1           < BLEU1,
         LAI         0
         SLLD        LREG
         STA         VERT1           < VERT1,
         LAI         0
         SLLD        LREG
         FLT
         FST         ROUGE1          < ROUGE1,
         LA          VERT1
         FLT
         FST         VERT1           < VERT1,
         LA          BLEU1
         FLT
         FST         BLEU1           < BLEU1.
<
< REGENERATION A PRIORI
< DU REGISTRE (NIV1) :
<
         LY          NIV1            < (Y)=REGISTRE DE DEPART,
         PLR         B               < (B)=SON CONTENU INITIAL,
         BSR         ASP3            < QUE L'ON RENVOIE AU CAS OU IL Y AURAIT
                                     < PERMUTATION ET/OU TRANSLATION...
<
< NOMBRE D'ITERATIONS, ET 'PAS' :
<
         LA          NIV2
         SB          NIV1
         LR          A,X             < (X)=NOMBRE DE PAS,
         FLT
         FST         FPAS
<
< CALCUL DU PAS (ROUGE2,VERT2,BLEU2)
< SUR LES COULEURS (ROUGE1,VERT1,BLEU1) :
<
         FLD         ROUGE2
         FSB         ROUGE1
         FDV         FPAS
         FST         ROUGE2          < PAS ROUGE,
         LA          VERT2
         FLT
         FSB         VERT1
         FDV         FPAS
         FST         VERT2           < PAS VERT,
         LA          BLEU2
         FLT
         FSB         BLEU1
         FDV         FPAS
         FST         BLEU2           < PAS BLEU.
<
< ITERATION SUR CHAQUE REGISTRE INTERMEDIAIRE :
<
GINT3:   EQU         $
         CPZ         MITEM1          < MEMORISE-T'ON DANS L'ITEM1 ???
         JLE         GINT4           < OUI, ON NE CHANGE PAS LE REGISTRE COU-
                                     < RANT (Y), AFIN DE PERMETTRE DES INTER-
                                     < POLATIONS ENTRE PALETTES (JEUX 0 ET 1),
                                     < ET CECI, REGISTRE PAR REGISTRE (AUTANT
                                     < D'INTERPOLATIONS A FAIRE QU'IL Y A DE
                                     < REGISTRES SIGNIFICATIFS : 7 OU 8).
         ADRI        1,Y             < NON, ON PASSE DONC AU REGISTRE SUIVANT..
GINT4:   EQU         $
         PSR         X               < SAVE LE DECOMPTE...
         LXI         0               < CLEAR LE CUMUL DES NIVEAUX...
         FLD         ROUGE1
         FAD         ROUGE2
         FST         ROUGE1          < PROGRESSION DU ROUGE,
         BSR         AROND           < ET CUMUL...
         FLD         VERT1
         FAD         VERT2
         FST         VERT1           < PROGRESSION DU VERT,
         BSR         AROND           < ET CUMUL...
         FLD         BLEU1
         FAD         BLEU2
         FST         BLEU1           < PROGRESSION DU BLEU,
         BSR         AROND           < ET CUMUL...
         BSR         ASP3            < ENVOI DU (B,V,R).
         PLR         X
         JDX         GINT3           < AU REGISTRE SUIVANT...
         BR          ARET            < ET RETOUR...
<
<
<        A R R O N D I   E T   C U M U L   D E S   N I V E A U X  :
<
<
<        ARGUMENTS :
<                    (A,B)=NIVEAU,
<                    (X)=CUMUL COURANT.
<
<
<        RESULTATS :
<                    (X)=(B)=NOUVEAU CUMUL COURANT.
<
<
ROND:    EQU         $
         FAD         F05
         FIX                         < ARRONDI (EXCES OU DEFAUT...).
         LR          X,B
         SLRD        LREG            < CONCATENATION CUMULATIVE,
         LR          B,X             < ET SAVE DANS 'X'...
         RSR
         PAGE
<
<
<        P O I N T   D ' E N T R E E  :
<
<
PRV:     EQU         $
         LRM         C,L,K
         WORD        IMAG            < INITIALISATION DE C,
         WORD        LOC+'80         < INTIALISATION DE L,
         WORD        STACK-1         < INITIALISATION DE K.
         LAD         DEMMEM
         SVC         0               < POUR LA VIDEO...
         LAD         DEMCDA
         SVC         0               < "!CDAI"...
         STZ         CTRANS          < AU CAS DES ALT-MODES...
         LAI         MRVB-ZERO
         BSR         APRINT          < POUR AVOIR 'RVB'...
         LAI         MOFF-ZERO       < ITEM1 OFF A PRIORI...
         CPZ         MITEM1          < ???
         JG          PRV1            < OFF...
         LAI         MON-ZERO        < ON...
PRV1:    EQU         $
         BSR         APRINT          < EDITION...
         BSR         ARETIC
         PAGE
<
<
<        I M P L A N T A T I O N  :
<
<
         IF          $-ITEM2,XWOR%,XWOR%,
         IF          ATTENTION : PROCESSEUR TROP LONG !!!
XWOR%:   VAL         0
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE VOLONTAIRE
                                     < SI MAUVAISE IMPLANTATION...
         DZS         X10+1           < PAR PROPRETE !!!!
         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.