IF          GOEI,X100,,X100
NMPROC:  VAL         "GO"            < NOM DU PROCESSEUR.
         IDP         "GO - RELEASE 01/06/1979"
X100:    VAL         0
         IF          GOEI,,X100,
NMPROC:  VAL         "EI"            < NOM DU PROCESSEUR.
         IDP         "EI - RELEASE 01/06/1979"
X100:    VAL         0
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEFINITION ITEM#
<
<
<        C O R P S   I T E M   D E   S E R V I C E  :
<
<
SERASE:  VAL         0               < SERASE=0 : EFFACER L'ECRAN APRES,
                                     <       #0 : NE PAS EFFACER L'ECRAN
SDUREE:  VAL         1               < CONTIENT LA DUREE EN SECONDES
                                     < DES PAUSES SYNCHRONES.
SDUREA:  VAL         2               < CONTIENT EN ASCI LA DUREE
                                     < EN MINUTES DES PAUSES SYNCHRONES.
SDEBS:   VAL         1               < ADRESSE DE DEBUT DE SEQUENCE.
SFINS:   VAL         2               < ADRESSE FIN SEQUENCE.
SMOVE:   VAL         3               < QUE FAIRE ??? LES BITS SUIVANTS
                                     < INDIQUENT CE QU'IL FAUT FAIRE
                                     < VAEC CET ITEM ; SI SMOVE=0 ,
                                     < IL S'AGIT D'UN 'SURCH & PLAY'.
SPLAY:   VAL         0               < PLAY EN CONTINU (SMOVE<0).
SURCH:   VAL         1               < POSITIONNEMENT PUIS STOP.
SARRET:  VAL         2               < STOP MAGNETOSCOPE.
LIC:     VAL         2               < LONGUEUR CORPS ITEMS 'C'/'E' ,
                                     < EN OCTETS.
LIW:     VAL         6               < LONGUEUR ITEM 'W' (EN OCTETS).
                                     < (LONGUEUR DU CORPS)
LIS:     VAL         8               < LONGUEUR OCTETS DU CORPS
                                     < D'UN ITEM 'S'.
         EOT         #SIP DEF PROCESSEUR#
         PAGE
<
<
<        N O E U D S   D E   T R A V A I L  :
<
<
         TABLE
