<        S I S   C M S 5   8
         PAGE
         PAGE
         CALL        #SISP CMS5 CHECK#
         CALL        #SISP CMS5 DOL1#
<
<
<        T R A C E   D U   S Y S T E M E  :
<
<
TTRACE:  EQU         $
X91::    VAL         UTRACE*LTRACE   < NBRE DE MOTS DE LA TRACE.
         PAGE
<
<
<        D E F I N I T I O N   D E   L A   Z O N E
<                    D E   P A T C H  :
<
<
LPTCH::  VAL         16              < NBRE DE MOTS RESERVES AUX
                                     < PATCHES DU SYSTEME.
ZPATCH:  EQU         TTRACE+X91      < DEBUT DE LA ZONE D'IMPLANTATION
                                     < DES PATCHES DU SYSTEME (CF.
                                     < LE MODULE DE DEBUG-RECOVERY).
LPATCH:  EQU         ZPATCH+LPTCH-D  < LIMITE SUPERIEURE DE LA
                                     < ZONE DE PATCH.
         PAGE
<
<
<        Z O N E   D E   T R A C E   E T   D E   P A T C H  :
<
<
         DZS         X91             < ZONE DE TRACE DU SYSTEME CMS4.
         DZS         LPTCH           < ZONE DE PATCH DU SYSTEME CMS4.
         DZS         2               < PAR PRUDENCE...
         PAGE
<
<
<        B U F F E R   P E R M A N E N T
<        D U   S E C T E U R   C O U R A N T
<        U T I L I S E   P A R   ' H D L T R I '  :
<
<
         CALL        #SISP CMS5 DOL2#
BSTCXX:  DZS         YY7             < BUFFER PERMANENT DU SECTEUR COURANT.
         CALL        #SISP CMS5 DOL1#
         PAGE
<
<
<        C O M P T E U R   D E S   Q - S E C T E U R S   H S  :
<
<
KQSHS:   WORD        K
<
<
<        P I L E   D E S   Q - S E C T E U R S   H S  :
<
<
LQSHS::  VAL         96              < NOMBRE DE Q-SECTEURS QU'ELLE PEUT
                                     < STOCKER LORSQU'ILS SONT "HS"...
         CALL        #SISP CMS5 DOL2#
PQSHS:   EQU         $
         BYTE        LQSHS;K         < "POINTEUR" DE PILE,
         DZS         LQSHS           < PILE PROPREMENT DITE.
XQSHS::  VAL         $-PQSHS         < LONGUEUR TOTALE...
         CALL        #SISP CMS5 DOL1#
         PAGE
<
<
<        B U F F E R   D E   L E C T U R E   A S C I
<                    D E   H D L C R 1  :
<
<
BUCR1:   DZS         LCCI/NOCMO      < ON LIT 80 CARACTERES ASCI MAX
<
<
<        B U F F E R   D E   L E C T U R E   A S C I
<                    D E   H D L C R 2  :
<
<
BUCR2:   DZS         LCCI/NOCMO
<
<
<        B U F F E R   L P 1   P O U R   T R A N S F E R T
<                    E V E N T U E L  :
<
<
LMBLP1:: VAL         YY8+NOCMO       < LONGUEUR MAX DU BUFFER LP1.
                                     < (A CAUSE DE ":SIM"...)
BULP1:   DZS         LMBLP1/NOCMO
RCLF:    BYTE        KCR;KLF
LXRCLF:: VAL         $-RCLF*NOCMO    < LONGUEUR DU MESSAGE 'RC-LF'...
         PAGE
<
<
<        P I L E   D E   T H 0 :
<
<
<        ATTENTION :
<                      CETTE PILE DOIT ETRE EN MEMOIRE BASSE
<                    CAR EN EFFET IL EXISTE DANS 'TH0' DES
<                    RELAIS INDEXES OU NON DESSUS !!!
<
<
PILTH0:  EQU         $-DEPILE
XWPILE:  VAL         LPILTH+2
         CALL        #SISP CMS5 GENPIL2#
         PAGE