NOEUD1:  EQU         BRANCH
         WORD        EIGRAF          < @DE LANCEMENT DE 'EI' (COMPATIBLE
                                     < AVEC 'CALL' : ELLE EST DONNEE
                                     < EN SLO+'10).
         WORD        0               < POUR FAIRE +1 SUR $.
         PROG
EI:      EQU         $               < POINT D'ENTREE LORS D'UN APPEL
                                     < PAR LE CCI DE CMS4 (P='12).
         LRP         L
         BR          -2,L            < VERS L'INITIALISATION.
         TABLE
X3:      VAL         $-NOEUD1
         DZS         LNOEUD-X3       < SUITE DE L'ESPACE DE NOEUD1.
         WORD        NOEUD1+XNOMC,X  < RELAI D'ACCES A <NOMC1>.
         WORD        NOEUD1+XNOM,X   < RELAI D'ACCES A <NOM1>.
NOEUD2:  DZS         LNOEUD          < NOEUD-FILS.
         WORD        NOEUD2+XNOMC,X  < RELAI D'ACCES A <NOMC2>.
         WORD        NOEUD2+XNOM,X   < RELAI D'ACCES A <NOM2>.
         PAGE
<
<
<        P I L E   D E   T R A V A I L  :
<
<
PILE:    VAL         'FF0-6          < 6 MOTS SONT RESERVES POUR
                                     < LA PILE DE TRAVAIL AU SOMMET
                                     < DE L'ESPACE MEMOIRE.
         PAGE
<
<
<        I T E M 1   E T   I T E M 2  :
<
<
ITEM1:   EQU         ZERO+PILE-LTNI
ITEM2:   EQU         ITEM1-LTNI
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL       LOCEI
LOC:     EQU         $
<
<        B U F F E R S   E T
<        M E S S A G E S  :
<
BUFFER:  WORD        0               < BUFFER DE DEBLOCAGE DES PAUSES.
MRCLF:   BYTE        1;'6D
MQCM:    BYTE        9;'6D
         ASCI        "REPONSE>"
MRCCI:   BYTE        11;'6D
         ASCI        "RETOUR CCI"
MABS:    BYTE        23;'6D
MABSH:   WORD        0               < ABSENCE EN HEURES.
         ASCI        "H "
MABSM:   WORD        0               < ABSENCE EN MINUTES.
         ASCI        "M "
MABSS:   WORD        0               < ABSENCE EN SECONDES.
         ASCI        "S D'ABSENCE."
MDUREE:  BYTE        15;'6D
         WORD        0               < POUR METTRE LA DUREE ASCI
                                     < DES PAUSES SYNCHRONES (MINUTES).
         ASCI        "MN DE PAUSE."
MPAUSE:  BYTE        6;"P"
         ASCI        "AUSE> "
MNOM:    BYTE        9;'6D
         ASCI        "ORIGINE>"
MERN:    BYTE        5;'6D
         ASCI        "!ERN"
MERI:    BYTE        5;'6D
         ASCI        "!ERI"
MIT:     BYTE        13;'6D
         ASCI        "ITEM DESIRE="
MEDN:    BYTE        4;'6D
         ASCI        "-->"
MDATE:   ASCI        "!DAT"
         BYTE        "E";'04
<
<        B L O C   D E   S A U V E G A R D E   L O R S
<        D E S   R E T O U R S   AU   C C I  :
<
SAVE:    ASCI        "SAV:"
IDNC:    BYTE        '60;'04         < OCTET0(IDNC)=SYSID(UTILISATEUR)
                                     < +'60 ; ON NE PEUT METTRE BRUTA-
                                     < LEMENT LE SYSID DANS LE <NOM> ,
                                     < EN EFFET ON AURAIT DES PROBLEMES
                                     < AVEC LE SYSID=4 (CF. 'EOT' !!!)
CLENC:   BYTE        0;"S"+'20       < CLEF DE VALIDATION DE L'INFOR-
                                     < MATION QUI SUIT ; ON A :
                                     < OCTET0(CLENC)=SYSID(UTILISATEUR).
SAVNC:   DZS         3               < <NOMC> DU NOEUD COURANT SUR
                                     < 3 MOTS.
HEURNC:  WORD        0               < HEURE DE LA SAUVEGARDE EXPRI-
                                     < MEE EN MULTIPLES DE 2 SECONDES.
LSAVE:   VAL         $-SAVE*2        < LONGUEUR EN OCTETS DU <NOM>+
                                     < <VALEUR>.
<
<        D E M A N D E S   A   C M S 4  :
<
DEBLOC:  WORD        '0101           < DEMANDE DE DEBLOCAGE PAUSE.
         WORD        BUFFER-ZERO*2
         WORD        1               < 1 CARACTERE DE DEBLOCAGE SUFFIT.
DEMIN:   WORD        '0101           < DEMANDE D'ENTREE AVEC ECHO.
         WORD        NOEUD2-ZERO+XNOM*2
         WORD        LNOM            < LONGUEUR MAX DE <NOM>.
DEMIT:   WORD        '0101           < ENTREE DU NOM D'UN ITEM.
         WORD        ITEM1-ZERO+XNOM*2
         WORD        LNOM
DEMEDN:  WORD        '0202           < EDITION DU NOM D'UN ITEM,
         WORD        ITEM1-ZERO+XNOM*2
         WORD        LNOM            < LA LONGUEUR EST VARIABLE...
DEMOUT:  WORD        '0202           < DEMANDE DE SORTIE.
         WORD        0               < @OCTET DU BUFFER.
         WORD        7               < 7 CARACTERES DU <NOMC> A SORTIR.
DEMERA:  WORD        '0205           < EFFACEMENT DE L'ECRAN.
DEMSGN:  WORD        '0402           < INITIALEMENT UN STORE DE 'EI    '
                                     < LUI-MEME.
         WORD        NOEUD1-ZERO*2   < @BRANCHE D'OVERLAY.
         WORD        ZERO-NOEUD1+PILE-LTNI-LTNI*2
         WORD        -1              < LA VALEUR SUIT IMMEDIATEMENT
                                     < LE NOM.
DEMSAV:  WORD        '0402           < BLOC DE SAUVEGARDE DU NOEUD
                                     < COURANT PAR L'INTERMEDAIARE
                                     < DU SGN.
         WORD        SAVE-ZERO*2     < @OCTET DU BLOC DE SAUVEGARDE.
         WORD        LSAVE           < TAILLE EN OCTETS <NOM>+<VALEUR>.
         WORD        -1              < LA <VALEUR> SUIT LE <NOM>.
CCI:     WORD        '0001
DEMCCI:  EQU         CCI             < ON NE SAIT JAMIS ...
SLEEP:   WORD        '0005           < DEMANDE DE MISE EN SOMMEIL.
         WORD        0
         WORD        0               < TEMPS EN SECONDES DEMANDE.
COMAND:  WORD        '0002           < ACCES AU CCI NON INTERACTIF.
         WORD        0               < @OCTET DE LA CARTE.
         WORD        80              < LONGUEUR MAX D'UNE CARTE.
<
<        C O N S T A N T E S  :
<
KIN:     WORD        -1              < POUR RETOURNER A 'GE' SOUS 'GO'...
         IF          GOEI,,X100,
EIGO:    WORD        0               < INDICATEUR DU PROCESSUR EXECUTE :
X100:    VAL         0
         IF          GOEI,X100,,X100
EIGO:    WORD        1               < INDICATEUR DU PROCESSER EXECUTE :
X100:    VAL         0
                                     < -1 : GENERATION DE 'EI' ET 'GO' ,
                                     < 0 : PROCESSUR 'EI' ,
                                     < 1 : PROCESSEUR 'GO'.
NGE:     ASCI        "GE"            < POUR NOMMER 'GE'.
NGR:     ASCI        "G3"            < NOM DE L'EDITEUR GRAPHIQUE.
NEX:     ASCI        "3D"            < NOM DU PROCESSEUR GRAPHIQUE.
NED:     ASCI        "ED"            < NOM DU PROCESSEUR 'ED'.
NPH:     ASCI        "PH"            < NOM DE L'ANALYSEUR DU FRANCAIS.
NVI:     ASCI        "VI"            < NOM DU PROCESSEUR VIDEO.
NSC:     ASCI        "SC"            < NOM DU PROCESSEUR FILM DIGITAL.
EAO:     ASCI        ":EAO"          < ACN DU SYSTEME D'ENSEIGNEMENT.
ALTNI2:  WORD        LTNI*2          < LONGUEUR TOTALE EN OCTETS
                                     < DES ITEMS (EN-TETE+CORPS).
ALTNI:   WORD        LTNI            < LONGUEUR TOTALE EN MOTS ITEM.
F3:      WORD        0               < STOCKAGE INTERMEDIAIRE DE F3 :
                                     < F3=SIGMA(EOR(I*K(I))).
                                     < (APPROXIMATIVEMENT ????....)
LOVL:    WORD        ZERO-NOEUD1+PILE-LTNI-LTNI*2
                                     < LONGUEUR EN OCTETS DES BRANCHES
                                     < D'OVERLAY.
C10:     WORD        10              < POUR LES CONVERSIONS DECIMALES.
C16:     WORD        16              < CONVERSION BCD-->ASCI.
C60:     WORD        60              < 1 MINUTE=60 SECONDES.
C3600:   WORD        3600            < 1 HEURE=3600 SECONDES.
NPROC:   WORD        0               < POUR RECUPERER LE NOM DU
                                     < PROCESSEUR GRAPHIQUE POUR
                                     < LES ITEMS DE TYPE 'D'.
<
< ENVOI EN ZDC :
<
VALZDC:  WORD        0               < MOT DE SYNCHRONISATION...
ZDC2:    DZS         XXNOMC/XXNOCM   < <NOMC> QUE L'ON ECHANGE...
         BYTE        XXEOT;0
LONZDC:: VAL         $-VALZDC*2
AZDC:    WORD        ZDC2,X          < POUR DEPLACER <NOMC>...
DEMZDC:  WORD        '0008           < ACCES <NOMC> EN ZDC.
         WORD        VALZDC-ZERO*2
         WORD        LONZDC
         WORD        'FFC0
DELZDC:  WORD        '000A           < ENVOI DE L'ACQUITTEMENT ZDC.
         WORD        VALZDC-ZERO*2
         WORD        ZDC2-VALZDC*2
         WORD        'C000
<
<        A D R E S S E S   D E   T A B L E S  :
<
AN1:     WORD        NOEUD1          < ADRESSE DU NOEUD1.
AN2:     WORD        NOEUD2          < ADRESSE DU NOEUD2.
AI1:     WORD        ITEM1           < ADRESSE DE ITEM1.
AI2:     WORD        ITEM2           < ADRESSE DE ITEM2.
AKI1:    WORD        ITEM1+XWORK2,X  < RELAI VERS LE CORPS DE L'ITEM1.
ACOM:    WORD        COM,X           < RELAI DE LA TABLE D'EXECUTION
                                     < DE L'ITEM COURANT (ITEM1).
APILE:   WORD        PILE-1          < VALEUR INITIALE DU REGISTRE K.
<
<        R E L A I S   D E S   R O U T I N E S :
<
AOVL:    WORD        OVL             < INTERFACE DE CHARGEMENT DES
                                     < BRANCHES D'OVERLAY.
ACODAG:  WORD        CODAGE          < CODAGE DES <NOM> EN <NOMC>.
APRINT:  WORD        PRINT           < ENVOI D'UN MESSAGE.
ACALCI:  WORD        CALCCI          < APPEL CCI NON INTERACTIF.
AGTCAR:  WORD        GETCAR          < ROUTINE D'ACCES A UN CARACTERE.
ACONV:   WORD        CONV            < CONVERSIONS DECIMALES.
ASGN:    WORD        SGN             < ACCES AU SGN POUR 'LOAD-VALUE
                                     < SOUS :SYS'.
ASAV:    WORD        SAV             < ACCES AU SGN LORS DE LA SAU-
                                     < VEGARDE DU NOEUD COURANT.
AERR:    WORD        ERREUR          < ERREURS DEFINITIVES ...
APGO:    WORD        PGO             < ENTRY SECONDAIRE DE 'GO'.
APEI:    WORD        PEI             < ENTRY SECONDAIRE DE 'EI'.
AGOBGE:  WORD        E500            < RETOUR EN ERREUR A 'GE'.
         PAGE
<
<
<        T A B L E   D ' E X E C U T I O N   D E S   I T E M S  :
<
<
<        FONCTION :
<                      CETTE TABLE EST INDEXEE PAR LE
<                    TYTPE DE L'ITEM COURANT (ITEM1) A
<                    UNE TRANSLATION PRES ('41) . ELLE
<                    PERMET D'ACCEDER UN MODULE D'EXECUTION
<                    DU CONTENU DE L'ITEM1.
<
<
COM:     EQU         $-'41           < ON COMMENCE AU TYPE 'A'.
         WORD        ERREUR          < A
         WORD        ERREUR          < B
         WORD        GOCCI           < C : RETOUR AU CCI.
         WORD        DESSIN          < D : EXECUTION PROG. GRAPHQIUE.
AERASE:  WORD        ERASE           < E : EFFACEMENT ECRAN.
         WORD        ERREUR          < F
AGOGE:   WORD        GOGE            < G : RETOUR A !GE.
         WORD        ERREUR          < H
         WORD        FILMD           < I : FILM DIGITAL.
         WORD        ERREUR          < J
         WORD        ERREUR          < K
         WORD        ERREUR          < L
         WORD        QCM             < M : QUESTIONS A CHOIX MULTIPLE.
         WORD        ERREUR          < N
         WORD        ERREUR          < O
         WORD        PROG            < P : RUNNER-PROCESSEUR GRAPHIQUE.
         WORD        ERREUR          < Q
         WORD        REPON           < R : REPONSE EN FRANCAIS.
         WORD        VIDEO           < S : SEQUENCE VIDEO.
         WORD        TEXTE           < T : AFFICHAGE D'UN TEXTE.
         WORD        ERREUR          < U
         WORD        VIDE            < V : ITEM VIDE.
         WORD        WAIT            < W : PAUSE.
         WORD        ERREUR          < X
         WORD        ERREUR          < Y
         WORD        ERREUR          < Z
         PAGE
<
<
<        C O D A G E   < N O M >   E N   < N O M C >  :
<
<
<        FONCTION :
<                      CETTE ROUTINE CODE SUR 6 CARACTERES
<                    <NOMC> LES 'N' CARACTERES <NOM>
<                    D'UN NOEUD.
<                      CECI EST FAIT SUIVANT UN SUPERBE
<                    ALGORITHME DE COMPACTAGE PAS MAL
<                    UNIVOQUE ...
<
<
<        ARGUMENT :
<                    W=@NOEUD.
<
<
<        RESULTAT :
<                    X=0 (OK).
<
<
         PROG
         USE         W,NOEUD
CODAGE:  EQU         $
<
< INITIALISATION DU CODEUR :
<
         STZ         F3              < RAZ DE LA FONCTION F3.
         LYI         3               < 2*3 CARACTERES A METTRE A BLANC.
         LXI         0               < INDEX DE MISE A BLANC.
         LAI         '20
         SBT         2               < A='SPACE''SPACE'.
E1:      EQU         $
         STA         &ANOMC          < MISE DE <NOMC> A 'SPACE'.
         ADRI        1,X             < INDEX DE RAZ.
         CPR         X,Y
         JNE         E1              < NEXT ....
         LXI         -1              < X=INDEX CARACTERE.
                                     <   =F1=LONGUEUR DU MOT ENTRE.
         LBI         0               < B=F2.
<
<        UTILISATION DES REGISTRES :
<
<                    B=F2=EOR(K(I)) : EOR SUR TOUS LES
<                      CARACTERES DE K(4) A K(L).
<                      F2=EOR(K(4),K(5),...,K(L)) ,
<                    X=INDEX CARACTERES (IN ET OUT) ,
<                     =F1=LONGUEUR COURANTE DU MOT ENTRE (NBRE DE
<                      CARACTERES NON COMPRIS 'EOT') ,
<                    F3=CF. F2  , MAIS A CHAQUE EOR , LE
<                       RESULTAT INTERMEDIAIRE EST DECALE
<                       CIRCULAIREMENT.
<
<
< RECUPERATION DES 3 PREMIERS CARACTERES :
<
         BSR         AGTCAR          < A=K(1).
         JE          E2              < MOT VIDE , C'EST FINI.
         STBY        &ANOMC          < STORE : C(1)=K(1).
         BSR         AGTCAR          < A=K(2).
         JE          E2              < LE MOT N' A QU'UNE LETTRE.
         STBY        &ANOMC          < C(2)=K(2).
         BSR         AGTCAR          < A=K(3).
         JE          E2              < LE MOT N'A QUE 2 LETTRES.
         STBY        &ANOMC          < C(3)=K(3).
<
< CODAGE DES CARACTERES K(4),...,K(L) :
<
E3:      EQU         $
         BSR         AGTCAR          < A=K(I) , I=4,...,L.
                                     < (L DESIGNANT LA LONGUER DU
                                     < MOT A CODER).
         JE          E4              < ARRET DU CODAGE SUR 'EOT'.
         ADR         X,A             < LE CARACTERE COURANT (A) EST
                                     < 'PONDERE' PAR SA POSITION (X)
                                     < DANS LE MOT.
                                     < K(I)=K(I)+I.
         EORR        A,B             < CALCUL DE F2 :
                                     < F2=EOR(F2,K(I)).
         ADR         A,B             < F2=F2+K(I).
         EOR         F3              < CALCUL DE F3 :
                                     < A=EOR(F3,K(I)).
         SCLS        1               < DECALAGE CIRCULAIRE.
         STA         F3              < F3=SCLS(EOR(F3,K(I)),1).
         JMP         E3              < CODAGE DU CARACTERE SUIVANT.
<
< MISE SOUS FORME ASCI DES FONCTIONS F2 & F3 :
<
E4:      EQU         $
         LBY         F3              < A=OCTET0(F3).
         AD          F3              < A=F3+OCTET0(F3).
         ANDI        '7F             < A=OCTET0(F3)+OCTET1(F3).
                                     < (SUR 7 BITS).
         CPI         "Z"
         JLE         E5
         ADRI        -'30,A          < F3 EST MIS SOUS LA FORME D'UN
                                     < CODE INFERIEUR AU 'Z'.
E5:      EQU         $
         CPI         " "
         JG          E6
         ADRI        '30,A           < F3 EST DONC ENTRE LE 'Z'
                                     < (COMPRIS) ET LE 'SPACE' (NON
                                     < COMPRIS).
E6:      EQU         $
<        ON A ICI :
<                    A=F3=CARACTERE ASCI DE '!' (='21) A 'Z' (='5A) ;
<                          L'AMBIGUITE EST DONC POUR F3 DE '5A-'21.
         XR          A,B             < B=F3 , A=F2 A METTRE EN FORME.
         ANDI        '7F             < MISE SUR 7 BITS.
         CPI         "Z"
         JLE         E7
         ADRI        -'30,A          < ON RAMENE F2 A UN CODE INFERIEUR
                                     < A CELUI DU 'Z'.
E7:      EQU         $
         CPI         "0"
         JGE         E8
         ADRI        '20,A           < ON TENTE DE RAMENER F2 APRES
                                     < LE CODE DU '0' (ZERO).
         JMP         E7              < POURSUIVONS LA TENTATIVE ....
E8:      EQU         $
<        ON A ICI :
<                    A=F2=CARACTERE ASCI ALLANT DU '0' (COMPRIS)
<                          AU 'Z' (COMPRIS) ; L'AMBIGUITE DE F2 EST DONC
<                          DE '30-'5A :
<                                    AMBIGUITE(F2)<AMBIGUITE(F3).
         SWBR        A,A
         ORR         B,A             < A=F2.F3.
         STA         NOMC+2          < STORE : C(5)=F2 , C(6)=F3.
<
< CODAGE DE LA LONGUEUR DU MOT :
<
E2:      EQU         $
<        ON A ICI :
<                    X=LONGUEUR DU MOT ENTRE (NON COMPRIS 'EOT').
         LR          X,A
         ADRI        '30,A           < ON MET LA LONGUEUR SOUS FORME
                                     < D'UN CARACTERE ASCI QUI NOUS
                                     < DONNE F1 DONT L'AMBIGUITE EST
                                     < DE '30-.... , MAIS INFERIEUR A
                                     < CELLE DE F2 , ET DONC A CELLE
                                     < DE F3 A FORTIORI.
         LXI         3               < INDEX DE C(4).
         STBY        &ANOMC          < STORE : C(4)=F1.
         LXI         6               < INDEX DE C(7).
         LAI         '04             < 'EON' DE FIN DE NOM CODE.
         STBY        &ANOMC          < STORE : C(7)='EON'.
         LXI         0               < RETOUR OK.
         RSR
         PAGE
<
<
<        A C C E S   A   U N   C A R A C T E R E  :
<
<
<        FONCTION :
<                      CETTE ROUTINE FAIT PROGRESSER L'INDEX
<                    CARACTERE COURANT (X) , LA LONGUEUR COURANTE
<                    DU MOT (X) ET ACCEDE LE CARACTERE COURANT ,
<                    APRES INCREMENTATION DE X ; ENFIN
<                    ELLE DIT SI LE CARACTERE ACCEDE EST
<                    OU N'EST PAS 'EOT'.
<
<
<        NOTA :
<                      UNE REPONSE EQUIVALENTE EST DONNEE
<                    DANS LE CAS OU LA LONGUEUR COURANTE
<                    ATTEINTE EST LA LONGUEUR MAX QUE
<                    PEUT ATTEINDRE UN <NOM>.
<
<
         USE         W,NOEUD
GETCAR:  EQU         $
         ADRI        1,X             < PROGRESSION DE L'INDEX CARACTERE
                                     < COURANT (AVANT ACCES !!!!).
                                     < ET PROGRESSION DE LA LONGUEUR
                                     < COURANTE.
         LR          X,A             < ACCES A LA LONGUEUR COURANTE.
         CPI         LNOM            < EST-ON AU BOUT DU <NOM> SANS
                                     < AVOIR RENCONTRE D''EOT' ???
         JE          E140            < OUI , ON FAIT COMME SI....
         LBY         &ANOM           < A=K(X).
         CPI         '04             < EST-CE 'EOT' ????
E140:    EQU         $
         RSR
         PAGE
<
<
<        E N V O I   D ' U N   M E S S A G E  :
<
<
<        FORMAT DES MESSAGES :
<                    OCTET0=LONGUEUR DU MESSAGE ,
<                    OCTET1,...=TEXTE DU MESSAGE.
<
<
<        ARGUMENT :
<                    A=@MESSAGE.
<
<
<        DETRUIT LA BASE C.
<
<
PRINT:   EQU         $
         LR          A,C             < C ADRESSE LE MESSAGE A ENVOYER.
         ADR         A,A
         ADRI        1,A             < ADRESSE OCTET DU MESSAGE.
         STA         DEMOUT+1        < MISE EN PLACE DE L'@OCTET DU
                                     < MESSAGE DANS DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MISE EN PLACE DU COMPTE D'OCTETS
                                     < DANS DEMOUT.
         LAD         DEMOUT
         SVC         0               < ENVOI DE LA DEMANDE A CMS4.
         RSR                         < LES CONDITIONS DE RETOUR SONT
                                     < IGNOREES.
         PAGE
<
<
<        A P P E L   C C I   N O N   I N T E R A C T I F  :
<
<
<        ARGUMENT :
<                    A=@MOT DE LA CARTE A ENVOYER AU CCI.
<
<
CALCCI:  EQU         $
         ADR         A,A             < A=@OCTET DE LA CARTE.
         STA         COMAND+1        < MISE EN PLACE DE L'@ OCTET
                                     < DE LA CARTE DANS LA DEMANDE.
         LAD         COMAND
         SVC         0               < ENVOI DE LA CARTE AU CCI.
         RSR
         PAGE
<
<
<        A C C E S   A U   S G N  :
<
<
<        FONCTION :
<                      CETTE ROUTINE PERMET DE FAIRE
<                    UN 'LOAD VALEUR'.
<                      CETTE ROUTINE TRAVAILLE EN BASCULE
<                    SUR LES MODES 'LOAD SOUS :SYS' , ET
<                    'LOAD SOUS <ACN>' ; LE BASCULEMNT
<                    SE FAIT EN CAS D'ERREUR.
<
<
<        ARGUMENTS :
<                    A=LONGUEUR OCTETS DE LA VALEUR ATTENDUE ,
<                    W=@MOT DE LA ZONE MEMOIRE OU RANGER LA VALEUR.
<
<
<        RESULTAT :
<                    INDICATEURS POSITIONNES EN CAS D'ERREUR ,
<                    (POUR PERMETTRE DES TESTS JE/JNE)
<                    X=CONDITIONS DE RETOUR DU SGN.
<
<
SGN:     EQU         $
         STA         DEMSGN+2        < MISE EN PLACE DU COMPTE D'OCTETS
                                     < DE DEMSGN.
         LR          W,A             < A=@MOT DE LA VALEUR.
         ADR         A,A             < A=@OCTET DE LA VALEUR.
         STA         DEMSGN+1        < MISE EN PLACE DE L'@OCTET
                                     < DU BUFFER DANS  DEMSGN.
         LYI         1               < DECOMPTEUR DES TENTATIVES.
<
< BOUCLE DE BASCULE DES ACN :
<
E100:    EQU         $
         LAD         DEMSGN          < A NOTER QU'ON A DEJA : NVP=6.
         SVC         0               < ENVOI DE LA DEMANDE A CMS4.
         JE          E101            < OK , LE CHARGEMENT S'EST BIEN
                                     < TERMINE , RETOUR OK.
         ADRI        -1,Y            < DECOMPTE DES TENTATIVES.
         CPZR        Y               < 1ERE OU 2EME TENTATIVE ????
         JL          E101            < C'ETAIT LA 2EME , ON FAIT DONC
                                     < UN RETOUR EN ERREUR ; A NOTER
                                     < QUE LES INDICATEURS SONT
                                     < POSITIONNES SUR #0 , PUISQUE Y<0.
<
< 2EME TENTATIVE :
<
         LA          DEMSGN
         IBT         6               < ON ECHANGE NVP=5/6 , POUR
         IBT         7               < NVP=6/5 ....
         STA         DEMSGN          < MAJ DEMSGN.
         JMP         E100            < VERS LA 2EME TENTATIVE.
<
< RETOUR DE LA ROUTINE :
<
E101:    EQU         $
         RSR                         < X CONTIENT LES CONDITIONS DE
                                     < RETOUR DE CMS4.
         PAGE
<
<
<        A C C E S   S G N   P O U R   ' S A V E '  :
<
<
<        ARGUMENT :
<                    A=NVP D'ACCES AU SGN.
<
<
<        RESULTATS :
<                    X=CONDITIONS DE RETOUR DU SGN ,
<                    INDICATEURS POSITIONES (OK OUI/NON).
<
<
SAV:     EQU         $
         STBY        DEMSAV          < MISE EN PLACE DU NVP DE DEMSAV.
         LAD         DEMSAV
         SVC         0               < ENVOI DE LA DEMANDE.
         RSR
         PAGE
<
<
<        C O N V E R S I O N   D E C I M A L E  :
<
<
<        ARGUMENT :
<                    A=NBRE BINAIRE INFERIEUR A 100.
<
<
<        RESULTAT :
<                    A=NBRE CONVERTIE EN ASCI (2 CARACTERES).
<
<
CONV:    EQU         $
         PSR         B               < SAVE B.
         LR          A,B
         LAI         0
         DV          C10             < A=CHIFFRE DES DIZAINES ,
                                     < B=CHIFFRE DES UNITES.
         JAE         E207            < SI LES DIZAINES SONT NULLES ,
                                     < ON FAIT LA CONVERSION SOUS
                                     < FORME D'UN CARACTERE 'NULL'.
         ORI         '30             < SINON , CONVERSION ASCI.
         SWBR        A,A             < LE CHIFFRE DES DIZAINES EST
                                     < MIS EN OCTET0(A).
E207:    EQU         $
         ORR         B,A
         ORI         '30             < CONVERSION DU CHIFFRE DES
                                     < DES UNITES (OCTET1(A)) EN ASCI.
         PLR         B               < RESTAURE B.
         RSR
         PAGE
<
<
<        P R O C E S S E U R   D E   P A R C O U R S   D U
<        G R A P H E   D ' E N C H A I N E M E N T
<                    D E S   I T E M S  :
<
<
<        FONCTION :
<                      CE PROCESSEUR EST DOUBLE , ET
<                    EST APPELE POUR 2 FONCTIONS DISTINCTES
<                    'GO' : PERMET DE LANCER LE PROCESSUS ,
<                    EN DEMANDANT LE NOEUD DE DEPART
<                    DANS LE GRAPHE D'ENCHAINEMENT ;
<                    'EI' : ENCHAINE ENSUITE LES ITEMS
<                    ENTRE EUX , EN PARCOURANT LE GRAPHE
<                    D'ENCHAINEMENT DANS LE SENS :
<                    NOEUD-PERE-->NOEUD-FILS ; LE CHOIX DU
<                    FILS SE FAIT EN FONCTION DES
<                    CONDITIONS DE RETOUR D'UN ITEM ,
<                    CONDITIONS QUE L'ON TROUVE DANS
<                    'CDRET' .  EN CHAQUE NOEUD DU
<                    GRAPHE , ON 'EXECUTE' L'ITEM QUI
<                    Y EST ATTACHE.
<
<
<        LE NOEUD COURANT EST IMPLANTE EN NOEUD2 !!!!
<
<
         WORD        LOC+'80         < VALEUR INITIALE DE L.
         WORD        NOEUD1          < VALEUR INITIALE DE W=@NOEUD1.
EIGRAF:  EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DE
                                     < DE L (SUR LE LOCAL) , ET
                                     < DE W (SUR NOEUD1).
         LB          APILE
         LR          B,K             < INITIALISATION DE K.
         PAGE
<
<
<        R U N   D U   B I - P R O C E S S E U R  :
<
<
<        DIFFERENCIATION DES 2 PROCESSEURS :
<                    EIGO=0 : 'EI' : PARCOURS DU GRAPHE ,
<                    EIGO=1 : 'GO' : INITIALISATION DU PARCOURS.
<
<
         USE         W,NOEUD
         LAI         6
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE
                                     < 'LOAD-VALUE SOUS :SYS'.
<
< MISE EN PLACE DU NOEUD COURANT NOEUD2 :
<
         ADRI        LTN,W           < W=@NOEUD2.
<
< TEST DES ALT-MODES :
<
         IC          KIN             < COMPTAGE DES ENTREES...
         JE          NALTM           < LA PREMIERE, ON Y VA...
         BR          AGOGE           < CAS DES SUIVANTES...
NALTM:   EQU         $
<
< DISCRIMINATION DE 'EI' ET 'GO' :
<
         CPZ         EIGO            < QUI EST LA ???
         JE          PEI             < C'EST 'EI' ...
         PAGE
<
<
<        ' G O '   :  I N I T I A L I S A T I O N
<        O U   R E - I N I T I A L I S A T I O N   D U
<                    P A R C O U R S  :
<
<
<        FONCTION :
<                      PGO EST UTILISE SOIT POUR INTIALISER
<                    LE PARCOURS DU GRAPHE , SOIT POUR
<                    LE REINITIALISER , SUITE A UN RETOUR
<                    PROVISOIRE AU CCI , PAR UN ITEM 'C' ;
<
<
<        NOEUD COURANT :
<                    NOEUD2.
<
<
PGO:     EQU         $
<
< INITIALISATION DE LA ZONE
< DE TRANSMISSION DES ARGUMENTS :
<
         STZ         CDRET-LTN,W     < OK A PRIORI.
         STZ         MODCAL-LTN,W
<
< PREPARATION DE L'APPEL DE 'EI' ; EN
< FAIT LES CODES SONT
< IDENTIQUES , L'APPEL PEUT DONC
< ETRE SIMULE :
<
         STZ         EIGO            < EIGO=0 : C'EST DONC 'EI' !?!!?
<
< TEST SUR UNE RESTAURATION EVENTUELLE :
<
         WORD        '1E45           < RENVOI : A=SYSID(UTILISATEUR).
         LR          A,B             < SAUVEGARDE B=SYSID(UTILISATEUR).
         ORI         '60             < CONVERSION EN UNE MINUSCULE ASCI.
         STBY        IDNC            < GENERATION DU <NOM> DE L'EVENTUEL
                                     < BLOC 'SAVE'.
         LAI         5               < NVP='LOAD SOUS <ACN>.
         BSR         ASAV            < TENTATIVE DE RECUPERATION
                                     < D'UN BLOC 'SAVE'.
         JNE         E200            < LE BLOC 'SAVE' N'EXISTEPAS ,
                                     < ON FAIT DONC UNE INITIALISATION.
<
< VALIDATION D'UN BLOC 'SAVE' EXISTANT :
<
         LBY         CLENC           < A=OCTET0(CLEF DE VALIDATION).
         CPR         A,B             < OCTET0(CLEF DE VALIDATION)=?
                                     < SYSID(UTILISATEUR) ????
         JNE         E200            < NON , ON FAIT DONC UNE INITIA-
                                     < LISATION DU PARCOURS DU GRAPHE.
         LA          CLENC
         ANDI        'FF             < A=OCTET1(CLEF DE VALIDATION).
         CPI         "S"+'20         < VALIDATION ??
         JNE         E200            < CLEF NON VALIDE : INITIALISATION
                                     < DU PARCOURS DU GRAPHE.
<
< OK , RESTAURATION DU NOEUD COURANT :
<
         LR          W,B             < B=@NOEUD2=@RECEPTEUR.
         LAD         SAVNC           < A=@EMETTEUR=@BLOC 'SAVE'.
         LXI         3               < 2*3 OCTETS A DEPLACER.
         MOVE
<
< DELETE DU BLOC 'SAVE' :
<
         LAI         3               < NVP='DELETE VALUE'.
         BSR         ASAV            < ON NE TESTE PAS LES CONDITIONS
                                     < DE RETOUR DU SGN.
<
< CALCUL DU TEMPS ECOULE ENTRE LE
< RETOUR AU CCI , ET LA RESTAURATION :
<
         WORD        '1E85           < RENVOI : A=HEURE EXPRIMEE EN
                                     < MULTIPLES DE 2 SECONDES.
         SB          HEURNC          < A LAQUELLE ON RETRANCE L'HEURE
                                     < DE RETOUR AU CCI.
         SLRD        15              < A=0 & B=TEMPS D'ABSENCE
                                     < EXPRIME EN SECONDES.
         DV          C3600           < A=DUREE ECOULEE EN HEURES ,
                                     < B=DUREE RESIDUELLE EN SECONDES.
         BSR         ACONV           < CONVERSION DE LA DUREE-HEURES
                                     < EN 2 CARACTERES ASCI.
         STA         MABSH           < MAJ DU MESSAGE MABS.
         LAI         0
         DV          C60             < A=DUREE EXPRIMEE EN MINUTES ,
                                     < B=DUREE RESIDUELLE EN SECONDES.
         BSR         ACONV           < CONVERSION DE LA DUREE EN
                                     < MINUTES , EN ASCI.
         STA         MABSM           < MAJ DU MESSAGE MABS.
         LR          B,A             < A=DUREE RESIDUELLE EN SECONDES.
         BSR         ACONV           < CONVERSION DE LA DUREE EN
                                     < SECONDES EN ASCI.
         STA         MABSS           < MAJ DU MESSAGE MABS.
         LAD         MABS
         BSR         APRINT          < ENVOI A L'UTILISATEUR DE LA
                                     < DUREE DE L'ABSENCE.
         JMP         E202            < VERS LA POURSUITE DU PARCOURS
                                     < DANS LE GRAPHE.
                                     < (AVEC D'ABORD LE RECHARGEMENT
                                     < DU NOEUD COURANT).
<
< CAS D'UNE INITIALISATION VRAIE DU PARCOURS :
<
E200:    EQU         $
<
< DEMANDE DU NOM DU NOEUD DE DEPART :
<
         LAD         MNOM
         BSR         APRINT          < ENVOI D'UN MESSAGE D'INVITATION
                                     < A DONNER LE NOEUD DE DEPART.
         LAD         DEMIN
         SVC         0               < LECTURE DU <NOM> DU NOEUD1.
<        ON A ICI :
<                    W=@NOEUD2.
         BSR         ACODAG          < CODAGE DE <NOM> EN <NOMC>.
         JMP         E31             < VERS LE CHARGEMENT DU NOEUD DE
                                     < DEPART DU GRAPHE.
         PAGE
<
<
<        C H A R G E M E N T   D ' U N   I T E M
<        A   L A   D E M A N D E  :
<
<
<        FONCTION :
<                      LORSQU'UN NOEUD N'A PAS
<                    D'ITEM ASSOCIE, OU BIEN LORSQU'UN
<                    CHARGEMENT D'ITEM SE FAIT MAL, ON
<                    SE BRANCHE ICI ; CE MODULE DEMANDE
<                    LE NOM D'UN ITEM, LE COMPACTE, ET
<                    FAIT COMME SI IL AVAIT ETE RENCONTRE
<                    DANS LE GRAPHE...
<
<
<        NOTA :
<                      SI LE MESSAGE EST VIDE (EOT OU
<                    R/C) ON FAIT COMME SI LE TYPE 'V'
<                    ETAIT RENCONTRE...
<
<
LI3:     EQU         $
         LAD         MERI
         BSR         APRINT          < MESSAGE D'ERREUR DE CHARGEMENT.
LI1:     EQU         $
         LA          AI1
         LR          A,W             < W=@ITEM1.
         SBT         0               < A=RELAI VERS LE NOM COMPACTE.
         STA         ANOMCI-HITEM,W  < GENERATION DU RELAI 'ANOMCI'.
         ADRI        NOMI-HITEM,A    < A=RELAI VERS LE NOM.
         STA         ANOMI-HITEM,W   < GENERATION DU RELAI 'ANOMI'.
         LAD         MIT
         BSR         APRINT          < ENVOI D'UNE INVITATION...
         LAD         DEMIT
         SVC         0               < ENTREE DU NOM REEL DE L'ITEM1.
         WORD        '1E35           < B=BOX DE LA LECTURE VISU.
         LR          B,A             < A=NBRE DE CARACTERES ENTRES
         CPI         1               < MESSAGE VIDE (EOT OU R/C) ???
         JE          LI4A1           < OUI, ON VA RECUPERER SON <NOMC> DANS LA
                                     < ZDC SI 'R/C' OU LE CONSIDERER VIDE ('V')
                                     < SI <EOT>...
         BSR         ACODAG          < CALCUL DE <NOMC> DE L'ITEM1.
         JMP         LI2             < ET ON FAIT COMME SI DE
                                     < RIEN N'ETAIT !!!
<
< CAS DES NOMS VIDES :
<
LI4A1:   EQU         $
         LXI         0
         LBY         &ANOMI-HITEM,W  < (A)=PREMIER CARACTERE :
         CPI         XXEOT           < <EOT> ???
         JE          LI4             < OUI, ON FAIT COMME SI TYPE 'V'...
         CPI         '0D             < 'R/C' ???
         JNE         $               < !???!??!??!?
<
< CAS DES 'R/C', ACCES A LA ZDC :
<
         LAD         DEMZDC
ZDCIN1:  EQU         $
         SVC         0               < ACCES A LA ZDC :
         CPZ         VALZDC          < EST-ELLE VALIDE ???
         JE          ZDCIN1          < NON, ON ATTEND...
         STZ         VALZDC          < OUI, ON L'ACQUITTE...
         LAD         DELZDC
         SVC         0               < ACQUITTEMENT...
<
< TRANSFERT DU <NOMC> :
<
         LXI         XXNOMC          < (X)=INDEX DES CARACTERES :
ZDCIN2:  EQU         $
         LBY         &AZDC
         STBY        &ANOMCI-HITEM,W < TRANSFERT DU <NOMC>...
         ADRI        -1,X
         CPZR        X
         JGE         ZDCIN2
<
< EDITION DU <NOM> :
<
         LRP         C               < ON NE SAIT JAMAIS...
         LA          ALTNI2          < (A)=NOMBRE D'OCTETS A CHARGER,
         BSR         ASGN            < ET CHARGEMENT DE L'ITEM DESIRE, AFIN DE
                                     < POUVOIR EDITER SON <NOM>...
         JNE         LI3             < ERREUR...
         LXI         3
         LBY         &ANOMCI-HITEM,W < (A)=CARACTERE CODANT LA LONGUEUR,
         ADRI        -'30,A          < QUE L'ON DECODE,
         STA         DEMEDN+2        < ET QUE L'ON MET DANS LA DEMANDE...
         LAD         MEDN
         BSR         APRINT          < EDITION DE "-->",
         LAD         DEMEDN
         SVC         0               < PUIS DU <NOM>...
         JMP         LI5             < ET ON FAIT COMME SI DE RIEN N'ETAIT...
         PAGE
<
<
<        ' E I '   :   P A R C O U R S   D U   G R A P H E  :
<
<
<        UTILISATION DE LA BASE C :
<                      EN DEHORS DE LA ROUTINE DE 'PRINT' ,
<                    ELLE CONTIENT EN GENERAL UNE ADRESSE
<                    DE RETOUR PERMETTANT D'ITERER LES
<                    DEMANDES D'ACCES AU SGN  APRES AVOIR
<                    FAIT UN RETOUR AU CCI.
<
<
<        UTILISATIONS DES NVP :
<                    NVP=10 : CU2 (MAGNETOSCOPES) ,
<                    NVP=11 : CU3 (BAIE DE COMMUTATION) , OU
<                             TY1.
<
<
<        NOEUD COURANT :
<                    NOEUD2.
<
<
PEI:     EQU         $
<
<        R E C H A R G E M E N T   D U   N O E U D   C O U R A N T  :
<
<        ON A ICI :
<                    W=@NOEUD2.
         LAD         NCEI-LTN,W      < A=@ZONE OU EST SAUVEGARDE
                                     < LE <NOMC> DU NOEUD COURANT.
         LR          W,B             < B=@DU <NOMC> DANS NOEUD2.
         LXI         XXNOMC/XXNOCM   < UN <NOMC> FAIT 2*3 CARACTERES.
         MOVE                        < RESTAURATION DE <NOMC> DU
                                     < NOEUD COURANT DANS NOEUD2.
E202:    EQU         $               < ENTRY 'GO' REINITIALISATION.
         LAI         '04
         STBY        NOMC+3          < MISE EN PLACE DE L'EOT DE
                                     < FIN DU <NOMC>.
         LRP         C               < C=@DE RETOUR EN CAS D'ERREUR SGN.
         LAI         2*LNOEUD        < NBRE D'OCTETS D'UN NOEUD.
         BSR         ASGN            < DEMANDE DE RECHARGEMENT DU
                                     < NOEUD COURANT EN NOEUD2 ; IL
                                     < S'AGIT BIEN D'UN RECHARGEMENT ,
                                     < CAR IL ETAIT CHARGE AVANT
                                     < L'EXECUTION DE L'ITEM PRECEDENT
                                     < QUI LUI ETAIT CONNECTE ; SI ON
                                     < ON LE RECHARGE C'EST QU'ON
                                     < CHERCHE SES FILS.
         JNE         E200            < CAS DES ERREURS DE CHARGEMENT :
                                     < VERS UNE (RE-)INITIALISATION
                                     < DU PARCOURS DU GRAPHE : ON PEUT
                                     < DONC AINSI ABANDONNER LE
                                     < PARCOURS D'UN GRAPHE LORS D'1NE
                                     < RENTREE DANS !GE EN TAPANT
                                     < 'EI' A LA PLACE DE 'GO' (QUI
                                     < LUI , IRAIT RELIRE L'EVENTUEL
                                     < BLOC DE SAUVEGARDRE...)
<
< VALIDATION DU FILS DEMANDE :
<
         LX          CDRET-LTN,W     < X=CDRET ; CDRET DONNE LE
                                     < NUMERO (DE 0 A 7) DU FILS
                                     < DEMANDE DU NOEUD COURANT.
         LR          X,A             < A=CDRET.
         CPI         EI-ZERO
         JL          VFILS           < VERS LA VALIDATION DU FILS.
<
< CAS OU CDRET>=@E1 : IL VIENT D'Y AVOIR UN ALT-MODE :
<
         LXI         2               < ON FORCE ALORS LE FILS NUMERO 2.
         JMP         ALTM            < VERS LA RECHERCHE DU FILS 2.
VFILS:   EQU         $               < VALIDATION SI PAS D'ALT-MODE.
         JAL         ERREUR          < BIZARRE : CDRET,W<0 ?!!?!!?
         CPI         7               < VALIDATION DU CDRET.
         JG          ERREUR          < BIZARRE : CDRET,W>7 !?!?!?!
<
< OK , CDRET VALIDE :
<
ALTM:    EQU         $               < CAS DES ALT-MODES.
         LA          FAMILY          < A=FAMILLE DU NOEUD COURANT.
         TBT         8,X             < TEST DU FILS (CDRET).
         JNC         NINEX           < LE FILS DEMANDE N'EXISTANT
                                     < PAS , ON VA REBOUCLER SUR LE
                                     < NOEUD COURANT !!! C'EST
                                     < BIEN FAIT POUR LUI ...
<
<        C H A R G E M E N T   D U   F I L S
<        C O M M E   N O U V E A U   N O E U D   C O U R A N T  :
<
         LR          X,A             < A=NUMERO DU FILS DEMANDE.
         ADR         A,A
         ADR         X,A             < A=3*(CDRET).
         ADRI        FILS-NOEUD,A
         ADR         W,A             < A=@<NOMC>(FILS)=@EMETTEUR.
         LR          W,B             < B=@NOEUD2=@RECEPTEUR.
         LXI         XXNOMC/XXNOCM   < UN <NOMC> FAIT 2*3 CARACTERES.
         MOVE                        < MISE DU FILS DU NOEUD COURANT ,
                                     < COMME NOUVEAU NOEUD COURANT
                                     < EN NOEUD2.
<
< SAUVEGARDE DU NOUVEAU NOEUD COURANT :
<
E31:     EQU         $               < ENTRY 'GO' INITIALISATION.
         LAD         NCEI-LTN,W
         LR          A,B             < B=@ZONE DE SAUVEGARDE DU NOEUD
                                     < COURANT=@RECEPTEUR.
         LR          W,A             < A=@<NOMC>(NOUVEAU NOEUD
                                     < COURANT)=@EMETTEUR.
         LXI         XXNOMC/XXNOCM   < UN <NOMC> FAIT 2*3 CARACTERES.
         MOVE                        < SAUVEGARDE DU NOUVEAU NOEUD
                                     < COURANT AVANT LA BRANCHE
                                     < D'OVERLAY (HABILE ?!?!)
<
<        R E B O U C L A G E   E V E N T U E L
<        S U R   L E   N O E U D   C O U R A N T  :
<
NINEX:   EQU         $
         LRP         C               < C=@DE RETOUR SI ERREUR SGN.
         LAI         2*LNOEUD        < A=NBRE D'OCTETS OCCUPES PAR
                                     < UN NOEUD.
         BSR         ASGN            < CHARGEMENT DU NOUVEAU NOEUD
                                     < COURANT.
         JNE         E30             < ERREUR DE CHARGEMENT !?!?!?
<
< VALIDATION DU NOEUD COURANT :
<
         LXI         7
         LBY         &ANOMC          < ACCES AU 'TYPE'.
         CPI         'CE             < EST-CE LE TYPE-NOEUD ???
                                     < (CARACTERE 'N' AVEC BIT0=1).
         LXI         '04             < CODE D'ERREUR 'NOM INEXISTANT'
                                     < A PRIORI.
                                     < (SI OK , X=4 EST UTILISE PAR
                                     < LE MOVE QUI VA SUIVRE).
         JNE         E30             < LA VALEUR QUE L'ON VIENT DE
                                     < CHARGER N'EST PAS DE TYPE 'NOEUD'
                                     < ON FAIT COMME SI LE NOEUD N
                                     < EXISTAIT PAS (CF. X='04).
<
<        C H A R G E M E N T   D E   L ' I T E M
<        C O N N E C T E   A U   N O E U D   C O U R A N T  :
<
<        ON A ICI :
<                    X=4 : UTILISE LORS DU MOVE ....
         LA          INDIC
         TBT         BITEM           < Y-A-T'IL BIEN UN ITEM CONNECTE ??
         JNC         LI1             < NON, ON VA DEMANDER UN NOM
                                     < A L'UTILISATEUR....
<
< DEPLACEMENT DU <NOMC> DE L'ITEM DANS ITEM1 :
<
         LR          W,A             < A=@NOEUD2.
         ADRI        ITEM-NOEUD,A    < A=@<NOMC>(ITEM)=@EMETTEUR.
         LB          AI1             < B=@ITEM1=@RECEPTEUR.
<        ON A ICI :
<                    X=4 : POUR DEPLACER 7 OCTETS.
         MOVE                        < <NOMC>(ITEM) EST MIS DANS ITEM1.
<
< CHARGEMENT DE L'ITEM CONNECTE
< AU NOEUD COURANT EN ITEM1 :
<
         LR          B,W             < W=@ITEM1.
LI2:     EQU         $               < ENTRY UTILISEE SUITE A L'ENTREE
                                     < D'UN NOM D'ITEM1 PAR L'UTILISATEUR
         LRP         C               < C=@DE RETOUR SI ERREUR SGN.
         LA          ALTNI2          < A=NBRE MAX OCTETS D'UN ITEM.
         BSR         ASGN            < CHARGEMENT ITEM1.
         JNE         LI3             < DANS LE CAS D'UNE ERREUR
                                     < DE CHARGEMENT, ON DEMANDE OU
                                     < REDEMANDE UN NOM D'ITEM....
<
< ACCES AU TYPE DE L'ITEM :
<
LI5:     EQU         $
         USE         W,HITEM
         LA          IINDIC
         STA         NPROC           < SAVE AU CAS OU L'ITEM SERAIT
                                     < DE TYPE 'D'.
         LBY         IINDIC          < A='TYPE-ITEM'.
         JANE        E300            < OK , LE TYPE N'EST PAS 'VIDE'.
LI4:     EQU         $               < CAS OU UN ITEM VIDE EST
                                     < SIMULE LORS DE LA DEMANDE D'UN
                                     < ITEM...
         LAI         "V"             < CAS DU TYPE 'VIDE' ('V').
E300:    EQU         $
         CPI         "A"             < VALIDATION DU 'TYPE-ITEM'.
         JL          ERREUR          < BIZARRE !!!?!?
         CPI         "Z"             < VALIDATION DU 'TYPE-ITEM'.
         JG          ERREUR          < BIZARRE !?!!?
         LR          A,X             < X='TYPE-ITEM' SI NON-VIDE.
<
< REINITIALISATIONS :
<
         USE         W,NOEUD
E33:     EQU         $
         LB          AN2
         LR          B,W             < W=@NOEUD2.
         LAI         1
         STA         MODCAL-LTN,W    < ON INDIQUE DANS LA ZONE DE
                                     < TRANSMISSION DES ARGUMENTS
                                     < QUE L'APPEL A LIEU PAR 'EI'.
         STZ         CDRET-LTN,W     < RAZ CDRET.
<        ON A ICI :
<                    B=@NOEUD2 ,
<                    W=@NOEUD2 ,
         BR          &ACOM           < BRANCHEMENT FONCTION DU TYPE
                                     < DE L'ITEM VERS UN MODULE SPECI-
                                     < FIQUE DU TYPE.
         PAGE
<
<
<        D E M A N D E   D E   P A U S E  :
<
<
<        FONCTION :
<                      CE MODULE PERMET DE BLOQUER LE
<                    PROCESSUS DE PARCOURS DU GRAPHE ,
<                    SOIT UN TEMPS DONNE EN SECONDES (ET
<                    FIXE PAR LE GRAPHE LUI-MEME) ,
<                    SOIT UN TEMPS INDETERMINE FIXE PAR
<                    L'UTILISATEUR LUI-MEME.
<
<
<        ARGUMENT :
<                    SDUREE=0 : PAUSE INDETERMINEE ,
<                          #0=DUREE EN SECONDES DE LA PAUSE.
<
<
WAIT:    EQU         $
         LXI         SDUREE
         LA          &AKI1           < RECUPERATION DUREE DE PAUSE.
         JAL         ERREUR          < BIZARRE !?!!??
         JAE         E62             < DEMANDE PAUSE INDETERMINEE.
<
<        P A U S E    I M P O S E E  :
<
         LR          A,B             < B=TEMPS DEMANDE (EN SECONDES).
<
< INDICATION DE LA DUREE A L'UTILISATEUR :
<
         LXI         SDUREA
         LA          &AKI1           < RECUPERATION DE LA DUREE EN
                                     < MINUTES ET EN ASCI.
         STA         MDUREE+1        < MISE DANS LE MESSAGE MDUREE.
         LAD         MDUREE
         BSR         APRINT          < ENVOI DE 'XX MN DE PAUSE'.
         LAI         0
         DV          C60
<        ON A ICI :
<                    A=NBRE DE MINUTES A ATTENDRE ,
<                    B=NBRE DE SECONDES RESIDUELLES.
         LR          A,X             < X=NBRE DE MINUTES A ATTENDRE.
         CPI         0               < TEST DU NBRE DE MINUTES.
         LAD         SLEEP           < A=@DEMANDE DE MISE EN SOMMEIL.
         JE          E60             < MOINS D'UNE MINUTE DEMANDE.
         LY          C60
         STY         SLEEP+2         < POUR UNE DEMANDE DE MISE EN
                                     < SOMMEIL DE 1 MINUTE.
<
< BOUCLE DE SOMMEIL (X) FOIS 1 MINUTE :
<
E61:     EQU         $
         PSR         X               < A CAUSE DU SVC.
         SVC         0               < 60 SECONDES DE SOMMEIL.
         PLR         X
         JDX         E61             < ENCORE 1 MINUTE DE PASEE ...
<
< ATTENTE RESIDUELLE :
<
E60:     EQU         $
         STB         SLEEP+2         < LE NBRE RESIDUEL DE SECONDES
                                     < EST MIS DANS LA DEMANDE DE SLEEP.
         SVC         0               < SOMMEIL DE (B) SECONDES.
         JMP         ERASE           < VERS L'EFFACEMENT EVENTUEL DE
                                     < L'ECRAN.
<
<        P A U S E   I N D E T E R M I N E E  :
<
<        FONCTION :
<                      BLOQUE LE PROCESSUS JUSQU'A CE
<                    QUE L'UTILISATEUR ENVOIE UN 'G'.
<                    'G' OU BIEN UN 'RETURN'.
<
<        NOTA CONFIDENTIEL :
<                    - CTRL-C : PERMET UN RETOUR (TEMPORAIRE)
<                    AU CCI , AVEC RETOUR PAR !GO ,
<                    - CTRL-F : PERMET UN RETOUR (TEMPORAIRE) A GE ,
<                    AVEC RETOUR POSSIBLE PAR 'EI'.
<
E62:     EQU         $
         LAD         MRCLF
         BSR         APRINT          < PASSAGE A LALIGNE.
         LAD         MDATE           < A=@MOT DE !DATE.
         BSR         ACALCI          < AFFICHAGE DE LA DATE ET DE
                                     < L'HEURE AVANT LA PAUSE.
         LAD         MPAUSE          < A=@MESSAGE DE PAUSE.
         BSR         APRINT          < ENVOI DU MESSAGE INDIQUANT
                                     < QU'UNE SEANCE DE PAUSE (?!?!) EST
                                     < INITIALISEE.
         LAD         DEBLOC
         SVC         0               < ATTENTE DU CARACTERE DE
                                     < DEBLOCAGE DE L'UTILISATEUR.
<
< ANALYSE DES DESIRS DE L'UTILISATEUR :
<
         LBY         BUFFER          < A=CARACTERE FRAPPE.
         CPI         "G"             < DEMANDE DE POURSUITE DE PARCOURS
                                     < DU GRAPHE ???
         JE          E102            < VERS L'ENVOI DE LA DATE EN
                                     < FIN DE PAUSE (APRES 'G').
         CPI         '0D             < 'RETURN' ???
         JE          E102            < POURSUITE DU PARCOURS DU
                                     < GRAPHE D'ENSEIGNEMENT.
         CPI         '06             < CTRL-F ???
         JE          E500            < OUI , RETOUR A 'GE'.
         CPI         '03             < EST-CE UNE DEMANDE SECRETE
                                     < DE RETOUR A CCI (CTRL-C) ???
         JNE         E62             < NON , POURSUITE DE LA PAUSE.
         LAD         CCI
         SVC         0               < RETOUR A CCI POUR CTRL-C.
         JMP         E62             < REPRISE DE LA PUSE LORS DU !GO.
<
< FIN DE PAUSE :
<
E102:    EQU         $
         LAD         MRCLF
         BSR         APRINT          < RETOUR A LA LIGNE.
         LAD         MDATE           < A=@MOT DE !DATE.
         BSR         ACALCI          < ENVOI DE LA DATE ET DE L'HEURE.
<
<
<        E F F A C E M E N T   D E   L ' E C R A N  :
<
<
<        ARGUMENT :
<                    SERASE=0 : EFFACER L'ECRAN ,
<                          #0 : NE PAS EFFACER L'ECRAN.
<
<
ERASE:   EQU         $
         LXI         SERASE
         CPZ         &AKI1           < UN EFFACEMENT EST-IL DEMANDE ??
         JNE         PEI             < NON , VERS L'ACCES A L'ITEM
                                     < SUIVANT DU GRAPHE.
         LAD         DEMERA
         SVC         0               < EFFACEMENT DE L'ECRAN.
         JMP         PEI             < VERS L'ACCES A L'ITEM
                                     < SUIVANT.
         PAGE
<
<
<        E R R E U R : C H A R G E M E N T   N O E U D  :
<
<
E30:     EQU         $
<        ON A ICI :
<                    X=CODE D'ERREUR QUI A AMENE ICI.
         LA          AGOBGE
         LR          A,C             < DANS LE CAS DE NOM INEXISTANT ,
                                     < ON PREND COMME ADRESSE DE
                                     < RETOUR AU !GO , CELLE DU
                                     < DU RETOUR EN ERREUR A 'GE'.
E210:    EQU         $
         LAD         MERN            < A=@MESSAGE D'ERREUR.
         JMP         E40             < VERS L'ENVOI DU MESSAGE D'ERREUR.
<
<
<        E R R E U R   :   C H A R G E M E N T   I T E M  :
<
<
E32:     EQU         $
         LAD         MERI            < A=@MESSAGE D'ERREUR.
<
< ENVOI D'UN MESSAGE D'ERREUR :
<
E40:     EQU         $
<        ON A ICI :
<                    C=@DE RETOUR SI UN !GO EST EMIS SOUS CCI.
         PSR         C               < EMPILEMENT DE L'@DE RETOUR.
         BSR         APRINT          < ENVOI DU MESSAGE D'ERREUR (A).
         LAD         CCI
         SVC         0               < RETOUR AU CCI ,CAR UNE
                                     < ASSIGNATION AU CCI EST ABSENTE.
         RSR                         < SI !GO , ON FAIT FAIT UN
                                     < RETOUR SUR L'APPEL AU SGN
                                     < QUI AVAIT ECHOUE.
<
<        R E T O U R   D E F I N I T I F   A   C C I  :
<
E41:     EQU         $
         LAD         CCI
         SVC         0               < RETOUR A CCI.
         JMP         E41             < RE-RETOUR A CCI SI !GO ...
<
<
<        E R E U R : T Y P E   I N E X I S T A N T  :
<
<
ERREUR:  EQU         E41             < RETOUR DEFINITIF AU CCI.
         PAGE
<
<
<        D E M A N D E   D E   R E T O U R   A   C C I  :
<
<
<        BLOC DE SAUVEGARDE :
<                      LORS DE LA RENCONTRE D'UN ITEM 'C' ,
<                    AVNT DE FAIRE LE RETOUR AU CCI , ON
<                    CREE PAR L'INTERMEDIAIRE DU SGN ,
<                    UN BLOC DE SAUVEGARDE PERMETTANT ,
<                    ULTERIEUREMENT DE REPARTIR CORRECTEMENT
<                    DANS LE GRAPHE.
<                    <BLOC 'SAVE'>=<NOM><VALEUR> ,
<                    <NOM>='SAV:'<'60+SYSID><EOT>.
<                    <VALEUR>=<CLEF DE VALIDATION><NOEUD COURANT><HEURE>
<                    <CLEF DE VALIDATION>=<SYSID><"S"+'20>.
<
<
GOCCI:   EQU         $
         LAD         MRCCI
         BSR         APRINT          < ENVOI D'UN MESSAGE ANNONCANT
                                     < LE RETOUR PROVISOIRE AU CCI.
<
< GENERATION DU BLOC DE SAUVEGARDE :
<
         WORD        '1E85           < RENVOI : A=HEURE EXPRIMEE EN
                                     < MULTIPLES DE 2 SECONDES.
         STA         HEURNC          < MISE DANS LE LE BLOC 'SAVE'.
         WORD        '1E45           < RENVOI : A=SYSID(UTILISATEUR).
         STBY        CLENC           < GENERATION D'UNE CLEF DE
                                     < VALIDATION DU BLOC 'SAVE'.
         ORI         '60             < CONVERSION DU SYSID EN UN CARAC-
                                     < TERE MINUSCULE ASCI.
         STBY        IDNC            < QUE L'ON MET DANS LE <NOM> DU
                                     < BLOC 'SAVE'.
         LAD         SAVNC
         LR          A,B             < B=@RECEPTEUR (BLOC 'SAVE').
         LAD         NCEI-LTN,W      < A=@EMETTEUR=@DE LA ZONE DE
                                     < TRANSMISSION DES ARGUMENTS.
         LXI         3               < 2*3 OCTETS A DEPLACER.
         MOVE                        < SAUVEGARDE DU NOEUD COURANT.
<
< ENVOI DU BLOC 'SAVE' AU SGN :
<
E204:    EQU         $
         LAI         4               < A=NVP DE 'STORE VALUE'.
         BSR         ASAV            < ENVOI AU SGN.
         JE          E203            < OK , ON PEUT RETOURNER AU CCI.
<
< RETOUR EN ERREUR : ON PEUT ADMETTRE
< QUE <NOM> EXISTE DEJA , ET QUE CE
< PHENOMENE EST DU A UN RETOUR PRECEDENT
< AU CCI , SANS LE RETOUR AU GRAPHE ; UN
< BLOC 'SAVE' A DONC ETE CREE , ET N'A PAS
< ETE UTILISE ; ON VA DONC LE DELETER :
<
         LAI         3               < NVP='DELETE VALUE'.
         BSR         ASAV            < ENVOI DE LA DEMANDE AU SGN.
         JE          E204            < DELETE OK , NOUVELLE TENTATIVE
                                     < DE 'STORE' DU BLOC 'SAVE'.
         BR          AERR            < SINON , ERREUR IRRECUPERABLE.
<
< RETOUR PROVISOIRE AU CCI :
<
E203:    EQU         $
         LAD         CCI
         SVC         0               < VERS LE CCI.
         JMP         ERASE           < VERS UN EFFACEMENT EVENTUEL DE
                                     < L'ECRAN APRES LE RETOUR (!GO).
         PAGE
<
<
<        I T E M S   V I D E S  :
<
<
<        FONCTION :
<                      PASSER A L'ITEM SUIVANT PAR
<                    L'INTERMEDIAIRE DU FILS0 DU
<                    NOEUD COURANT.
<
<
VIDE:    EQU         PEI
<
<
<        D E M A N D E   D E   R E T O U R   A   ! G E  :
<
<
GOGE:    EQU         $
<
< TEST D'EFFACEMENT DE L'ECRAN :
<
         LXI         SERASE
         CPZ         &AKI1           < UN EFFACEMENT EST-IL DEMANDE ???
         JNE         E500            < NON , RETOUR DIRECT A GE.
         LAD         DEMERA
         SVC         0               < OUI , EFFACEMENT DE L'ECRAN.
E500:    EQU         $
<        ON A ICI :
<                    W=@NOEUD2.
         LR          W,B             < RESTAURE B=@NOEUD2 DANS LE
                                     < CAS DES RETOURS EN ERREUR.
         STZ         MODCAL-LTN,W    < MISE EN PLACE DE L'INDICATEUR
                                     < 'GE' ; EN EFFET , 'GE' NE PEUT
                                     < LE FAIRE LUI-MEME , CAR IL N'Y
                                     < A PLUS DE PLACE DANS SON CODE ,
                                     < POUR INSERER CE RAZ !?!?!
         LA          NGE             < A=NOM DU PROCESSEUR 'GE'.
         JMP         E34             < VERS LE CHARGEMENT DE 'GE'.
<
<
<        I T E M   T Y P E - P R O G  :
<
<
PROG:    EQU         $
         PSR         B               < SAVE @NOEUD2.
<
< DEPLACEMENT DE L'ITEM1 VERS L'ITEM2 :
<
         LA          AI1             < A=EMETTEUR=@ITEM1.
         LB          AI2             < B=RECEPTEUR=@ITEM2.
         LX          ALTNI           < X=NBRE DE MOTS TOTAL D'UN ITEM.
         MOVE                        < DEPLACEMENT ITEM1 VERS ITEM2 ,
                                     < AVEC ECRASEMENT ITEM2 !!!!!!!!!!
<
< PREPARATION DU CHARGEMENT :
<
         PLR         B               < RESTAURE @NOEUD2.
         LA          NEX             < A=NOM DU RUNNER GRAPHIQUE.
         JMP         E34             < VERS LE CHARGEMENT.
<
<
<        R E P O N S E   E N   F R A N C A I S  :
<
<
<        FORMAT :
<                      L'ITEM1 CONTIENT LA VALEUR SEMANTIQUE
<                    DE LA REPONSE ATTENDUE.
<
<
REPON:   EQU         $
         LA          NPH             < ACCES AU NOM DE LA 1ERE
                                     < BRANCHE D'ANALYSE DU FRANCAIS.
         JMP         E34             < VERS LE CHARGEMENT DE 'PH'.
<
<
<        I T E M   T Y P E - D E S S I N  :
<
<
<        NOTA :
<                      L'OCTET1 DE IINDIC DONNE LA
<                    2EME LETTRE DU NOM DU PROCESSEUR
<                    GRAPHIQUE A APPELER POUR CE DESSIN;
<                    S'IL EST NUL, ON APPELLE IMPLI-
<                    CITEMENT 'G3'.
<
<
DESSIN:  EQU         $
         LA          NPROC           < RESTAURE A=IINDIC...
         ANDI        '00FF           < A=OCTET1(IINDIC),
         JANE        E1612           < OK, IL Y A DANS L'OCTET1 UN
                                     < NOM DE PROCESSEUR GRAPHIQUE.
         LA          NGR             < LORSQUE L'OCTET1='00, ON PREND
                                     < IMPLICITEMENT 'G3'.
E1612:   EQU         $
         STA         NPROC
         LA          NGR
         ANDI        'FF00
         OR          NPROC           < A=NOM DU PROCESSEUR GRAPHIQUE
                                     < A APPELER POUR CE DESSIN.
         JMP         E34             < VERS LE CHARGEMENT DE 'GR'.
<
<
<        I T E M   D E   T Y P E - T E X T E  :
<
<
TEXTE:   EQU         $
         LA          NED             < A=NOM DU PROCESSEUR 'ED'.
<
<
<        C H A R G E M E N T   D ' U N   P R O C E S S E U R  :
<
<
E34:     EQU         $
         ADRI        -LTN,B          < RETOUR SUR NOEUD1.
         ADRI        -LTN,W          < RETOUR SUR NOEUD1.
<        ON A ICI :
<                    B=@NOEUD1 ,
<                    W=@NOEUD1 ,
<                    A=NOM DU PROCESSEUR A CHARGER ,
<                    MODCAL=1 (0 POUR L'APPEL DE 'GE') ,
<                    CDRET=0.
         STA         0,W             < MISE DU NOM DU PROCESSEUR EN TETE
                                     < DU NOEUD1.
         LAI         '20
         SBT         2               < A='SPACE''SPACE'.
         STA         1,W
         STA         2,W             < LE NOM DU PROCESSEUR EST
                                     < COMPLETE PAR 4 'SPACE' ;
                                     < L'EOT DE FIN DE NOM EST DEJA
                                     < POSITIONNE , PAR L'APPEL DU
                                     < NOEUD COURANT.
         LA          LOVL            < A=LONGUEUR EN OCTETS D'UNE
                                     < BRANCHE D'OVERLAY.
         STA         DEMSGN+2        < MISE EN PLACE DU COMPTE
                                     < D'OCTETS DE DEMSGN.
         ADR         B,B             < B=@OCTET DE NOEUD1.
         STB         DEMSGN+1        < MISE EN PLACE DE L'@OCTET
                                     < DU BUFFER DANS DEMSGN.
         LAI         6
         STBY        DEMSGN          < DEMSGN EST REMISE EN MODE
                                     < 'LOAD SOUS :SYS' POUR LE
                                     < CHARGEMENT DES PROCESSEURS.
<
< CHARGEMENT DU PROCESSEUR :
<
E35:     EQU         $
         LAD         DEMSGN
         BSR         AOVL            < ENVOI DE LA DEMANDE D'OVERLAY.
<
< RETOUR EN ERREUR ASSEZ BIZARRE ,
< DONNONS LA MAIN AU CCI :
<
         LAD         CCI
         SVC         0               < RETOUR AU CCI.
         JMP         E35             < TRY AGAIN SI !GO.
         PAGE
<
<
<        Q U E S T I O N S   A   C H O I X   M U L T I P L E S  :
<
<
<        FONCTION :
<                      LE TYPE D'ITEM 'M' EST UTILISE
<                    POUR LES QUESTIONS A CHOIX MULTIPLE.
<                    UN TEXTE PREALABLEMENT EDITE PAR 'ED'
<                    A POSE UNE QUESTION ET PROPOSE UNE
<                    SERIE DE REPONSES NUMEROTEES ; CE
<                    MODULE LIT LA REPONSE EMISE PAR
<                    L'UTILISATEUR.
<
<
<        NOTA CONFIDENTIEL :
<                    CTRL-F PERMET UN RETOUR A 'GE' LORS D'UN QCM ....
<
<
QCM:     EQU         $
         LAD         MQCM
         BSR         APRINT          < ENVOI DU MESSAGE 'REPONSE>'.
         LAD         DEBLOC
         SVC         0               < LECTURE D'1 CARACTERE DE
                                     < REPONSE.
<
< ANALYSE DE LA REPONSE :
<
         LBY         BUFFER          < A=CARACTERE EMIS.
         CPI         '06             < EST-CE UN CTRL-F ???
         JE          GOGE            < OUI , RETOUR A 'GE' ....
         ADRI        -'30,A          < TRANSLATION EN BINAIRE.
         JAL         QCM             < CARACTERE INFERIEUR A '0' ,
                                     < ON REFAIT L'INTERROGATION.
         CPI         7
         JG          QCM             < CARACTERE SUPERIEUR A '7' , ON
                                     < REFAIT L'INTERROGATION.
         LR          A,X             < X=REPONSE EMISE DE 0 A 7.
<
< VALIDATION DE LA REPONSE :
<
         USE         W,NOEUD
         LA          FAMILY
         TBT         8,X             < LE FILS (X) DU NOEUD COURANT
                                     < EXISTE-T'IL ???
         JNC         QCM             < NON , LA REPONSE EST INVALIDE ,
                                     < ON REFAIT DONC L'INTERROGATION.
<
< CAS D'UNE REPONSE VALIDE :
<
         STX         CDRET-LTN,W     < LA REPONSE EST MISE EN
                                     < CDRET (CONDITION DE RETOUR).
         BR          AERASE          < VERS LE TEST D'EFFACEMENT DE L'
                                     < ECRAN , ET L'ACCES A L'ITEM
                                     < SUIVANT.
         PAGE
<
<
<        S E Q U E N C E S   V I D E O  :
<
<
<        FONCTION :
<                      L'ITEM 'S' PERMET DE VISIONNER
<                    UNE SEQUENCE VIDEO DONT LE NOM
<                    EST CELUI DE L'ITEM . CE VISIONNAGE
<                    N'EST POSSIBLE QUE SOUS LE NUMERO DE
<                    COMPTE :EAO . DE PLUS L'ACCES A LA
<                    TABLE D'OCCUPATION DES MAGNETOSCOPES
<                    EST UNE PHASE CRITIQUE INTER-
<                    UTILISATEURS.
<                      LE NOM D'UNE SEQUENCE VIDEO EST EN
<                    FAIT LE NOM DE LA BANDE SUIVI D'UN $ ,
<                    ET D'UN NOM DE SEQUENCE :
<                    <NOM-GLOBAL-SEQUENCE>::=<NOM-BANDE>$<NOM-LOCAL-
<                    SEQUENCE>.
<                      LE NUMERO DU TELEVISEUR ASSOCIE
<                    A LA VISU 'NSPOUT' EST NSPOUT-NSPVI1.
<
<
VIDEO:   EQU         $
         LA          NVI             < A=NOM DU PROCESSEUR A CHARGER.
         JMP         E34             < VERS L'APPEL DU PROCESSEUR VIDEO.
<
<
<        I T E M   T Y P E   F I L M - D I G I T A L  :
<
<
FILMD:   EQU         $
         LA          NPROC           < RESTAURE A=IINDIC...
         ANDI        '00FF           < A=OCTET1(IINDIC),
         JANE        E1612X          < OK, IL Y A DANS L'OCTET1 UN
                                     < NOM DE PROCESSEUR 'SC'/'SD'.
         LA          NSC             < LORSQUE L'OCTET1='00, ON PREND
                                     < IMPLICITEMENT 'SC'.
E1612X:  EQU         $
         STA         NPROC
         LA          NSC
         ANDI        'FF00
         OR          NPROC           < A=NOM DU PROCESSEUR 'SC'/'SD'
                                     < A APPELER POUR CE FILM.
         JMP         E34             < VERS LE CHARGEMENT DE 'SC'.
         PAGE
<
<
<        V A L I D A T I O N   D E   L ' I M P L A N T A T I O N  :
<
<
X4:      VAL         ITEM2-$
ZEROV:   EQU         ZERO+X4         < ERREUR D'ASSEMBLAGE SI X4<0 ,
                                     < SOIT SI LE PROCESSEUR RECOUVRE
                                     < L'ITEM2.
         DZS         X4+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.