<
<
<        C A R T E   D U   D I S Q U E   ' F H D '  :
<
<
         NTRN
         IF          TZSWAP/XNSPDK(K=FCREST-K,XEIF%,,XEIF%
         IF          ATTENTION : TOUTES LES ZONES DE SWAPPING COMMENCNT
         IF          A UNE FRONTIERE DE PISTE, DONC IL N'Y A PAS DE
         IF          DEPHASAGES, ET LES SWAPPINGS NE SONT PAS OPTIMISES !!!
XEIF%:   VAL         ENDIF
         TRN
XWOR%1:  VAL         XNSPDK=K
         IF          BIT>XWOR%1-XNSPDK,,XEIF%,
         IF          ATTENTION : 'XNSPDK' DOIT ETRE UNE PUISSANCE DE 2 !!!
XEIF%:   VAL         ENDIF
         NTRN
         IF          NSDKF/XNSPDK(K=FCREST-K,,XEIF%,
         IF          ATTENTION : 'XNSPDK' NE DIVISE PAS 'NSDKF' !!!
XEIF%:   VAL         ENDIF
         TRN
         DSEC        SECBAS
ZERBAS:  EQU         $               < SYMBOLE REPRESENTANT LE SECTEUR 0
                                     < D'UN DISQUE ; UN MOT DE CETTE
                                     < DSEC EN REPRESENTE ALORS UN
                                     < SECTEUR...
<
<
<        N O Y A U   D E   B O O T - S T R A P  :
<
<
XSBOOT:: VAL         $-ZERBAS        < IMPLANTATION DU NOYAU DE BOOT-STRAP
                                     < DE CMS5 SUR 'DKF'...
XLBOOT:: VAL         YY7             < LONGUEUR MAXIMALE PRESUMEE POUR LE
                                     < NOYAU DE BOOT-STRAP...
         IF          XSBOOT-K,,XEIF%,
         IF          ATTENTION : POUR DES RAISONS LIEES A LA MICRO-
         IF          PROGRAMMATION DES BOOT-STRAPS, LE NOYAU DOIT
         IF          IMPERATIVEMENT SE TROUVER SUR LE SECTEUR 0 !!!
XEIF%:   VAL         ENDIF
         DZS         XLBOOT/YY7
<
<
<        Z O N E   V I R T U A L I S E E  :
<
<
         $EQU        ZERBAS+XNSPDK   < ON SE CADRE A UNE FRONTIERE DE PISTE...
ZERBV::  VAL         $-ZERBAS        < DEBUT DE LA ZONE VIRTUALISEE.
ZERBVP:: VAL         ZERBV/XNSPDK    < DEBUT DE LA ZONE VIRTUALISEE EXPRIME
                                     < EN NUMERO DE PISTE.
<
<
<        T A B L E   D ' O C C U P A T I O N   ' T O G B '  :
<
<
XXGB::   VAL         $-ZERBAS        < IMPLANTATION DE 'TOGB'.
XWOR%8:  VAL         2               < AFIN DE PREVOIR LES EXTENSIONS DE LA
                                     < CAPACITE DE DISQUE ALLOUABLE...
                                     < NOTA : SI ON AUGMENTE LE NOMBRE DE
                                     <        DISQUES, IL FAUT REDUIRE LA
                                     <        TAILLE DE L'ARBRE DU SYSTEME, OU
                                     <        ACHETER UN 'DKF' PLUS GRAND...
         DZS         NSTO*XWOR%8     < TABLE D'OCCUPATION  'TOGB' (ET PLUS...) :
                                     < NOTA : ON TROUVE EN RECOUVREMENT
                                     < AVEC 'TOGB' LE NOYAU DES BOOT-STRAPS
                                     < DE CMS5 ; LE RECOUVREMENT A LIEU BIEN
                                     < ENTENDU SUR UN SECTEUR INUTILISE
                                     < DE 'TOGB' : CELUI QUI CORRESPOND A LA
                                     < SIMULATION DE 'DKF' SUR 'DKM'...
         IF          XSBOOT-XXGB,XEIF%,,
         IF          ATTENTION : CA VA MERDER !!!
XEIF%:   VAL         ENDIF
<
<
<        T A B L E   D E S   P A R T I T I O N S   ' S G F '  :
<
<
         NTRN
         DZS         $-ZERBAS/XXXMOY(K=FCREST
         TRN
                                     < AFIN DE SE PLACER A UNE ADRESSE MULTIPLE
                                     < DE 'XXXMOY'...
XXTP::   VAL         $-ZERBAS        < IMPLANTATION DE 'TP'.
         NTRN
         IF          XXTP/XXXMOY(K=FCREST-K,,XEIF%,
         IF          ATTENTION : 'XXTP' DOIT ETRE DIVISIBLE PAR
         IF          'XXXMOY' A CAUSE D'OPERATIONS DU TYPE 'ADRI'
         IF          EFFECTUEES SUR 'XXTP' DANS LE 'SGF' !!!
XEIF%:   VAL         ENDIF
         TRN
         DZS         NSTP+XXTP1M     < 'TP' : TABLE DES PARTITIONS DE CLES
<
<
<        A R B R E   D U   S Y S T E M E  :
<
<
XXTRI::  VAL         $-ZERBAS        < IMPLANTATION DE 'TREE'.
NSTREE:: VAL         '3F0/NBITMO*NBITMO < NOMBRE DE SECTEURS OCCUPES
                                        < PAR L'ARBRE DU SYSTEME...
                                     < NOTA : CETTE TAILLE EST MALHEUREUSEMENT
                                     <        LIMITEE A CAUSE DU FORMAT DES
                                     <        NUMEROS DE NOEUDS (VOIR 'MKNE'),
                                     <        ET DES TESTS FAIT SUR CEUX-CI PAR
                                     <        LE 'SGN'...
         DZS         NSTREE          < ARBRE DU SYSTEME
<
<
<        C A D R A G E   A   U N E   F R O N T I E R E
<                    D E   P I S T E  :
<
<
XWOR%1:  VAL         $-ZERBAS
         NTRN
XWOR%1:  VAL         XWOR%1+XNSPDK-E/XNSPDK*XNSPDK
         TRN
<
<
<        Z O N E   N O N   V I R T U A L I S E E   A C C E D E E
<        P A R   S E C T E U R   O U   P L U S  :
<
<
ZERBNV:: VAL         XWOR%1          < DEBUT DE LA ZONE NON VIRTUALISEE.
         $EQU        ZERBAS+ZERBNV   < CADRAGE A UNE FRONTIERE DE PISTE.
XWOR%1:  VAL         $-ZERBAS-ZERBV
NPVDKF:: VAL         XWOR%1/XNSPDK   < NOMBRE DE PISTES VIRTUALISEES SUR 'DKF'.
         IF          NPVDKF*XNSPDK-XWOR%1,,XEIF%,
         IF          ATTENTION : LE NOMBRE DE SECTEURS VIRTUALISES N'EST
         IF          PAS UN NOMBRE ENTIER DE PISTES !!!
XEIF%:   VAL         ENDIF
<
<
<        C M S 5   L U I - M E M E  :
<
<
LOCSYS:: VAL         '680            < ADRESSE SECTEUR DU SYSTEME CMS5
         IF          $-ZERBAS-LOCSYS,XEIF%,XEIF%,
         IF          DANGER : LE SYSTEME EST RECOUVERT
         IF          PAR CE QUI PRECEDE !!!
XEIF%:   VAL         ENDIF
         $EQU        ZERBAS+LOCSYS
XWOR%1:  VAL         LK/YY7          < NOMBRE DE SECTEURS DANS 1K MOTS.
XWOR%2:  VAL         K64*XWOR%1      < 'CMS5' FAIT 64K, SOIT (...) SECTEURS.
         DZS         XWOR%2          < SYSTEME CMS5
         $EQU        ZERBAS+SECTSY   < ADRESSE D'IMPLANTATION SWAPPING
         DZS         M+NESCLA*TZSWAP < SWAPPING UTILISATEURS
<
<
<        T A I L L E   D E S   P R O C E S S E U R S   D E   B A S E  :
<
<
XXX1K::  VAL         1               < 1 K-MOTS,
XXX1KO:: VAL         XXX1K*LK*NOCMO  < CONVERTI EN NOMBRE D'OCTETS.
XXX4K::  VAL         4               < 4 K-MOTS,
XXX4KO:: VAL         XXX4K*LK*NOCMO  < CONVERTI EN NOMBRE D'OCTETS.
<
<
<        P O I N T   D ' E N T R E E   D E S   P R O C E S S E U R S
<                    D E   B A S E  :
<
<
PEPROC:: VAL         '12             < 'P' D'ENTREE DE TOUS LES PROCESSEURS DE
                                     < BASE A L'EXCEPTION DE '!CALL'...
<*******************************************************************************
XWOR%F:  VAL         PEPROC
PEPROG: @VAL         '0@@@@          < POINT D'ENTREE DE TOUS LES PROGRAMMES.
         CALL        #SISP CMS5 GEN CTE#
<*******************************************************************************
PECALL:: VAL         '10             < 'P' D'ENTREE DE '!CALL'...
<
<
<        E D I T  :
<
<
SZEDIT:: VAL         XXX4KO          < TAILLE EN OCTETS NECESSAIRE
                                     < A EDIT.
DKEDIT:: VAL         $-ZERBAS        < @SECTEUR DE !E.
PEDIT::  VAL         PEPROC          < P DE LANCEMENT DE EDIT.
                                     < (TRANSLATABLE).
         DZS         SZEDIT/YY8      < RESERVATION DE L'ESPACE DK DE !E.
<
<
<        C A L L  :
<
<
SZCALL:: VAL         XXX1KO          < TAILLE EN OCTETS NECESSAIRE
                                     < A CALL.
DKCALL:: VAL         $-ZERBAS        < @SECTEUR DE !CALL.
PCALL::  VAL         PECALL          < P DE LANCEMENT DE CALL.
                                     < (TRANSLATABLE).
         DZS         SZCALL/YY8      < RESERVATION DE L'ESPACE
                                     < DK DE !CALL.
<
<
<        C H A R G E U R  :
<
<
SZLOAD:: VAL         XXX4KO          < TAILLE EN OCTETS NECESSAIRE
                                     < INITIALEMENT A LOAD.
DKLOAD:: VAL         $-ZERBAS        < @SECTEUR DE !LOAD.
PLOAD::  VAL         PEPROC          < P DE LANCEMENT DE LOAD.
                                     < (TRANSLATABLE).
         DZS         SZLOAD/YY8      < RESERVATION DE L'ESPACE
                                     < DK DE !LOAD.
<
<
<        A S S E M B L E U R  :
<
<
SZSYMB:: VAL         XXX4KO          < TAILLE EN OCTETS NECESSAIRE
                                     < A L'ASSEMBLEUR.
DKSYMB:: VAL         $-ZERBAS        < @SECTEUR DE !SYMBOL.
PSYMB::  VAL         PEPROC          < P DE LANCEMENT DE SYMBOL.
                                     < (TRANSLATABLE).
         DZS         SZSYMB/YY8      < RESERVATION DE L'ESPACE
                                     < DK DE !SYMBOL.
<
<
<        I D L E  :
<
<
SZIDLE:: VAL         XXX1KO          < LA TAILLE EN OCTETS NECESSAIRE
                                     < A IDLE EST MINIMALE ; C'EST EN
                                     < EFFET LA RAISON D'ETRE DE CE
                                     < PROCESSEUR : MINIMISER L'ESPACE
                                     < MEMOIRE DE L'UTILISATEUR.
DKIDLE:: VAL         $-ZERBAS        < @SECTEUR DE !I.
PIDLE::  VAL         PEPROC          < P DE LANCEMENT DE IDLE.
                                     < (TRANSLATABLE).
         DZS         SZIDLE/YY8      < RESERVATION DE L'ESPACE DK DE !I.
<
<
<        G R A P H E   D ' E N C H A I N E M E N T  :
<
<
SZGRE::  VAL         XXX4KO          < TAILLE EN OCTETS NECESSAIRE
                                     < AU PROCESSEUR GE.
DKGRE::  VAL         $-ZERBAS        < @SECTEUR DE !GE.
PGRE::   VAL         PEPROC          < P DE LANCEMENT DE GE.
                                     < (TRANSLATABLE).
         DZS         SZGRE/YY8       < RESERVATION ESPACE DK DE !GE.
<
<
<        D E L E T E - F I L E  :
<
<
SZDELF:: VAL         XXX1KO          < TAILLE EN OCTETS NECESSAIRE
                                     < A DELETE-FILE.
DKDELF:: VAL         $-ZERBAS        < @SECTEUR DE !DF.
PDELF::  VAL         PEPROC          < P DE LANCEMENT DE DELETE-FILE.
                                     < (TRANSLATABLE).
         DZS         SZDELF/YY8      < RESERVATION ESPACE DK DE !DF.
<
<
<        V A L I D A T I O N   D E   L ' I M L A N T A T I O N
<        D E S   P R O C E S S E U R S   D E   B A S E  :
<
<
         IF          $-ZERBAS-X16-SECTSY,XEIF%,,
         IF          E R R E U R  !!!
XEIF%:   VAL         ENDIF
<
<
<        Z O N E   D E   C O P Y   D U   S Y S T E M E  :
<
<
ASCOPY:: VAL         $-ZERBAS        < ADRESSE SECTEUR DE LA 1ERE ZONE DE COPY.
LCOPY3:: VAL         '08             < VALEUR ESTIMEE DU NOMBRE DE SECTEURS
                                     < NECESSAIRES A LA COPY DU SYSTEME ; CE
                                     < NOMBRE EST VALIDE AU NIVEAU DE LA
                                     < DEFINITION DE LA ZONE DE SAUVEGARDE.
SECURC:: VAL         W               < DISTANCE ARBITRAIRE EXPRIMEE EN NOMBRE
                                     < DE PISTES SEPARANT LES DIVERSES ZONES
                                     < DE COPY ; ON LE SEPARE AINSI, CAR EN
                                     < GENERAL LES SECTEURS EN DEFAUT VONT PAR
                                     < PAQUET, DONC AINSI, ON A PLUS DE CHANCE
                                     < QU'AU MOINS UNE COPIE SOIT EN BON ETAT...
SECURP:: VAL         XNSPDK*SECURC   < IDEM, EXPRIME EN NOMBRE DE SECTEURS.
LCOPY5:: VAL         LCOPY3+SECURP   < LONGUEUR EN SECTEURS DE LA ZONE BLOQUEE
                                     < POUR UNE COPIE, ETANT DONNEE LA ZONE
                                     < DE SECURITE "INTER-COPIE"...
         DO          NSCOPY
         DZS         LCOPY5          < UNE ZONE DE COPIE...
<
<
<        V A L I D A T I O N   D E   L A   C A R T E
<        D U   D I S Q U E   F I X E   ' D K F '  :
<
<
         IF          $-ZERBAS-NSDKF,XEIF%,,
         IF          ATTENTION : TROP DE CHOSES SUR CE PAUVRE 'DKF' !!!
XEIF%:   VAL         ENDIF
         PAGE
<
<
<        D E F I N I T I O N   D E S   P I S T E S
<        L I B R E S   D E   ' D K F ' , E N   V U E
<        D ' E N   F A I R E   D E S   P I S T E S
<                    D E   R E S E R V E  :
<
<
XWOR%1:  VAL         $-ZERBAS
         NTRN
XWOR%1:  VAL         XWOR%1+XNSPDK-E/XNSPDK*XNSPDK
         TRN
         $EQU        ZERBAS+XWOR%1   < POSITIONNEMENT A UNE FRONTIERE DE PISTE,
PISTEL:: VAL         $-ZERBAS        < PREMIERE PISTE LIBRE,
                                     < (EXPRIMEE EN ADRESSE SECTEURS)
NPISTL:: VAL         NSDKF-PISTEL/XNSPDK
                                     < NOMBRE DE PISTES LIBRES...
         IF          NPISTL-K,,,XEIF%
         IF          MERDE ALORS, CELA NE FAIT PAS BEAUCOUP !!!
XEIF%:   VAL         ENDIF
<
<
<        NOTA :
<                      SI CES PISTES DE RESERVE NE SUFFISENT PAS,
<                    ON SE SOUVIENDRA QU'ENTRE LA COPIE ET LE
<                    SYSTEME LUI-MEME, IL Y A DE LA PLACE...
<                      POUR LES PISTES NON VIRTUALISEES, ET DANS
<                    LE CAS DES UTILISATEURS, IL SUFFIT D'INHIBER
<                    DES 'IDESC'...
<
<
         PAGE
<
<
<        D E F I N I T I O N   D E   L A   C O P Y  :
<
<
         PROG
<
<
<        A T T E N T I O N  :
<                      LES DEFINITIONS EN AVANT DES ADRESSES
<                    DE ZONES DE 'COPY' DOIVENT ETRE PLACEES
<                    ICI, AFIN D'ETRE HORS DE LA 'DSEC' DE
<                    FORMATTAGE DE 'DKF'.
<
<
SCOPY:   EQU         ZERO+ASCOPY     < ADRESSE SECTEUR DE LA ZONE DE COPY.
SCOPY1:  EQU         SCOPY+K         < PREMIERE ZONE DE 'COPY',
SCOPY0:  EQU         SCOPY1          < A CAUSE DE L'ASSEMBLEUR...
SCOPY2:  EQU         SCOPY+LCOPY5    < DEUXIEME ZONE DE 'COPY'.
         IF          SCOPY2-SCOPY1/LCOPY5-NSCOPY+Z,,XEIF%,
         IF          INCOHERENCE SUR 'NSCOPY' !!!
XEIF%:   VAL         ENDIF
         PAGE
<
<
<        D E F I N I T I O N   D E   L A   ' C D A '  :
<
<
XWOR%3:  VAL         FADR            < UNITE DES ADRESSES OACD ET ECDA.
XWOR%4:  VAL         XWOR%3=K
XWOR%5:  VAL         NBITMO-XWOR%4
         DZS         XWOR%3-Z        < POUR SE CADRER A UNE FRONTIERE...
XWOR%1:  VAL         -XWOR%4
XWOR%2:  VAL         $-ZERO>XWOR%1
         IF          KSIMS-K64,XEIF%,,XEIF%
AOCDA:   EQU         ZERO+XWOR%2     < ORIGINE DE LA ZONE 'CDA'.
XEIF%:   VAL         ENDIF
XWOR%2:  VAL         $-ZERO
XWOR%2:  VAL         BIT>XWOR%5-XWOR%2-XWOR%3
         IF          XWOR%2,,,XEIF%
XWOR%2:  VAL         XWOR%3          < AU DELA DE '1000, ON PREND LE MINI...
XEIF%:   VAL         ENDIF
         DZS         XWOR%2          < ZONE 'CDA'.
XWOR%2:  VAL         $-ZERO>XWOR%1
         IF          KSIMS-K64,XEIF%,,XEIF%
AECDA:   EQU         ZERO+XWOR%2     < EXTREMITE DE LA ZONE 'CDA'.
XEIF%:   VAL         ENDIF
         DZS         XWOR%3          < MARGE DE SECURITE...
         IF          KSIMS-K64,,XEIF%,
XWOR%1:  VAL         K64>DADR*LK
AOCDA:   EQU         ZERO+XWOR%1     < ORIGINE DE LA ZONE 'CDA'.
XWOR%2:  VAL         KSIMS>DADR*LK-Z
AECDA:   EQU         ZERO+XWOR%2     < EXTREMITE DE LA ZONE 'CDA'.
XEIF%:   VAL         ENDIF
AOCDA1:  EQU         AOCDA           < A
AOCDA2:  EQU         AOCDA           < CAUSE
AOCDA3:  EQU         AOCDA
AOCDA4:  EQU         AOCDA
AOCDA5:  EQU         AOCDA
AECDA1:  EQU         AECDA           < DE
AECDA2:  EQU         AECDA           < L'ASSEMBLEUR...
AECDA3:  EQU         AECDA
AECDA5:  EQU         AECDA
         PAGE
<
<
<        Z O N E   D E   P A T C H   D U   C C I  :
<
<
<        NOTA :
<                      ETANT DONNE LA NOTION D'AUTO-RELAIS
<                    DANS LA GRAMMAIRE DU CCI, CELLE-CI
<                    DOIT SE TROUVER AUX ADRESSES '1XXX,
<                    ET IL EST DONC IMPOSSIBLE D'UTILISSER LA
<                    ZONE DE PATCH DU SYSTEME, D'OU CETTE
<                    ZONE RESERVEE POUR LES PATCHS DU CCI...
<
<
XCIPAT:: VAL         16              < ON PEUT ESPERER QUE 16 MOTS
                                     < SUFFIRONT...
CCIPAT:  DZS         XCIPAT          < ZONE DE PATCH DU CCI...
         PAGE
<
<
<        G R A M M A I R E   D U   C C I  :
<
<
<        A T T E N T I O N  :
<                    ETANT DONNE LA NOTION D'AUTO-RELAIS
<                    DANS LA GRAMMAIRE DU CCI, CELLE-CI
<                    DOIT SE TROUVER DANS LES ADRESSES
<                    DU TYPE '1XXX !!!!
<
<
<        LISTE DES COMMANDES RECONNUES :
<
<        1- AVANT LE LOGIN :
<                    !LOGIN ,
<                    !L ,
<                    !B...,
<                    !F...,
<        2- APRES LE LOGIN :
<                     ,
<                    !,
<                    !,
<                    !HHHH...
<                    !ACTIVITE B,
<                    !ACTIVITE H,
<                    !ACTIVITE M,
         IF          OACTIV-EXIST,XEIF%8,,XEIF%8
<                    !ACTIVITE OFF,
<                    !ACTIVITE ON,
XEIF%8:  VAL         ENDIF
<                    !ACTIVITE R,
<                    !ACTIVITE V,
<                    !ASSIGN =,
<                    !ASSIGN =...,
<                    !ASSIGN =N,,
<                    !ASSIGN =O,,
<                    !ASSIGN =D-,
<                    !ASSIGN =R...,
<                    !ASSIGN =S...,
<                    !BATCH,
<                    !BO,
<                    !BYE...,
<                    !C,
<                    !CALL,
<                    !CDA,
<                    !CDAG...,
<                    !CDAI...,
<                    !CDAI=I...,
<                    !CDAI=J...,
<                    !CDAJ+,
<                    !CDAP...,
<                    !CDAX...,
<                    !CLOSE...,
<                    !CM =...,
<                    !CM #...,
<                    !CM /...,
<                    !DATE...,
<                    !D,
<                    !DEBUG,
<                    !DEBUG,
<                    !DF,
<                    !DK =,
<                    !DK D ,
<                    !DK F,
<                    !DK INITIALISATION =,
<                    !DK M =,
<                    !DK S,
<                    !DK S0 OFF,
<                    !DK S0 ON,
<                    !DKU =,
<                    !DKU D ,
<                    !DKU F,
<                    !DKU INITIALISATION =,
<                    !DKU M =,
<                    !DKU S,
<                    !DKU S0 OFF,
<                    !DKU S0 ON,
<                    !E,
<                    !ECHO OFF,
<                    !ECHO ON,
<                    !EDIT,
<                    !F,
<                    !GE,
<                    !GO...,
<                    !HELP...,
<                    !I,
<                    !K...,
<                    !L,
<                    !L ,
<                    !L0,
<                    !L1,
<                    !L[+,
<                    !L[-,
<                    !LO,
<                    !LOAD,
<                    !M...,
<                    !N,
<                    !P...,
<                    !Q,
<                    !Q+0,
<                    !Q+1,
<                    !Q+2,
<                    !R,
<                    !R DANGER,
<                    !SGN,
<                    !SGN C OFF,
<                    !SGN C ON,
<                    !SI,
<                    !SO,
<                    !SYMBOL,
<                    !T,
<                    !TAB...,
<                    !TRACE OFF,
<                    !TRACE ON,
<                    !U,
<                    !VI ,
<                    !VIDEO,
<                    !VIX,
<                    !W...,
<                    !X ,
<                    !Z,
<
<
<        A T T E N T I O N  :
<                    TOUTES LES COMMANDES SONT PRECEDEES DE '!',
<                    SAUF LA COMMANDE "!GO" RAPIDE ()...
<
<
         PAGE
<
<
<        M E S S A G E S   D U   C C I  :
<
<
<*******************************************************************************
MESCCI:  BYTE        KCR;KLF;KBEL;KPI
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKMCCI:: VAL         $-MESCCI*NOCMO+XWOR%1
MESCCJ:  EQU         MESCCI          < A CAUSE DE L'ASSEMBLEUR...
LOMCCI:: VAL         LKMCCI?MKLOM
         IF          LBUFES*NOCMO-LKMCCI,,XEIF%,XEIF%
         IF          ATTENTION : 'LOMCCI' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
         NTRN
         DO          LPILID+Z-W+NOCMO-E/NOCMO
         BYTE        KPI;KPI
         TRN
         IF          LKMCCI-LMES1,,XEIF%,
         IF          ATTENTION : LA VALEUR PRESUMEE DE LA
         IF          LONGUEUR DE CE MESSAGE DANS LE 'CCI'
         IF          EST MAUVAISE !!!
XEIF%:   VAL         ENDIF
XUPDAT: @
XWOR%1:  VAL         KOLF=FMASK+KOLTES=FVAL
XWOR%1:  VAL         KOLC=FMASK+KDP=FVAL?XWOR%1
XWOR%2:  VAL         KOLTED=FMASK+KOL0=FVAL
XWOR%2:  VAL         KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2
XWOR%3:  VAL         XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE 'XUPDAT'...
XWOR%4:  VAL         MSYMBI=FMASK+KOL0=FVAL
XWOR%4:  VAL         MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4
         IF          XWOR%4=FCSYMT-SYMBX,XEIF%,,XEIF%
XUPDAT:: VAL         I               < SI 'XUPDAT' N'EXISTE PAS, ON LE CREE...
XEIF%:   VAL         ENDIF
XWOR%1:  VAL         COSBT?XXBNSP=FMASK(K?NSPUPD=FCINST
XWOR%2:  VAL         COGETM=FMASK(K?XWOR%1=FCINST)XWOR%1
XWOR%3:  VAL         COGETM=FMASK(K?XWOR%2=FCINST)XWOR%2
                                     < XWOR%3=NUMERO DU RELEASE COURANT.
XWOR%4:  VAL         XWOR%3+XUPDAT   < XWOR%4=NUMERO DU RELEASE A GENERER.
XXCMS5:: VAL         XWOR%4          < NUMERO DU RELEASE EN COURS D'ASSEMBLAGE.
UPDATE:  WORD        XXCMS5          < NUMERO DU RELEASE EN  COURS D'ASSEMBLAGE.
XWOR%9:  VAL         NBITMO/NBITCX
         NTRN
         DO          XWOR%9
XWOR%4:  VAL         XWOR%4/BASE10(K=FCREST=FCPUSH(K?XWOR%4/BASE10
         TRN
                                     < XWOR%4 DOIT SORTIR NUL DE LA BOUCLE,
                                     < OU DU MOINS INFERIEUR A 10...
         IF          XWOR%4-BASE10,XEIF%,,
         IF          ATTENTION : TROP D'UPDATES !!!
XEIF%:   VAL         ENDIF
XWOR%4:  VAL         K               < INITIALISATION DU CUMUL...
<*******************************************************************************
         DO          XWOR%9
XWOR%4:  VAL         XWOR%4*BASE16=FCPULL
         IDP         "#@@@@ RELEASE"
<*******************************************************************************
XWOR%5:  VAL         MOCG=K          < POUR ISOLER LES CHIFFRES DE GAUCHE,
XWOR%5:  VAL         -XWOR%5
XWOR%6:  VAL         MOCD=K          < POUR ISOLER LES CHIFFRES DE DROITE.
XWOR%6:  VAL         -XWOR%6
XWOR%7:  VAL         XWOR%4(MOCG>XWOR%5 < CHIFFRES DE GAUCHE,
XWOR%8:  VAL         XWOR%4(MOCD>XWOR%6 < CHIFFRES DE DROITE.
<
< MESSAGE DE 'LOGIN' :
<
M1:      BYTE        KCR;KFF
         BYTE        KCR;KBEL;KCR;KLF
         ASCI        "!!CMS5 IS UP"
         BYTE        KCR;KLF
XWOR%1:  VAL         COSBT?XXBRAC=FMASK(K=FCINST
         IF          OFFRAC-XWOR%1,,XEIF%,
         ASCI        "(IN RACK) "
         IDP         "VERSION IN-RACK"
XEIF%:   VAL         ENDIF
         IF          OFFRAC-XWOR%1,XEIF%,,XEIF%
         ASCI        "(OUT RACK)"
         IDP         "VERSION OUT-RACK"
XEIF%:   VAL         ENDIF
         BYTE        KCR;KLF
         ASCI        "RELEASE "
         WORD        XWOR%7=FCBA;XWOR%8=FCBA
XMPASS: @
XWOR%1:  VAL         KOLF=FMASK+KOLTES=FVAL
XWOR%1:  VAL         KOLC=FMASK+KDP=FVAL?XWOR%1
XWOR%2:  VAL         KOLTED=FMASK+KOL0=FVAL
XWOR%2:  VAL         KOLTEF=FMASK+KOL0+KOLON=FVAL?XWOR%2
XWOR%3:  VAL         XWOR%2=XWOR%1-KOL0 < LONGUEUR DU SYMBOLE 'XMPASS'...
XWOR%4:  VAL         MSYMBI=FMASK+KOL0=FVAL
XWOR%4:  VAL         MSYMBL=FMASK+XWOR%3=FVAL?XWOR%4
         IF          XWOR%4=FCSYMT-SYMBX,XEIF%,,XEIF%
XMPASS:: VAL         KNUL            < SI 'XMPASS' N'EXISTE PAS ON LE DEFINIT
                                     < AVEC LE CARACTERE "NUL"...
XEIF%:   VAL         ENDIF
         ASCI        "//"
         NLS
         WORD        XMPASS=FCBA     < QUELLE ASTUCE, ON EDITE 'XMPASS'
                                     < JUSTEMENT DERRIERE LE NUMERO DE LA
                                     < RELEASE COURANTE DU SYSTEME...
         LST
<*******************************************************************************
         BYTE        KCR;KLF
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM1::   VAL         $-M1*NOCMO+XWOR%1
LOM1::   VAL         LKM1?MKLOM
         IF          LBUFES*NOCMO-LKM1,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM1' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE 'WELCOME' :
<
M2:      BYTE        KCR;KLF
         ASCI        "!WELCOME"
<*******************************************************************************
         BYTE        KCR;KLF
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM2::   VAL         $-M2*NOCMO+XWOR%1
LOM2::   VAL         LKM2?MKLOM
         IF          LBUFES*NOCMO-LKM2,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM2' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'LOGOUT' :
<
M3:      BYTE        KLF;KPE
         ASCI        "HI"
<*******************************************************************************
         BYTE        KCR;KLF
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM3::   VAL         $-M3*NOCMO+XWOR%1
LOM3::   VAL         LKM3?MKLOM
         IF          LBUFES*NOCMO-LKM3,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM3' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'CCI ERROR' :
<
M4:      BYTE        KCR;KLF
<*******************************************************************************
         ASCI        "!!CCI ERROR #"
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM4::   VAL         $-M4*NOCMO+XWOR%1
LOM4::   VAL         LKM4?MKLOM
         IF          LBUFES*NOCMO-LKM4,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM4' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'DEBUG ERROR' :
<
M40:     BYTE        KCR;KLF
<*******************************************************************************
         ASCI        "!!DEBUG ERROR"
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM40::  VAL         $-M40*NOCMO+XWOR%1
LOM40::  VAL         LKM40?MKLOM
         IF          LBUFES*NOCMO-LKM40,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM40' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'LOGIN ERROR' :
<
M41:     BYTE        KCR;KLF
<*******************************************************************************
         ASCI        "!!LOGIN ERROR"
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM41::  VAL         $-M41*NOCMO+XWOR%1
LOM41::  VAL         LKM41?MKLOM
         IF          LBUFES*NOCMO-LKM41,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM41' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'TRONCATION' :
<
M8:      BYTE        KLF;KINF
<*******************************************************************************
         ASCI        "TRONCATION>"
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM8::   VAL         $-M8*NOCMO+XWOR%1
LOM8::   VAL         LKM8?MKLOM
         IF          LBUFES*NOCMO-LKM8,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM8' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'TRAPPE' :
<
M9:      BYTE        KCR;KLF
<*******************************************************************************
         ASCI        "!!TRAP"
XWOR%1:  VAL         '000000000@@=FCSIGN-SIGNP
<*******************************************************************************
LKM9::   VAL         $-M9*NOCMO+XWOR%1
LOM9::   VAL         LKM9?MKLOM
         IF          LBUFES*NOCMO-LKM9,,XEIF%,XEIF%
         IF          ATTENTION : 'LOM9' NE PEUT ETRE EMIS SUR
         IF          ATTENTION LE PERIPHERIQUE 'OUT' !!!
XEIF%:   VAL         ENDIF
<
< MESSAGE DE 'HELP' :
<
M10:     BYTE        K6D;KT
         ASCI        "APER :"
         BYTE        K6D;KCCI
         ASCI        "GE DE LA
                                     < COMMANDE RAPIDE EQUIVALENTE A "!GO".
XER002:: VAL         '00@@@+I?MCCIER < COMMANDE "!BYE" MAL ORTHOGRAPHIEE.
XER003:: VAL         '00@@@+I?MCCIER < COMMANDE "!BYE" REFUSEE LORSQU'IL
                                     < Y A DES ASSIGNATIONS ACTIVES.
XER004:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" PERMET UN CHANGEMENT
                                     < DE NUMERO DE COMPTE DYNAMIQUE.
XER005:: VAL         '00@@@+I?MCCIER < L' DEMANDE EST INEXISTANT.
XER006:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" PEUT CREER OU DETRUIRE
                                     < DES S.
XER007:: VAL         '00@@@+I?MCCIER < MOT DE PASSE NON RECONNU LORS DE LA
                                     < CREATION OU LA DESTRUCTION D'UN .
XER008:: VAL         '00@@@+I?MCCIER < LES OPERATIONS SUR  SONT INTERDITES
                                     < PAR LE SYSTEME (CF. 'MEMV').
XER009:: VAL         '00@@@+I?MCCIER < L'OPERATION DEMANDEE NE PEUT ETRE
                                     < REALISEE (DESTRUCTION, ALORS QU'IL Y A
                                     < DES NOMS DANS LE CATALOGUE DE CET ,
                                     < PAR EXEMPLE...).
XER00A:: VAL         '00@@@+I?MCCIER < COMMANDE "!F" TROP LONGUE...
XER00B:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!P" EST RESERVEE A ":SYS".
XER00C:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!Z" EST RESERVEE A ":SYS".
XER00D:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!Z" EST TROP LONGUE...
XER00E:: VAL         '00@@@+I?MCCIER < LE NOUVEAU MOT DE PASSE EST INCORRECT.
XER00F:: VAL         '00@@@+I?MCCIER < COMMANDE "!V..." INCONNUE.
XER010:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!VI" EST RESERVEE A ":SYS".
XER011:: VAL         '00@@@+I?MCCIER < LA VISU DEMANDEE N'EXISTE PAS : SON
                                     < NUMERO EST "ALPHABETIQUE", OU BIEN LA
                                     < COMMANDE "!VI " N'EST
                                     < PAS RECONNU (ABSENCE DE  DERRIERE
                                     < "!VI"...).
XER012:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!VI" NE PEUT ETRE
                                     < EXECUTEE (PAS D'UTILISATEUR LOGUE
                                     < SUR LA VISU RECEPTRICE, OU BIEN SON
                                     < NUMERO "NUMERIQUE" N'EXISTE PAS,...).
XER013:: VAL         '00@@@+I?MCCIER < LA COMMANDE DES COMMANDES "!M" EST
                                     < INTERDITE EN BATCH.
XER014:: VAL         '00@@@+I?MCCIER < LES ARGUMENTS DE "!M" SONT MAUVAIS
                                     < (CARACTERE A BIT DE PARITE PAR
                                     < EXEMPLE,...).
XER015:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!W" EST INTERDITE EN
                                     < MODE INTERPRETATIF (FONCTION 1 DES 'SVC')
XER016:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!W" EST INTERDITE EN BATCH.
XER017:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!U" EST RESERVEE A ":SYS",
                                     < A ":JFC" ET A ":SIM".
XER018:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!U" EST INTERDITE EN
                                     < MODE INTERPRETATIF.
XER019:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!U" EST INTERDITE
                                     < EN BATCH.
XER01A:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!U" EST TROP LONGUE.
XER01B:: VAL         '00@@@+I?MCCIER < LA PILE D'EMPILEMENT DES UTILISATEURS
                                     < PAR "!U" EST SATUREE.
XER01C:: VAL         '00@@@+I?MCCIER < CARACTERE NON RECONNU DERRIERE "!QXYZT"
XER01D:: VAL         '00@@@+I?MCCIER < QUELQU'UN POSSEDE DEJA TOUT OU PARTIE
                                     < DES GROUPES DE CYLINDRES DEMANDES.
XER01E:: VAL         '00@@@+I?MCCIER < COMMANDE "!DATE" MAL ORTHOGRAPHIEE.
XER01F:: VAL         '00@@@+I?MCCIER < COMMANDE "!EDIT" MAL ORTHOGRAPHIEE.
XER020:: VAL         '00@@@+I?MCCIER < COMMANDE "!CALL" MAL ORTHOGRAPHIEE.
XER021:: VAL         '00@@@+I?MCCIER < COMMANDE "!GE" MAL ORTHOGRAPHIEE.
XER022:: VAL         '00@@@+I?MCCIER < COMMANDE "!ASSIGN" MAL ORTHOGRAPHIEE.
XER023:: VAL         '00@@@+I?MCCIER < MANQUE 'SPACE' DERRIERE "!ASSIGN"
XER024:: VAL         '00@@@+I?MCCIER < LE 'NVP' DEMANDE EST INEXISTANT.
XER025:: VAL         '00@@@+I?MCCIER < MANQUE "=" DERRIERE LE 'NVP'.
XER026:: VAL         '00@@@+I?MCCIER < COMMANDE "!ASSIGN" A UNE VISU MAL
                                     < ORTHOGRAPHIEE.
XER027:: VAL         '00@@@+I?MCCIER < "!ASSIGN" A UNE VISU EST RESERVEE
                                     < AU NUMERO DE COMPTE ":SYS".
XER028:: VAL         '00@@@+I?MCCIER < LA VISU DEMANDEE N'EXISTE PAS.
XER029:: VAL         '00@@@+I?MCCIER < LE PERIPHERIQUE DEMANDE N'EXISTE PAS.
XER02A:: VAL         '00@@@+I?MCCIER < LE 'NVP' DEMANDE EST DEJA ASSIGNE...
XER02B:: VAL         '00@@@+I?MCCIER < COMMANDE "!ASSIGN" AU DEROULEUR DE
                                     < BANDES MAL ORTHOGRAPHIEE.
XER02C:: VAL         '00@@@+I?MCCIER < LE DEROULEUR DE BANDES MAGNETIQUES
                                     < DEMANDE N'EXISTE PAS.
XER02D:: VAL         '00@@@+I?MCCIER < "!ASSIGN" A L'IMPRIMANTE MAL ORTHO-
                                     < GRAPHIEE.
XER02E:: VAL         '00@@@+I?MCCIER < L'IMPRIMANTE DEMANDEE N'EXISTE PAS.
XER02F:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" PEUT S'ASSIGNER 'CR1'.
XER030:: VAL         '00@@@+I?MCCIER < LE LECTEUR DE CARTES DEMANDE
                                     < N'EXISTE PAS.
XER031:: VAL         '00@@@+I?MCCIER < "!ASSIGN" A UN COUPLEUR UNIVERSEL
                                     < MAL ORTHOGRAPHIEE.
XER032:: VAL         '00@@@+I?MCCIER < LE COUPLEUR UNIVERSEL DEMANDE
                                     < N'EXISTE PAS.
XER033:: VAL         '00@@@+I?MCCIER < "!ASSIGN" A 'DKU' MAL ORTHOGRAPHIEE.
XER034:: VAL         '00@@@+I?MCCIER < PERIPHERIQUE DEJA ASSIGNE OU 'NVP'
                                     < DEJA ASSIGNE.
XER035:: VAL         '00@@@+I?MCCIER < SEULS ":SYS" ET ":JFC" PEUVENT ASSIGNER
                                     < LE COUPLEUR 'CU3'.
XER036:: VAL         '00@@@+I?MCCIER < LE "!ASSIGN" A 'DKU' NE PEUT AVOIR
                                     < LIEU, CAR TOUT OU PARTIE DU 'DKU' A
                                     < ETE PROTEGE PAR UN OU PLUSIEURS AUTRES
                                     < UTILISATEURS.
XER037:: VAL         '00@@@+I?MCCIER < MANQUE LE SIGNE "-" DANS UNE COMMANDE
                                     < "!ASSIGN" DE DELETE D'UN FICHIER.
XER038:: VAL         '00@@@+I?MCCIER < MANQUE LA 'VIRGULE' DANS UN "!ASSIGN"
                                     < A UN FICHIER.
XER039:: VAL         '00@@@+I?MCCIER < LE FICHIER DEMANDE EN 'NEW' EXISTE
                                     < SUREMENT DEJA...
XER03A:: VAL         '00@@@+I?MCCIER < LE FICHIER DEMANDE EN 'OLD' N'EXISTE
                                     < SUREMENT PAS...
XER03B:: VAL         '00@@@+I?MCCIER < ??!?!??!??!
XER03C:: VAL         '00@@@+I?MCCIER < LA DESTRUCTION DU FICHIER DEMANDEE
                                     < NE PEUT AVOIR LIEU !!!
XER03D:: VAL         '00@@@+I?MCCIER < LA FERMETURE DU FICHIER EN MODE
                                     < SAVE S'EST MAL PASSEE !!!
XER03E:: VAL         '00@@@+I?MCCIER < "!SGN" IMPOSSIBLE ('NVP' DEJA ASSIGNES).
XER03F:: VAL         '00@@@+I?MCCIER < COMMANDE "!DKU" MAL ORTHOGRAPHIEE.
XER040:: VAL         '00@@@+I?MCCIER < MANQUE 'SPACE' DERRIERE "!DKU".
XER041:: VAL         '00@@@+I?MCCIER < UNE DEMANDE DE MONTAGE EST FAITE, ALORS
                                     < QU'IL Y A UN VOLUME DEJA MONTE.
XER042:: VAL         '00@@@+I?MCCIER < LA SYNTAXE DE "!DKU M" EST MAUVAISE.
XER043:: VAL         '00@@@+I?MCCIER < LE 'NVP' DEMANDE DANS "!DKU" N'EST PAS
                                     < ASSIGNE A 'DKU'.
XER044:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DKU M" EST TROP LONGUE.
XER045:: VAL         '00@@@+I?MCCIER < LE VOLUME MONTE N'EST PAS CELUI QUI
                                     < A ETE DEMANDE (DIFFRENCES D', VOLUME
                                     < NON FORMATTE,...).
XER046:: VAL         '00@@@+I?MCCIER < LA SYNTAXE DE "!DKU D" EST MAUVAISE.
XER047:: VAL         '00@@@+I?MCCIER < UN DEMONTAGE EST DEMANDE, ALORS QU'IL
                                     < N'Y A PAS DE VOLUME MONTE.
XER048:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DKU" EST TROP LONGUE.
XER049:: VAL         '00@@@+I?MCCIER < UNE DEMANDE D'INITIALISATION EST
                                     < FAITE, ALORS QU'IL Y A DEJA UN
                                     < VOLUME MONTE.
XER04A:: VAL         '00@@@+I?MCCIER < LA SYNTAXE DE "!DKU INITIALISATION"
                                     < EST MAUVAISE.
XER04B:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DKU INITIALISATION"
                                     < EST TROP LONGUE.
XER04C:: VAL         '00@@@+I?MCCIER < L'INITIALISATION NE PEUT ETRE FAITE
                                     < ('DKU' ABSENT,...).
XER04D:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CLOSE" EST MAL ORTHO-
                                     < GRAPHIEE.
XER04E:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CDA" EST MAL ORTHOGRAPHIEE.
XER04F:: VAL         '00@@@+I?MCCIER < LA 'CDA' DEMANDEE N'EXISTE PAS.
XER050:: VAL         '00@@@+I?MCCIER < L'UTILISATEUR N'A PAS DE "CDAP"...
XER051:: VAL         '00@@@+I?MCCIER < SEULS ":SYS" ET ":SIM" ONT DROIT A
                                     < LA "CDAG".
XER052:: VAL         '00@@@+I?MCCIER < LA "CDAG" EST DEJA OCCUPEE.
XER053:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CM" EST MAL ORTHOGRAPHIEE.
XER054:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" A DROIT A LA COMMANDE "!CM".
XER055:: VAL         '00@@@+I?MCCIER < LE PERIPHERIQUE EMETTEUR (CELUI QUE
                                     < QUE L'ON ESPIONNE) N'EXISTE PAS.
XER056:: VAL         '00@@@+I?MCCIER < LA FONCTION DEMANDEE DANS "!CM"
                                     < N'EXISTE PAS.
XER057:: VAL         '00@@@+I?MCCIER < LE PERIPHERIQUE RECEPTEUR (CELUI QUI
                                     < ESPIONNE) N'EXISTE PAS.
XER058:: VAL         '00@@@+I?MCCIER < LA FONCTION DEMANDEE NE PEUT ETRE
                                     < EXECUTEE (PARCEQUE DEJA FAITE...).
XER059:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!SYMBOL" EST MAL ORTHO-
                                     < GRAPHIEE.
XER05A:: VAL         '00@@@+I?MCCIER < "!SYMBOL" TROP LONGUE.
XER05B:: VAL         '00@@@+I?MCCIER < COMMANDE "!LOAD" MAL ORTHOGRAPHIEE.
XER05C:: VAL         '00@@@+I?MCCIER < "!LOAD" TROP LONGUE.
XER05D:: VAL         '00@@@+I?MCCIER < MANQUE 'SPACE' DERRIERE "!X".
XER05E:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!X" EST RESERVEE A ":SYS".
XER05F:: VAL         '00@@@+I?MCCIER < LE 'NVP' DEMANDE PAR "!X" N'EST PAS
                                     < ASSIGNE.
XER060:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!X" EST TROP LONGUE.
XER061:: VAL         '00@@@+I?MCCIER < LE PERIPHERIQUE ASSIGNE PAR LE 'NVP'
                                     < DE "!X" N'EST PAS UN PERIPHERIQUE
                                     < DE TYPE 'IN' ('VIS', 'CR', 'MT',...) OU
                                     < BIEN ENFIN, LE NIVEAU DE SERVICE ASSO-
                                     < CIE TEMPORAIREMENT A CE PERIPHERIQUE
                                     < A DEJA UNE 'FSERV' DE POSITIONNEE QUI
                                     < N'ATTEND QUE LA FIN DE SERVICE COURANT
                                     < POUR S'EXECUTER...
XER062:: VAL         '00@@@+I?MCCIER < "!TAB" MAL ORTHOGRAPHIEE.
XER063:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!TAB" EST INTERDITE
                                     < EN BATCH.
XER064:: VAL         '00@@@+I?MCCIER < LA DEFINITION DE LA TABULATION EST
                                     < MAUVAISE...
XER065:: VAL         '00@@@+I?MCCIER < "!HELP" MAL ORTHOGRAPHIEE.
XER066:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!I" EST TROP LONGUE.
XER067:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DF" EST TROP LONGUE.
XER068:: VAL         '00@@@+I?MCCIER < LE PREMIER CARACTERE SUIVANT "!"
                                     < N'EST PAS RECONNU.
XER069:: VAL         '00@@@+I?MCCIER < "!DEBUG" MAL ORTHOGRAPHIEE.
XER06A:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" A ACCES AU DEBUG ABSOLU.
XER06B:: VAL         '00@@@+I?MCCIER < SEUL ":SYS" A ACCES AU DEBUG TRANS-
                                     < LATABLE EN MODE INTERPRETATIF.
XER06C:: VAL         '00@@@+I?MCCIER < LE DEBUG ABSOLU DOIT ETRE VALIDE PAR
                                     < LE MOT 'MEMV'...
XER06D:: VAL         '00@@@+I?MCCIER < LE DEBUG EST INTERDIT EN BATCH
                                     < SAUF SOUS ":SYS".
XER06E:: VAL         '00@@@+I?MCCIER < COMMANDE "!SGN" MAL ORTHOGRAPHIEE.
XER06F:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!N" EST INTERDITE EN BATCH.
XER070:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!N" EST TROP LONGUE,
                                     < DE MEME POUR LES COMMANDES D'ASSIGNATIONS
                                     < IMPLICITES ("!BO", "!LO", "!SI","!SO" ET
                                     < CE QUI SIGNIFIE EN FAIT QUE MANQUE
                                     < L' DE FIN...
XER071:: VAL         '00@@@+I?MCCIER < LA COMMANDE PRE-PROGRAMMEE DEMANDEE
                                     < N'EXISTE PAS...
XER072:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!DKU F".
XER073:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DKU S" EST INCORRECTE.
XER074:: VAL         '00@@@+I?MCCIER < MANQUE 'SPACE' OU 'C' DANS "!SGN C O...".
XER075:: VAL         '00@@@+I?MCCIER < FONCTION NON RECONNUE DERRIERE "!SGN C".
XER076:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!SGN C ON".
XER077:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!SGN C OFF".
XER078:: VAL         '00@@@+I?MCCIER < "!SGN C OFF" EST RESERVEE A ":SYS"...
XER079:: VAL         '00@@@+I?MCCIER < "!SGN C OFF" N'EST ACTIVABLE QUE SI
                                     < 'MEMXXX' EST POSITIONNE...
XER07A:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!R" EST INCORRECTE.
XER07B:: VAL         '00@@@+I?MCCIER < COMMANDE "!BATCH" INCORRECTE.
XER07C:: VAL         '00@@@+I?MCCIER < COMMANDES "!SO"/"!SI" INCORRECTE.
XER07D:: VAL         '00@@@+I?MCCIER < COMMANDES "!BATCH", "!BO", "!LO", "!BO",
                                     < "!SI" OU "!SO" INTERDITES EN BATCH.
XER07E:: VAL         '00@@@+I?MCCIER < FOTTE D'HORTAUGRAFE DANS "!ECHO"...
XER07F:: VAL         '00@@@+I?MCCIER < FONCTION INEXISTANTE DANS "!ECHO".
XER080:: VAL         '00@@@+I?MCCIER < "!ECHO" EST INTERDITE EN BATCH.
XER081:: VAL         '00@@@+I?MCCIER < MANQUE  A LA FIN DE "!ECHO".
XER082:: VAL         '00@@@+I?MCCIER < ON EST PRESENTEMENT SOUS ":SYS", ET UN
                                     < POINT DE NON RETOUR EST DEMANDE.
XER083:: VAL         '00@@@+I?MCCIER < UN POINT DE NON RETOUR EST DEMANDE ALORS
                                     < QUE LE LOGIN INITIAL N'ETAIT PAS SOUS
                                     < ":SYS", OU BIEN QU'UN POINT DE NON
                                     < RETOUR EST DEJA FRANCHI...
XER084:: VAL         '00@@@+I?MCCIER < LA COMMANDE RAPIDE  EQUIVA-
                                     < LENTE A "!GO" EST MAL ECRITE...
XER085:: VAL         '00@@@+I?MCCIER < FONCTION NON RECONNUE DERRIERE UNE
                                     < COMMANDE "!DK S0".
XER086:: VAL         '00@@@+I?MCCIER < MANQUE UN 'SPACE' DERRIERE "!DK S0".
XER087:: VAL         '00@@@+I?MCCIER < FONCTION NON RECONNUE DERRIERE UNE
                                     < COMMANDE "!DK S0", ALORS QU'ON CROYAIT
                                     < QU'IL S'AGIRAIT DE "!DK S0 OFF"...
XER088:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!DK S0 ON".
XER089:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!DK S0 OFF".
XER08A:: VAL         '00@@@+I?MCCIER < ERREUR DANS "!R DANGER".
XER08B:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!R DANGER".
XER08C:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!R DANGER" EST
                                     < INTERDITE POUR TOUT  DIFFERENT
                                     < DE ":SYS".
XER08D:: VAL         '00@@@+I?MCCIER < COMMANDE "!VIDEO" NON RECONNUE.
XER08E:: VAL         '00@@@+I?MCCIER < COMMANDE "!DK S0..." ALORS QUE L'UTI-
                                     < LISATEUR NE S'EST PAS ASSIGNE LE
                                     < DISQUE 'DKU'...
XER08F:: VAL         '00@@@+I?MCCIER < LA COMMANDE MAGIQUE EST INTERDITE EN
                                     < BATCH.
XER090:: VAL         '00@@@+I?MCCIER < LA COMMANDE MAGIQUE EST MAUVAISE...
XER091:: VAL         '00@@@+I?MCCIER < LA COMMANDE MAGIQUE N'EST AUTORISEE
                                     < QU'APRES UN LOGIN INITIAL SOUS ":SYS"...
XER092:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DK F" N'EST AUTORISEE
                                     < QUE SI UN "ASSIGN" A PERMIS L'APPRO-
                                     < PRIATION DU 'DKU'...
XER093:: VAL         '00@@@+I?MCCIER < DE MEME POUR "!DK F"...
XER094:: VAL         '00@@@+I?MCCIER < MANQUE 'SPACE' DANS "!TRACE O...".
XER095:: VAL         '00@@@+I?MCCIER < FONCTION NON RECONNUE DERRIERE "!TRACE ".
XER096:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!TRACE ON".
XER097:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!TRACE OFF".
XER098:: VAL         '00@@@+I?MCCIER < "!TRACE OFF" EST RESERVEE A ":SYS"...
XER099:: VAL         '00@@@+I?MCCIER < "!TRACE OFF" N'EST ACTIVABLE QUE SI
                                     < 'MEMXXX' EST POSITIONNE...
XER09A:: VAL         '00@@@+I?MCCIER < "!TRACE" NON RECONNUE...
XER09B:: VAL         '00@@@+I?MCCIER < TRANSLATION INCONNUE DERRIERE "!QXYZT+"..
XER09C:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!QXYZT+D".
XER09D:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CDAJ+0" IMPLICITE ("!CDAJ")
                                     < N'EST PAS TERMINEE PAR UN ...
XER09E:: VAL         '00@@@+I?MCCIER < MANQUE  EN BOUT DE LA COMMANDE
                                     < "!CDAJ...".
XER09F:: VAL         '00@@@+I?MCCIER < LA 'CDAJ' EST DEJA OCCUPEE (PAR QUEL-
                                     < QU'UN D'AUTRE), OU BIEN LE NUMERO DE
                                     < PAGE EST MAUVAIS.
XER0A0:: VAL         '00@@@+I?MCCIER < UNE CARTE "!ASSIGN..." CONTIENT AU MOINS
                                     < UN CARACTERE 'NULL'...
XER0A1:: VAL         '00@@@+I?MCCIER < IL MANQUE UN  EN BOUT DE "!DK =...".
XER0A2:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!DK =..." A ETE EMISE ALORS
                                     < QUE L'UTILISATEUR NE S'EST PAS ASSIGNE
                                     < LE DISQUE 'DKU'...
XER0A3:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CDAI=" N'EST PAS SUIVI DE
                                     < L'UN DES 2 CARACTERES RECONNUS ("I"/"J").
XER0A4:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!CDAP" EST RESERVEE AU
                                     < NUMERO DE COMPTE ":SYS"...
XER0A5:: VAL         '00@@@+I?MCCIER < "ACTIVITE" NON RECONNUE...
XER0A6:: VAL         '00@@@+I?MCCIER < "OFF" NON RECONNU...
XER0A7:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!ACTIVITE OFF".
XER0A8:: VAL         '00@@@+I?MCCIER < "ON" OU "OFF" NON RECONNU...
XER0A9:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!ACTIVITE ON".
XER0AA:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!ACTIVITE ON" EST INTER-
                                     < DITE HORS DE ":SYS"...
XER0AB:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!ACTIVITE ON" A ETE DEMANDEE
                                     < ALORS QUE LES FONCTIONS DANGEREUSES
                                     < SONT INTERDITES, OU ALORS QUE LE 'CBMJ'
                                     < (TELEVISION MOYENNE DEFINITION) EST
                                     < INACCESSIBLE...
XER0AC:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!ACTIVITE H".
XER0AD:: VAL         '00@@@+I?MCCIER < LES COMMANDES "!ACTIVITE R/V/B/H" SONT
                                     < RESERVEES A ":SYS"...
XER0AE:: VAL         '00@@@+I?MCCIER < "H", "R", "V", "M" OU "B" NON RECONNUES..
XER0AF:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!ACTIVITE B DERRIERE LA COMMANDE
                                     < "!ACTIVITE V".
XER0B1:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE LA COMMANDE
                                     < "!ACTIVITE R.
XER0B2:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!ACTIVITE R/V/B/H"
                                     < A ETE DEMANDEE ALORS QUE SOIT LES
                                     < FONCTIONS DANGEREUSES SONT INTERDITES
                                     < SOIT QUE LA TELEVISION NUMERIQUE
                                     < BASSE DEFINITION EST ABSENTE...
XER0B3:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!GO" N'EST PAS SUIVIE
                                     < D'UN LIMITEUR CORRECT...
XER0B4:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!P" N'EST PAS SUIVIE D'UN
                                     < LIMITEUR...
XER0B5:: VAL         '00@@@+I?MCCIER < MANQUE  DERRIERE "!ACTIVITE M...".
XER0B6:: VAL         '00@@@+I?MCCIER < LA COMMANDE "!ACTIVITE M..." EST REFUSEE
                                     < CAR LES FONCTIONS DANGEREUSES SONT
                                     < INTERDITES...
<
< CODE D'ERREUR INEXISTANT :
<
XERMAX:: VAL         '00@@@+I        < PREMIER CODE INEXISTANT...
<*******************************************************************************
<
< INSTRUCTIONS REFERENCEES EN AVANT :
< (PAR 'DISPER')
<
CCINSF:  EQU         $
<*******************************************************************************
         CPI         XERMIN          < VALIDATION INFERIEURE DU CODE-ERREUR...
XWOR%1:  VAL         '0000000@@@@    < RECUPERATION DU CODE DE L'INSTRUCTION,
<*******************************************************************************
CPIMIN:  EQU         ZERO+XWOR%1     < ET DEFINITION EN AVANT...
<*******************************************************************************
         CPI         XERMAX          < VALIDATION SUPERIEURE DU CODE-ERREUR...
XWOR%1:  VAL         '0000000@@@@    < RECUPERATION DU CODE DE L'INSTRUCTION,
<*******************************************************************************
CPIMAX:  EQU         ZERO+XWOR%1     < ET DEFINITION EN AVANT...
         $EQU        CCINSF          < ET ANNULATION DU CODE GENERE...
         PAGE
<
<
<        T R A P P E  :
<
<
N440:    BYTE        LOM9;FCCI0
         WORD        M9              < MESSAGE .
         BYTE        K;FCCI15        < GO BACK VERS LA GRAMMAIRE
                                     < INTERROMPUE ET RESTAURE LE
                                     < REGISTRE Y (CF. LE CAS DU
                                     < DEBUG ; L'APPEL DE LA SOUS-
                                     < GRAMMAIRE A ETE FAIT PAR LE
                                     < RECOVERY.
         PAGE
<
<
<        R A C I N E   D E   L A   G R A M M A I R E   D U   C C I  :
<
<
OTOCCI:  EQU         $
N0:      EQU         $
XWOR%1:  VAL         N440-N0
ARTRAP:  EQU         ZERO+XWOR%1     < REFERENCE UTILISEE PAR 'TH0' LORS
                                     < DES TRAPPES UTILISATEUR...
         BYTE        LOM1;FCCI0      < MESSAGE '!!UCPRS-CMS5 IS UP',
                                     < ET SAUT DE PAGE DANS LE CAS
                                     < DU BATCH (LP1).
         WORD        M1
         BYTE        LODATE;FCCI0    < ENVOI DE LA DATE ET HEURE.
         WORD        DATE
N12:     BYTE        XEECHO;FCCI6    < 1ERE INTERROGATION.
         BYTE        KCCI;FCCI17
         WORD        N268            < ERREUR.
         PAGE
<
<
<        I N H I B I T I O N   D E   C E R T A I N S   < A C N >  :
<
<
XKSECE:: VAL         KSP             < TOUT  COMMENCANT PAR LE CARACTERE
                                     < 'XKSECE' NE PEUT ETRE UTILISE POUR
                                     < UN LOGIN DIRECT ; IL NE PEUT ETRE
                                     < ACCEDE QUE SI UN LOGIN INITIAL SOUS
                                     < ":SYS" A ETE EFFECTUE, PUIS PAR UN CHAN-
                                     < GEMENT D' PAR "!L...".
<
<
<        L O G I N   :
<
<
         BYTE        KL;FCCI17
         WORD        N79             < TENTATIVE DE 'PETIT-BYE' ???
         BYTE        KO;FCCI17
         WORD        N73             < ESSAI DE COMMANDE ABREGEE 'L'.
         BYTE        KG;FCCI17
         WORD        N268            < ERREUR.
         BYTE        KI;FCCI17
         WORD        N268            < ERREUR.
         BYTE        KN;FCCI17
         WORD        N268            < ERREUR.
N73:     BYTE        KSP;FCCI17
         WORD        N268            < ERREUR.
         BYTE        XKSECE;FCCI5    < EST-CE UN  INACCESSIBLE DIRECTE-
                                     < MENT (SANS PASSER PAR ":SYS") ???
         WORD        N268            < OUI, ON REFUSE CE LOGIN...
         BYTE        K;FCCI1
         WORD        LOGOLD
N80:     BYTE        K;FCCI1
         WORD        ACNON           < VERIFICATION NUMERO DE COMPTE.
         WORD        N5              < ACN RECONNU, LET'S GO !
         WORD        N268            < ACN NON RECONNU, TRY AGAIN !!!
         PAGE
<
<
<        N O Y A U   D ' I N T E R R O G A T I O N   D U   C C I  :
<
<
N5:      BYTE        K;FCCI2
N550:    BYTE        K;FCCI1
         WORD        CCIXE           < RAZ A PRIORI DU REGISTRE
                                     < X DE L'ESCLAVE.
         BYTE        K;FCCI11        < TEST DU MODE INTERACTIF.
         WORD        N412            < CCI INTERACTIF : INTERROGATION.
         BYTE        K;FCCI1         < CAS DU CCI EN MODE INTERACTIF.
         WORD        INIBES          < INITIALISATION DE L'ANALYSE
                                     < SYNTAXIQUE DU CCI.
         WORD        N415            < VERS L'ANALYSE SYNTAXIQUE.
N412:    EQU         $
AMAIL:   BYTE        K;FCCI0         < MESSAGE DE COURRIER AUX ESCLAVES
                                     < VIDE EN GENERAL.
         WORD        MAIL
         BYTE        XEECHO;FCCI6    < BOUCLE D'INTERROGATION GENERALE.
<
<
<        A N A L Y S E   D U   C C I  :
<
<
N415:    BYTE        KCCI;FCCI5
         WORD        N331            < ON A TROUVE LE "!" QUI DOIT PRECEDER
                                     < TOUT MESSAGE AU 'CCI'...
         BYTE        KSP;FCCI17      < NON, PAS DE "!", ALORS, NE SERAIT-CE
                                     < PAS LA COMMANDE RAPIDE "!GO"...
         WORD        XER001          < NON, NI "!", ERREUR...
         BYTE        K;FCCI10        < EST-ELLE COMPLETEE PAR UN  ???
         WORD        N85             < OUI, ON LA TRAITE COMME "!GO"...
         WORD        XER084          < NON, ERREUR...
<
<
<        R E C O N N A I S S A N C E   D I R E C T E   D U
<        1 E R   C A R A C T E R E   D E   L A
<                    C O M M A N D E  :
<
<
N331:    BYTE        K;FCCI18        < ACCES A 1ER CARACTERE DU
                                     < BUFESC, ET TENTATIVE DE
                                     < RECONNAISSANCE DIRECTE.
         WORD        N860            < LE 1ER CARACTERE EST SOIT HORS
                                     < DE L'INTERVALLE 'A'-'Z', SOIT
                                     < NON RECONNU.
         WORD        N88             < A
         WORD        N70             < B
         WORD        N141            < C
         WORD        N441            < D
         WORD        N50             < E
         WORD        N900            < F
         WORD        N84             < G
         WORD        N601            < H
         WORD        N704            < I
         WORD        NIL             < J
         WORD        N5              < K : C O M M E N T A I R E...
         WORD        N307            < L
         WORD        N10010          < M
         WORD        N41000          < N
         WORD        NIL             < O
         WORD        N320            < P
         WORD        N30000          < Q
         WORD        N44000          < R
         WORD        N135            < S
         WORD        N424            < T
         WORD        N20000          < U
         WORD        N41             < V
         WORD        N45             < W
         WORD        N401            < X
         WORD        NIL             < Y
         WORD        N10000          < Z
         PAGE
<
<
<        L O G O U T  :
<
<
N70:     BYTE        KY;FCCI17
         WORD        N45000          < PEUT-ETRE "!BO" OU "!BATCH" ???
         BYTE        KE;FCCI17
         WORD        XER002
         BYTE        K;FCCI11        < TEST DU MODE DU CCI.
         WORD        N422            < OK : MODE INTERACTIF.
         WORD        N417            < ERREUR : NON INTERACTIF.
N422:    BYTE        K;FCCI1
         WORD        CHKASG          < CHECK TASSGN VANT LE LOGOUT.
         WORD        N9
         WORD        XER003
N9:      BYTE        LOM3;FCCI0      < MESSAGE.
         WORD        M3
         BYTE        K;FCCI1
         WORD        PCDAIN          < ON FAIT COMME SI "!CDA" AVAIT ETE
                                     < EMISE, AFIN D'ANNULER UNE EVENTUELLE
                                     < "!CDAG" ANTERIEURE, ET AINSI LIBERER
                                     < LA 'CDA-COMMUNE PRIVEE'...
         BYTE        K;FCCI1
         WORD        P2DKU           < ON SIMULE LA COMMANDE "!Q0000",
         BYTE        NSPDKU;FCCI1
         WORD        P1DKU           < AFIN DE LIBERER LES EVENTUELLES APPRO-
                                     < PRIATIONS DE GROUPES DE CYLINDRES...
         WORD        N30002          < OK, LIBERES...
         BYTE        K;FCCI1
         WORD        P3DKU           < E R R E U R   S Y S T E M E...
N30002:  EQU         $
         BYTE        K;FCCI1
         WORD        AVWAIT          < DECREMENTATION DE NUSERA,
                                     < REINITIALISATION DE L'HORLOGE,
                                     < ET DE LA PATTERN CYCLIQUE
                                     < DE SWAPPING OUT.
         WORD        N850            < CE RELAI EST RENDU NECESSAIRE
                                     < PAR LA RESSEMBLANCE DU 1ER MOT
                                     < DU NOEUD SUIVANT AVEC UN
                                     < AUTO-RELAI...
N850:    EQU         $               < ETIQUETTE OBLIGATOIRE (CF. CI-DESSUS...).
         BYTE        LODATE;FCCI0    < ENVOI DE LA DATE ET DE L'HEURE.
         WORD        DATE
         BYTE        K;FCCI3         < LOG-OUT.
         PAGE
<
<
<        P O I N T   D E   N O N   R E T O U R  :
<
<
N307A:   BYTE        K;FCCI10        < EST-CE "!L" ???
         WORD        N307A8          < OUI, C'EST UN POINT DE NON RETOUR...
         WORD        N307A9          < NON, PEUT-ETRE AUTRE CHOSE...
N307A8:  BYTE        K;FCCI19        < DANS LE CAS D'UN POINT DE NON RETOUR,
                                     < EST-ON PRESENTEMENT SOUS ":SYS" ???
         WORD        XER082          < OUI, ON NE PEUT DONC SE BLOQUER EN NON
                                     < RETOUR SOUS UN AUTRE ...
         BYTE        K;FCCI1         < NON, ON N'EST PLUS SOUS ":SYS",
         WORD        PNRET           < ON PEUT DONC SE BLOQUER SOUS UN AUTRE
                                     <  ET NE PLUS EN BOUGER !!!
         WORD        N5              < OK...
         WORD        XER083          < IMPOSSIBLE, LE LOGIN INITIAL N'ETAIT
                                     < PAS SOUS ":SYS", OU BIEN UN POINT DE
                                     < NON RETOUR ETAIT DEJA FRANCHI...
<
<
<        C H A N G E M E N T   D ' < A C N >  :
<
<
N307A9:  BYTE        KSP;FCCI17
         WORD        N307A3          < PEUT-ETRE UN CHANGEMENT DE PRIORITE ???
         BYTE        K;FCCI1
         WORD        TESSYS          < ETAIT-ON INITIALEMENT SOUS ":SYS" ???
         WORD        N307A2          < OUI, OK...
         WORD        XER004          < NON, ERREUR...
N307A2:  BYTE        K;FCCI1
         WORD        LOGOLD          < PREPARATION D'UN LOGIN 'OLD'...
         BYTE        K;FCCI1
         WORD        ACNON           < QUE L'ON EFFECTUE...
         WORD        N5              < OK, TOUT S'EST BIEN PASSE...
         WORD        XER005          < NON, ERREUR  INEXISTANT...
<
<
<        C H A N G E M E N T   D E   P R I O R I T E  :
<
<
N307A3:  BYTE        KZERO;FCCI5     < EST-CE "!L0" ???
         WORD        N307A4          < OUI, PRIORITE NORMALE...
         BYTE        KUN;FCCI17      < EST-CE "!L1" ???
         WORD        N307A7          < NON, INSERT/DELETE  ???
         BYTE        K;FCCI1         < OUI, PRIORITE INFERIEURE :
         WORD        LPRIO1          < MISE DE IDESC6=1.
         WORD        N260            < VERS LE TEST DE ...
N307A4:  BYTE        K;FCCI1         < PRIORITE NORMALE :
         WORD        LPRIO0          < MISE DE IDESC6=0.
         WORD        N260            < VERS LE TEST DE ...
<
<
<        O P E R A T I O N S   S U R   A C N  :
<        ( I N S E R T / D E L E T E )
<
<
N307A7:  BYTE        K;FCCI19        < EST-ON SOUS ":SYS" ???
         WORD        N307A5          < OK...
         WORD        XER006          < NON, ERREUR...
XWOR%1:  VAL         COSBT?BITPAR=FMASK(K=FCINST
N307A5:  BYTE        KCG?XWOR%1;FCCI17 < "[" (12-8-2 EN PERFO MULTIPLES) ???
         WORD        XER007          < NON, PASSE NON RECONNU...
         BYTE        K;FCCI1
         WORD        LOGNEW          < PREPARATION INSERT/DELETE.
         WORD        N307A6          < OK, INSERT/DELETE AUTORISE...
         WORD        XER008          < ET NON, ERREUR...
N307A6:  BYTE        K;FCCI1
         WORD        ACNON           < INSERT/DELETE ACN.
         WORD        N5              < INSERT/DELETE OK.
         WORD        XER009          < OPERATION IMPOSSIBLE, OU
                                     < NON RECONNUE...
         PAGE
<
<
<        C L O S E   &   L O G O U T  :
<
<
N900:    EQU         $
         BYTE        K;FCCI10        < TEST DE L' ???
         WORD        N950            < OUI, C'EST LA COMMANDE !F.
         WORD        XER00A          < NON, ERREUR...
N950:    EQU         $
         BYTE        K;FCCI11        < TEST DU MODE DU 'CCI' ???
         WORD        N830            < OK, 'CCI' INTERACTIF...
         WORD        N417            < ERREUR : 'CCI' INTERPRETATIF !!!
N830:    BYTE        K;FCCI1
         WORD        INVP2           < INITIALISATION DU NVP COURANT
                                     < SUR PHOUT LORS DE LA RECON-
                                     < NAISSANCE DE !F...
<
< BOUCLE DE DESASSIGNATION EN SAVE DE TASSGN :
<
N821:    BYTE        K;FCCI1
         WORD        NVPP1
         WORD        N822            < OK, LE NVP COURANT EXISTE,
                                     < ALLONS FAIRE UNE TENTATIVE DE
                                     < DESASSIGNATION EN SAVE.
         WORD        N9              < LE NVP COURANT EST INEXISTANT,
                                     < LA DESASSIGNATION EST DONC
                                     < COMPLETE...
                                     < ALLONS FAIRE LE LOGOUT !!!
N822:    BYTE        MCFS-CMCFSR;FCCI1
         WORD        CCICLF          < TENTATIVE DE :
                                     < !ASSIGN =S.
         WORD        N821            < QUELQUE SOIT LES CONDITIONS DE
         WORD        N821            < RETOUR, ON PASSE AU NVP SUIVANT.
         PAGE
<
<
<        E R R E U R   L O R S   D E   L ' A N A L Y S E  :
<
<
N10:     BYTE        K;FCCI11        < TEST DU MODE DU CCI.
         WORD        N416            < MODE INTERACTIF : MESSAGE '??'.
N417:    BYTE        ECES;FCCI1      < CAS DU MODE NON INTERACTIF.
         WORD        CCIXE           < RENVOI DE (X)=1 A L'ESCLAVE.
         WORD        N5
N416:    BYTE        K;FCCI1
         WORD        DISPCA          < EDITION PARTIELLE DE LA CARTE JUSQU'AU
                                     < CARACTERE EN ERREUR...
         BYTE        LOM4;FCCI0      < MESSAGE D'ERREUR DE BASE DU CCI.
         WORD        M4
         BYTE        K;FCCI1
         WORD        DISPER          < EDITION DU CODE D'ERREUR CONTENU DANS
                                     < LA 'BOX' UTILISATEUR...
         WORD        N5              < VERS L'INTERROGATION...
         PAGE
<
<
<        C O M M A N D E   D E   P L A N T A G E   ( P A T C H )  :
<
<
N320:    BYTE        K;FCCI19
         WORD        N15             < OK, C'EST :SYS.
         WORD        XER00B          < ERREUR : '!P...' REFUSE.
N15:     BYTE        K;FCCI10        < Y-A-T'IL BIEN UN  ???
         WORD        N289            < OUI, OK...
         WORD        XER0B4          < NON, ERREUR...
N289:    BYTE        K;FCCI1
         WORD        IPATCH
         BYTE        K;FCCI2         < SORTIE DU CCI, POUR RENTREE
                                     < IMMEDIATE AVEC L'ESPACE MEMOIRE
                                     < ESCLAVE BLOQUE EN MEMOIRE.
         BYTE        K;FCCI1
         WORD        PATCH           < ESPACE ESCLAVE RESIDENT...
         WORD        N5
         NLS
         PAGE
<
<
<        M O D I F I C A T I O N   D U   T O M   E D   E S S A P  :
<
<
N10000:  BYTE        K;FCCI19        < EST-CE BIEN ":SYS" ???
         WORD        N10001          < OUI, IL EST AUTORISE...
         WORD        XER00C          < NON, LA COMMANDE EST REFUSEE !!!
N10001:  BYTE        K;FCCI1
         WORD        SVDBG           < MISE DANS 'VALESC' DU CODE CHOISI...
         BYTE        K;FCCI10        < L' EST-IL BIEN LA ???
         WORD        N10002          < OUI...
         WORD        XER00D          < NON, ERREUR...
N10002:  BYTE        K;FCCI1
         WORD        ZPASS           < TEST PUIS MISE EN PLACE S'IL EST
                                     < VALIDE DU CODE CHOISI...
         WORD        N5              < OK, VERS L'INTERROGATION GENERALE...
         WORD        XER00E          < NON, ERREUR...
         LST
         PAGE
<
<
<        I N H I B I T I O N   D E S   F O N C T I O N S
<                    D A N G E R E U S E S  :
<
<
N44000:  BYTE        K;FCCI10        < TEST DE  ???
         WORD        N44001          < OK, PRESENT...
         WORD        N44002          < ABSENT, C'EST PEUT-ETRE "!R DANGER" ???
<
< INHIBITION DES FONCTIONS DANGEREUSES :
<
N44001:  BYTE        K;FCCI1
         WORD        PINHIB          < ET ON INHIBE, QUELQUE SOIT LE MODE,
                                     < QUELQUE SOIT L',...
         WORD        N5              < PUIS VERS L'INTERROGATION...
<
< AUTORISATION DES FONCTIONS DANGEREUSES :
<
N44002:  BYTE        KSP;FCCI17
         WORD        XER07A          < ERREUR...
         BYTE        KD;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        KA;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        KN;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        KG;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        KE;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        KR;FCCI17
         WORD        XER08A          < ERREUR...
         BYTE        K;FCCI12        < TEST DU MODE TEMPS PARTAGE ???
         WORD        N44005          < OUI, TEMPS PARTAGE, TEST 'ETX'...
         WORD        N44006          < NON, BATCH, TEST DIRECT DE ...
N44005:  BYTE        KETX;FCCI17     <  ???
         WORD        XER08A          < NON, ERREUR...
N44006:  BYTE        K;FCCI10        < TEST DE  ???
         WORD        N44003          < OK, C'EST "!R DANGER"...
         WORD        XER08B          < NON, ERREUR...
N44003:  BYTE        K;FCCI19        < OUI, MAIS EST-ON BIEN SOUS ":SYS"...
         WORD        N44004          < OUI, OK...
         WORD        XER08C          < NON, COMMANDE REFUSEE...
N44004:  BYTE        K;FCCI1         < OUI,
         WORD        PDANGE          < ON AUTORISE 'MEMXXX' !!!
         WORD        N5              < ET ON VA VERS L'INTERROGATION...
         PAGE
<
<
<        C O M M A N D E   V I S U   A   V I S U  :
<
<
N41X1:   BYTE        K;FCCI19        < !VI N'EST AUTORISE QUE SOUS :SYS...
         WORD        N42             < OK, "SYS"...
         WORD        XER010          < ERREUR, REFUSE !!!
N42:     BYTE        CCITCH;FCCI4    < TYPE CHIFFRE ???
         WORD        N43             < OUI : C')ST LA COMMANDE
                                     < VISU A VISU.
         BYTE        KSP;FCCI5       < EST-CE LE 'MAIL' ("!VI ") ???
         WORD        N41X2           < OUI...
         WORD        XER011          < NON...
N43:     BYTE        K;FCCI1         < DEMANDE DE DIALOGUE VISU A VISU.
         WORD        VISAVI
         WORD        N5              < RETOUR OK.
         WORD        XER012          < RETOUR EN ERREUR.
         PAGE
<
<
<        M O D I F I C A T I O N   D U   ' M A I L '  :
<
<
N41X2:   BYTE        K;FCCI1
         WORD        PMAIL           < MISE EN PLACE DU NOUVEAU 'MAIL' (EVEN-
                                     < TUELLEMENT VIDE...),
         WORD        N5              < ET RETOUR A L'INTERROGATION...
         PAGE
<
<
<        C O M M A N D E   D E S   C O M M A N D E S  :
<
<
N10010:  BYTE        K;FCCI12        < TEST DE L'INTERACTIVITE :
         WORD        N10011          < OK, UTILISATEUR DU TEMPS PARTAGE...
         WORD        XER013          < NON, ERREUR (UTILISATEUR BATCH).
N10011:  BYTE        K;FCCI1         < GENERATION DU BUFFER D'ANTICIPATION
                                     < DE LA VISU :
         WORD        STBAV
         WORD        N5              < OK...
         WORD        XER014          < ERREUR (EN GENERAL, INSERTION IMPOSSI-
                                     < BLE, OU BIT DE PARITE POSITIONNE...).
         PAGE
<
<
<        C O M M A N D E S   P R E - P R O G R A M M E E S  :
<
<
N41000:  BYTE        K;FCCI12        < TEST DE L'INTERACTIVITE :
         WORD        N41001          < OK, TEMPS PARTAGE...
         WORD        XER06F          < ERREUR, "!N" INTERDITE EN BATCH...
N41001:  BYTE        K;FCCI1
         WORD        SVDBG           < 'VALESC' RECOIT LE NUMERO DE COMMANDE
                                     < PREPROGRAMME SOUHAITEE,
N45030:  BYTE        K;FCCI10        < TEST DE  ???
                                     < ET POINT D'ENTREE POUR LES COMMANDES
                                     < IMPLICITES "!BO", "!LO", "!SI" ET "!SO".
         WORD        N41002          < OK...
         WORD        XER070          < MANQUE  DE FIN...
N41002:  BYTE        K;FCCI1
         WORD        P1COM           < VALIDATION DE LA COMMANDE DEMANDEE, ET
                                     < INITIALISATION DU PROCESSUS :
         WORD        N41004          < OK, ELLE EXISTE...
         WORD        XER071          < ET BIEN NON, ELLE N'EXISTE PAS...
N41004:  BYTE        K;FCCI1
         WORD        STBAV           < ET ON FAIT COMME SI ON AVAIT RECU DE
                                     < L'UTILISATEUR "!M...", MAIS
                                     < PARTANT SUR "...".
         WORD        N41003          < OK, BIEN RECUE...
         BYTE        K;FCCI1         < ERREUR, BIZARRE (PUISQUE CETTE COMMANDE
                                     < EST PRE-PROGRAMMEE).
         WORD        P2COM           < E R R E U R   S Y S T E M E...
N41003:  BYTE        K;FCCI1
         WORD        P3COM           < ET ON RESTAURE LES CONDITIONS INITIALES,
                                     < ET EN PARTICULIER 'ABUFGR'...
         WORD        N5              < ET ENFIN, INTERROGATION...
         PAGE
<
<
<        C O M M A N D E   P R E - P R O G R A M M E E
<        D ' A P P E L   D U   D E B U G ,   D ' E D I T I O N
<                    D E S   R E G I S T R E S  :
<
<
KDEBUG:: VAL         KD              < PREMIER CARACTERE D'APPEL DU 'DEBUG'.
LCOMP0:  EQU         $
         BYTE        KLIMS;KCCI;KDEBUG;KLIMS
         BYTE        KRA;KLIMS
         BYTE        KRB;KLIMS
         BYTE        KRX;KLIMS
         BYTE        KRY;KLIMS
         BYTE        KRC;KLIMS
         BYTE        KRL;KLIMS
         BYTE        KRW;KLIMS
         BYTE        KRK;KLIMS
         BYTE        KRP;KLIMS
         BYTE        KRSTAT;KLIMS
         BYTE        KEOT;K
         IF          $-LCOMP0*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        C O M M A N D E   P R E - P R O G R A M M E E
<        D ' A P P E L   D U   D E B U G ,   D ' E D I T I O N
<        D E S   R E G I S T R E S   E T   D E   P R O C E E D  :
<
<
LCOMP1:  EQU         $
         BYTE        KLIMS;KCCI;KDEBUG;KLIMS
         BYTE        KRA;KLIMS
         BYTE        KRB;KLIMS
         BYTE        KRX;KLIMS
         BYTE        KRY;KLIMS
         BYTE        KRC;KLIMS
         BYTE        KRL;KLIMS
         BYTE        KRW;KLIMS
         BYTE        KRK;KLIMS
         BYTE        KRP;KLIMS
         BYTE        KRSTAT;KLIMS
         BYTE        KCCI;KG;KO;KLIMS
         BYTE        KEOT;K
         IF          $-LCOMP1*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        C O M M A N D E   P R E - P R O G R A M M E E
<        D ' A P P E L   D U   D E B U G   S U I T E
<        A   U N   A B O R T ,   E T   D E   D I S P L A Y  :
<
<
LCOMP2:  EQU         $
         BYTE        KLIMS;KCCI;KDEBUG;KLIMS
KTRAP::  VAL         KRT             < CARACTERE DE DISPLAY D'UN REGISTRE
                                     < D'AVANT UNE TRAPPE.
         BYTE        KRA;KTRAP;KLIMS;KRB;KTRAP;KLIMS
         BYTE        KRX;KTRAP;KLIMS;KRY;KTRAP;KLIMS
         BYTE        KRC;KTRAP;KLIMS;KRL;KTRAP;KLIMS
         BYTE        KRW;KTRAP;KLIMS;KRK;KTRAP;KLIMS
         BYTE        KRP;KTRAP;KLIMS;KRSTAT;KTRAP;KLIMS
         BYTE        KEOT;K
         IF          $-LCOMP2*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        D U M P   8   M O T S  :
<
<
LCOMP3:  EQU         $
         BYTE        KLIMS;KCCI;KDEBUG;KLIMS
         BYTE        KRAD;KLIMS
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KCCI;KDEBUG;KLIMS;KEOT
         IF          $-LCOMP3*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        D U M P   1 6   M O T S  :
<
<
LCOMP4:  EQU         $
         BYTE        KLIMS;KCCI;KDEBUG;KLIMS
         BYTE        KRAD;KLIMS
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KRMEM;KLIMS;KCRP;KRMEM;KLIMS;KCRP
         BYTE        KCCI;KDEBUG;KLIMS;KEOT
         IF          $-LCOMP4*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        A S S I G N A T I O N S   S T A N D A R D S  :
<
<
NVPBO::  VAL         '03             < 'NVP' STANDARD DE SORTIE DU BINAIRE,
NVPLO::  VAL         '04             < 'NVP' STANDARD DE SORTIE DU LISTING,
NVPSI::  VAL         '0A             < 'NVP' STANDARD D'ENTREE DU SOURCE,
NVPSO::  VAL         '0B             < 'NVP' STANDARD DE SORTIE DU SOURCE.
NVPDKU:  VAL         NVPDKU          < 'NVP' STANDARD D'ACCES A 'DKU',
NVPCU3:  VAL         NVPCU3          < 'NVP' STANDARD D'ACCES A 'CU3'.
<
<
<        S O R T I E   D U   B I N A I R E   S U R   F I C H I E R  :
<
<
LCOMP5:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPBO=FCBA(MOCD;KEGAL;KN;KVIR;KEOT
         IF          $-LCOMP5*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        S O R T I E   D U   L I S T I N G   S U R   ' L P 1 '  :
<
<
LCOMP6:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPLO=FCBA(MOCD;KEGAL;KL;KP;KUN;KLIMS;KEOT
         IF          $-LCOMP6*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        E N T R E E   S Y M B O L I Q U E   S U R   ' C R 1 '  :
<
<
LCOMP7:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPSI=FCBA(MOCD;KEGAL;KC;KR;KUN;KLIMS;KEOT
         IF          $-LCOMP7*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        S O R T I E   S Y M B O L I Q U E   S U R   ' C U 1 '  :
<
<
LCOMP8:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPSO=FCBA(MOCD;KEGAL;KC;KU;KUN;KLIMS;KEOT
         IF          $-LCOMP8*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        L A N C E M E N T   D U   B A T C H  :
<
<
LCOMP9:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPSI=FCBA(MOCD;KEGAL;KC;KR;KUN
         BYTE        KLIMS;KCCI;KX;KSP;NVPSI=FCBA(MOCD;KLIMS
         BYTE        KCCI;KA;KS;KS;KI;KG;KN;KSP
         BYTE        NVPSI=FCBA(MOCD;KEGAL;KS;KLIMS;KEOT
         IF          $-LCOMP9*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        A P P R O P R I A T I O N   D E   L A   T E L E V I S I O N
<                    N U M E R I Q U E  :
<
<
LCOMPA:  EQU         $
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPDKU=FCBA(MOCD;KEGAL;KS
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPDKU=FCBA(MOCD;KEGAL;KD;KK;KU
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPCU3=FCBA(MOCD;KEGAL;KS
         BYTE        KLIMS;KCCI;KA;KS;KS;KI;KG;KN
         BYTE        KSP;NVPCU3=FCBA(MOCD;KEGAL;KC;KU;KTROIS
         BYTE        KLIMS;KCCI
BLDKTV:: VAL         NBITMO-B        < GROUPE DE CYLINDRES DE 'DKU' UTILISE
                                     < DE PLUS POUR PROTEGER L'ACCES A LA
                                     < MEMOIRE 'MEMTV' ; CETTE PROTECTION SE
                                     < FERA DONC PAR UN "!Q0001", OU TOUT
                                     < AUTRE "!Q..." QUI INCLUE '0001...
<*******************************************************************************
XWOR%1:  VAL         COSBT?BLDKTV=FMASK(K=FCINST
         ASCI        "Q@@@@+"
<*******************************************************************************
         BYTE        KLIMS;KEOT
         IF          $-LCOMPA*NOCMO-LCCINT,XEIF%,XEIF%,
         IF          ATTENTION, COMMANDE PRE-PROGRAMMEE TROP LONGUE !!!
XEIF%:   VAL         ENDIF
<
<
<        L I S T E   D E S   C O M M A N D E S
<        P R E - P R O G R A M M M E E S  :
<
<
LCOMP:   EQU         $
<
< VALIDATION SUPERIEURE :
<
ECOMP0:  EQU         $
<*******************************************************************************
         CPI         ECOMP0-LCOMP    < VALIDATION INFERIEURE ???
XWOR%1:  VAL         '0000000@@@@
<*******************************************************************************
CPCOM0:  EQU         ZERO+XWOR%1     < POUR UNE REFERENCE EN AVANT...
         $EQU        ECOMP0          < ANNULATION DU CODE GENERE...
<
< LISTE DES RELAIS INDEXES :
<
         WORD        LCOMP0,X        < APPEL DU DEBUG,
         WORD        LCOMP1,X        < APPEL DU DEBUG ET PROCEED,
         WORD        LCOMP2,X        < APPEL DU DEBUG SUITE A UN ABORT.
         WORD        LCOMP3,X        < DUMP 8 MOTS A PARTIR DE "@" COURANT,
         WORD        LCOMP4,X        < DE MEME, DUMP 16 MOTS.
         WORD        LCOMP5,X        < "!ASSIGN 3=N,"
XXNBO::  VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
         WORD        LCOMP6,X        < "!ASSIGN 4=LP1"
XXNLO::  VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
         WORD        LCOMP7,X        < "!ASSIGN A=CR1"
XXNSI::  VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
         WORD        LCOMP8,X        < "!ASSIGN B=CU1"
XXNSO::  VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
         WORD        LCOMP9,X        < "!ASSIGN A=CR1" ET "!X A"
XXBATC:: VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
         WORD        LCOMPA,X        < "!ASSIGN A=DKU" ET "!ASSIGN B=CU3"
XXVIDE:: VAL         $-D-LCOMP       < NUMERO DE "!N" CORRESPONDANTE.
<
< VALIDATION INFERIEURE :
<
ECOMPN:  EQU         $
<*******************************************************************************
         CPI         ECOMPN-LCOMP    < VALIDATION SUPERIEURE ???
XWOR%1:  VAL         '0000000@@@@
<*******************************************************************************
CPCOMN:  EQU         ZERO+XWOR%1     < POUR UNE REFERENCE EN AVANT...
         $EQU        ECOMPN          < ANNULATION DU CODE GENERE.
<
<
<        A S S I G N A T I O N S   S T A N D A R D S  :
<
<
N45000:  BYTE        KO;FCCI17
         WORD        N45040          < PEUT-ETRE "!BATCH" ???
         BYTE        XXNBO;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
         WORD        N45050          < VERS LA REALISATION DE "!ASSIGN 3=N,".
N45040:  BYTE        KA;FCCI17
         WORD        XER07B          < ERREUR...
         BYTE        KT;FCCI17
         WORD        XER07B          < ERREUR...
         BYTE        KC;FCCI17
         WORD        XER07B          < ERREUR...
         BYTE        KH;FCCI17
         WORD        XER07B          < ERREUR...
         BYTE        XXBATC;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
         WORD        N45050          < VERS LA REALISATION DE "!ASSIGN A=CR1"
                                     < ET LE LANCEMENT PAR "!X A"...
N45010:  BYTE        XXNLO;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
         WORD        N45050          < VERS LA REALISATION DE "!ASSIGN 4=LP1".
N45020:  BYTE        KI;FCCI17
         WORD        N45021          < PEUT-ETRE "!SO" ???
         BYTE        XXNSI;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
         WORD        N45050          < VERS LA REALISATION DE "!ASSIGN A=CR1".
N45021:  BYTE        KO;FCCI17
         WORD        XER07C          < ERREUR...
         BYTE        XXNSO;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
N45050:  BYTE        K;FCCI12        < AVANT DE SIMULER LA COMMANDE, VERIFIONS
                                     < QU'ON N'EST PAS EN BATCH...
         WORD        N45030          < VERS LA REALISATION DE "!ASSIGN B=CU1".
         WORD        XER07D          < ERREUR, CES COMMANDES D'ASSIGNATIONS
                                     < STANDARD SONT INTERDITES EN BATCH, CAR
                                     < RAPPELONS QUE LE BUFFER D'ANTICIPATION
                                     < N'EXISTE QUE SUR LES VISUS...
<
<
<        A P P R O P R I A T I O N   D E   L A   T E L E V I S I O N
<                    N U M E R I Q U E  :
<
<
N41:     BYTE        KI;FCCI17
         WORD        XER00F          < COMMANDE "!V" NON RECONNUE...
         BYTE        KD;FCCI17
         WORD        N41X1           < CE N'EST PAS "!VIDEO", C'EST PEUT-ETRE
                                     < LA COMMANDE VISU A VISU...
         BYTE        KE;FCCI17
         WORD        XER08D          < COMMANDE "!VIDEO" NON RECONNUE...
         BYTE        KO;FCCI17
         WORD        XER08D          < COMMANDE "!VIDEO" NON RECONNUE...
         BYTE        XXVIDE;FCCI1
         WORD        P4COM           < SIMULATION D'UNE COMMANDE "!N"...
         WORD        N45050          < VERS LA REALISATION DE "!ASSIGN A=DKU",
                                     < ET DE "!ASSIGN B=CU3".
         PAGE
<
<
<        C O M M A N D E   W A I T  :
<
<
N45:     BYTE        K;FCCI11        < TEST DU MODE INTERPRETATIF ???
         WORD        N45X            < OUI, NON-INTERPRETATIF...
         WORD        XER015          < INTERPRETATIF : ERREUR !!!
N45X:    BYTE        K;FCCI12        < TEST USER INTERACTIF.
         WORD        N430            < OK, INTERACTIF.
         WORD        XER016          < !W REFUSE SI L'USER N'EST PAS
                                     < INTERACTIF.
N430:    BYTE        K;FCCI10        < TEST DE  ???
         WORD        N430X1          < OK, C'EST DONC !W, 'CARALT'
                                     < RESTE INCHANGE...
N430X2:  BYTE        K;FCCI1         < NON, CE N'EST PAS ...
         WORD        CCIALT          < LE CARACTERE COURANT DE 'BUFESC' VA
                                     < ETRE PRIS COMME 'CARALT'...
         BYTE        K;FCCI10        < ET MAINTENANT A-T'ON  ???
         WORD        N430X1          < OUI...
         WORD        N430X2          < NON, ON VA PRENDRE LE CARACTERE COURANT
                                     < SUIVANT ; A NOTER QUE 'CARALT' SERA
                                     < DONC LE DERNIER CARACTERE COURANT...
                                     < (ET NON PAS LE CARACTERE SUIVANT "W")
N430X1:  BYTE        K;FCCI1
         WORD        AVWAIT          < DECREMENTATION DE NUSERA,
                                     < REINITIALISATION DE L'HORLOGE,
                                     < ET DE LA PATTERN CYCLIQUE
                                     < DE SWAPPING OUT.
         BYTE        XXNCHI;FCCI1
         WORD        SLEEP           < SUSPENSION DE L'ESCLAVE ; LE
                                     < REVEIL SE FERA PAR 'ALT-MODE'.
N48:     BYTE        K;FCCI1
         WORD        APWAIT          < INCREMENTATION DE NUSERA,
                                     < REINITIALISATION DE L'HORLOGE,
                                     < ET DE LA PATTERN CYCLIQUE
                                     < DE SWAPPING OUT.
         BYTE        K;FCCI1
         WORD        WAKUP           < RE-AUTORISATION DU 'ALT-MODE
                                     < INHIBE PAR 'SLEEP'.
         BYTE        LOM1;FCCI0      < ENVOI DE "CMS5 IS UP...",
         WORD        M1
         BYTE        LODATE;FCCI0    < PUIS DE LA DATE...
         WORD        DATE
N48X2:   BYTE        K;FCCI7         < JUMP VERS L'INTERROGATION CCI...
         WORD        N5              < ALLER A L'INTERROGATION GENERALE
                                     < DU CCI LORS DU 'ALT-MODE'.
         PAGE
<
<
<        C O M M A N D E   D ' E M P I L E M E N T   D ' U N
<        U T I L I S A T E U R   I N T E R A C T I F  :
<
<
N20000:  BYTE        K;FCCI19        < EST-ON BIEN SOUS ":SYS" ???
         WORD        N20004          < OUI, OK...
         BYTE        K;FCCI9         < NON, ALORS SOUS ":JFC" ???
         BYTE        XXK1;XXK2;XXK3;XXK4
         WORD        N20004          < OUI, OK...
         BYTE        K;FCCI9         < NON, ALORS SOUS ":SIM" ???
         BYTE        XXXK1;XXXK2;XXXK3;XXXK4
         WORD        N20004          < OUI, OK...
         WORD        XER017          < NON (NI ":SYS", NI ":JFC", NI ":SIM"),
                                     < ERREUR...
N20004:  BYTE        K;FCCI11        < EST-CE UN UTILISATEUR INTERPRETATIF ???
         WORD        N20001          < NON, OK...
         WORD        XER018          < OUI, ERREUR...
N20001:  BYTE        K;FCCI12        < EST-CE UN UTILISATEUR INTERACTIF ???
         WORD        N20002          < OUI, OK...
         WORD        XER019          < NON, ERREUR...
N20002:  BYTE        K;FCCI10        < EST-CE BIEN "!U ???
         WORD        N20003          < OUI, OK...
         WORD        XER01A          < NON, ERREUR...
N20003:  BYTE        K;FCCI1
         WORD        AVWAIT          < DECREMENTATION DE NUSERA, ET QUELQUES
                                     < REINITIALISATIONS...
         BYTE        XXCHI;FCCI1
         WORD        SLEEP           < EMPILEMENT DE L'UTILISATEUR COURANT :
         WORD        N48             < OUI, OK, ON SE RAMENE DONC A "!W"...
         BYTE        K;FCCI1         < NON, LA PILE EST SATUREE :
         WORD        APWAIT          < ON ANNULE TOUT
         BYTE        K;FCCI1
         WORD        WAKUP           < CE QUE L'ON A FAIT,
         BYTE        K;FCCI1
         WORD        RZIDW
         WORD        XER01B          < ET ON FAIT UN RETOUR EN ERREUR...
         PAGE
<
<
<        A P P R O P R I A T I O N   D E   G R O U P E S
<        D E   C Y L I N D R E S   D E   ' D K U '  :
<
<
N30000:  BYTE        K;FCCI1
         WORD        SVDBG           < MISE DANS 'VALESC' DE LA LISTE DES
                                     < GROUPES DE CYLINDRES A S'APPROPRIER...
         BYTE        K;FCCI10        < L' EST-IL LA ???
         WORD        N30001          < OUI, OK...
         BYTE        KPLUS;FCCI5     < Y-A-T'IL UNE TRANSLATION EN PLUS ???
         WORD        N30005          < OUI...
         WORD        XER01C          < NON, ERREUR...
N30001:  BYTE        NSPDKU;FCCI1
         WORD        P1DKU           < TENTATIVE D'APPROPRIATION DE GROUPES
                                     < DE CYLINDRES AVEC TRANSLATION=0 :
         WORD        N5              < OK, ON SE LES AIT APPROPRIES...
         WORD        XER01D          < IMPOSSIBLE : QUELQU'UN LES A DEJA...
N30005:  BYTE        KZERO;FCCI5
         WORD        N30011          < TRANSLATION=0...
         BYTE        KUN;FCCI5
         WORD        N30013          < TRANSLATION=1...
         BYTE        KDEUX;FCCI5
         WORD        N30014          < TRANSLATION=2...
         BYTE        K;FCCI10        < EST-CE EN FAIT "+" SUIVI DE  ???
         WORD        N30001          < OUI, ON VA PRENDRE UNE TRANSLATION
                                     < NULLE (CECI EST INTRODUIT A CAUSE DE
                                     < LA COMMANDE "!VIDEO", QUI GENERE UN
                                     < 'ASCI' A L'ASSEMBLAGE, ET COMME IL
                                     < S'AGIT D'UNE COMMANDE PROGRAMMEE, ON
                                     < NE PEUT Y INTRODUIRE DES 'NULLS' QUI
                                     < SERAIT PRIS POUR DES RUB-OUTS PAR LA
                                     < GESTION DES VISUS...)
         WORD        XER09B          < ERREUR, TRANSLATION NON RECONNUE...
N30011:  BYTE        K;FCCI10        < L' EST-IL DERRIERE "+0" ???
         WORD        N30001          < OUI, OK...
         WORD        XER09C          < NON, ERREUR...
N30013:  BYTE        K;FCCI10        < L' EST-IL DERRIERE "+1" ???
         WORD        N30003          < OUI, OK...
         WORD        XER09C          < NON, ERREUR...
N30014:  BYTE        K;FCCI10        < L' EST-IL DERRIERE "+2" ???
         WORD        N30004          < OUI, OK...
         WORD        XER09C          < NON, ERREUR...
N30003:  BYTE        NSPDKU;FCCI1
         WORD        P1DKV           < TENTATIVE D'APPROPRIATION D'UN GROUPE
                                     < DE CYLINDRES AVEC TRANSLATION=1 :
         WORD        N5              < OK, ON SE LES AIT APPROPRIES...
         WORD        XER01D          < IMPOSSIBLE QUELQU'UN LES A DEJA, OU
                                     < BIEN, LA LISTE EST NULLE ALORS QUE
                                     < LA TRANSLATION NE L'EST PAS...
N30004:  BYTE        NSPDKU;FCCI1
         WORD        P1DKW           < TENATIVE D'APPROPRIATION D'UN GROUPE
                                     < DE CYLIDRES AVEC TRANSLATION=2 :
         WORD        N5              < OK, ON SE LES AIT APPROPRIES...
         WORD        XER01D          < IMPOSSIBLE QUELQU'UN LES A DEJA OU
                                     < BIEN LA LISTE EST NULLE ALORS QUE
                                     < LA TRANSLATION NE L'EST PAS...
         PAGE
<
<
<        C O M M A N D E   D A T E   &   H E U R E  :
<
<
N441:    BYTE        KA;FCCI17
         WORD        N446            < CE N'EST PAS !DATE.
         BYTE        KT;FCCI17
         WORD        XER01E
         BYTE        KE;FCCI17
         WORD        XER01E          < ERREUR.
         WORD        N47             < RELAI RENDU OBLIGATOIRE PAR LE
                                     < FAIT QUE 'BYTE 22;0' A LA MEME
                                     < APPARENCE QU'UN AUTO-RELAI !!!!
N47:     BYTE        LODATE;FCCI0    < ENVOI DE LA DATE & HEURE.
         WORD        DATE
         BYTE        K;FCCI7         < SAUT VERS L'INTERROGATION CCI.
         WORD        N260            < VERS LA TRONCATION...
         PAGE
<
<
<        E R R E U R S   A U   L O G I N   O U   P E T I T   B Y E  :
<
<
N78:     BYTE        K;FCCI3         < DISCONNECT TERMINAL SUITE A UN PETIT BYE.
N79:     BYTE        KB;FCCI5        < EST-CE UN PETIT 'BYE' ????
         WORD        N78             < OUI, DISCONNECT.
         BYTE        KF;FCCI5        < EST-CE UN PETIT 'BYE' ???
         WORD        N78             < OUI, DISCONNECT.
N268:    BYTE        K;FCCI1
         WORD        DISPCA          < EDITION PARTIELLE DE LA CARTE JUSQU'AU
                                     < CARACTERE EN ERREUR...
         BYTE        LOM41;FCCI0     < NON, ERREUR...
         WORD        M41             < ENVOI DU MESSAGE D'ERREUR CCI.
         BYTE        K;FCCI7         < 'CCI JMP' :
         WORD        N12             < PUIS, VERS L'INTERROGATION PRIMAIRE
                                     < DU 'CCI'...
         PAGE
<
<
<        A P P E L   E D I T E U R  :
<
<
N50X10:  BYTE        KD;FCCI17
         WORD        N321            < ESSAI DE LA COMMANDE ABREGEE ?E.
         BYTE        KI;FCCI17
         WORD        XER01F          < NON.
         BYTE        KT;FCCI17
         WORD        XER01F          < ERREUR.
N321:    BYTE        K;FCCI10        < TEST .
         WORD        N51             < C'EST EDIT.
         WORD        XER01F          < NON.
N51:     BYTE        K;FCCI8         < LOAD PROCESSEUR.
         WORD        DKEDIT          < @DK DE EDIT.
         WORD        SZEDIT          < TAILLE OCTETS DE EDIT.
         WORD        PEDIT           < @TRANSLATABLE DE RUN DE EDIT.
         BYTE        K;FCCI7         < JMP INTERROGATION CCI.
         WORD        N5
         PAGE
<
<
<        A U T O R I S A T I O N / I N H I B I T I O N
<        D E   L ' E C H O   I M M E D I A T   ' C C I '  :
<
<
N50:     BYTE        KC;FCCI17
         WORD        N50X10          < ESSAI D'APPEL DE L'EDITEUR...
         BYTE        KH;FCCI17
         WORD        XER07E          < ERREUR...
         BYTE        KO;FCCI17
         WORD        XER07E          < ERREUR...
         BYTE        KSP;FCCI17
         WORD        XER07E          < ERREUR...
         BYTE        K;FCCI12        < EST-ON BIEN EN TEMPS PARTAGE ???
         WORD        N50X1           < OUI...
         WORD        XER080          < NON, ERREUR...
N50X1:   BYTE        KO;FCCI17
         WORD        XER07F          < ERREUR...
         BYTE        KN;FCCI17
         WORD        N50X2           < CE N'EST PAS "ON", PEUT-ETRE "OFF" ???
<
< AUTORISATION DE L'ECHO :
<
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N50X3           < OK...
         WORD        XER081          < ABSENT, ERREUR...
N50X3:   BYTE        K;FCCI1         < OK,
         WORD        PECHO           < ON AUTORISE L'ECHO IMMEDIAT DU 'CCI'
                                     < EN TEMPS PARTAGE...
         WORD        N5              < VERS L'INTEROGATION GENERALE...
<
< INHIBITION DE L'ECHO :
<
N50X2:   BYTE        KF;FCCI17
         WORD        XER07F          < ERREUR...
         BYTE        KF;FCCI17
         WORD        XER07F          < ERREUR...
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N50X4           < OK...
         WORD        XER081          < ABSENT, ERREUR...
N50X4:   BYTE        K;FCCI1         < OK,
         WORD        PECHON          < ON INHIBE L'ECHO IMMEDIAT DU 'CCI' EN
                                     < TEMPS PARTAGE,
         WORD        N5              < PUIS, VERS L'INTERROGATION GENERALE...
         PAGE
<
<
<        A P P E L   D E   C A L L   ( R U N E R )  :
<
<
N264:    BYTE        KA;FCCI17
         WORD        N800            < CE N'EST PAS !CALL.
         BYTE        KL;FCCI17
         WORD        XER020          < ERREUR.
         BYTE        KL;FCCI17
         WORD        XER020          < ERREUR.
         BYTE        K;FCCI10        < TEST .
         WORD        N263            < C'EST L'APPEL DE 'CALL'.
         WORD        XER020          < ERREUR.
N263:    BYTE        K;FCCI8         < LOAD PROCESSOR.
         WORD        DKCALL          < @DK DE CALL.
         WORD        SZCALL          < TAILLE OCTETS DE CALL.
         WORD        PCALL           < @TRANSLATABLE DE RUN DE CALL.
         BYTE        K;FCCI7         < JUMP VERS L'INTERROGATION CCI.
         WORD        N550            < VERS L'INTERROGATION DE
                                     < L'UTILISATEUR, MAIS SANS
                                     < SUSPENDRE LE CCI, AU CAS OU
                                     < LE PROGRAMME APPELE PAR !CALL
                                     < AURAIT UTILISE LE CCI NON
                                     < INTERACTIF (CF. !DF).
         PAGE
<
<
<        C O M M A N D E   P R O C E E D   ' G O '  :
<
<
N84:     BYTE        KO;FCCI17       < EST-CE 'GO' ????
         WORD        N700            < PEUT-ETRE "!GE"...
         BYTE        K;FCCI10        < UN  EST-IL LA ???
         WORD        N85             < OUI, OK...
         WORD        XER0B3          < NON, ERREUR...
N85:     BYTE        K;FCCI11        < TEST DU MODE INTERACTIF.
         WORD        N421            < INTERACTIF : PROCEED.
         WORD        N5              < NON INTERACTIF : RIEN A FAIRE.
N421:    BYTE        K;FCCI1
         WORD        PROCED          < APPEL DE LA ROUTINE DE PROCEED.
         WORD        N5              < VERS LA SUSPENSION DU CCI.
         PAGE
<
<
<        A P P E L   P R O C E S S E U R   S M C  :
<
<
N700:    BYTE        KE;FCCI17       < EST-CE 'GE' ???
         WORD        XER021          < ERREUR.
         BYTE        K;FCCI10        < TEST  ???
         WORD        N702            < OK, C'EST L'APPEL DE 'GE'.
         WORD        XER021          < ERREUR.
N702:    BYTE        K;FCCI8         < LOAD PROCESSOR.
         WORD        DKGRE           < @DK DU PROCESSEUR 'GE'.
         WORD        SZGRE           < TAILLE OCTETS NECESSAIRE.
         WORD        PGRE            < @TRANSLATABLE DE RUN DE 'GE'.
         BYTE        K;FCCI7         < JUMP CCI.
         WORD        N550            < VERS L'INTERROGATION GENEARLE,
                                     < SANS SUSPENSION DE L'ESCLAVE,
                                     < CAR SOUS !GE, ON UTILISE LE
                                     < CCI NON INTERACTIF.
         PAGE
<
<
<        A S S I G N  :
<
<
N88:     BYTE        KS;FCCI17
         WORD        N48000          < NON, PEUT-ETRE "!ACTIVITE...".
         BYTE        KS;FCCI17
         WORD        XER022          < ERREUR.
         BYTE        KI;FCCI17
         WORD        XER022
         BYTE        KG;FCCI17
         WORD        XER022          < NON.
         BYTE        KN;FCCI17
         WORD        XER022          < NON.
         BYTE        KSP;FCCI17      < ON A RECONNU 'ASSIGN'.
         WORD        XER023          < NON.
         BYTE        K;FCCI1
         WORD        NVPAS           < RECUPERATION DANS Y DU NVP
                                     < SUPPOSE.
         WORD        N96             < OK, (Y)=NVP RECONNU.
         WORD        XER024          < ERREUR : NVP NON RECONNU.
N96:     BYTE        KEGAL;FCCI17
         WORD        XER025          < ERREUR "=" ABSENT.
         BYTE        KN;FCCI5
         WORD        N272            < NEW.
         BYTE        KO;FCCI5
         WORD        N274            < OLD.
         BYTE        KS;FCCI5
         WORD        N281            < SAVE.
         BYTE        KR;FCCI5
         WORD        N283            < RELEASE.
         BYTE        K;FCCI10        < EST-CE UN  ???
         WORD        N970            < OUI, UN !ASSIGN DUMMY EST
                                     < DONC DEMANDE.
                                     < SINON,
                                     < ESSAI SUR 'VIX', LPX',...
         BYTE        KV;FCCI17       < EST-CE "VIX" ???
         WORD        N99             < NON.
         BYTE        KI;FCCI17
         WORD        XER026          < ERREUR.
         BYTE        K;FCCI19        < SEUL :SYS EST AUTORISE SUR 'VI...',
         WORD        N100            < OK, :SYS...
         WORD        XER027          < ERREUR : NON AUTORISE.
N100:    BYTE        KUN;FCCI5
         WORD        N101            < C'EST 'VI1'.
         BYTE        KDEUX;FCCI5
         WORD        N102            < C'EST 'VI2'.
         BYTE        KTROIS;FCCI5
         WORD        N103            < C'EST 'VI3'.
         BYTE        KQUATR;FCCI5
         WORD        N104            < C'EST 'VI4'.
         BYTE        KCINQ;FCCI5
         WORD        N105            < C'EST 'VI5'.
         BYTE        KSIX;FCCI5
         WORD        N106            < C'EST 'VI6'.
         BYTE        KSEPT;FCCI5
         WORD        N987            < C'EST 'VI7'.
         BYTE        KHUIT;FCCI5
         WORD        N988            < C'EST 'VI8'.
         WORD        XER028          < NON, ERREUR.
N99:     BYTE        KC;FCCI5        < EST-CE 'CR' OU 'CU' ????
         WORD        N120
         BYTE        KL;FCCI5        < EST-CE 'LP' ????
         WORD        N122
         BYTE        KD;FCCI5        < EST-CE 'DKU' ???
         WORD        N122A           < PEUT-ETRE...
         BYTE        KI;FCCI5        < ASSIGNATION SUR 'IN' ???
         WORD        N241            < OUI.
         BYTE        KM;FCCI5        < EST-CE 'MT' ???
         WORD        N3000           < OUI, PEUT-ETRE...
         WORD        XER029          < NON, ERREUR...
N241:    BYTE        PHIN;FCCI1
         WORD        ASSIO           < ASSIGN SUR 'IN'.
         WORD        N260
         WORD        XER02A          < ERREUR.
N243:    BYTE        PHOUT;FCCI1
         WORD        ASSIO           < ASSIGN SUR 'OUT'.
         WORD        N260
         WORD        XER02A          < ERREUR.
N3000:   BYTE        KT;FCCI17       < EST-CE 'MT' ???
         WORD        XER02B          < NON, ERREUR...
         BYTE        KUN;FCCI5       < EST-CE 'MT1' ???
         WORD        N3001           < OUI, C'EST 'MT1'.
         WORD        XER02C          < NON, ERREUR...
N122:    BYTE        KP;FCCI17       < 'LP' ????
         WORD        XER02D          < ERREUR.
         BYTE        KUN;FCCI5
         WORD        N136            < C'EST LP1.
         WORD        XER02E          < ERREUR.
N120:    BYTE        KR;FCCI17       < 'CR' ????
         WORD        N124            < NON, ESSAYONS CU.
         BYTE        KDEUX;FCCI5     < 'CR2' ???
         WORD        N125A           < OUI, 'CR2', QUELQUE SOIT L'...
         BYTE        K;FCCI19        < SEUL :SYS EST AUTORISE SUR 'CR1',
         WORD        N123            < OK, :SYS...
         WORD        XER02F          < ERREUR : NON AUTORISE...
N123:    BYTE        KUN;FCCI5
         WORD        N125            < C'EST 'CR1'.
         WORD        XER030          < ERREUR.
N124:    BYTE        KU;FCCI17       < EST-CE UN COUPLEUR UNIVERSEL ???
         WORD        XER031          < NON.
         BYTE        KUN;FCCI5
         WORD        NYM7            < C'EST 'CU1'.
         BYTE        KDEUX;FCCI5
         WORD        N129            < C'EST 'CU2'.
         BYTE        KTROIS;FCCI5
         WORD        N131            < C'EST 'CU3'.
         WORD        XER032          < ERREUR.
N122A:   BYTE        KK;FCCI17       < 'DK' ???
         WORD        N8002           < DELETE FILE, PEUT-ETRE...
         BYTE        KU;FCCI5        < 'DKU' ???
         WORD        N122B           < OUI, C'EST 'DKU'...
         WORD        XER033          < ERREUR...
N101:    BYTE        NSPVI1;FCCI1    < ASSIGNATION A VI1.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N102:    BYTE        NSPVI2;FCCI1    < ASSIGNATION A VI2.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N103:    BYTE        NSPVI3;FCCI1    < ASSIGNATION A VI3.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N104:    BYTE        NSPVI4;FCCI1    < ASSIGNATION A VI4.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N105:    BYTE        NSPVI5;FCCI1    < ASSIGNATION A VI5.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N106:    BYTE        NSPVI6;FCCI1    < ASSIGNATION A VI6.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N987:    BYTE        NSPVI7;FCCI1    < ASSIGNATION A VI7.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N988:    BYTE        NSPVI8;FCCI1    < ASSIGNATION A VI8.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N136:    BYTE        NSPLP1;FCCI1    < ASSIGNATION A LP1.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N125:    BYTE        NSPCR1;FCCI1    < ASSIGNATION A CR1.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N125A:   BYTE        NSPCR2;FCCI1    < ASSIGNATION A CR2.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR...
NYM7:    BYTE        NSPCU1;FCCI1    < ASSIGNATION A CU1.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N129:    BYTE        NSPCU2;FCCI1    < ASSIGNATION A CU2.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N131:    BYTE        K;FCCI19
         WORD        N131X           < OK, ":SYS"...
         BYTE        K;FCCI9         < NON, EST-CE ALORS ":JFC" ???
         BYTE        XXK1;XXK2;XXK3;XXK4
         WORD        N131X           < OK, ":JFC"...
         WORD        XER035          < ERREUR NI ":SYS", NI ":JFC"...
N131X:   BYTE        NSPCU3;FCCI1    < ASSIGNATION A CU3.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR.
N122B:   BYTE        NSPDKU;FCCI1
         WORD        P4DKU           < CONTROLE DES CONTRADICTIONS POSSIBLES
                                     < ENTRE "!ASSIGN =DKU" ET "!Q...".
         WORD        N122BX          < OK, PAS DE "!Q..." EN COURS, OU BIEN
                                     < LE DEMANDEUR DE L'ASSIGNATION A 'DKU'
                                     < EST DEJA PROPRIETAIRE DE 'DKU' PAR UNE
                                     < JUDICIEUSE COMMANDE "!Q"...
         WORD        XER036          < ERREUR : L'ASSIGNATION EST IMPOSSIBLE,
                                     < CAR TOUT OU PARTIE DE 'DKU' APPARTIENT
                                     < PAR "!Q" A UN OU PLUSIEURS AUTRES
                                     < UTILISATEURS...
N122BX:  BYTE        NSPDKU;FCCI1    < ASSIGNATION A DKU.
         WORD        ASSIGN
         WORD        N260
         WORD        XER034          < ERREUR...
N3001:   BYTE        NSPMT1;FCCI1    < ASSIGNATION A 'MT1'.
         WORD        ASSIGN
         WORD        N3002
         WORD        XER034          < ERREUR...
N3002:   BYTE        NSPMT1;FCCI1    < INITIALISATION DU DEROULEUR 'MT1'.
         WORD        MTINI
         WORD        N260
<
<        A S S I G N   D U M M Y  :
<
N970:    BYTE        NSPDUM;FCCI1    < NSPDUM EST MIS ICI DANS L'
                                     < OCTET0 JUSTE A TITRE INDICATIF,
                                     < PUISQU'EN EFFET L'INTERPRETEUR
                                     < DU CCI RAZERA SON BIT0 !!!
         WORD        DUMMY           < VERS L'ASSIGN DUMMY.
         WORD        N5              < ON NE VA PAS EN N260 CAR LE
                                     < TEST  VIENT D'ETRE FAIT !!!
         WORD        XER02A          < ERREUR.
<
<        A S S I G N   F I L E  :
<
N8002:   BYTE        KMOINS;FCCI5
         WORD        N8003           < DELETE FICHIER.
         WORD        XER037          < ERREUR DE SYNTAXE...
N272:    BYTE        KVIR;FCCI5
         WORD        N279            < NEW.
         WORD        XER038
N274:    BYTE        KVIR;FCCI5
         WORD        N280            < OLD.
         WORD        N243            < ASSIGNATION SUR OUT.
N279:    BYTE        K;FCCI1
         WORD        ABSNUL          < N'Y-A-T'IL PAS DES 'NULLS' DANS LA
                                     < CARTE "!ASSIGN..." COURANTE ???
         WORD        N279X           < NON, OK...
         WORD        XER0A0          < OUI, ERREUR...
N279X:   BYTE        K;FCCI1
         WORD        CCINF           < NEW FILE.
         WORD        N5              < OPEN NEW FILE OK.
         WORD        XER039          < ERREUR.
N280:    BYTE        K;FCCI1
         WORD        ABSNUL          < N'Y-A-T'IL PAS DES 'NULLS' DANS LA
                                     < CARTE "!ASSIGN..." COURANTE ???
         WORD        N280X           < NON, OK...
         WORD        XER0A0          < OUI, ERREUR...
N280X:   BYTE        K;FCCI1
         WORD        CCIOF           < OLD FILE.
         WORD        N5              < OPEN OLD FILE OK.
         WORD        XER03A          < ERREUR.
N8003:   BYTE        K;FCCI1
         WORD        ABSNUL          < N'Y-A-T'IL PAS DES 'NULLS' DANS LA
                                     < CARTE "!ASSIGN..." COURANTE ???
         WORD        N8003X          < NON, OK...
         WORD        XER0A0          < OUI, ERREUR...
N8003X:  BYTE        K;FCCI1
         WORD        CCIOF           < OPEN OLD FILE :
         WORD        N8004A          < OK...
         WORD        XER03A          < ERREUR...
N8004A:  BYTE        K;FCCI1
         WORD        NVPASD          < MEMORISONS QUE LE 'NVP' EST ASSIGNE...
         WORD        N8004           < OK...
         WORD        XER03B          < ?!???!?!?!??!
N8004:   BYTE        MCFR-CMCFSR;FCCI1
         WORD        CCICLF          < DESASSIGN EN MODE RELEASE :
         WORD        N8005           < OK...
         WORD        XER03C          < ERREUR ???!??!?!
N8005:   BYTE        K;FCCI1
         WORD        DELFIL          < DESTRUCTION DU NOM EXTERNE.
         WORD        N5              < OK, VERS L'INTERROGATION...
N281:    BYTE        MCFS-CMCFSR;FCCI1
         WORD        CCICLF          < DESASSIGN MODE SAVE.
         WORD        N260            < VERS LE TEST DE TRONCATION...
         WORD        XER03D          < ERREUR.
N283:    BYTE        MCFR-CMCFSR;FCCI1
         WORD        CCICLF          < DESASSIGN EN MODE RELEASE.
         WORD        N260            < VERS LE TEST DE TRONCATION...
         WORD        XER03C          < ERREUR.
         PAGE
<
<
<        A S S I G N   A U   S Y S T E M E
<        D E   G E S T I O N   D E   N O M S  :
<
<
N135:    BYTE        KG;FCCI17
         WORD        N300            < ESSAYONS '!SYMBOL'.
         BYTE        KN;FCCI17
         WORD        XER06E          < ERREUR.
         BYTE        K;FCCI10        < Y-A-T'IL UN  ???
         WORD        N134            < OUI, C'EST "!SGN"...
         WORD        N43000          < NON, C'EST PEUT-ETRE "!SGN C"...
N134:    BYTE        K;FCCI1
         WORD        SGNAS           < ASSIGNATION AU SYSTEME DE
                                     < GESTION DE NOMS.
         WORD        N5              < OK.
         WORD        XER03E          < ERREUR.
<
<
<        M I S E   O N / O F F   D E   L A   C O M P R E S S I O N
<                    D U   ' S T N '   D U   ' S G N '  :
<
<
N43000:  BYTE        KSP;FCCI17
         WORD        XER074
         BYTE        KC;FCCI17
         WORD        XER074
         BYTE        KSP;FCCI17
         WORD        XER074
         BYTE        KO;FCCI17
         WORD        XER075          < LA FONCTION N'EST PAS RECONNUE...
         BYTE        KN;FCCI17
         WORD        N43001          < C'EST PEUT-ETRE "!SGN C OFF"...
<
< CAS DE LA COMMANDE "!SGN C ON" :
<
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N43003          < OK...
         WORD        XER076          < ERREUR...
N43003:  BYTE        K;FCCI1
         WORD        PSGNON          < ACTIVATION DE LA COMPRESSION...
         WORD        N5              < ET C'EST TOUT...
<
< CAS DE LA COMMANDE "!SGN C OFF" :
<
N43001:  BYTE        KF;FCCI17
         WORD        XER075          < ERREUR, FONCTION NON RECONNUE...
         BYTE        KF;FCCI17
         WORD        XER075          < ERREUR, FONCTION NON RECONNUE...
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N43004          < OK...
         WORD        XER077          < ERREUR, MANQUE ...
N43004:  BYTE        K;FCCI19        < TEST DE  :
         WORD        N43002          < OK, C'EST ":SYS"...
         WORD        XER078          < ERREUR,  INTERDIT...
N43002:  BYTE        K;FCCI1
         WORD        PSGNOF          < INHIBITION DE LA COMPRESSION,
         WORD        N5              < OK, VERS L'INTERROGATION...
         WORD        XER079          < ERREUR, FONCTION INTERDITE ACTUEL-
                                     < LEMENT PAR 'MEMXXX'..
         PAGE
<
<
<        C O M M A N D E   D E   M O N T A G E   O U
<        D ' I N I T I A L I S A T I O N   D E
<                    V O L U M E  :
<
<
N40000:  BYTE        KK;FCCI17
         WORD        XER03F          < ERREUR...
         BYTE        KU;FCCI17
         WORD        N40005          < "U" EST ABSENT, C'EST PEUT ETRE LA COM-
                                     < MANDE ABREGEE "!DK ", CREE AFIN QUE
                                     <  SOIT A UNE FRONTIERE
                                     < DE MOT...
N40005:  BYTE        KSP;FCCI17
         WORD        XER040          < ERREUR...
         BYTE        KF;FCCI5
         WORD        N42000          < MISE DE 'DKU' EN MODE 'FAST'...
         BYTE        KS;FCCI5
         WORD        N42010          < MISE DE 'DKU' EN MODE 'SLOW' (ENTRELACE).
         BYTE        KEGAL;FCCI5
         WORD        N42030          < AUTORISATION/INHIBITION DES GROUPES
                                     < DE BLOCS ENTRELACES.
         BYTE        KM;FCCI17       < EST-CE LE MONTAGE ???
         WORD        N40200          < NON, PEUT-ETRE UNE INITIALISATION...
                                     < OU UN DEMONTAGE...
<
< COMMANDE DE MONTAGE DE VOLUME :
<
         BYTE        K;FCCI1
         WORD        P4SGU           < VERIFIONS QU'IL N'Y A PAS DE VOLUME :
         WORD        N40004          < OK PAS ENCORE...
         WORD        XER041          < ERREUR, IL Y EN A DEJA UN...
N40004:  BYTE        KSP;FCCI17
         WORD        XER042          < ERREUR...
         BYTE        NSPDKG;FCCI1
         WORD        P1SGU           < RECUPERATION DU 'NVP' DEMANDE ET VERIFI-
                                     < CATION QU'IL EST BIEN ASSIGNE AU DISQUE
                                     < D'EXTENSION SUR VOLUME...
         WORD        N40002          < OUI...
         WORD        XER043          < ERREUR...
N40002:  BYTE        KEGAL;FCCI17
         WORD        XER042          < ERREUR...
         BYTE        K;FCCI1
         WORD        SVDBG           < MISE DANS 'VALESC' DU NUMERO DE VOLUME
                                     < QUE L'ON SOUHAITE MONTER...
         BYTE        K;FCCI10        < TEST DE  DE FIN ???
         WORD        N40003          < OK, LA COMMANDE "!DKU M" EST CORRECTE...
         WORD        XER044          < ERREUR...
N40003:  BYTE        NSPDKG;FCCI1
         WORD        P2SGU           < MONTAGE DU VOLUME DONT LE NUMERO A ETE
                                     < MIS DANS 'VALESC'...
         WORD        N5              < OK, LE MONTAGE EST POSSIBLE, ET EFFECTUE
                                     < (IL Y A COINCIDENCE ENTRE LE NUMERO DE
                                     < DE VOLUME DEMANDE ET CELUI DU VOLUME
                                     < MONTE, LES  COINCIDENT,...).
         WORD        XER045          < ERREUR...
<
< DEMONTAGE D'UN VOLUME :
<
N40200:  BYTE        KD;FCCI17
         WORD        N40100          < NON, PEUT-ETRE UNE INITIALISATION...
         BYTE        KSP;FCCI17
         WORD        XER046          < ERREUR...
         BYTE        K;FCCI1
         WORD        P4SGU           < Y-A-T'IL UN VOLUME DE MONTE ???
         WORD        XER047          < ERREUR, IL N'Y A PAS DE VOLUME MONTE...
         BYTE        NSPDKG;FCCI1
         WORD        P1SGU           < RECUPERATION DU 'NVP' DEMANDE ET VERIFI-
                                     < CATION QU'IL EST BIEN ASSIGNE AU DISQUE
                                     < D'EXTENSION SUR VOLUME...
         WORD        N40201          < OK...
         WORD        XER043          < ERREUR...
N40201:  BYTE        K;FCCI10        < TEST DE  ???
         WORD        N40202          < OK...
         WORD        XER048          < ERREUR...
N40202:  BYTE        NSPDKG;FCCI1
         WORD        P5SGU           < DEMONTAGE DU VOLUME COURANT...
         WORD        N5              < ET ENSUITE, VERS L'INTERROGATION...
<
< COMMANDE D'INITIALISATION D'UN VOLUME :
<
N40100:  BYTE        K;FCCI1
         WORD        P4SGU           < Y-A-T'IL UN VOLUME MONTE ???
         WORD        N40104          < OK, PAS DE VOLUME MONTE...
         WORD        XER049          < ERREUR, VOLUME DEJA MONTE...
N40104:  BYTE        KI;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KN;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KT;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KA;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KL;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KS;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KA;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KT;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KO;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KN;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        KSP;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        NSPDKG;FCCI1
         WORD        P1SGU           < VERIFIONS QUE LE 'NVP' QUI EST DANS
                                     < 'Y' EST BIEN ASSIGNE AU DISQUE D'EX-
                                     < TENSION D'ADRESSE...
         WORD        N40102          < OUI, C'EST BON...
         WORD        XER043          < ERREUR...
N40102:  BYTE        KEGAL;FCCI17
         WORD        XER04A          < ERREUR...
         BYTE        K;FCCI1
         WORD        SVDBG           < MISE DANS 'VALESC' DU NUMERO DU VOLUME
                                     < QUE L'ON VA INITIALISER...
         BYTE        K;FCCI10        < ET TEST DE  DE FIN ???
         WORD        N40103          < OK, LA COMMANDE "!DKU INITIALISATION"
                                     < EST CORRECTE...
         WORD        XER04B          < ERREUR...
N40103:  BYTE        NSPDKG;FCCI1
         WORD        P3SGU           < INITIALISATION DU VOLUME...
         WORD        N5              < OK, ON A PU LA FAIRE (BON NUMERO
                                     < DE VOLUME NON NUL, 'DKU' EST LA,...).
         WORD        XER04C          < ERREUR...
<
< COMMANDE DE MISE EN MODE 'FAST' :
< (C'EST-A-DIRE NON ENTRELACE AU
< NIVEAU DES LECTURE RAPIDES
< 'DKU' --> 'MEMTV')
<
N42000:  BYTE        K;FCCI10        < TEST DE  :
         WORD        N42002          < OK...
         WORD        XER072          <  ABSENT, ERREUR...
N42002:  BYTE        NSPDKU;FCCI1    < MAIS,
         WORD        PS0AS           < L'UTILISATEUR A-T'IL LE 'DKU' ???
         WORD        N42001          < OUI, OK...
         WORD        XER092          < NON, ERREUR...
N42001:  BYTE        K;FCCI1
         WORD        PFAST2          < MISE EN MODE 'FAST' (DANS LE MOT 'TVENTR'
                                     < DE LA MEMOIRE DEBANALISEE).
         WORD        N5              < PUIS, VERS L'INTERROGATION...
<
< COMMANDE DE MISE EN MODE 'SLOW' :
< (C'EST-A-DIRE ENTRELACE AU
< NIVEAU DES LECTURE RAPIDES
< 'DKU' --> 'MEMTV')
<
N42010:  BYTE        K;FCCI10        < TEST DE  :
         WORD        N42012          < OK...
         WORD        N42020          <  ABSENT, C'EST PEUT-ETRE "!DK S0"...
N42012:  BYTE        NSPDKU;FCCI1
         WORD        PS0AS           < L'UTILISATEUR A-T'IL LE 'DKU' ???
         WORD        N42011          < OUI, OK...
         WORD        XER093          < NON, ERREUR...
N42011:  BYTE        K;FCCI1
         WORD        PSLOW           < MISE EN MODE 'SLOW' (MOT 'TVENTR' DE LA
                                     < MEMOIRE DEBANALISEE).
         WORD        N5              < PUIS, VERS L'INTERROGATION...
<
< AUTORISATION/INHIBITION DES
< GROUPES DE BLOCS ENTRELACES
< DE 'DKU' :
<
N42030:  BYTE        K;FCCI1
         WORD        SVDBG           < RECUPERATION DANS 'VALESC' DE LA LISTE
                                     < DES GROUPES DE BLOCS QUE L'ON DESIRE
                                     < INHIBER...
         BYTE        K;FCCI10        < TEST DE L' FINAL ???
         WORD        N42031          < OUI...
         WORD        XER0A1          < NON, ERREUR...
N42031:  BYTE        NSPDKU;FCCI1
         WORD        PS0AS           < BIEN, MAIS L'UTILISATEUR S'EST-IL BIEN
                                     < ASSIGNE 'DKU' ???
         WORD        N42032          < OUI...
         WORD        XER0A2          < NON, ERREUR...
N42032:  BYTE        NSPDKU;FCCI1
         WORD        PSLOWB          < DANS UN PREMIER TEMPS, ON RE-AUTORISE
                                     < TOUS LES GROUPES DE BLOCS...
                                     < ('PSLOWB' EST 'PSLOWA'...)
         BYTE        NSPDKU;FCCI1
         WORD        PSLOWI          < PUIS DANS UN DEUXIEME TEMPS ON INHIBE
                                     < LES GROUPES CORRESPONDANT AUX '0'...
         WORD        N5              < PUIS, ON RETOURNE A L'INTERROGATION...
<
< GESTION DES ERREURS HARDS SUR 'DKU',
< ET DE SYNCHRONISATION SIMULTANEE
< SUR LE SECTEUR 0 DE CHAQUE PISTE DE 'DKU' :
<
N42020:  BYTE        KZERO;FCCI17    < EST-CE BIEN "!DK S0" ???
         WORD        XER073          < ERREUR DE "!DK S"...
         BYTE        NSPDKU;FCCI1
         WORD        PS0AS           < L'UTILISATEUR A-T'IL LE 'DKU' ???
         WORD        N42024          < OUI, OK...
         WORD        XER08E          < NON, COMMANDE "!DK..." REFUSEE...
N42024:  BYTE        KSP;FCCI17
         WORD        XER086          < ERREUR...
         BYTE        KO;FCCI17
         WORD        XER085          < ERREUR...
         BYTE        KN;FCCI17
         WORD        N42021          < CE N'EST PAS "!DK S0 ON"...
<
< ACTIVATION DE LA SYNCHRONISATION SUR
< LE SECTEUR 0 DE 'DKU', ET INHIBITION DU
< "RETURN TO ZERO TRACK" SUR ERREUR HARD :
<
         BYTE        K;FCCI10        <  EST-IL LA ???
         WORD        N42022          < OUI, C'EST "!DK S0 ON"...
         WORD        XER088          < NON, ERREUR...
N42022:  BYTE        K;FCCI1         < OUI :
         WORD        PS0ON           < ON ACTIVE "S0"...
         WORD        N5              < ET ON VA VERS L'INTERROGATION...
<
< SUPPRESSION DE LA SYNCHRONISATION SUR
< LE SECTEUR 0 DE 'DKU', ET RETABLISSEMENT
< DU "RETURN TO ZERO TRACK" SUR ERREUR HARD :
<
N42021:  BYTE        KF;FCCI17
         WORD        XER087          < ERREUR...
         BYTE        KF;FCCI17
         WORD        XER087          < ERREUR...
         BYTE        K;FCCI10        <  EST-IL LA ???
         WORD        N42023          < OUI, C'EST "!DK S0 OFF"...
         WORD        XER089          < NON, ERREUR...
N42023:  BYTE        K;FCCI1         < OUI :
         WORD        PS0OF2          < ON INHIBE "S0"...
         WORD        N5              < ET ON VA VERS L'INTERROGATION...
         PAGE
<
<
<        D E S A S S I G N A T I O N   G L O B A L E  :
<
<
N800:    BYTE        KL;FCCI17       < EST-CE !CLOSE ???
         WORD        N7001           < COMMANDES SUR LA 'CDA' ???
         BYTE        KO;FCCI17
         WORD        XER04D          < ERREUR.
         BYTE        KS;FCCI17
         WORD        XER04D          < ERREUR.
         BYTE        KE;FCCI17
         WORD        XER04D          < ERREUR.
         BYTE        K;FCCI1
         WORD        INVP2           < INITIALISATION DU NVP COURANT
                                     < A PHOUT.
<
< BOUCLE DE DESASSIGNATION DU NVP COURANT :
<
N801:    BYTE        K;FCCI1
         WORD        NVPP1           < PASSAGE AU NVP SUIVANT (+1).
         WORD        N802            < OK, IL EXISTE,, ALLONS TENTER
                                     < UN !ASSIGN NVP=S.
         WORD        N260            < ON EST ARRIVE AU BOUT DE
                                     < TASSGN, C'EST FINI...
N802:    BYTE        MCFS-CMCFSR;FCCI1
         WORD        CCICLF          < TENTATIVE DE CLOSE EN MODE
                                     < 'SAVE' DU NVP COURANT.
         WORD        N801            < QUELQUE SOIT LES CONDITIONS
         WORD        N801            < DE RETOUR ON ACCEDE AU NVP
                                     < COURANT SUIVANT.
         PAGE
<
<
<        A C C E S   A   L A   ' C D A '  :
<
<
N7001:   BYTE        KD;FCCI17       < EST-CE !CDA ???
         WORD        XER04E          < NON, ERREUR...
         BYTE        KA;FCCI17       < EST-CE !CDA ???
         WORD        XER04E          < NON, ERREUR...
         BYTE        K;FCCI10        <  ???
         WORD        N7002           < OUI, !CDA ==> 'CDA-COMMUNE'...
         BYTE        KG;FCCI5        < EST-CE !CDAG ???
         WORD        N7004           < OUI, !CDAG ==> 'CDA-COMMUNE PRIVEE'...
         BYTE        KI;FCCI5        < EST-CE !CDAI ???
         WORD        N7030           < OUI, !CDAI ==> 'CDA-IMAGE' BASSE-
                                     < DEFINITION (OU LA 'CDA-IMAGE' MOYENNE
                                     < DEFINITION SUIVANT LE BIT 'IDESCJ'...).
         BYTE        KJ;FCCI5        < EST-CE !CDAJ ???
         WORD        N7010           < OUI, !CDAJ ==> 'CDA-IMAGE' MOYENNE-
                                     < DEFINITION.
         BYTE        KP;FCCI5        < EST-CE !CDAP ???
         WORD        N7006           < OUI, !CDAP' ==> 'CDA-PRIVEE'...
         BYTE        KX;FCCI17       < EST-CE !CDAX ???
         WORD        XER04F          < NON, ERREUR...
<
< CAS DU DEBLOCAGE DES ATTENTES
< DE SYNCHRONISATIONS SUR LES
< VALEURS POSITIVES DE 'CDAG0' :
< (COMMANDE "!CDAX")
<
         BYTE        K;FCCI1
         WORD        TOCDAG          < VERS L'ACTION SUR LE SEMAPHORE 'SEMCDA',
         WORD        N260            < VERS LA TRONCATION EVENTUELLE...
<
< !CDAP : 'CDA-PRIVEE' :
<
N7006:   BYTE        K;FCCI19        < EST-CE BIEN ":SYS" ???
         WORD        N7007           < OUI, OK...
         WORD        XER0A4          < NON, ERREUR...
N7007:   BYTE        K;FCCI1
         WORD        PCDAP           < ACCES A LA 'CDA-PRIVEE'...
         WORD        N260            < VERS UNE TRONCATION EVENTUELLE...
         WORD        XER050          < CAS OU ELLE EST INACCESSIBLE...
<
< !CDAI : 'CDA-IMAGE' BASSE-DEFINITION :
<
N7003:   BYTE        K;FCCI1
         WORD        PCDAIM          < ACCES A LA 'CDA-IMAGE'...
         WORD        N260            < VERS UNE TRONCATION EVENTUELLE...
<
< COMMUTATION 'CDAI'/'CDAJ+...' :
<
N7030:   BYTE        KEGAL;FCCI17    < NON, EST-CE "!CDAI=..." ???
         WORD        N7020           < NON, ALLONS VOIR "!CDAI...".
         BYTE        KI;FCCI5        < OUI, EST-CE ALORS "!CDAI=I" ???
         WORD        N7021           < OUI...
         BYTE        KJ;FCCI17       < NON, EST-CE ALORS "!CDAI=J" ???
         WORD        XER0A3          < NON, ERREUR...
         BYTE        K;FCCI1         < OUI :
         WORD        PCDAIJ          < MEMORISONS "!CDAI=J" PAR 'IDESCJ',
         WORD        N260            < VERS LE TEST DE TRONCATION...
N7021:   BYTE        K;FCCI1
         WORD        PCDAII          < MEMORISONS "!CDAI=I" PAR 'IDESCJ',
         WORD        N260            < VERS LE TEST DE TRONCATION...
N7020:   BYTE        K;FCCI1
         WORD        QCDAIJ          < ALORS, "!CDAI" DESIGNE-T'ELLE LA
                                     < 'CDAI' OU BIEN LA 'CDAJ+...' ???
         WORD        N7003           < IDESCJ=0 : C'EST LA 'CDAI'...
                                     < IDESCJ=1 : C'EST LA 'CDAJ+4'...
                                     < 'PAGE68' DEFINIT LE NUMERO DE LA PAGE
                                     < DE 64K CONTENANT LES REGISTRES DE
                                     < L'IMAGEUR MOYENNE DEFINITION...
                                     < 'PAGEIJ' DEFINIT LE NUMERO DE LA PAGE
                                     < DE 64K QUI SUPPORTE L'EMULATION DE LA
                                     < 'CDAI' PAR LA 'CDAJ' LORSQU'IL Y A UNE
                                     < COMMANDE "!CDAI=J" ACTIVE...
         BYTE        PAGEIJ;FCCI1
         WORD        PSTVAL          < ON PREPARE A PRIORI "!CDAJ+4" IMPLICITE.
         WORD        N7040           < ET VERS LE TEST DU LIMITEUR "+"...
<
< !CDAJ : 'CDA-IMAGE' MOYENNE-DEFINITION :
< (OU BIEN "!CDAI=J", PUIS "!CDAI")
<
PAGE00:: VAL         ZERO-ZERO       < NUMERO DE LA PREMIERE PAGE DE 64K...
N7010:   BYTE        PAGE00;FCCI1
         WORD        PSTVAL          < ON PREPARE A PRIORI "!CDAJ+0" IMPLICITE.
N7040:   BYTE        KPLUS;FCCI5     < LE LIMITEUR DE NUMERO DE PAGE EST-IL LA ?
         WORD        N7012           < OUI, VERS LE NUMERO DE PAGE...
         BYTE        K;FCCI10        < NON, ALORS  EST-IL LA ???
         WORD        N7011           < OUI, C'ETAIT BIEN "!CDAJ" EQUIVALENTE
                                     < A "!CDAJ+0" OU BIEN UNE COMMANDE "!CDAI"
                                     < EQUIVALENTE A "!CDAJ+4"...
         WORD        XER09D          < NON, ERREUR...
N7012:   BYTE        K;FCCI1         < OUI, LE "+" EST LA...
         WORD        SVDBG           < METTONS DANS 'VALESC' LE NUMERO DE LA
                                     < PAGE DEMANDEE...
         BYTE        K;FCCI10        < UN  TERMINE-T'IL LA COMMANDE ???
         WORD        N7011           < OUI...
         WORD        XER09E          < NON, ERREUR...
N7011:   BYTE        K;FCCI1
         WORD        PCDAJM          < ESSAYONS DE S'APPROPRIER LA 'CDAJ'...
         WORD        N5              < OK, ON L'A EU, ET LE NUMERO DE PAGE
                                     < EST CORRECT, ALLONS VERS L'INTERRO-
                                     < GATION...
         WORD        XER09F          < ET BIEN NON, LA 'CDAJ' EST SOIT DEJA
                                     < OCCUPE, SOIT LE NUMERO DE PAGE DEMANDE
                                     < EST MAUVAIS...
<
< !CDA : 'CDA-COMMUNE' :
<
N7002:   BYTE        K;FCCI1
         WORD        PCDAIN          < ACCES A LA 'CDA-COMMUNE'...
         WORD        N5              < VERS L'INTEROGATION GENERALE...
<
< !CDAG : 'CDA-COMMUNE PRIVEE' :
<
N7004:   BYTE        K;FCCI19        < EST-ON BIEN SOUS ":SYS" ???
         WORD        N7005           < OUI...
         BYTE        K;FCCI9         < NON, ALORS EST-ON SOUS ":SIM" ???
         BYTE        XXXK1;XXXK2;XXXK3;XXXK4
         WORD        N7005           < OUI...
         WORD        XER051          < NON, "!CDAG" EST REFUSEE...
N7005:   BYTE        K;FCCI1
         WORD        PCDAG           < OK, ESSAYONS DE S'APPROPRIER LA
                                     < 'CDA-COMMUNE PRIVEE'...
         WORD        N260            < OK, ON L'A OBTENUE (ET ON EST TOUT SEUL)
                                     < ALLONS DONC VERS LA TRONCATION
                                     < EVENTUELLE...
         WORD        XER052          < ET BIEN NON, ELLE EST DEJA OCCUPEE,
                                     < DESOLE !!!
         PAGE
<
<
<        C O M M A N D E S   D E   C O N N E X I O N S
<                    M A T R I C I E L L E S  :
<
<
N141:    BYTE        K;FCCI10        < TEST  ???
         WORD        N263            < OUI, C'EST DONC "!C", COMMANDE ABREGEE
                                     < DE "!CALL"...
         BYTE        KM;FCCI17       < NON, ESSAYONS "!CM"...
         WORD        N264            < NON.
         BYTE        KSP;FCCI17
         WORD        XER053          < ERREUR DE SYNTAXE.
         BYTE        K;FCCI19        < SEUL LE NUMERO DE COMPTE DU
                                     < SYSTEME (:SYS) EST AUTORISE A
                                     < FAIRE DES OPERATIONS SUR MATX.
         WORD        N144            < OK, C'EST :SYS.
         WORD        XER054          < ERREUR : ACN NON AUTORISE.
<
< RECHERCHE  :
<
N144:    BYTE        KV;FCCI5
         WORD        N145
         BYTE        KL;FCCI5
         WORD        N147
         BYTE        KC;FCCI5
         WORD        N230
         BYTE        KI;FCCI5
         WORD        N245            < PERIPHERIQUE 'IN' DEMANDE.
         BYTE        KO;FCCI5
         WORD        N247            < PERIPHERIQUE 'OUT' DEMANDE.
         WORD        XER055          < ERREUR.
N245:    BYTE        PHIN;FCCI1
         WORD        CMP5            < RECUPERATION DE NSPIN.
         WORD        N200            < OK.
N247:    BYTE        PHOUT;FCCI1
         WORD        CMP5            < RECUPERATION DE NSPOUT.
         WORD        N200            < OK.
N145:    BYTE        KI;FCCI17
         WORD        XER055          < ERREUR.
         BYTE        KUN;FCCI5
         WORD        N151            < =VI1.
         BYTE        KDEUX;FCCI5
         WORD        N152            < =VI2.
         BYTE        KTROIS;FCCI5
         WORD        N153            < =VI3.
         BYTE        KQUATR;FCCI5
         WORD        N154            < =VI4.
         BYTE        KCINQ;FCCI5
         WORD        N155            < =VI5.
         BYTE        KSIX;FCCI5
         WORD        N156            < =VI6.
         BYTE        KSEPT;FCCI5
         WORD        N997            < =VI7.
         BYTE        KHUIT;FCCI5
         WORD        N998            < =VI8.
         WORD        XER055          < ERREUR,  NON RECONNU.
N147:    BYTE        KP;FCCI5
         WORD        N170
         WORD        XER055          < ERREUR :  NON RECONNU.
N170:    BYTE        KUN;FCCI5
         WORD        N171            < =LP1.
         WORD        XER055          < ERREUR :  NON RECONNU.
N230:    BYTE        KR;FCCI17
         WORD        XER055          < ERREUR :  NON RECONNU.
         BYTE        KUN;FCCI5
         WORD        N181            < =CR1.
         WORD        XER055          < ERREUR :  NON RECONNU.
N151:    BYTE        NSPVI1;FCCI1    < =VI1.
         WORD        CMP1
         WORD        N200
N152:    BYTE        NSPVI2;FCCI1    < =VI2.
         WORD        CMP1
         WORD        N200
N153:    BYTE        NSPVI3;FCCI1    < =VI3.
         WORD        CMP1
         WORD        N200
N154:    BYTE        NSPVI4;FCCI1    < =VI4.
         WORD        CMP1
         WORD        N200
N155:    BYTE        NSPVI5;FCCI1    < =VI5.
         WORD        CMP1
         WORD        N200
N156:    BYTE        NSPVI6;FCCI1    < =VI6.
         WORD        CMP1
         WORD        N200
N997:    BYTE        NSPVI7;FCCI1    < =VI7.
         WORD        CMP1
         WORD        N200
N998:    BYTE        NSPVI8;FCCI1    < =VI8.
         WORD        CMP1
         WORD        N200
N171:    BYTE        NSPLP1;FCCI1    < =LP1.
         WORD        CMP1
         WORD        N200
N181:    BYTE        NSPCR1;FCCI1    < =CR1.
         WORD        CMP1
<
< RECHERCHE FONCTION DESIREE :
<
N200:    BYTE        KEGAL;FCCI5
         WORD        N201            < DEMANDE DE CONNEXION -->...
         BYTE        KDIESE;FCCI5
         WORD        N203            < DEMANDE DE DISCONNEXION.
         BYTE        KSLASH;FCCI17   < DEMANDE DE RUPTURE DE TOUTES
                                     < LES CONNEXIONS ISSUES DE .
         WORD        XER056          < ERREUR : COMMANDE NON RECONNUE
                                     < POUR LES CONNEXIONS MATRICIELLEES.
         BYTE        K;FCCI1         < RUPTURE DE TOUTES LES CONNEXIONS
                                     < ISSUES DE .
         WORD        CMP2
         WORD        N260            < VERS LE TEST DE TRONCATION...
N203:    BYTE        K;FCCI1         < DISCONNEXION.
         WORD        CMP4            < INVERSION DU SIGNE DE Y (=NSP1).
                                     < (SUITE IDENTIQUE A UNE CONNEXION)
<
< RECHERCHE  :
<
N201:    BYTE        KV;FCCI5
         WORD        N233
         BYTE        KL;FCCI5
         WORD        N234
         BYTE        KC;FCCI5
         WORD        N206
         BYTE        KI;FCCI5
         WORD        N249            < NSPIN DEMANDE COMME NSP2.
         BYTE        KO;FCCI5
         WORD        N251            < NSPOUT DEMANDE COMME NSP2.
         WORD        XER057          < ERREUR.
N249:    BYTE        PHIN;FCCI1
         WORD        CMP6            < RECUPERATION DE NSPIN.
         WORD        N260
         WORD        XER057          < ERREUR.
N251:    BYTE        PHOUT;FCCI1
         WORD        CMP6            < RECUPERATION NSPOUT.
         WORD        N260
         WORD        XER057          < ERREUR.
N233:    BYTE        KI;FCCI17
         WORD        XER057          < ERREUR :  NON RECONNU.
         BYTE        KUN;FCCI5
         WORD        N221            < =VI1.
         BYTE        KDEUX;FCCI5
         WORD        N222            < =VI2.
         BYTE        KTROIS;FCCI5
         WORD        N223            < =VI3.
         BYTE        KQUATR;FCCI5
         WORD        N224            < =VI4.
         BYTE        KCINQ;FCCI5
         WORD        N225            < =VI5.
         BYTE        KSIX;FCCI5
         WORD        N226            < =VI6.
         BYTE        KSEPT;FCCI5
         WORD        N7807           < =VI7.
         BYTE        KHUIT;FCCI5
         WORD        N7808           < =VI8.
         WORD        XER057          < ERREUR :  NON RECONNU.
N234:    BYTE        KP;FCCI17
         WORD        XER057          < ERREUR :  NON RECONNU.
         BYTE        KUN;FCCI5
         WORD        N214            < =LP1.
         WORD        XER057          < ERREUR :  NON RECONNU.
N206:    BYTE        KR;FCCI17
         WORD        XER057          < ERREUR :  NON RECONNU.
         BYTE        KUN;FCCI5
         WORD        N216            < =CR1.
         WORD        XER057          < ERREUR :  NON RECONNU.
N221:    BYTE        NSPVI1;FCCI1    < =VI1.
         WORD        CMP3            < CONNEXION/DISCONNEXION.
         WORD        N260
         WORD        XER058          < RETOUR EN ERREUR.
N222:    BYTE        NSPVI2;FCCI1    < =VI2.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N223:    BYTE        NSPVI3;FCCI1    < =VI3.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N224:    BYTE        NSPVI4;FCCI1    < =VI4.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N225:    BYTE        NSPVI5;FCCI1    < =VI5.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N226:    BYTE        NSPVI6;FCCI1    < =VI6.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N7807:   BYTE        NSPVI7;FCCI1    < =VI7.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N7808:   BYTE        NSPVI8;FCCI1    < =VI8.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N214:    BYTE        NSPLP1;FCCI1    < =LP1.
         WORD        CMP3
         WORD        N260
         WORD        XER058
N216:    BYTE        NSPCR1;FCCI1    < =CR1.
         WORD        CMP3
         WORD        N260
         WORD        XER058
         PAGE
<
<
<        T E S T   < E O M >   E T   T R O N C A T I O N  :
<
<
N260:    BYTE        K;FCCI10        < TEST .
         WORD        N5              < OK,  RECONNU.
         BYTE        K;FCCI11        < TEST DU MODE INTERACTIF.
         WORD        N419            < INTERACTIF : MESSAGE 'TRONCATION'.
         BYTE        ECT;FCCI1       < CAS DU MODE NON INTERACTIF.
         WORD        CCIXE           < RENVOI (X)=2 A L'ESCLAVE.
         WORD        N5
N419:    BYTE        I;FCCI1
         WORD        DISPCA          < DISPLAY DE LA PARTIE UTILE DE LA CARTE,
                                     < C'EST-A-DIRE CELLE QUI A ETE ANALYSEE...
         BYTE        LOM8;FCCI0
         WORD        M8              < MESSAGE ''.
         BYTE        K;FCCI7         < 'CCI JMP' :
         WORD        N5              < PUIS, VERS L'INTERROGATION GENERALE...
         PAGE
<
<
<        A P P E L   D E   L ' A S S E M B L E U R  :
<
<
N300:    BYTE        KY;FCCI17
         WORD        N45020          < PEUT-ETRE "!SI" ???
         BYTE        KM;FCCI17
         WORD        XER059
         BYTE        KB;FCCI17
         WORD        XER059
         BYTE        KO;FCCI17
         WORD        XER059
         BYTE        KL;FCCI17
         WORD        XER059          < ERREUR.
         BYTE        K;FCCI10        < TEST .
         WORD        N306            < '!SYMBOL' RECONNU.
         WORD        XER05A
N306:    BYTE        K;FCCI8         < LOAD PROCESSOR.
         WORD        DKSYMB          < @DK DE L'ASSEMBLEUR.
         WORD        SZSYMB          < TAILLE OCTETS DE L'ASSEMBLEUR.
         WORD        PSYMB           < @TRANSLATABLE DE RUN DE L'ASSEM-
                                     < BLEUR.
         BYTE        K;FCCI7
         WORD        N5              < GO BACK A L'INTERROGATION.
         PAGE
<
<
<        A P P E L   D E   L O A D  :
<
<
N307:    BYTE        KO;FCCI17
         WORD        N307A
         BYTE        KA;FCCI17
         WORD        N45010          < PEUT-ETRE "!LO" ???
         BYTE        KD;FCCI17
         WORD        XER05B          < ERREUR.
         BYTE        K;FCCI10        < TEST .
         WORD        N310            < '?LOAD' RECONNU.
         WORD        XER05C
N310:    BYTE        K;FCCI8         < LOAD PROCESSOR.
         WORD        DKLOAD          < @DK DE LOAD.
         WORD        SZLOAD          < TAILLE OCTETS DE LOAD.
         WORD        PLOAD           < @TRANSLATABLE DE RUN DE LAOD.
         BYTE        K;FCCI7
         WORD        N550            < VERS L'INTERROGATION GENERALE.
                                     < (SANS SUSPENSION, AU CAS OU
                                     < LE PROGRAMME APPELE, UTILISE-
                                     < RAIT LE CCI NON INTERACTIF ! ).
         PAGE
<
<
<        J O B   P A R A L L E L E S   E N T R Y   O U   A B O R T  :
<
<
N401:    BYTE        KSP;FCCI17
         WORD        XER05D          < ERREUR.
         BYTE        K;FCCI19        < VALIDATION DE L'ACN DEMANDEUR.
         WORD        N403            < OK C'EST :SYS.
         WORD        XER05E          < ERREUR : ACN NON AUTORISE.
N403:    BYTE        K;FCCI1
         WORD        NVPAS           < RECUPERATION DANS Y DU NVP
                                     < DEMANDE.
         WORD        N404            < OK.
         WORD        XER05F          < ERREUR SUR LE NVP ARGUMENT.
N404:    BYTE        K;FCCI10        < TEST .
         WORD        N405            < OK.
         WORD        XER060          < ERREUR.
N405:    BYTE        K;FCCI1
         WORD        TASK            < ACTION SUR LE JOB PARALLELE.
         WORD        N5              < OK.
         WORD        XER061          < ERREUR : EXECUTION REFUSEE.
         PAGE
<
<
<        T A B U L A T I O N  :
<
<
N424:    BYTE        K;FCCI10        < EST-CE "!T" ???
         WORD        N424X1          < OUI, ON MET EN PLACE LA TABULATION
                                     < STANDARD...
         BYTE        KA;FCCI17       < NON, EST-CE "!TAB" ???
         WORD        N43100          < PEUT-ETRE "!TRACE..." ???
         BYTE        KB;FCCI17
         WORD        XER062          < ERREUR.
         BYTE        K;FCCI12        < TEST USER INTERACTIF.
         WORD        N428            < OK, USER INTERACTIF.
         WORD        XER063          < NON INTERACTIF : !TAB REFUSE.
N428:    BYTE        TABSU0-TABSUR;FCCI1
         WORD        INITAB          < RAZ DE LA TABLE DE TABULATION.
         BYTE        XEECHO;FCCI6    < INTERROGATION USER POUR CONNAITRE
                                     < SES DEFINITIONS DE ZONES.
N431:    BYTE        KSP;FCCI5
         WORD        N431            < BOUCLAGE SUR CE NOEUD SI " ".
         BYTE        KZERO;FCCI5
         WORD        N431            < BOUCLAGE SUR LE NOEUD PRECEDENT
                                     < DANS LE CAS D'UN "0" (ZERO).
         BYTE        K;FCCI10        < TEST .
         WORD        N5              < OUI, FIN DE TABULATION.
         BYTE        KUN;FCCI5
         WORD        N435            < DEFINITION D'1N DEBUT DE ZONE.
         BYTE        KSLASH;FCCI5
         WORD        N435            < DEFINTION D'UN DEBUT DE ZONE.
         BYTE        TABSUR-TABSUR;FCCI1
                                     < DANS LE CAS D'UNE ERREUR DANS LA DEFINI-
                                     < TION DES ZONES, OU UNE LIGNE VIDE,
                                     < TABULATION, ON REMET LA TABULATION
                                     < STANDARD...
         WORD        INITAB          < REINIT.
         WORD        XER064          < RETOUR EN ERREUR AU CCI.
N435:    BYTE        K;FCCI1
         WORD        ZONTAB          < DEFINITION D'UN DEBUT DE
                                     < ZONE ("1" OU "/").
         WORD        N431            < VERS LA RECONNAISSANCE DES
                                     < CARACTERES DE ZONE (" " OU "0").
<
< MISE EN PLACE DE LA
< TABULATION STANDARD :
<
N424X1:  BYTE        TABSUR-TABSUR;FCCI1
         WORD        INITAB
         WORD        N5              < VERS L'INTERROGATION...
         PAGE
<
<
<        A C T I O N   S U R   L A   T R A C E  :
<
<
N43100:  BYTE        KR;FCCI17
         WORD        XER09A          < ERREUR...
         BYTE        KA;FCCI17
         WORD        XER09A          < ERREUR...
         BYTE        KC;FCCI17
         WORD        XER09A          < ERREUR...
         BYTE        KE;FCCI17
         WORD        XER09A          < ERREUR...
         BYTE        KSP;FCCI17
         WORD        XER094
         BYTE        KO;FCCI17
         WORD        XER095          < LA FONCTION N'EST PAS RECONNUE...
         BYTE        KN;FCCI17
         WORD        N43101          < C'EST PEUT-ETRE "!TRACE OFF"...
<
< CAS DE LA COMMANDE "!TRACE ON" :
<
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N43103          < OK...
         WORD        XER096          < ERREUR...
N43103:  BYTE        K;FCCI1
         WORD        PTRAON          < ACTIVATION DE LA COMPRESSION...
         WORD        N5              < ET C'EST TOUT...
<
< CAS DE LA COMMANDE "!TRACE OFF" :
<
N43101:  BYTE        KF;FCCI17
         WORD        XER095          < ERREUR, FONCTION NON RECONNUE...
         BYTE        KF;FCCI17
         WORD        XER095          < ERREUR, FONCTION NON RECONNUE...
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N43104          < OK...
         WORD        XER097          < ERREUR, MANQUE ...
N43104:  BYTE        K;FCCI19        < TEST DE  :
         WORD        N43102          < OK, C'EST ":SYS"...
         WORD        XER098          < ERREUR,  INTERDIT...
N43102:  BYTE        K;FCCI1
         WORD        PTRAOF          < INHIBITION DE LA COMPRESSION,
         WORD        N5              < OK, VERS L'INTERROGATION...
         WORD        XER099          < ERREUR, FONCTION INTERDITE ACTUEL-
                                     < LEMENT PAR 'MEMXXX'..
         PAGE
<
<
<        D I S P O S I T I F S   D E   V I S U A L I S A T I O N
<        D E   L ' A C T I V I T E   D U   S Y S T E M E  :
<
<
N48000:  BYTE        KC;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KT;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KV;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KI;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KT;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KE;FCCI17
         WORD        XER0A5          < ERREUR...
         BYTE        KSP;FCCI17
         WORD        XER0A5          < ERREUR...
         IF          OACTIV-EXIST,XEIF%8,,XEIF%8
<
< CAS DES COMMANDES MOYENNE DEFINITION :
<
         BYTE        KO;FCCI17       < EST-CE "ON" OU "OFF" ???
         WORD        N48010          < NON, PEUT-ETRE "R", "V", "B" OU "H"...
<
< CAS DE LA COMMANDE "!ACTIVITE OFF" :
<
         BYTE        KF;FCCI17       < EST-CE "OFF" ???
         WORD        N48002          < NON, PEUT-ETRE "ON"...
         BYTE        KF;FCCI17
         WORD        XER0A6          < ET BIEN NON, CE N'EST PAS "OFF", ERREUR..
         BYTE        K;FCCI10        < C'EST "OFF", Y-A-T'IL BIEN UN  ???
         WORD        N48003          < OUI, OK...
         WORD        XER0A7          < NON, ERREUR...
N48003:  BYTE        K;FCCI1
         WORD        PACOFF          < MISE "OFF" DU DISPOSITIF DE VISUALISATION
                                     < DE L'ACTIVITE DU SYSTEME DANS LE SYSTEME
                                     < DE TELEVISION MOYENNE DEFINITION...
         WORD        N5              < PUIS, VERS L'INTERROGATION...
<
< CAS DE LA COMMANDE "!ACTIVITE ON" :
<
N48002:  BYTE        KN;FCCI17
         WORD        XER0A8          < ET BIEN NON, CE N'EST PAS "ON", ERREUR...
         BYTE        K;FCCI10        < C'EST "ON", Y-A-T'IL BIEN UN  ???
         WORD        N48004          < OUI, OK...
         WORD        XER0A9          < NON, ERREUR...
N48004:  BYTE        K;FCCI19        < MAIS ALORS EST-ON BIEN SOUS ":SYS" ???
         WORD        N48005          < OUI, OK...
         WORD        XER0AA          < NON, ERREUR...
N48005:  BYTE        K;FCCI1
         WORD        PACON           < MISE "ON" DU DISPOSITIF DE VISUALISATION
                                     < DE L'ACTIVITE DU SYSTEME DANS LE SYSTEME
                                     < DE TELEVISION BASSE DEFINITION...
         WORD        N5              < PUIS, VERS L'INTERROGATION...
         WORD        XER0AB          < ERREUR, CELA N'A PU SE FAIRE ('CBJ' NON
                                     < OPERATIONNEL, OU 'MEMXXX'...).
XEIF%8:  VAL         ENDIF
<
< CAS DES COMMANDES BASSE DEFINITION :
<
N48010:  BYTE        K;FCCI19        < EST-ON BIEN SOUS ":SYS" ???
         WORD        N48012          < OUI, OK...
         WORD        XER0AD          < NON, ERREUR...
N48012:  BYTE        KM;FCCI5
         WORD        N48061          < C'EST "!ACTIVITE M...".
         BYTE        KR;FCCI5
         WORD        N48021          < C'EST "!ACTIVITE R...".
         BYTE        KV;FCCI5
         WORD        N48031          < C'EST "!ACTIVITE V...".
         BYTE        KB;FCCI5
         WORD        N48041          < C'EST "!ACTIVITE B...".
         BYTE        KH;FCCI17
         WORD        XER0AE          < ERREUR, COMMANDE NON RECONNUE...
<
< CAS DE LA COMMANDE "!ACTIVITE H" :
<
         BYTE        ZERO-ZERO;FCCI1
         WORD        PSTVAL          < ON INITIALISE 'VALESC' AVEC UNE ADRESSE
                                     < NULLE...
         BYTE        K;FCCI10        <  EST-IL BIEN LA ???
         WORD        N48052          < OUI, OK...
         WORD        XER0AC          < NON, ERREUR...
N48052:  BYTE        TVPOFF;FCCI1
         WORD        PACTV           < DESACTIVATION DE LA VISUALISATION BASSE
                                     < DEFINITION DE L'ACTIVITE DU SYSTEME...
         WORD        N5              < PUIS VERS L'INTERROGATION...
         WORD        XER0B2          < LA FONCTION N'A PU ETRE REALISEE (LA
                                     < TELEVISION BASSE DEFINITION EST ABSENTE,
                                     < OU 'MEMXXX'...)
<
< CAS DE LA COMMANDE "!ACTIVITE B..." :
<
N48041:  BYTE        K;FCCI1
         WORD        SVDBG           < RECUPERATION DANS 'VALESC' DE L'ADRESSE
                                     < DE LA PAGE A VISUALISER...
         BYTE        K;FCCI10        <  EST-IL BIEN DERRIERE ???
         WORD        N48042          < OUI, OK...
         WORD        XER0AF          < NON, ERREUR...
N48042:  BYTE        TVPB;FCCI1
         WORD        PACTV           < ACTIVATION DE LA VISUALISATION D'ACTIVITE
                                     < SUR LE CANAL "B" DE LA BASSE DEFINITION.
         WORD        N5              < PUIS VERS L'INTERROGATION...
         WORD        XER0B2          < LA FONCTION N'A PU ETRE REALISEE (VOIR
                                     < 'TVEXIS' OU 'MEMXXX'...).
<
< CAS DE LA COMMANDE "!ACTIVITE V..." :
<
N48031:  BYTE        K;FCCI1
         WORD        SVDBG           < RECUPERATION DANS 'VALESC' DE L'ADRESSE
                                     < DE LA PAGE A VISUALISER...
         BYTE        K;FCCI10        <  EST-IL BEIN DERRIERE ???
         WORD        N48032          < OUI, OK...
         WORD        XER0B0          < NON, ERREUR...
N48032:  BYTE        TVPV;FCCI1
         WORD        PACTV           < ACTIVATION DE LA VISUALISATION D'ACTIVITE
                                     < SUR LE CANAL "V" DE LA BASSE DEFINITION.
         WORD        N5              < PUIS VERS L'INTERROGATION...
         WORD        XER0B2          < LA FONCTION N'A PU ETRE REALISEE (VOIR
                                     < 'TVEXIS' OU 'MEMXXX'...).
<
< CAS DE LA COMMANDE "!ACTIVITE R..." :
<
N48021:  BYTE        K;FCCI1
         WORD        SVDBG           < RECUPERATION DANS 'VALESC' DE L'ADRESSE
                                     < DE LA PAGE A VISUALISER...
         BYTE        K;FCCI10        <  EST-IL BEIN DERRIERE ???
         WORD        N48022          < OUI, OK...
         WORD        XER0B1          < NON, ERREUR...
N48022:  BYTE        TVPR;FCCI1
         WORD        PACTV           < ACTIVATION DE LA VISUALISATION D'ACTIVITE
                                     < SUR LE CANAL "R" DE LA BASSE DEFINITION.
         WORD        N5              < PUIS VERS L'INTERROGATION...
         WORD        XER0B2          < LA FONCTION N'A PU ETRE REALISEE (VOIR
                                     < 'TVEXIS' OU 'MEMXXX'...).
<
< CAS DE LA COMMANDE "!ACTIVITE M..." :
<
N48061:  BYTE        K;FCCI1
         WORD        SVDBG           < RECUPERATION DANS 'VALESC' DE LA DADR-
                                     < ADRESSE DE LA ZONE A COPIER...
         BYTE        K;FCCI10        < Y-A-T'IL BIEN UN  DERRIERE ???
         WORD        N48062          < OUI, OK...
         WORD        XER0B5          < NON, ERREUR...
N48062:  BYTE        K;FCCI1
         WORD        PACTM           < ET MODIFICATION DE 'IDLE'...
         WORD        N5              < VERS L'INTERROGATION GENERALE...
         WORD        XER0B6          < ERREUR (CF. 'MEMXXX'...)...
         PAGE
<
<
<        A C C E S   A U X   M O D E S - D ' E M P L O I S  :
<
<
N601:    BYTE        KE;FCCI17
         WORD        XER065          < ERREUR.
         BYTE        KL;FCCI17
         WORD        XER065          < ERREUR.
         BYTE        KP;FCCI17
         WORD        XER065          < ERREUR.
         BYTE        LOM10;FCCI0
         WORD        M10             < ENVOI DU MESSAGE 'HELP'.
         BYTE        K;FCCI7         < VERS L'INTERROGATION DU CCI.
         WORD        N260            < VERS LA TRONCATION...
         PAGE
<
<
<        I D L E  :
<
<
N704:    BYTE        K;FCCI10        < TEST  ???
         WORD        N705            < C'EST !IDLE.
         WORD        XER066          < ERREUR.
N705:    BYTE        LODATE;FCCI0
         WORD        DATE            < ENVOI DE LA DATE ET DE L'HEURE.
         BYTE        K;FCCI8         < LOAD PROCESSOR.
         WORD        DKIDLE          < @DK DU PROCESSEUR IDLE.
         WORD        SZIDLE          < LA TAILLE OCTET NECESSAIRE
                                     < EST LA TAILLE MEMOIRE MINIMALE
                                     < (1K). C'EST LA LE ROLE
                                     < PRINCIPAL DE !IDLE.
         WORD        PIDLE           < @TRANSLATABLE DE RUN DE IDLE.
         BYTE        K;FCCI7         < CCI JUMP.
         WORD        N5              < VERS L'INTERROGATION GENERALE.
         PAGE
<
<
<        D E L E T E - F I L E  :
<
<
N730:    BYTE        KF;FCCI17
         WORD        N40000          < CE N'EST PAS "!DF", PEUT-ETRE "!DKU"...
         BYTE        K;FCCI10        < TEST DE LA PRESENCE D'UN  ???
         WORD        N732            < C'EST UN APPEL DE !DF.
         WORD        XER067          < ERREUR.
N732:    BYTE        K;FCCI8         < LOAD PROCESSOR (!DF).
         WORD        DKDELF          < @DK DE DELETE-FILE.
         WORD        SZDELF          < TAILLE EN OCTETS NECESSAIRE
                                     < A DELETE-FILE.
         WORD        PDELF           < P DE LANCEMENT TRANSLATABLE
                                     < DE DELETE-FILE.
         BYTE        K;FCCI7         < CCI JUMP.
         WORD        N550            < VERS L'INTERROGATION DE L'UTI-
                                     < LISATEUR, MAIS SANS SUSPENDRE
                                     < LE CCI, CAR DELETE-FILE
                                     < UTILISE LE CCI NON INTERACTIF.
         PAGE
<
<
<        R E T O U R S   A U   P R O G R A M M E
<                    U T I L I S A T E U R  :
<
<
N860:    BYTE        KEOT;FCCI17     < EST-CE LA COMMANDE '!' ???
         WORD        N861            < NON.
<
<        R A Z   D E   P R E S C  :
<
         BYTE        K;FCCI1
         WORD        RPRESC          < PRESC(ESCLAVE)<--0.
         WORD        N5              < VERS L'INTERROGATION GENERALE
                                     < DU CCI.
N861:    BYTE        KCR;FCCI17      < EST-CE LA COMMANDE '!' ????
         WORD        N861X1          < NON, PEUT-ETRE LA CONSTANTE MAGIQUE...
<
<        R E T O U R   P A R   P R E S C  :
<
         BYTE        K;FCCI1
         WORD        MPRESC          < MODIFICATION DES REGISTRES
                                     < P(ESCLAVE) ET S(ESCLAVE) :
                                     < P(ESCLAVE)<--(PRESC),
                                     < S(ESCLAVE)<--MODE-ESCLAVE.
         WORD        N5              < RETOUR AU PROGRAMME UTILISATEUR
                                     < VIA LA SUSPENSION DU CCI.
         PAGE
<
<
<        M I S E   E N   P L A C E   D U   C O D E   M A G I Q U E  :
<
<
XWOR%1:  VAL         MBAS16)MFFFF    < MASQUE D'ELIMINATION DU DERNIER CHIFFRE
                                     < HEXA-DECIMAL D'UN MOT.
KHH::    VAL         KH              < CARACTERE UTILISE DANS LA COMMANDE
                                     < D'AUTORISATION/INHIBITION DES CODES
                                     < MAGIQUES...
XWOR%2:  VAL         KHH(XWOR%1      < PREMIER CHIFFRE DE 'KHH',
XWOR%3:  VAL         KHH(MBAS16      < DEUXIEME CHIFFRE DE 'KHH',
XWOR%4:  VAL         XWOR%3*KMAGIC(MBAS16
                                     < QUE L'ON TRANSCODE...
XWOR%5:  VAL         XWOR%2?XWOR%4   < CARACTERE TRANSPOSE DE 'KHH'...
         IF          KHH-XWOR%5,,XEIF%,
         IF          ATTENTION : 'KHH' N'EST PAS SON PROPRE
         IF          TRANSPOSE PAR LA CONSTANTE MAGIQUE !!!
         IF          (D'OU DES DIFFICULTES DE FRAPPE)
XEIF%:   VAL         ENDIF
XWOR%2:  VAL         KCCI(XWOR%1     < PREMIER CHIFFRE DE 'KCCI',
XWOR%3:  VAL         KCCI(MBAS16     < DEUXIEME CHIFFRE DE 'KCCI',
XWOR%4:  VAL         XWOR%3*KMAGIC(MBAS16
                                     < QUE L'ON TRANSPOSE...
KMAGI1:: VAL         XWOR%2?XWOR%4   < TRANSPOSE DE 'KCCI' ("'" ???).
XWOR%2:  VAL         KGS(XWOR%1      < PREMIER CHIFFRE DE 'KGS',
XWOR%3:  VAL         KGS(MBAS16      < DEUXIEME CHIFFRE DE 'KGS',
XWOR%4:  VAL         XWOR%3*KMAGIC(MBAS16
                                     < QUE L'ON TRANSPOSE...
KMAGI2:: VAL         XWOR%2?XWOR%4   < TRANSPOSE DE 'KGS' ('CTRL-K' SUR T4010
                                     < ET 'ESC' SUR T4014 ???).
XWOR%2:  VAL         KEOT(XWOR%1     < PREMIER CHIFFRE DE 'KEOT',
XWOR%3:  VAL         KEOT(MBAS16     < DEUXIEME CHIFFRE DE 'KEOT',
XWOR%4:  VAL         XWOR%3*KMAGIC(MBAS16
                                     < QUE L'ON TRANSPOSE...
KMAGI3:: VAL         XWOR%2?XWOR%4   < TRANSPOSE DE 'KEOT' ('CTRL-L' ???).
XWOR%2:  VAL         KCR(XWOR%1      < PREMIER CHIFFRE DE 'KCR',
XWOR%3:  VAL         KCR(MBAS16      < DEUXIEME CHIFFRE DE 'KCR',
XWOR%4:  VAL         XWOR%3*KMAGIC(MBAS16
                                     < QUE L'ON TRANSPOSE...
KMAGI4:: VAL         XWOR%2?XWOR%4   < TRANSPOSE DE 'KCR' ('CTRL-C' ???).
N861X1:  BYTE        KGS;FCCI17      < PASSAGE EN GRAPHIQUE ???
                                     < POUR CACHER CE QUI SUIT...
         WORD        XER068          < NON, ERREUR...
         BYTE        KHH;FCCI17
         WORD        XER090
         BYTE        KHH;FCCI17
         WORD        XER090
         BYTE        KHH;FCCI17
         WORD        XER090
         BYTE        KHH;FCCI17
         WORD        XER090
         BYTE        K;FCCI1
         WORD        TESSYS          < LOGIN INITIAL SOUS ":SYS" ???
         WORD        N861X2          < OUI, OK...
         WORD        XER091          < NON, ERREUR...
N861X2:  BYTE        K;FCCI12        < QUE EST LE MODE DE TRAVAIL ???
         WORD        N861X3          < TEMPS PARTAGE, OK...
         WORD        XER08F          < BATCH, ERREUR...
N861X3:  BYTE        K;FCCI1
         WORD        PMAGIC          < OK, ON INVERSE L'UTILISATION DE LA
                                     < CONSTANTE 'VMAGIC' DE LA VISU...
         WORD        N5              < PUIS, VERS L'INTERROGATION GENERALE...
         PAGE
<
<
<        C O M M A N D   D E   D E B U G  :
<
<
N446:    BYTE        KE;FCCI5
         WORD        N447            < "E" RECONNU...
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N450            <  RECONNU : C'EST !DEBUG ABREGE...
         WORD        N730            < BOF, ALLONS ESSAYER !DF...
N447:    BYTE        KB;FCCI17
         WORD        XER069          < ERREUR.
         BYTE        KU;FCCI17
         WORD        XER069          < ERREUR.
         BYTE        KG;FCCI17
         WORD        XER069          < ERREUR.
         BYTE        K;FCCI10        < TEST .
         WORD        N450            < OK,  : DEBUG TRANSLATABLE.
         BYTE        KETX;FCCI17     < TEST 'CTRL-C'.
         WORD        XER069          < ERREUR.
         BYTE        K;FCCI10        < TEST  ???
         WORD        N562            < OK, C'EST !DEBUG.
         WORD        XER069          < ERREUR.
N562:    BYTE        K;FCCI19        < VALIDATION DE L' LORS DE
                                     < LA DEMANDE DU DEBUG ABSOLU.
         WORD        N563            < OK : ':SYS' AUTORISE.
         WORD        XER06A          < ERREUR : ACN NON AUTORISE.
N563:    BYTE        K;FCCI12        < TEST USER INTERACTIF ????
         WORD        N564            < OK : LET'S GO.
         BYTE        K;FCCI19        < DANS LE CAS D'UN USER NON
                                     < INTERACTIF, ON TESTE L'.
         WORD        N564            < OUI, IL S'AGIT D'UN USER NON
                                     < INTERACTIF SOUS :SYS.
         WORD        XER06B          < TOUTE AUTRE DEMANDE NON INTER-
                                     < ACTIVE EST REJETEE.
N564:    BYTE        K;FCCI1         < MISE DU BIT IDESC1 DE IDDESC A 1
         WORD        ABSAD           < MISE DU DEBUG EN MODE ABSOLU.
         WORD        N451X           < ET C'EST PARTI COMME AVEC LE
                                     < DEBUG TRANSLATABLE.
         WORD        XER06C          < ET NON, INHIBE MEME POUR ":SYS" !!!
N450:    BYTE        K;FCCI12        < TEST USER INTERACTIF ????
         WORD        N451            < OK, USER INTERACTIF.
         BYTE        K;FCCI19        < DANS LE CAS D'UNE DEMANDE NON
                                     < INTERACTIVE, ON TESTE L'.
         WORD        N451            < OK, USER NON INTERACTIF
                                     < SOUS :SYS.
         WORD        XER06D          < TOUTE AUTRE DEMANDE EST REJETEE.
N451X:   BYTE        LOABS;FCCI0     < ON ENVOIE UN MESSAGE SIGNALANT
         WORD        MDABS           < QU'ON EST EN ABSOLU...
<
<        G R A M M A I R E   D U   D E B U G  :
<
N451:    BYTE        XEECHO;FCCI6    < INTERROGATION DE L'ESCLAVE,
                                     < SANS SUSPENSION DU CCI, CE
                                     < QUI PERMET DE NE PAS MODIFIER
                                     < A(DCTESC),X(DCTESC),K(DCTESC),
                                     < P(DCTESC), ET PERMET DONC UN
                                     < RETOUR INTEGRE A L'UTILISATEUR.
<
<        B O U C L E   D ' A N A L Y S E   D U   D E B U G  :
<
<
<        S O R T I E   D U   D E B U G  :
<
         BYTE        KG;FCCI17       < EST-CE UN RETOUR D'ABORT ???
         WORD        N565X1          < NON...
         BYTE        K;FCCI1         < OUI :
         WORD        SVDBG           < RECUPERONS DANS 'VALESC' UNE EVENTUELLE
                                     < TRANSLATION DU REGISTRE 'P' DE L'UTILI-
                                     < SATEUR ; CELA EST RENDU NECESSAIRE PAR
                                     < LE FAIT QUE 'P' PEUT POINTER SUR L'INS-
                                     < TRUCTION COURANTE, OU BIEN LA SUIVANTE...
         BYTE        K;FCCI10        <  EST-IL LA ???
         WORD        N565X2          < OUI, VERS LE RETOUR D'ABORT...
         WORD        N453            < NON, ERREUR...
N565X2:  BYTE        K;FCCI1         < OUI :
         WORD        MOVER           < ON PLACE UNE ROUTINE DE FIN DE SERVICE
                                     < QUI RESTAURERA LES CONDITIONS D'AVANT
                                     < L'ABORT,
         WORD        N565            < ET VERS LA SORTIE DU 'DEBUG'...
N565X1:  BYTE        KPV;FCCI17      < TEST ';'. SI ';' EST RECONNU :
                                     < SORTIE DU DEBUG, ET GOTO
                                     < L'INTERROGATION DU CCI.
         WORD        N5400           < NON.
         BYTE        K;FCCI10        <  EST-IL LA ???
         WORD        N565            < OUI, ON VA SORTIR DU DEBUG...
         WORD        N453            < NON, ERREUR...
N565:    BYTE        K;FCCI1         < MISE DU BIT IDESC1 DE IDDESC A 0
         WORD        TRAD            < RETOUR A PRIORI AU MODE
                                     < TRANSLATABLE DU DEBUG.
         WORD        N5              < VERS L'INTERROGATION DU CCI.
N5400:   BYTE        KCCI;FCCI17     < EST-CE UNE SORTIE IMPLICITE ("!") ???
         WORD        N540X1          < NON, PEUT-ETRE UN "!GO"-RAPIDE...
         BYTE        K;FCCI1         < OUI, C'EST "!" :
         WORD        TRAD            < OK, ON REPASSE EN RELATIF...
         BYTE        K;FCCI1
         WORD        MASTER          < QUEL EST LE MODE DE L'UTILISATEUR ???
         WORD        N331            < MAITRE ET SOUS 'SVC', OU BIEN ESCLAVE
                                     < SOUS 'QUIT' ; ALLONS DONC RECONNAITRE
                                     < LE CARACTERE SUIVANT "!"...
         BYTE        LOM60;FCCI0     < ET BIEN, IL ETAIT SOUS 'SVC' MAIS EN
                                     < MODE ESCLAVE, ON LE REMET EN MODE
                                     < MAITRE, ET ON LUI DIT...
         WORD        M60
         BYTE        K;FCCI7         < PUIS SAUT DANS LA GRAMMAIRE :
         WORD        N331            < ET VOILA, ON SORT DU 'DEBUG'...
N540X1:  BYTE        KSP;FCCI17      < ON N'A PAS TROUVE "!", MAIS N'Y AURAIT-
                                     < IL PAS LE  DE LA COMMANDE "!GO"
                                     < RAPIDE ???
         WORD        N540            < NON, ALLONS DONC VOIR L'INCREMENTATION,
                                     < ET L'INDIRECTION...
         BYTE        K;FCCI10        < OUI, Y-A-T'IL BIEN L' ???
         WORD        N540X2          < OK, C'EST "!GO"...
         WORD        N453            < NON, ERREUR DE SYNTAXE...
N540X2:  BYTE        K;FCCI1
         WORD        TRAD            < OK, ON REPASSE EN RELATIF...
         BYTE        K;FCCI1
         WORD        MASTER          < QUEL EST LE MODE DE L'UTILISATEUR ???
         WORD        N85             < MAITRE ET SOUS 'SVC', OU BIEN ESCLAVE
                                     < SOUS 'QUIT' ; ALLONS DONC TRAITER LE
                                     < "!GO" DIRECT"...
         BYTE        LOM60;FCCI0     < ET BIEN, IL ETAIT EN MODE ESCLAVE
                                     < SOUS 'SVC', ON LE REMET EN MODE MAITRE
                                     < ET ON LUI DIT...
         WORD        M60
         BYTE        K;FCCI7         < PUIS SAUT DANS LA GRAMMAIRE :
         WORD        N85             < ET ON VA VERS "!GO" DIRECT...
<
<        M E S S A G E   D U   D E B U G  :
<
N453:    BYTE        K;FCCI1
         WORD        DISPCA          < EDITION PARTIELLE DE LA CARTE JUSQU'AU
                                     < CARACTERE EN ERREUR...
         BYTE        LOM40;FCCI0
         WORD        M40             < MESSAGE '??'.
         BYTE        K;FCCI7         < 'CCI JMP' :
         WORD        N451            < PUIS, VERS L'INTERROGATION DU DEBUG...
<
<        A N A L Y S E   D E S   C O M M A N D E S  :
<
N454:    BYTE        KRA;FCCI5
         WORD        N455            < =A.
         BYTE        KRB;FCCI5
         WORD        N457            < =B.
         BYTE        KRX;FCCI5
         WORD        N459            < =X.
         BYTE        KRY;FCCI5
         WORD        N461            < =Y.
         BYTE        KRC;FCCI5
         WORD        N463            < =C.
         BYTE        KRL;FCCI5
         WORD        N465            < =L.
         BYTE        KRW;FCCI5
         WORD        N467            < =W.
         BYTE        KRK;FCCI5
         WORD        N469            < =K.
         BYTE        KRP;FCCI5
         WORD        N471            < =P.
         BYTE        KRSTAT;FCCI5
         WORD        N473            < =S.
         BYTE        KRAD;FCCI5
         WORD        N475            < =@.
         BYTE        KRMEM;FCCI5
         WORD        N477            < =M.
         BYTE        KRSLOT;FCCI5
         WORD        N477O1          < =O.
         BYTE        KRMOT0;FCCI5
         WORD        N477A0          < =0.
         BYTE        KRMOT1;FCCI5
         WORD        N477A1          < =1.
         BYTE        KRMOT2;FCCI5
         WORD        N477A2          < =2.
         WORD        N453            < ERREUR.
N455:    BYTE        RA;FCCI1        < =A (K).
         WORD        SADBG           < SAVE  DANS Y.
         WORD        N478
N457:    BYTE        RB;FCCI1        < =B (1).
         WORD        SADBG
         WORD        N478
N459:    BYTE        RX;FCCI1        < =X (2).
         WORD        SADBG
         WORD        N478
N461:    BYTE        RY;FCCI1        < =Y (3).
         WORD        SADBG
         WORD        N478
N463:    BYTE        RC;FCCI1        < =C (4).
         WORD        SADBG
         WORD        N478
N465:    BYTE        RL;FCCI1        < =L (5).
         WORD        SADBG
         WORD        N478
N467:    BYTE        RW;FCCI1        < =W (6).
         WORD        SADBG
         WORD        N478
N469:    BYTE        RK;FCCI1        < =K (7).
         WORD        SADBG
         WORD        N478
N471:    BYTE        RP;FCCI1        < =P (8).
         WORD        SADBG
         WORD        N478
N473:    BYTE        RS;FCCI1        < =S (9).
         WORD        SADBG
         WORD        N478
N475:    BYTE        RAD;FCCI1       < =@ (10).
         WORD        SADBG
         WORD        N502
N477:    BYTE        RM;FCCI1        < =M (11).
         WORD        SADBG
         WORD        N502
N477O1:  BYTE        K;FCCI1         < =O (12),
         WORD        TDEBAB          < EST-ON BIEN SOUS 'DEBUG' ABSOLU ???
         WORD        N453            < NON, ERREUR...
         BYTE        RSLOT;FCCI1     < OUI...
         WORD        SADBG
         WORD        N502
N477A0:  BYTE        RMOT0;FCCI1     < =0 (13),
         WORD        SADBG
         WORD        N502
N477A1:  BYTE        RMOT1;FCCI1     < =1 (14),
         WORD        SADBG
         WORD        N502
N477A2:  BYTE        RMOT2;FCCI1     < =2 (15).
         WORD        SADBG
N502:    BYTE        K;FCCI1         < DANS LE CAS DE '@', 'M', 'O', '0', '1' ET
                                     < '2' ON FAIT COMME SI 'T' ETAIT DEMANDE...
         WORD        SADTBG          < (Y)=-(Y).
         WORD        N480
         BYTE        LOM60;FCCI0     < ON A FAIT UN RETOUR EN MODE MAITRE POUR
         WORD        M60             < L'UTILISATEUR : ON LUI DIT...
         BYTE        K;FCCI7
         WORD        N480            < ET ON VA VOIR CE QUI EST DEMANDE...
N478:    BYTE        KTRAP;FCCI17    < TEST DU MODE 'T'.
         WORD        N480
         BYTE        K;FCCI1
         WORD        SADTBG          < MEMORISATION DE LA DEMANDE
                                     < DE MODE 'T'.
         WORD        N483            < ICI, SEUL LE DISPLAY EST AUTORISE.
         BYTE        LOM60;FCCI0     < ON A FAIT UN RETOUR EN MODE MAITRE POUR
         WORD        M60             < L'UTILISATEUR : ON LUI DIT...
         BYTE        K;FCCI7
         WORD        N483            < ET ON VA VERIFIER QU'UN 'DISPLAY' A ETE
                                     < DEMANDE...
N480:    BYTE        KINF;FCCI5
         WORD        N481            < MODIFY.
         BYTE        KVIR;FCCI5
         WORD        N481            < MODIFY ('<' OU ',').
N483:    BYTE        KSUP;FCCI5
         WORD        N484            < DISPLAY.
         BYTE        KPOINT;FCCI5
         WORD        N484            < DISPLAY ('>' OU '.').
N484:    BYTE        K;FCCI10        < TEST .
                                     < (CAS OU '>'/'.' EST ABSENT).
         WORD        N492            < OK, DISPLAY ACCEPTE.
         WORD        N453            < ERREUR.
<
<        C O M M A N D E   D E   M O D I F Y  :
<
N481:    BYTE        K;FCCI1
         WORD        SVDBG           < SAVE .
         BYTE        K;FCCI10        < TEST .
         WORD        N486            < MODIFY ACCEPTE.
         WORD        N453            < ERREUR.
N486:    BYTE        K;FCCI1
         WORD        TRDBG           < TEST  RESIDENTE ????
         WORD        N488            <  RESIDENTE.
         BYTE        K;FCCI1         < CAS  NON RESIDENTE.
         WORD        IPATCH          < BLOCAGE DU SWAPPING DE L'ESCLAVE,
                                     < AFIN DE RENDRE SON ESPACE
                                     < MEMOIRE RESIDENT.
         BYTE        K;FCCI2         < SUSPENSION DU CCI, AVEC RETOUR
                                     < IMMEDAIT, L'ESPACE ETANT
                                     < RESIDENT.
N488:    BYTE        K;FCCI1
         WORD        MODBG           < EXECUTION DU MODIFY.
         WORD        N489            < OK, MODIFY EXECUTE.
         WORD        N500            < ERREUR DANS L'EXECUTION DU
                                     < MODIFY.
N489:    BYTE        K;FCCI1
         WORD        TRDBG           < TEST DE RESIDENCE.
         WORD        N451            < VERS L'INTERROGATION ESCLAVE.
N490:    BYTE        K;FCCI1         < CAS DE NON RESIDENCE.
         WORD        PATCHD          < DEBLOCAGE DU SWAPPING DE
                                     < L'ESCLAVE.
         BYTE        K;FCCI2         < SUSPENSION DU CCI, QUI PERMET
                                     < ENTRE AUTRE CHOSE DE PRENDRE
                                     < EN COMPTE LE DEBLOCAGE DU
                                     < SWAPPING ESCLAVE.
                                     < NOTA : ON DETRUIT ALORS
                                     < A(DCTESC),X(DCTESC),K(DCTESC),
                                     < P(DCTESC) !!!!!
         BYTE        K;FCCI7         < CCI JUMP.
         WORD        N451            < VERS L'INTERROGATION ESCLAVE.
N500:    BYTE        K;FCCI1
         WORD        TRDBG           < TEST DE RESIDENCE APRES UNE
                                     < ERREUR A L'EXECUTION DU MODIFY.
         WORD        N453            < RESIDENT : ENVOI DE '??'.
         BYTE        K;FCCI1         < CAS NON RESIDENT.
         WORD        PATCHD          < DEBLOCAGE DU SWAPPING ESCLAVE.
         BYTE        K;FCCI2         < SUSPENSION DU CCI.
         BYTE        K;FCCI7         < CCI-JUMP VERS L'EMISSION DE '??'.
         WORD        N453
<
<        C O M M A N D E   D E   D I S P L A Y  :
<
N492:    BYTE        K;FCCI1
         WORD        TRDBG           < TEST DE RESIDENCE.
         WORD        N493            < RESIDENT.
         BYTE        K;FCCI1         < CAS NON RESIDENT.
         WORD        IPATCH          < BLOCAGE DU SWAPPING ESCLAVE.
         BYTE        K;FCCI2         < DANS LE CAS DE LA NON RESIDENCE,
                                     < ON SUSPEND LE CCI,POUR UNE
                                     < RE-ENTREE IMMEDIATE.
         BYTE        K;FCCI1
         WORD        INIBES          < RE-INITIALISATION DE ABUFGR
                                     < (ET XBUFGR) AU CAS OU LORS
                                     < DE LA DISCONNEXION DU CCI, ON
                                     < AURAIT CHANGE DE NIVEAU DE
                                     < SERVICE !!!
         WORD        N493
N493:    BYTE        K;FCCI1
         WORD        DISDBG          < EXECUTION DU DISPLAY.
         WORD        N489            < EXECUTION CORRECTE DU DISPLAY.
         WORD        N500            < RETOUR EN ERREUR DU DISPLAY.
<
<        A D R E S S A G E   I N D I R E C T   E T   ,
<        I N C R E M E N T A T I O N / D E C R E M E N T A T I O N   @
<
N540:    BYTE        KCR;FCCI5       < EST-CE  ???
         WORD        N541            < OUI, C'EST L'INCREMENTATION
                                     < AUTOMATIQUE (+1) DE @.
         BYTE        KEOT;FCCI17     < EST-CE  ???
         WORD        N504            < NON.
<
< CAS DE L'INDIRECTION :
<
         BYTE        K;FCCI1
         WORD        MASTER          < L'UTILISATEUR EST-IL SOUS 'SVC' ???
         WORD        N510A4          < NON, OU BIEN IL Y EST MAIS EST RESTE
                                     < EN MODE MAITRE...
         BYTE        LOM60;FCCI0     < IL EST SOUS 'SVC' EN MODE ESCLAVE, ON
         WORD        M60             < LE REMET EN MODE MAITRE ET LUI DIT...
N510A4:  BYTE        K;FCCI1
         WORD        AINDIR          < PREPARATION DE L'ADRESSAGE
                                     < INDIRECT PAR (Y)=-1<0.
         WORD        N510A           < VERS LA MODIFICATION DE @.
<
< CAS DE L'INCREMENTATION AUTOMATIQUE :
<
N541:    BYTE        K;FCCI1
         WORD        MASTER          < L'UTILISATEUR EST-IL SOUS 'SVC' ???
         WORD        N510A5          < NON, OU BIEN IL ETAIT RESTE EN MODE
                                     < MAITRE...
         BYTE        LOM60;FCCI0     < SOUS 'SVC', IL EST PASSE EN MODE ESCLAVE,
         WORD        M60             < ON LE REMET EN MODE MAITRE, ET ON LUI
                                     < DIT...
N510A5:  BYTE        XCCIP1;FCCI1    < PREPARATION DU '+1' AUTOMATI-
                                     < QUE ET (B)=1.
         WORD        PLUS1
         WORD        N510A           < INCREMENTATION DE @.
N504:    BYTE        KPLUS;FCCI5
         WORD        N508            < C'EST +@.
         BYTE        KMOINS;FCCI5
         WORD        N507            < C'EST -@.
         WORD        N454            < VERS LA RECHERCHE .
<
< CAS DE "-@" :
<
N507:    BYTE        K;FCCI1
         WORD        SVDBG           < MISE DE  DANS 'VALESC'.
         BYTE        K;FCCI10        < TEST DE  ???
         WORD        N510A1          < OK, IL EST LA...
         WORD        N453            < ERREUR, ABSENT...
N510A1:  BYTE        K;FCCI1
         WORD        MASTER          < AU CAS OU UN UTILISATEUR SOUS 'SVC'
                                     < SERAIT REVENU EN MODE ESCLAVE...
         WORD        N510A2          < ET BIEN NON, IL EST EN MODE MAITRE...
         BYTE        LOM60;FCCI0     < OUI, ON LUI SIGNALE UN RETOUR EN MODE
         WORD        M60             < ESCLAVE ET A 'RETSVC'...
N510A2:  BYTE        YCCIM;FCCI1
         WORD        SADBG           < MEMORISATION DANS 'Y' DE "+@"...
                                     < NOTA : ON LE FAIT APRES 'M60' CAR MAL-
                                     < HEUREUSEMENT, 'FCCI0' DETRUIT 'Y'...
         WORD        N510A           < VERS LA REALISATION DE L'OPERATION
                                     < DEMANDEE...
<
< CAS DE "+@" :
< (NOTA : ON DUPLIQUE UNE
< BONNE PARTIE DU CODE DE
< "+"/"-", CAR EN EFFET,
< ETANT DONNE QUE 'FCCI0'
< DETRUIT 'Y', ON NE PEUT
< MEMORISER "+"/"-" QU'APRES
< L'EVENTUEL 'M60'...)
<
N508:    BYTE        K;FCCI1
         WORD        SVDBG           < MISE DE  DANS 'VALESC'.
         BYTE        K;FCCI10        < TEST .
         WORD        N510A6          < OK,  RECONNU.
         WORD        N453            < ERREUR.
N510A6:  BYTE        K;FCCI1
         WORD        MASTER          < AU CAS OU UN ESCLAVE SOUS 'SVC' SE SERAIT
                                     < MIS EN MODE ESCLAVE...
         WORD        N510A3          < ET BIEN NON...
         BYTE        LOM60;FCCI0     < OUI : ON SIGNALE LE RETOUR EN MODE
         WORD        M60             < MAITRE PAR UN MESSAGE...
N510A3:  BYTE        YCCIP;FCCI1
         WORD        SADBG           < MEMORISATION MAINTENANT (A CAUSE DE
                                     < 'FCCI0') DE "-@"...
<
< EXECUTION DE "+@"/"-@" :
<
N510A:   BYTE        K;FCCI1
         WORD        IPATCH          < BLOCAGE DU SWAPPING DE
                                     < L'ESCLAVE POUR RENDRE SON
                                     < ESPACE RESIDENT.
         WORD        N511
N511:    BYTE        K;FCCI2         < SUSPENSION DU CCI.
         BYTE        K;FCCI1
         WORD        PMDBG           < MAJ DE @ AVEC .
         WORD        N490            < VERS LE DEBLOCAGE DU SWAPPING
                                     < DE L'ESCLAVE.
XWOR%2:  VAL         MKCCI=K         < UTILISATION DU MASQUE DES BITS 0-3.
XWOR%2:  VAL         -XWOR%2         < POUR UN DECALAGE A DROITE...
XWOR%1:  VAL         $-ZERO>XWOR%2
         IF          XWOR%1-ADGCCI,,XEIF%,
         IF          MAUVAISE IMPLANTATION...
XEIF%:   VAL         ENDIF
         CALL        #SISP CMS5 DOL2#
         PAGE
<
<
<        C O N S T A N T E S   D E   V I R T U A L I S A T I O N
<        D E S   E S P A C E S   D E   ' D K M '   E T   ' D K U '  :
<
<
XAXCYL:: VAL         400             < NOMBRE DE CYLINDRES DE 'DKM' ET 'DKU',
CAXCYL:: VAL         8               < NOMBRE DE CYLINDRES PAR GROUPE DE CYLIN-
                                     < DRES ; LES CYLINDRES SONT EN FAIT VIR-
                                     < TUALISES PAR GROUPE...
GAXCYL:: VAL         XAXCYL/CAXCYL   < NOMBRE DE GROUPES DE CYLINDRES.
         IF          GAXCYL*CAXCYL-XAXCYL,,XEIF%,
         IF          ATTENTION : LE NOMBRE DE CYLINDRES N'EST PAS UN
         IF          NOMBRE ENTIER DE CYLINDRES !!!
XEIF%:   VAL         ENDIF
         NLS
         PAGE
         CALL        #SISP CMS5 DOL1#
XWOR%9:  VAL         $-ZERO          < SAUVEGARDE DU "$" COURANT...
         $EQU        N80+XCCIM2
         WORD        N4              < ON RECONSTITUE LE VERITABLE CHAINAGE
                                     < VERS LE TEST DES NUMEROS DE COMPTE
                                     < PERMETTANT DE SAVOIR SI UNE ENTREE
                                     < DE TOM ED ESSAP SE JUSTIFIE...
         $EQU        N48X2+XCCIM1
         WORD        N4X1            < DE MEME APRES LES COMMANDES "!W..." ET
                                     < "!U", ON TESTERA L' ET L'UTILISI-
                                     < SATION DE ":SYS" OU ":JFC" IMPLIQUERA
                                     < LA DEMANDE DU TOM ED ESSAP...
         $EQU        ZERO+XWOR%9     < RESTAURATION DU "$" COURANT...
<
<
<        T E S T   D E   L A   N E C E S S I T E
<        D U   T O M   E D   E S S A P  :
<
<
N4:      BYTE        LOM2;FCCI0      < MESSAGE.
         WORD        M2
         BYTE        LODATE;FCCI0    < ENVOI DE LA DATE ET HEURE.
         WORD        DATE
         BYTE        K;FCCI1
         WORD        APWAIT          < INCREMENTATION DE NUSERA,
                                     < REINITIALISATION DE L'HORLOGE
                                     < ET DE LA PATTERN CYCLIQUE DE
                                     < SWAPPING OUT.
N4X1:    BYTE        K;FCCI19
AN335:   WORD        N335X2          < CAS D'UN LOGIN SYSTEME...
                                     < (LORS D'UN LOGIN SOUS :SYS).
         BYTE        K;FCCI9
         BYTE        XXK1;XXK2;XXK3;XXK4
         WORD        N335X3          < CAS D'UN LOGIN PERSONNEL...
                                     < (CAS D'UN LOGIN SOUS :JFC)
         BYTE        K;FCCI1
         WORD        TESSYS          < ETAIT-ON INITIALEMENT SOUS ":SYS" ???
                                     < A NOTER :
                                     < 1 - ON TESTE EXPLICITEMENT ":SYS" PAR
                                     < 'FCCI19' CI-DESSUS A CAUSE DU LOGIN,
                                     < CAR ALORS 'IDESC2' N'EST PAS ENCORE PO-
                                     < SITIONNE ;
                                     < 2 - ALORS QUE LORSQU'ON ARRIVE PAR LES
                                     < COMMANDE "!W..." ET "!U" ON PEUT ETRE
                                     < SOUS UN  DIFFERENT DE ":SYS" TOUT
                                     < EN S'ETANT LOGUE INITIALEMENT SOUS ":SYS"
                                     < 3 - D'OU CES 2 TESTS EN APPARENCE REDON-
                                     < DANT...
         WORD        N335X4          < CAS D'UN LOGIN INITIAL SOUS ":SYS"...
         WORD        N5              < CAS DES AUTRES NUMEROS DE COMPTE...
<
<
<        E N T R E E   D U   T O M   E D   E S S A P  :
<
<
N335:    BYTE        XNECHO;FCCI6    < LECTURE DU TOM ED ESSAP DE :SYS.
N335X1:  EQU         N335            < A
N335X2:  EQU         N335            < CAUSE
N335X3:  EQU         N335            < DE L'ASSEMBLEUR...
N335X4:  EQU         N335            < (MEME REMARQUE...)
         BYTE        K;FCCI12        < TEST INTERACTIF/BATCH
         WORD        CTRLC           < MODE INTERACTIF
         BYTE        KCR;FCCI17      < R/C POUR LE BATCH (12-8-1 SUR CARTES),
                                     < (PUISQUE HDLCR1 EN LECTURE ASCI
                                     <  SUBSTITUE R/C AU CTRL-C Q'IL
                                     <  A INTERPRETE COMME UN NULL)
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KCG;FCCI17      < "[" (12-8-2 EN PERFO-MULTIPLES) ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         WORD        N337            < VERS TEST 
CTRLC:   BYTE        KETX;FCCI17     < CTRL-C.
         WORD        N830X1          < NON, C'EST PEUT-ETRE LE CHEVAL DE TROIE ?
         WORD        CTRLSM
CTRLSM:  BYTE        KGS;FCCI17      < CTRL-SHIFT-M ('GS'):POUR
                                     < QUE LE TOM ED ESSAP NE SOIT PAS
                                     < RENVOYE EN ALPHA-NUMERIQUE
                                     < SUR LA VISU (ASTUCE!!!).
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
SECRET:  BYTE        KSTAR;FCCI17    < CARACTERE DE ESSAP SECRET !!!
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XK1;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XK2;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XK3;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XK4;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KUN;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KQUATR;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KSEPT;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KZERO;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KNEUF;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KSEPT;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KCINQ;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KUN;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KUN;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KQUATR;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KTROIS;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KHUIT;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KZERO;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XXK1;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XXK2;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XXK3;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        XXK4;FCCI17
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         NTRN
         BYTE        XXCMS5/BASE10(K=FCREST=FCBA(MOCD;FCCI17
         TRN
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         IF          XMPASS-KNUL,,XEIF%,
         BYTE        XMPASS;FCCI17   < CARACTERE SPECIAL EVENTUELLEMENT DONNE
                                     < AU DEBUT DE L'ASSEMBLAGE ; S'IL N'EST
                                     < PAS PRECISE, IL NE PREND PAS DE VALEUR
                                     < PAR DEFAUT, ET LE TOM ED ESSAP RESTE
                                     < "STANDARD"...
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
XEIF%:   VAL         ENDIF
XWOR%1:  VAL         COSBT?BITPAR=FMASK(K=FCINST
         BYTE        KDLE?XWOR%1;FCCI17 < CTRL-P...
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
N337:    BYTE        KEOT;FCCI17     < EOT.
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        K;FCCI19        < EST-CE ":SYS" ???
         WORD        N337X           < OUI, MEMORISONS-LE...
         WORD        N5              < NON, C'EST DONC ":JFC"...
                                     < ALLONS VERS L'INTERROGATION...
N337X:   BYTE        K;FCCI1
         WORD        INDSYS          < MEMORISATION DE ":SYS" INITIAL...
         WORD        N5              < VERS L'INTERROGATION...
         WORD        N5              < ON NE SAIT JAMAIS...
<
<
<        C H E V A L   D E   T R O I E  :
<
<
N830X1:  BYTE        KCCI;FCCI17     < CARACTERE DES COMMANDES ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KC;FCCI17       < "!CMS" ???
         WORD        N830X2          < NON, PEUT-ETRE "!DATE" ???
         BYTE        KM;FCCI17       < "!CMS" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KS;FCCI17       < "!CMS" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        K;FCCI1         < C'EST LA COMMANDE "!CMS" :
         WORD        HORSE           < ALLONS IDENTIFIER LE SYSTEME INTERLO-
                                     < CUTEUR...
         WORD        N335            < PUIS, ON REDEMANDE LE TOM ED ESSAP...
<
<
<        C O M M A N D E   D A T E   &   H E U R E  :
<
<
N830X2:  BYTE        KD;FCCI17       < "!DATE" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KA;FCCI17       < "!DATE" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KT;FCCI17       < "!DATE" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        KE;FCCI17       < "!DATE" ???
         WORD        N830            < ERREUR : ON FORCE UN LOGOUT !!!
         BYTE        K;FCCI10        <  EST-IL BIEN LA ???
         WORD        N830X3          < OUI, ALLONS DONNER LA DATE...
         WORD        N830            < NON, ON FORCE UN LOGOUT !!!
N830X3:  BYTE        LODATE;FCCI0    < ENVOI DE LA DATE & HEURE.
         WORD        DATE
         BYTE        K;FCCI7         < SAUT VERS L'INTERROGATION CCI.
         WORD        N335            < PUIS ON REDEMANDE LE TOM ED ESSAP...
<
<
<        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  :
<
<
XWOR%2:  VAL         MKCCI=K         < UTILISATION DU MASQUE DES BITS 0-3.
XWOR%2:  VAL         -XWOR%2         < POUR UN DECALAGE A DROITE...
XWOR%1:  VAL         $-ZERO>XWOR%2
         IF          XWOR%1-ADGCCI,,XEIF%,
         IF          MAUVAISE IMPLANTATION (A CAUSE DES AUTO-RELAIS...) !!!
XEIF%:   VAL         ENDIF
         CALL        #SISP CMS5 DOL2#
         LST



Copyright (c) Jean-François Colonna, 2011-2013.
Copyright (c) CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2011-2013.