IDP         "IDLE - RELEASE 25/10/1979"
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEFINITION CMS5#
NVISU::  VAL         8               < NOMBRE DE VISUS DU SYSTEME.
HNAME::  VAL         12              < EMPLACEMENT DU NOM D'UNE 'DCT'.
ACNESC:: VAL         '45             < ACCES A <ACNESC> DANS 'DCTESC'.
NSPTBU:: VAL         '4F             < ACCES A LA LISTE DES UTILISATEURS.
NTRIES:: VAL         '31             < 'NTRIES' DES DCT.
SAVEX::  VAL         'FF84           < DEPLACEMENT PAR RAPPORT A LA
                                     < BASE C DE CMS4 D'ACCES A
                                     < L'INDICATEUR D'ETAT DE LA TRACE.
NSPDK2:: VAL         '24             < NSP DU DISQUE DK2.
NSPDK3:: VAL         '25             < NSP DU DISQUE DK3.
NSPSWS:: VAL         '62             < NSP D'ACCES A L'ORGANE DE SWAPPING.
NSPVLU:: VAL         '63             < NSP D'ACCES AU DESCRIPTEUR DE VOLUME
                                     < EVENTUELLEMENT MONTE ET DONT LE FORAMT
                                     < EST LE SUIVANT :
VOLNUM:: VAL         0               < NUMERO DU VOLUME (=0 SI PAS MONTE),
VOLNSP:: VAL         VOLNUM+1        < NSP DU DISQUE SUPPORT,
VOLACN:: VAL         VOLNSP+1        < 'ACN' DU DEMANDEUR.
VOLCLE:: VAL         VOLACN+2        < CLEF1 DE VALIDATION,
VOL23::  VAL         VOLCLE+1        < CLEF2 DE VALIDATION,
VOLNIM:: VAL         VOL23+1         < NOMBRE DE BLOCS LIBRES,
VOLPAT:: VAL         VOLNIM+1        < ZONE DE PATCH,
VOLTAB:: VAL         VOLPAT+2        < TABLE D'ALLOCATION.
NSPPR1:: VAL         '03             < NSP DU PROCESSEUR ESCLAVE.
NSPDKU:: VAL         '23             < NSP DU DISQUE AMOVIBLE UTILISATEUR.
NSPDKM:: VAL         '24             < NSP DU DISQUE AMOVIBLE SYSTEME.
NSPDKF:: VAL         '25             < NSP DU DISQUE SYSTEME.
NSPAST:: VAL         '60             < ACCES AU NOMBRE DE NOEUDS LIBRES.
NSPHES:: VAL         '7C             < NSP DES HORLOGES DE SWAPPING.
NSPETA:: VAL         '74             < NSP D'ACCES A L'ETAT DU SYSTEME.
BRCDKF:: VAL         4               < 1 : LE DKF PEUT GARDER LE JEU DE
                                     < REGISTRES 'HDC' QU'ON LUI A ALLOUE.
BTRYDK:: VAL         7               < 0 : SYSER SUR ERREURS DKF & DKM,
                                     < 1 : PAS DE SYSER...
OTODLN:: VAL         8               < 1 : IL EST POSSIBLE DE DETRUIRE
                                     < UN NOM DE FICHIER EXISTANT.
OTOCOP:: VAL         9               < 1 : COPY MEMOIRE --> DKF OFF.
OTOCFM:: VAL         10              < 1 : COPY DKF --> DKM OFF.
MKCOP::  VAL         '1C             < INCREMENT DES PERIODES DE COPY.
NSPMV::  VAL         '75             < NSP D'ACCES AU MOT DE CONTROLE DE
                                     < LA MEMOIRE VIRTUELLE.
MEMVN::  VAL         14              < 1 : LE SGN ACCEDE A DKB.
MEMVF::  VAL         15              < 1 : LE SGF ACCEDE A DKB.
MEMXXX:: VAL         11              < 0 : TOUTES LES OPERATIONS DANGEREUSES
                                     <     SONT INTERDITES...
MEMVO::  VAL         8               < 1 : OPTIMISATION DES LECTURES SGF.
NSPEDF:: VAL         '65             < NSP D'ACCES A 'TEDF'.
FILELI:: VAL         '0B             < POUR DETECTER LES FICHIERS LIBRES, ET
                                     < ET DONC D'ETAT '0 ET '4.
FIMASK:: VAL         '0F             < MASQUE ETAT FICHIER...
FIOPEN:: VAL         '0F             < ETAT "FICHIER OUVERT",
FIDELE:: VAL         '0C             < ETAT "FICHIER EN ATTENTE DE DELETE".
LTEDF::  VAL         128             < NOMBRE DE MOTS DE 'TEDF',
NBITEF:: VAL         4               < NOMBRE DE BITS D'UN ETAT FICHIER.
NSPNSL:: VAL         '66             < NSP D'ACCES A NSL.
NSPTT::  VAL         '68             < NSP D'ACCES AU NOEUD DU MAIL
                                     < DU CCI DE CMS4.
LMAIL::  VAL         80              < LONGUEUR MAX D'UN MAIL.
NSPASS:: VAL         '69             < NSP D'ACCES AU 1ER CARACTERE
                                     < DU MOT DE PASSE DE :SYS.
<
<
<        E N - T E T E   D U   P R O C E S S E U R  :
<
<
         PROG
ZERO:    EQU         $
         LOCAL
LOC:     EQU         $
         IF          ZERO-LOC,,X100,
         IF          ERREUR VOLONTAIRE SI LOC#ZERO !!!!!
X100:    VAL         0
         DZS         'B
         ASCI        "ID    "        < NOM DU PROCESSEUR 'ID    '.
         BYTE        '04;'D0         < <EOT>-'P'+'80.
         WORD        '100            < NBRE D'OCTETS NECESSAIRE A
                                     < IDLE (DESTINE A !CALL).
         WORD        IDLE            < P INITIAL (UTILISE PAR !CALL ,
                                     < ET LORS DES APPELS PAR !IDLE).
         WORD        LOC1+'80        < @LOCAL DU PROCESSEUR.
<
<
<        I N I T I A L I S A T I O N  :
<
<
         PROG
IDLE:    EQU         $               < P DE LANCEMENT DE IDLE='12.
         LRP         L
         LA          -1,L
         LR          A,L
         BR          -'80,L          < VERS L'ENTRY DU PROCESSEUR.
         PAGE
<
<
<        C O M M O N   D E   M E S S A G E S  :
<
<
         COMMON
COMON:   EQU         $
MMV1:    BYTE        21;'6D
         ASCI        "PAS DE VOLUME MONTE!"
MMV2:    BYTE        15;'6D
         ASCI        "VOLUME NUMERO="
MMV3:    BYTE        11;" ";"/";" "
         ASCI        "ACN="
MMVACN:  ASCI        ":XYZ"
MMV4:    BYTE        15;" ";"/";" "
         ASCI        "FREE BLOCKS="
<
<
<        L O C A L  :
<
<
MM1:     BYTE        38;'6D
         ASCI        "DKF PEUT-IL GARDER SES REGISTRES HDC? "
MM2:     BYTE        34;'6D
         ASCI        "DELETE NOM DE FICHIER AUTORISE? "
MM3:     BYTE        6;'6D
         ASCI        "COPY? "
MM4:     BYTE        11;'6D
         ASCI        "DKF-->DKM?"
MM5:     BYTE        21;'6D
         ASCI        "SYSER SUR DKF & DKM?"
MM6:     BYTE        '6D;"S"
         ASCI        "YSER DK OFF !!"
LMM6:    VAL         $-MM6*2
         IF          LMM6-LMAIL,XWOR%,XWOR%,
         IF          ATTENTION : MM6 EST TROP LONG !!!
XWOR%:   VAL         0
         LOCAL
LOC1:    EQU         $
         WORD        IDLE1           < @ENTRY DU PROCESSEUR.
                                     < (1ER MOT DU LOCAL !!!).
<
< MESSAGES ET BUFFERS :
<
META:    BYTE        6;'6D
         ASCI        "ETAT= "
MMV:     BYTE        19;'6D
         ASCI        "MEMOIRE VIRTUELLE="
MAST:    BYTE        16;'6D
         ASCI        "#NOEUDS LIBRES= "
MFIC:    BYTE        18;'6D
         ASCI        "#FICHIERS LIBRES= "
MFICO:   BYTE        19;'6D
         ASCI        "#FICHIERS OUVERTS="
ADEBUG:  WORD        0               < ADRESSE COURANTE DE 'D'.
IDEBUG:  WORD        0               < 0 OU +1, SUIVANT QU'ON CONSERVE
                                     < 'ADEBUG', OU QU'ON L'INCREMENTE...
MESP:    BYTE        1;" "
MDEBUG:  BYTE        2;")";"=";0
MEGAL:   BYTE        1;"="
MRC:     BYTE        2;'6D;"(";0
CMLP1:   ASCI        "!CM LP1/"
         BYTE        '04;0
CMCR1:   ASCI        "!CM CR1/"
         BYTE        '04;0
REPON:   DZS         2               < BUFFER DES REPONSES.
BUFADR:  EQU         REPON           < BUFFER DES ADRESSES.
BUFFER:  EQU         REPON
MESACN:  BYTE        '6D;"A"
         ASCI        "CN= "
ACN:     DZS         2               < ZONE OU METTRE L'ACNESC.
MESSID:  BYTE        '6D;"S"
         ASCI        "YSID= "
SYSID:   WORD        "X "            < 'X'=IDESC DE L'UTILISATEUR.
         ASCI        "ON V"
NVI:     WORD        "IN"            < 'N'=NUMERO DE LA VISU.
MINT:    BYTE        '6D;">"         < INVITATION A COMMANDER ...
MERR:    BYTE        '6D;"?"         < MESSAGE D'ERREUR.
MTON:    ASCI        " ON "
MTOFF:   ASCI        " OFF"
MNUSER:  BYTE        9;'6D
         ASCI        "#ACTIFS="
MACN:    BYTE        7;"("
MACNE:   ASCI        ":ACN) "
MNSL:    BYTE        9;'6D
         ASCI        "FREE DK="
MDKF:    BYTE        5;'6D
         ASCI        "DKF?"
MDKP:    BYTE        5;'6D
         ASCI        "PR1?"
MPS:     BYTE        9;'6D
         ASCI        "SWAP ON "
AMM1:    WORD        MM1
AMM2:    WORD        MM2
AMM3:    WORD        MM3
AMM4:    WORD        MM4
AMM5:    WORD        MM5
AMM6:    WORD        MM6
MPTT:    BYTE        4;"A"
         ASCI        "IL= "
LMESS:   WORD        0               < LONGUEUR REELLE DU MESSAGE.
MESS:    BYTE        '6D;0           < RC-LF DE DEBUT DE MAIL IMPLICITE.
         DZS         LMAIL/2-1       < DESTINE A RECEVOIR LE MAIL
                                     < EN TRANSIT VERS LE CCI.
<
< CONSTANTES DIVERSES :
<
APRESC:  WORD        PRESC           < VALEUR A DONNER AU PRESC.
ACNSYS:  ASCI        ":SYS"          < NUMERO DE COMPTE DU SYSTEME.
ADCT:    WORD        0               < ADRESSE DE 'DCTESC'.
NFICO:   WORD        0               < NOMBRE DE FICHIERS OUVERTS.
<
< RELAIS DIVERS :
<
ATCOM:   WORD        TCOM,X          < RELAI TABLE DES DIRECTIVES.
AERR:    WORD        E40             < ADRESSE SI ERREUR.
AE11:    WORD        E11             < INTERROGATION USER :SYS.
APRINT:  WORD        PRINT           < ROUTINE EMISSION MESSAGE.
AMAILX:  WORD        MAILX           < ENTRY 'MAIL' POUR UPDATES 'ETASYS'...
ALECR:   WORD        LECR            < EDITION MESSAGE + LECTURE REPONSE.
ADISP:   WORD        DISP            < EDITION ETAT DU SYSTEME.
ADSPDK:  WORD        DSPDK           < EDITION DE L'ETAT DE L'ESPACE DISQUE.
AINVTV:  WORD        INVTV           < ROUTINE D'ARRET/MARCHE VIDEO.
AMODTV:  WORD        MODTV           < MODIFICATION DE L'ADRESSE DE
                                     < LA ZONE VISUALISEE.
ACYCTV:  WORD        CYCTV           < MODIFICATION CYCLIQUE DE L'
                                     < ADRESSE DE LA ZONE VISUALISEE.
AINVT:   WORD        INVT            < ROUTINE D'INVERSION DU MODE
                                     < DE LA TRACE DE CMS4.
ASTM:    WORD        STM             < MISE EN PLACE MAITRE DU MAIL.
ASPASS:  WORD        SPASS           < MODIFICATION MAITRE DU 1ER
                                     < CARACTERE DU MOT DE PASSE
                                     < DU COMPTE DU SYSTEME.
AREP:    WORD        REPON,X
ABADR:   WORD        BUFADR,X        < RELAI D'ACCES A L'ADRESSE ASCI.
AADRES:  WORD        ADRES           < RELAI D'ACCES A L'ADRESSE
                                     < MEMOIRE DE LA ZONE VISUALISEE.
AMODT:   WORD        MODT            < RELAI D'ACCES A UN MOT
                                     < CONTENANT L'ETAT DE LA TRACE DE
                                     < CMS4 APRES INVERSION.
AMODV:   WORD        MODV            < RELAI D'ACCES A UN MOT
                                     < CONTENANT L'ETAT DU SYSTEME
                                     < VIDEO APRES L'INVERSION.
CMVI:    ASCI        "!CM VI"
CMVIN:   BYTE        0;"/";'04;0     < LE PREMIER OCTET CONTIENDRA UN
                                     < NUMERO VARIABLE DE VISU.
         WORD        CMVI-ZERO*2     < ATTEINT PAR &ACM AVEC (X)=0.
CM:      EQU         $               < LISTE DES @OCTETS DES CARTES !CM.
         WORD        CMLP1-ZERO*2
         WORD        CMCR1-ZERO*2
NCM:     VAL         $-CM            < NBRE DE CARTES !CM.
ACM:     WORD        CM-1,X          < RELAI D'ACCES AUX CARTES !CM.
<
< DEMANDES A CMS4 :
<
CCI:     WORD        1               < DEMANDE DE RETOUR A CMS4.
INTC:    WORD        '0002           < DEMANDE DU CCI NON INTERACTIF.
         WORD        0               < @OCTET DE LA CARTE.
         WORD        80
SLEEP:   WORD        '0005           < DEMANDE DE MISE EN SOMMEIL.
         WORD        0
         WORD        4               < POUR 4 SECONDES.
DEM1:    BYTE        2;2             < DEMANDE D'ENVOI DE L'IDESC.
         WORD        MESSID-LOC*2
         WORD        9
DEM2:    BYTE        2;2             < DEMANDE D'ENVOI DE L'ACNESC.
         WORD        MESACN-LOC*2
         WORD        10
DEMINT:  WORD        '0202
         WORD        MINT-LOC*2      < EMISSION DE '>'.
         WORD        2
DEMIN:   WORD        '0101           < ENTREE DE LA COMMANDE.
         WORD        REPON-LOC*2
         WORD        1
DEMERR:  WORD        '0202           < EMISSION DU MESSAGE D'ERREUR.
         WORD        MERR-LOC*2
         WORD        2
DEMADR:  WORD        '0101           < ENTREE DE L'ADRESSE MEMOIRE.
         WORD        BUFADR-ZERO*2
         WORD        4               < 4 CARACTERES OBLIGATOIRES.
DEMT:    WORD        '0202           < DEMANDE D'EMISSION D'UN MESSAGE
                                     < DONNANT L'ETAT DE LA TRACE
                                     < APRES INVERSION.
         WORD        0               < @OCTET DU MESSAGE ON/OFF.
         WORD        4
DEMOUT:  WORD        '0202           < EMISSION D'UN MESSAGE.
         WORD        0               < @OCTET DU MESSAGE.
         WORD        0               < LONGUEUR OCTETS DU MESSAGE.
DEMH:    WORD        '0202           < EDITION D'UN NBRE HEXA.
         WORD        REPON-ZERO*2    < CONTENU DANS REPON ,
         WORD        4               < SOUS FORME DE 4 CARACTERES.
DEMAIL:  WORD        '0101           < ENTREE DU MAIL.
         WORD        MESS-ZERO*2+1
         WORD        LMAIL-1
<
< TABLE DES COMMANDES :
<
TCOM:    EQU         $
         WORD        E40             < A
         WORD        BLEU            < B : VIDEO BLEU.
         WORD        MEMX            < C : INTERDICTION DES FONCTIONS DANGER.
         WORD        DEBUG           < D : DISPLAY LE CONTENU D'UN MOT MEMOIRE.
         WORD        E40             < E
         WORD        E10             < F : RETOUR AU CCI.
         WORD        E40             < G
         WORD        HALT            < H : HALT VIDEO.
         WORD        MIND            < I : MODIFICATION INDICATEURS CMS5.
         WORD        E40             < J
         WORD        E40             < K
         WORD        E40             < L
         WORD        MAIL            < M : CHGT DU MAIL DU CCI.
         WORD        NPASS           < N : INHIBITION DE :SYS.
         WORD        E40             < O
         WORD        PASS            < P : AUTORISATION :SYS.
         WORD        E40             < Q
         WORD        ROUGE           < R : VIDEO ROUGE.
         WORD        E400            < S : ETAT DU SYSTEME.
         WORD        E28             < T : INVERSION DE LA TRACE CMS4.
         WORD        E40             < U
         WORD        VERT            < V : VIDEO VERT.
         WORD        E40             < W
         WORD        CDKS            < X : CHGT DES DK DE SWAPPING.
         WORD        E40             < Y
         WORD        E300            < Z : RAZ TOUTES CONNEXIONS MATRICIELLES.
<
< PILE DE TRAVAIL :
<
PILE:    DZS         10              < PILE DE TRAVAIL.
         PROG
         PAGE
<
<
<        A R R E T / M A R C H E   D E   L A   V I D E O  :
<
<
MODV:    WORD        0               < INDICATEUR DE L'ETAT DU SYSTEME
                                     < VIDEO APRES LA COMMANDE 'V' :
                                     < =0 : VIDEO OFF (ARRET) ,
                                     < #0 : ON (MISE EN MARCHE).
INVTV:   EQU         $
         EORR        W,W             < W BASE LA MEMOIRE BASSE.
         LRP         L
         LA          MODV-$+1,L      < A=0, 1, 2 OU 3.
         SLLS        TVSIMU=0        < CADRAGE...
         STA         TVCTRL,W        < CONTROLE DU SYSTEME TV.
         LB          TVMEME,W        < B=ADRESSE VISUALISEE COURAMMENT.
         LRP         L
         LAI         REPON-$+1
         ADR         L,A
         SBT         0
         LRP         L
         STA         MODV-$+1,L      < RELAI VERS L'ADRESSE CONVERTIE.
         LAD         MODV-$+2,L
         LXI         0
K::      VAL         0
O::      VAL         0
NBITCX:: VAL         4
HA::     VAL         "A"
HNEUF::  VAL         "9"
HZERO::  VAL         "0"
I::      VAL         1
BASE10:: VAL         10
Z::      VAL         1
         PSR         A,B,Y,W
         LR          A,W             < W=@RELAI VERS LE TEXTE.
         LYI         NBITMO/NBITCX   < 4 CONVERSIONS A FAIRE.
<
< BOUCLE DE DECODAGE :
<
Z324:    EQU         $
         LAI         K               < INITIALISATION DE A.
         SLLD        NBITCX          < RECUPERATION D'UN NBRE DE
                                     < 4 BITS DANS B.
         CPI         BASE10-Z        < LA CONVERSION EST-ELLE EN CHIFFRE ?
         JLE         Z325            < OUI , C'EST UN CHIFFRE.
         ADRI        HA-HNEUF-Z,A    < CAS D'UNE LETTRE.
Z325:    EQU         $
         ADRI        HZERO,A         < CONVERSION EN ASCI.
         STBY        &O,W            < ET RANGEMENT DANS LE TEXTE.
         ADRI        I,X             < PROGRESSION DE L'INDEX
                                     < DU TEXTE.
         ADRI        -I,Y            < DECOMPTE DES CONVERSIONS.
         CPZR        Y
         JG          Z324            < C'EST PAS FINI ....
         PLR         A,B,Y,W
         RSR                         < ET C'EST TOUT...
<
<
<        C H A N G E M E N T   D ' A D R E S S E  :
<
<
ADRES:   WORD        0               < VALEUR A DONNER A L'ADRESSE DE
                                     < LA ZONE VISUALISEE.
MODTV:   EQU         $
         LRP         L
         LB          ADRES-$+1,L     < B=VALEUR A DONNER A L'ADRESSE
                                     < DE LA ZONE VISUALISEE.
         EORR        W,W             < W BASE LA MEMOIRE BASSE.
         STB         TVMEME,W        < MODIFICATION DE L'ADRESSE.
         RSR                         < ET C'EST TOUT.
<
<
<        C H A N G E M E N T   C Y C L I Q U E  :
<
<
CYCTV:   EQU         $
         EORR        W,W             < W BASE LA MEMOIRE BASSE.
         LRM         A
         WORD        4*1024          < A=4K MOTS.
         AD          TVMEME,W
         STA         TVMEME,W        < MODIFICATION DE L'ADRESSE
                                     < MODULO 64K...
         RSR                         < ET C'EST TOUT ...
<
<
<        I N V E R S I O N   D E   L A   T R A C E   D E   C M S 4  :
<
<
MODT:    WORD        0               < INDICATEUR DE L'ETAT DE LA TRACE
                                     < APRES INVERSION :
                                     < MODT=0 : TRACE ON ,
                                     < MODT=1 : TRACE OFF.
INVT:    EQU         $
         LBI         0               < TRACE ON A PRIORI.
         LA          SAVEX,C         < ACCES A L'INDICATEUR DE TRACE.
         IBT         0               < INVERSION DE L'ETAT (BIT0).
         TBT         0               < TEST DE L'ETAT APRES INVERSION.
         ADCR        B               < ET MEMORISATION DE L'ETAT APRES
                                     < INVERSION : B=0 : ON ; B=1 : OFF.
         STA         SAVEX,C         < ET DEMANDE D'INVERSION DE
                                     < LA TRACE AU MODULE STRACE.
         LRP         C
         STB         MODT-$+1,C      < TRANSIMISSION DE L'ETAT DE
                                     < TRACE APRES INVERSION A IDLE.
         RSR                         < ET C'EST TOUT ...
         PAGE
         PAGE
<
<
<        E M I S S I O N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT DU MESSAGE DONT LE 1ER CARACTERE
<                      CONTIENT LA LONGUEUR DE CELUI-CI.
<
<
PRINT:   EQU         $
         PSR         X,C             < SAVE X , C'EST PLUS PRUDENT !!!
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < MAJ DE DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MAJ DE DEMOUT.
         LAD         DEMOUT
         SVC         0               < ENVOI DU MESSAGE ...
         PLR         X,C
         RSR
         PAGE
<
<
<        M E S S A G E   +   R E P O N S E  :
<
<
<        ARGUMENT :
<                    A=ADRESSE DU MESSAGE A EMETTRE.
<
<
<        RESULTAT :
<                    B=0 : "OUI",
<                     =1 : "NON", DE PLUS 'CPZR' POSITIONNE 'V' ET 'C'.
<
<
LECR:    EQU         $
         PSR         A,X,Y
         LR          A,Y             < Y=SAVE L'ADRESSE DU MESSAGE.
LECR2:   EQU         $
         LR          Y,A             < A=ADRESSE DU MESSAGE.
         BSR         APRINT          < EDITION DU MESSAGE.
         LAD         DEMIN
         SVC         0               < ENTREE DE LA REPONSE.
         LBI         0               < OUI A PRIORI...
         LBY         REPON           < A=CARACTERE REPONDU,
         CPI         "O"             < EST-CE OUI ???
         JE          LECR1           < OUI...
         CPI         "N"             < EST-CE NON ???
         JNE         LECR2           < NON...
         LBI         1               < OUI, C'EST NON...
LECR1:   EQU         $
         CPZR        B               < TEST DE RETOUR.
         PLR         A,X,Y
         RSR
         PAGE
<
<
<        D I S P L A Y   L E   C O N T E N U   D ' U N   N V P  :
<
<
<        ARGUMENT :
<                    X=NVP DEMANDE ,
<                      SI (X)<0, ALORS Y=VALEUR A EDITER...
<                    A=@MOT DU MESSAGE ASSOCIE.
<
<
DISP:    EQU         $
         BSR         APRINT          < EMISSION DU MESSAGE ASSOCIE.
         LR          Y,B             < B=VALEUR A EDITER A PRIORI...
         CPZR        X               < VRAI 'NSP' ???
         JL          DISP3           < NON...
         LR          X,A             < A=NVP DESIRE.
         SBT         0               < POSITIONNEMENT DU BIT 'NVP'.
         ACTD        1               < (B)=RELAI D'ACCES A LA VALEUR
                                     < ASSOCIEE AU NVP.
         LR          B,A             < A=@DONT ON VEUT LE CONTENU.
         ACTD        1               < (B)=VALEUR ASSOCIEE AU NVP.
<
< CONVERSION ASCI :
<
DISP3:   EQU         $
         LXI         0               < X=INDEX DE RANGEMENT DE 'REP'.
         LYI         4               < Y=BORNE SUPERIEURE DE (X).
DISP1:   EQU         $
         LAI         0               < CLEAR A.
         SLLD        4               < DECONCATENATION D'UN CHIFFRE.
         CPI         9               < EST-CE UN CHIFFRE ???
         JLE         DISP2           < C'EST UN CHIFFRE DECIMAL.
         ADRI        '41-'39-1,A     < CAS DES LETTRES A,B,C,D,E,F.
DISP2:   EQU         $
         ADRI        '30,A           < CONVERSION ASCI.
         STBY        &AREP           < ET MISE DANS LE BUFFER 'REP'.
         ADRI        1,X             < AU CARACTERE SUIVANT.
         CPR         X,Y             < EST-CE FINI ???
         JNE         DISP1           < NON.
         LAD         DEMH
         SVC         0               < SI OUI , ON EDITE LA VALEUR ...
         RSR                         < ET C'EST TOUT ....
         PAGE
<
<
<        D I S P L A Y   D E   L ' E T A T   D E   L ' E S P A C E
<                    D I S Q U E  :
<
<
DSPDK:   EQU         $
<
< NBRE DE SECTEURS LIBRES SUR LES DISQUES :
<
         LXI         NSPNSL
         LAD         MNSL
         BSR         ADISP
<
< NOMBRE DE NOEUDS LIBRES DANS L'ARBRE :
<
         LXI         NSPAST
         LAD         MAST
         BSR         ADISP
<
< NOMBRE DE FICHIERS LIBRES :
<
         PSR         W
         LAI         NSPEDF
         SBT         0
         ACTD        1
         LR          B,W             < W=ADRESSE DE LA TABLE 'TEDF'.
         LYI         0               < Y=COMPTEUR DES FICHIERS LIBRES.
         STZ         NFICO           < COMPTEUR DES FICHIERS OUVERTS OU EN
                                     < ATTENTE DE DELETE...
         LXI         LTEDF           < X="INDEX" DE 'TEDF'...
EF1:     EQU         $
         LR          W,A
         ACTD        1
         LR          B,A             < A=MOT COURANT DE 'TEDF'.
         ADRI        1,W             < PREPARATION ACCES AU MOT SUIVANT.
         PSR         X
         LXI         NBITMO/NBITEF   < X=NOMBRE D'ETAT PAR MOT.
EF2:     EQU         $
         PSR         A               < SAUVEGARDE DU MOT COURANT...
         ANDI        FIMASK
         CPI         FIOPEN          < EST-IL OUVERT ???
         JE          EF4             < OUI...
         CPI         FIDELE          < EST-IL EN ATTENTE DE DELETE ???
         JNE         EF5             < NON...
EF4:     EQU         $
         IC          NFICO           < COMPTAGE DES FICHIERS OUVERTS OU EN
                                     < ATTENTE DE DELETE...
         JMP         EF3
EF5:     EQU         $
         ANDI        FILELI
         JANE        EF3             < FICHIERS OPEN, OU EXISTANT...
         ADRI        1,Y             < COMPTAGE D'UN FICHIER LIBRE...
EF3:     EQU         $
         PLR         A               < RESTAURE LE MOT COURANT...
         SLRS        NBITEF          < PASSAGE A L'ETAT SUIVANT,
         JDX         EF2             < S'IL EXISTE...
         PLR         X
         JDX         EF1             < PASSAGE AU MOT SUIVANT...
         ADRI        -1,Y            < CAR LE FICHIER 0 N'EST PLUS ACCESSIBLE.
         LXI         -1              < "FAUX NSP"...
         LAD         MFIC
         BSR         ADISP           < EDITION DU NOMBRE DE FICHIERS LIBRES.
         LY          NFICO
         LXI         -1              < FAUX 'NSP'...
         LAD         MFICO
         BSR         ADISP           < EDITION DU NOMBRE DE FICHIERS OUVERTS
                                     < OU EN ATTENTE DE DELETE...
         PLR         W
<
< DISPLAY DU VOLUME COURANT :
<
         LAI         NSPVLU
         SBT         0
         ACTD        1
         LR          B,W             < (W)=ADRESSE DU DESCRIPTEUR DE VOLUME :
         LR          W,A
         ADRI        VOLNIM,A
         ACTD        1
         PSR         B               < NOMBRE DE BLOCS EVENTUELLEMENT LIBRES...
         LR          W,A
         ADRI        VOLACN,A
         ACTD        1
         STB         MMVACN+0        < RECUPERATION DE <ACN> DE
         ADRI        1,A
         ACTD        1
         STB         MMVACN+1        < L'EVENTUEL PROPRIETAIRE...
         LR          W,A
         ADRI        VOLNUM,A
         ACTD        1
         CPZR        B               < MAIS FINALEMENT, Y-A-T'IL UN VOLUME
                                     < MONTE ???
         JNE         ETI1            < OUI...
         PLR         B               < NON,
         LAD         MMV1            < ON LE DIT,
         BSR         APRINT
         JMP         ETI2            < ET C'EST TOUT...
ETI1:    EQU         $               < CAS OU IL Y A UN VOLUME DE MONTE : A
                                     < NOTER, QUE LES INFORMATIONS QUE L'ON
                                     < VA DISPLAYER PEUVENT AVOIR ETE MODIFIEES
                                     < ENTRE TEMPS PAR UN AUTRE UTILISATEUR...
         LR          B,Y             < (Y)=NUMERO DE VOLUME,
         LXI         -1
         LAD         MMV2
         BSR         ADISP           < QUE L'ON EDITE...
         LAD         MMV3
         BSR         APRINT          < EDITION DE L'<ACN>...
         PLR         Y
         LXI         -1
         LAD         MMV4
         BSR         ADISP           < ET ENFIN DU NOMBRE DE BLOCS LIBRES...
ETI2:    EQU         $
         RSR
         PAGE
<
<
<        M O D I F I C A T I O N   D U   1 E R
<        C A R A C T E R E   D U   M O T   D E
<        P A S S E   D U   S Y S T E M E  :
<
<
SPASS:   EQU         $
         LXI         NSPASS          < X=NSP D'ACCES AU 1ER CARACTERE.
         BSR         ACADCT,C        < RENVOIE : L=@1ER CARACTERE
                                     < DU MOT DE PASSE.
         LA          1,W             < MISE DANS A DU REGISTRE
                                     < B(ESCLAVE) QUI CONTIENT LE
                                     < CARACTERE A METTRE EN 1ER.
         STBY        0,L             < MAJ 1ER CARACTERE DU PASSE.
         RSR                         < ET C'EST TOUT ...
         PAGE
<
<
<        R A N G E M E N T   M A I T R E   D U   M A I L  :
<
<
ALMESS:  WORD        LMESS           < @RELATIVE DE LA LONGUEUR MAIL.
STM:     EQU         $
         LRP         L
         PSR         W               < SAVE W=@DCT(ESCLAVE).
         LA          10,W            < A=SLO(ESCLAVE).
         AD          -1,L            < @ABSOLUE DE LA LONGUEUR MAIL.
         LR          A,W             < W=@ABSOLUE DE LA LONGUEUR
                                     < DU NOUVEAU MAIL.
         LA          0,W             < A=LONGUEUR DU NOUVEAU MAIL.
         CPI         2               < DOIT-ON SUPPRIMER LE MAIL ???
                                     < (LE MESSAGE EST ALORS VIDE :
                                     < EOT OU R/C PLUS RC-LF DE TETE)
         JG          STM1            < NON.
         LAI         0               < SI OUI , ON LUI DONNE UNE
                                     < LONGUEUR NULLE.
STM1:    EQU         $
         LR          A,B             < SAVE : B=LONGUEUR REELLE.
         LXI         NSPTT           < X=NSP DU NOEUD DU MAIL.
         BSR         ACADCT,C        < RENVOIE : L=@NOEUD DU MAIL.
         LR          B,A             < RESTAURE A=LONGUEUR MAIL.
         JAE         STM2            < EN FAIT SUPPRESSION DU MAIL.
<
< MISE EN PLACE DU MESSAGE MAIL :
<
         ADRI        1,A
         SLRS        1
         LR          A,X             < X=NBRE DE MOTS COMPOSANTS
                                     < LE NOUVEAU MAIL.
         LAD         MESS-LMESS,W    < A=@EMETTEUR DU MESSAGE.
         LB          1,L             < B=@RECEPTEUR DU MESSAGE (CCI).
         MOVE                        < DEPLACEMENT DU MESSAGE.
         LA          0,W             < RESTAURE : A=LONGUEUR DU MESSAGE.
<
< MISE EN PLACE DE LA LONGUEUR DU MAIL COURANT :
<
STM2:    EQU         $
         STBY        0,L             < RANGEMENT DANS L'OCTET0 DU
                                     < NOEUD D'EMISSION DU MAIL.
         PLR         W               < RESTAURE W=@DCT(ESCLAVE).
         RSR
<
<
<        E N T R E E   D U   N O U V E A U   M A I L  :
<
<
MAIL:    EQU         $
         LAD         MPTT
         BSR         APRINT          < ENVOI D'UNE INVITATIONB.
         LAD         DEMAIL
         SVC         0               < ENTREE DU NOUVEAU MAIL.
         WORD        '1E35           < RECUPERATION DANS B DU NBRE
                                     < REEL DE CARACTERES ENTRES.
MAILX:   EQU         $               < ENTRY POUR UPDATES DE 'ETASYS'...
         ADRI        1,B             < ON COMPTE LE RC-LF IMPLICITE
                                     < EN TETE DU MAIL.
         STB         LMESS           < QUE L'ON SAVE DANS LMESS.
         LA          ASTM
         WORD        '1EC5           < EXECUTION MAITRE DU SOUS-
                                     < PROGRAMME DE MISE A JOUR
                                     < DU NOUVEAU MAIL.
         JMP         E11             < PUIS , INTERROGATION ESCALE.
         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   : S Y S  :
<
<
<        FONCTION :
<                      PAR MODIFICATIONN ('03/'00) DU 1ER
<                    CARACTERE DU MOT DE PASSE DU
<                    SYSTEME , ON PEUT AUTORISER ('03=CTRL-C) OU
<                    INHIBER ('00=NULL) LE NUMERO DE
<                    COMPTE DU SYSTEME.
<
<
PASS:    EQU         $               < AUTORISATION DE :SYS.
         LBI         '03             < B=CTRL-C.
         JMP         PASS1           < VERS L'2NSERTION DU CTRL-C.
NPASS:   EQU         $               < INHIBITION DE :SYS.
         LBI         '00             < B=NULL (INACCESSIBLE !!!).
PASS1:   EQU         $
         LA          ASPASS
         WORD        '1EC5           < EXECUTION MAITRE DE 'SPASS' ,
                                     < C'EST-A-DIRE INSERTION DE (B)
                                     < COMME 1ER CARACTERE DU MOT
                                     < DE PASSE DE :SYS.
         JMP         E11             < PUIS , INTERRO DE L'ESCLAVE.
         PAGE
<
<
<        P E R M U T A T I O N   D K F   E T   P R 1  :
<
<
CDKS:    EQU         $
         LYI         NSPDKF          < 'DKF' DEMANDE A PRIORI...
         LAD         MDKF
         BSR         ALECR           < MESSAGE, ET LECTURE REPONSE...
         JE          CDKS1           < OUI, 'DKF'...
         LYI         NSPPR1          < NON, 'PR1' A PRIORI...
         LAD         MDKP
         BSR         ALECR           < MESSAGE ET LECTURE REPONSE...
         JNE         CDKS            < RIEN ???
CDKS1:   EQU         $
         LAI         NSPSWS
         SBT         0               < 'MODE NSP',
         ACTD        1               < RENVOIE DANS 'B' L'ADRESSE DU MOT OU
                                     < RANGER NSPDKF/NSPPR1.
         LR          B,A             < A=ADRESSE DE RANGEMENT,
         LR          Y,B             < B=VALEUR A RANGER,
         LYI         0               < EN MODE ABSOLU...
         STAR                        < CHANGEMENT DU 'NSP' DU PERIPHERIQUE
                                     < DE SWAPPING.
         JMP         E11             < ET C'EST TOUT...
         PAGE
<
<
<
<        P R O C E S S E U R   I D L E  :
<
<
<        FONCTION :
<                      CE PROCESSEUR GADGET EST DESTINE
<                    LORSQU'ON L'APPELLE , A MINIMISER
<                    L'ESPACE MEMOIRE DE L'UTILISATEUR
<                    (1K) . PAR LA MEME OCCASION L'
<                    UTILISATEUR RECOIT LA DATE , SON
<                    ACN , ET SON SYS-ID ....
<
<
<        FONCTION SOUS :SYS :
<                      PERMET DE PLUS DE GERER LE SYSTEME
<                    DE VISUALISATION VIDEO EN L'ARMANT ,
<                    L'ARRETANT , CHANGEANT L'ADRESSE
<                    DE LA ZONE MEMOIRE VISUALISEE ,
<                    SOIT EN BRUTALEMENT (...) , SOOIT
<                    PERIODIQUEMENT (4 SECONDES).
<
<
IDLE1:   EQU         $
         LRM         C,K
         WORD        COMON+'80       < INITIALISATION DE 'C',
         WORD        PILE-1          < ET DE 'K'...
E1:      EQU         $
         WORD        '1E25           < ACCES EN RETOUR A L'ACNESC
                                     < DANS LES REGISTRES A & B.
         STA         ACN
         STB         ACN+1
         LAD         DEM2
         SVC         0               < ENVOI DE SON ACN A L'UTILISATEUR.
         WORD        '1E45           < ACCES EN RETOUR AU SYSID
                                     < DANS LE REGISTRE A.
         CPI         9
         JLE         E2              < CAS : 0<=SYSID<=9.
         ADRI        '41-'3A,A       < CAS OU LE SYSID EST UNE LETTRE.
E2:      EQU         $
         ADRI        '30,A           < CONVERSION ASCI DU SYSID.
         STBY        SYSID           < ET MISE DANS LE MESSAGE.
         LXI         9               < X=9 OCTETS A PRIORI.
         WORD        '1E95           < RENVOIE DANS A :
                                     < OCTET0(A)=NSPOUT ,
                                     < OCTET1(A)=NSPVI1.
         LBI         0               < CLEAR B.
         SLRD        8               < A=NSPOUT DE L'ESCLAVE.
         SWBR        B,B             < B=NSPVI1.
         SBR         B,A             < A=NSPOUT-NSPVI1.
         JAL         E3              < LE DEMANDEUR N'EST PAS SUR
                                     < UNE VISU ...
         CPI         NVISU-1
         JG          E3              < ET NON , LE DEMANDEUR N'EST
                                     < PAS SUR UNE VISU.
         LXI         16              < X=16 OCTETS DANS LE CAS D'UNE
                                     < VISU DU SYSTEME ...
         ADRI        '31,A           < CONVERSION ASCI DU NUMERO DE
                                     < LA VISU PAR RAPPORT A 1.
         STA         NVI             < ET MISE DANS LE MESSAGE.
         LAI         "I"
         STBY        NVI             < MISE EN PLACE DU 'I' DE 'VI'.
E3:      EQU         $
         STX         DEM1+2          < MISE EN PLACE DE LA LONGUEUR
                                     < REELLE DU MESSAGE 'MESSID'.
         LAD         DEM1
         SVC         0               < ENVOI DE SON SYSID A L'UTILISATEUR.
<
<        T E S T   D U   N U M E R O   D E   C O M P T E  :
<
         LA          ACN
         CP          ACNSYS          < EST-CE :SYS ???
         JNE         ETI3            < NON.
         LA          ACN+1           < PEUT-ETRE ...
         CP          ACNSYS+1        < EST-CE :SYS ???
         JE          ETI4            < OUI...
<
< CAS DES AUTRES <ACN>S :
<
ETI3:    EQU         $
         BSR         ADSPDK          < EDITION DE L'ETAT DE L'ESPACE DISQUE...
         JMP         E10             < VERS LE RETOUR AU CCI...
<
<        P R E S C  :
<
PRESC:   EQU         $
         LRM         C,K             < ON REINITIALISE...
         WORD        COMON+'80
         WORD        PILE-1
<
<        C A S   D ' U N E   D E M A N D E   : S Y S  :
<
ETI4:    EQU         $
         LA          APRESC
         WORD        '1EB5           < CHANGEMENT DU PRESC DU PROGRAMME.
<
< INTERROGATION DE L'UTILISATEUR SYSTEME :
<
E11:     EQU         $
         LAD         DEMINT
         SVC         0               < ENVOI D'UNE INTERROGATION.
         LAD         DEMIN
         SVC         0               < LECTURE DE LA REPONSE.
<
<        REPONSES POSSIBLES :
<
<                    F : RETOUR AU CCI ,
<                    T : INVERSION DE LA TRACE DE CMS4 ,
<                    Z : RAZ TOUTES LES CONNEXIONS MATRICIELLES ,
<                    S : ETAT DU SYSTEME ,
<                    P : AUTORISATION DE :SYS (1ER CARACTERE=CTRL-C) ,
<                    N : INHIBITION DE :SYS (1ER CARACTERE=NULL) ,
<                    X : CHANGEMENT DES NSP DES DKS (2=DK2 , 3=DK3) ,
<                    M : CHANGEMENT DU MAIL DU CCI ,
<                    H : MISE HALT DU SYSTEME VIDEO,
<                    R : SELECTION ROUGE,
<                    V : SELECTION VERT,
<                    B : SELECTION BLEU,
<                    @ : CHANGEMENT DE L'ADRESSE MEMOIRE A VISUA-
<                        LISER ; 'EOT' OU 'R/C' FONT UN CHANGE-
<                        MENT CYCLIQUE (4S PAR PAS DE 4K MOTS).
<                    C : INTERDICTION DES FONCTIONS DANGEREUSES.
<                    D : DISPLAY LE CONTENU D'UN MOT MEMOIRE.
<
         LBY         REPON           < A=REPONSE UTILISATEUR.
         CPI         "@"
         JE          E24             < VERS LE CHGT ADRESSE VIDEO.
         CPI         "Z"             < POUR VALIDATION.
         JG          E40             < ERREUR.
         ADRI        -"A",A          < DECODAGE.
         JAL         E40             < ERREUR.
         LR          A,X             < X=NUMERO DE LA DIRECTIVE.
         BR          &ATCOM          < VERS LE TRAITEMENT SPECIFIQUE.
<
< TRAITEMENT DES ERREURS :
<
E40:     EQU         $
         LAD         DEMERR
         SVC         0               < ENVOI DU MESSAGE D'ERREUR.
         JMP         E11             < VERS UNE INTERROGATION.
<
<        A R R E T / M A R C H E   V I D E O  :
<
ROUGE:   EQU         $
         LAI         TVPR
         JMP         E22
VERT:    EQU         $
         LAI         TVPV
         JMP         E22
BLEU:    EQU         $
         LAI         TVPB
         JMP         E22
HALT:    EQU         $
         LAI         0
E22:     EQU         $
         STA         &AMODV          < TRANSMISSION DE L'ORDRE,
         LA          AINVTV
         WORD        '1EC5           < EXECUTION DE L'ORDRE.
<
< AFFICHAGE DE L'ADRESSE DE LA ZONE VISUALISEE
< LORS DE LA MISE EN MARCHE DE LA VIDEO :
<
         LA          DEMINT
         STA         DEMADR          < DEMADR EST MISE EN MODE ECRITURE.
         LAD         DEMADR
         SVC         0               < EDITION DE L'ADRESSE CONTENUE
                                     < DAN SLE BUFFER 'REPON'.
         LA          DEMIN
         STA         DEMADR          < DEMADR REMISE EN MODE LECTURE.
         JMP         E11             < VERS L'INTERROGATION.
<
<        C H A N G E M E N T   D ' A D R E S S E  :
<
E24:     EQU         $
<
< ENTREE DE L'ADRESSE ET CONVERSION BINAIRE :
<
         LAD         DEMADR
         SVC         0               < ENTREE DE 4 CARACTERES.
         LXI         0               < X=INDEX DU BUFFER 'REPON'.
         LYI         4               < Y=DECOMPTEUR.
         LBY         &ABADR          < ACCES AU 1ER CARACTERE.
         CPI         '0D             < EST-CE LE MODE CYCLIQUE ???
         JE          E26             < OUI.
         CPI         '04             < EST-CE LE MODE CYCLIQUE ???
         JE          E26             < OUI.
E30:     EQU         $
         LBY         &ABADR          < A=UN CARACTERE LU.
         ADRI        -'30,A
         JAL         E40             < ERREUR : NON RECONNU.
         CPI         9               < EST-CE UN CHIFFRE ???
         JLE         E31             < OUI.
         ADRI        -'41+'39+1,A    < NON.
         CPI         'A              < EST-CE UNE LETTRE HAXA-DECIMALE.
         JL          E40             < NON , ERREUR.
         CPI         'F
         JG          E40             < NON , ERREUR.
E31:     EQU         $
         SCRS        4               < MISE DES 4 BITS EN TETE DE A.
         SCLD        4               < ET CONCATENATION DERRIERE B.
         ADRI        1,X             < PROGRESSION DE L'INDEX.
         ADRI        -1,Y            < DECOMPTE.
         CPZR        Y               < EST-CE FINI ???
         JG          E30             < NON , ON CONTINUE.
         STB         &AADRES         < OK , MAJ DE ADRES.
<
< CAHNGEMENT D'ADRESSE :
<
         LA          AMODTV
         WORD        '1EC5           < EXECUTION MODE MAITRE DE MODTV.
         JMP         E11             < VERS L'INTERROGATION.
<
<        C H A N G E M E N T   C Y C L I Q U E  :
<
E26:     EQU         $
         LAD         SLEEP
         SVC         0               < MISE EN ATTENTE DE 4 SECONDES.
         LA          ACYCTV
         WORD        '1EC5           < EXECUTION MAITRE DE CYCTV.
         JMP         E26             < ET REBOUCLAGE SUR L'ATTENTE ;
                                     < A T T E N T I O N  : LA SORTIE
                                     < DE CETTE BOUCLE SE FAIT PAR UN
                                     < ALT-MODE ET RETOUR PAR PRESC ...
<
<        I N V E R S I O N   D E   L A   T R A C E   D E   C M S 4  :
<
E28:     EQU         $
         LA          AINVT
         WORD        '1EC5           < EXECUTION MAITRE DE INVT.
<
< EMISSION D'UN MESSAGE DONNANT L'ETAT DE LA TRACE APRES INVERSION :
<
         LAI         MTON-LOC        < TRACE ON A PRIORI.
         CPZ         &AMODT          < QUEL EST L'ETAT REEL ???
         JE          E50             < TRACE ON EFFECTIVEMENT.
         LAI         MTOFF-LOC       < ET NON , LA TRACE EST OFF.
E50:     EQU         $
         SLLS        1               < POUR UNE ADRESSE OCTETS...
         STA         DEMT+1          < MISE EN PLACE DE L'@OCTET DU
                                     < MESSAGE ON/OFF.
         LAD         DEMT
         SVC         0               < ENVOI DU MESSAGE ON/OFF.
         JMP         E11             < VERS L'INTERROGATION UTILISATEUR.
<
<        R E T O U R   A U   C C I  :
<
E10:     EQU         $
         LAD         CCI
         SVC         0               < RETOUR AU CCI , C'EST TOUT .....
         JMP         E1              < AU CAS OU UN !GO AURAIT ETE
                                     < DEMANDE (FAUDRAIT ETRE VICIEUX..)
<
<        R A Z   L E S   C O N N E X I O N S   ! C M  :
<
E300:    EQU         $
         LXI         NCM             < X=NBRE DE CARTES !CM A EMETTRE.
E301:    EQU         $
         PSR         X               < SAVE LE NBRE DE CARTES.
         LA          &ACM            < A=@OCTET CARTE !CM COURANTE.
         STA         INTC+1          < QUE L'ON MET DANS LA DEMANDE
                                     < D'APPEL DU CCI NON INTERACTIF.
         LAD         INTC
         SVC         0               < APPEL CCI NON INTERACTIF.
         PLR         X               < RESTAURE X=NBRE DE CARTES !CM.
         JDX         E301            < A LA CARTE !CM SUIVANTE.
         LA          &ACM            < ACCES A LA CARTE "!CM" DES VISUS.
         STA         INTC+1
         LXI         NVISU
E301X:   EQU         $
         LR          X,A
         ADRI        "0",A
         STBY        CMVIN           < GENERATION DU NUMERO DE VISU.
         PSR         X
         LAD         INTC
         SVC         0
         PLR         X
         JDX         E301X           < A LA VISU PRECEDENTE...
         JMP         E11             < VERS L'INTERROGATION UTILISATEUR.
<
<        E T A T   D U   S Y S T E M E  :
<
E400:    EQU         $
<
< NBRE D'UTILISATEURS ACTIFS (ENTRE !LOGIN ET !F/!BYE SANS !W) :
<
         LXI         NSPUSE
         LAD         MNUSER
         BSR         ADISP
         LXI         NESCLA          < X=NOMBRE D'ESCLAVES POTENTIELS.
         LAI         NSPTBU
         SBT         0
         ACTD        1
         LR          B,Y             < Y=ADRESSE DE LA LISTE DES 'DCTESC'.
GU1:     EQU         $
         LR          Y,A
         ACTD        1
         LR          B,A
         JAE         GU2             < PAS D'ESCLAVE ICI...
         STA         ADCT            < SAUVEGARDE DE L'ADRESSE DE 'DCTESC'.
         ADRI        YASSGN,A        < A=ADRESSE DU 1ER MOT DE 'TASSGN'.
         ACTD        1               < B='NSP' DU PERIPHERIQUE IN...
         LR          B,A
         JAE         GU2             < 'DCTESC' NON ENCORE INITIALISEE...
         SBT         0
         ACTD        1
         LR          B,A             < A=ADRESSE DE LA 'DCT' IN...
         ADRI        HNAME,A
         PSR         A
         ACTD        1               < B=DEBUT DU NOM DU PERIPH IN.
         SWBR        B,A
         ANDI        'FF03
         SWBR        A,A             < A=3 (LONGEUR) ET 1ERE LETTRE.
         STA         REPON
         PLR         A
         ADRI        1,A
         ACTD        1               < B=2 DERNIERES LETTRES.
         STB         REPON+1
         LAD         MESP
         BSR         APRINT          < ESPACEMENT...
         LAD         REPON
         BSR         APRINT          < NOM DU PERIPH IN...
         LA          ADCT
         ADRI        ACNESC,A
         ACTD        1               < RECUPERATION DE <ACNESC>,
         STB         MACNE+0
         ADRI        1,A
         ACTD        1
         STB         MACNE+1
         LAD         MACN
         BSR         APRINT          < ET EDITION...
GU2:     EQU         $
         ADRI        1,Y             < ESCLAVE SUIVANT SI EXISTE...
         JDX         GU1
<
< ETAT DU SYSTEME :
<                    BIT2 : 'DKM' PRESENT,
<                    BIT3 : 'DKF' PRESENT,
<                    BIT8 : UN NOM DE FICHIER PEUT ETRE DETRUIT
<                           MEME SI LE FICHIER INTERNE EXISTE
<                           LORSQUE CE BIT EST A 1.
<                    ETC...
<
         LXI         NSPETA
         LAD         META
         BSR         ADISP
<
< MOT DE CONTROLE DE LA MEMOIRE VIRTUELLE :
<
<                    BITS0-7 : DONNE LE 'NVP' SEUIL AU DELA
<                              DUQUEL (LUI COMPRIS) UN FICHIER
<                              QUI LUI EST ASSIGNE PEUT TRAN-
<                              SITER PAR LA MEMOIRE VIRTUELLE.
<                    BIT14 : LE 'SGN' PEUT PASSER EN MEMOIRE
<                            VIRTUELLE SI 1,
<                    BIT15 : IDEM POUR LE 'SGF'.
<                    ETC...
<
         LXI         NSPMV
         LAD         MMV
         BSR         ADISP
         LXI         NSPSWS
         LAD         MPS
         BSR         ADISP           < NSP DU PERIPHERIQUE DE SWAPPING.
<
< DISPLAY DE L'ETAT DE L'ESPACE DISQUE :
<
         BSR         ADSPDK
RRE11:   BR          AE11            < RELAI VERS L'INTERROGATION UTILISATEUR...
         PAGE
<
<
<        M O D I F I C A T I O N   I N D I C A T E U R S
<        D E   C O N T R O L E   D E   C M S 5  :
<
<
MIND:    EQU         $
         LAI         NSPETA
         SBT         0
         ACTD        1
         LR          B,A             < A=ADRESSE DE 'ETASYS',
         ACTD        1               < B=VALEUR DE 'ETASYS'.
         PSR         B               < SAVE 'ETASYS' AVANT...
         PSR         A               < SAUVEGARDE DE L'ADRESSE...
         RBT         16+BRCDKF       < 'DKF RENDRA LES REGISTRES HDC',
         RBT         16+OTODLN       < 'PAS DE DELETE NOM DE FICHIER',
         RBT         16+OTOCOP       < 'COPY ON',
         RBT         16+OTOCFM       < 'COPY DKF --> DKM ON'.
         RBT         16+BTRYDK       < SYSER SUR ERREUR DKF & DKM...
         LR          B,Y             < Y=ETAT INITIALISE...
         LA          AMM1
         BSR         ALECR
         JNE         MIND1           < 'DKF RENDRA SES REGISTRES HDC'.
         XR          B,Y
         SBT         16+BRCDKF       < 'DKF PEUT GARDER SES REGISTRES HDC'.
         XR          B,Y
MIND1:   EQU         $
         LA          AMM2
         BSR         ALECR
         JNE         MIND2           < 'PAS DE DELETE DE NOM DE FICHIER'.
         XR          B,Y
         SBT         16+OTODLN       < 'DELETE DE NOM DE FICHIER'.
         XR          B,Y
MIND2:   EQU         $
         LA          AMM3
         BSR         ALECR
         JE          MIND3           < 'COPY ON'.
         XR          B,Y
         SBT         16+OTOCOP       < 'COPY OFF'.
         XR          B,Y
MIND3:   EQU         $
         LA          AMM4
         BSR         ALECR
         JE          MIND4           < 'COPY DKF --> DKM ON'.
         XR          B,Y
         SBT         16+OTOCFM       < 'COPY DKF --> DKM OFF'.
         XR          B,Y
MIND4:   EQU         $
         LA          AMM5
         BSR         ALECR
         JE          MIND5           < SYSER SUR ERREUR DKF & DKM.
         XR          B,Y
         SBT         16+BTRYDK       < PAS DE SYSER SUR ERREUR...
         XR          B,Y
MIND5:   EQU         $
         PLR         A               < RESTAURE A=ADRESSE DE 'ETASYS'.
         LR          Y,B             < B=NOUVELLE VALEUR DE 'ETASYS'.
         LYI         0               < MODE ABSOLU,
         STAR                        < MODIFICATION DE 'ETASYS'...
         PLR         A               < A='ETASYS' AVANT,
         EORR        B,A             < A=MODIFICATIONS DE 'ETASYS',
         TBT         BTRYDK          < 'BTRYDK' A-T'IL CHANGE ???
         JNC         RRE11           < NON, VERS L'INTERROGATION...
         TBT         16+BTRYDK       < OUI, ALORS MODIFICATION DE 'MAIL'.
         JC          MINDA           < PAS DE SYSER...
         LAI         '04
         STA         MESS
         LAI         '6D
         STBY        MESS            < MESS=6D/EOT.
         LBI         1               < POUR UN MESSAGE VIDE...
         BR          AMAILX          < SUPPRESSION DU 'MAIL'...
MINDA:   EQU         $
         LAD         MESS
         LR          A,B
         LA          AMM6
         LXI         LMM6+1/2
         MOVE                        < MESS="SYSER DK OFF !!".
         LBI         LMM6-1
         BR          AMAILX          < MISE EN PLACE D'UN 'MAIL'...
         PAGE
<
<
<        I N T E R D I C 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  :
<
<
MEMX:    EQU         $
         LAI         NSPMV
         SBT         0
         ACTD        1               < B=ADRESSE DE 'MEMV'...
         LR          B,A             < A=ADRESSE DE 'MEMV'.
         ACTD        1               < B='MEMV' COURANT...
         TBT         NBITMO+MEMXXX   < DEJA INTERDIT ???
         JNC         MEMX1           < OUI...
         RBT         NBITMO+MEMXXX   < NON...
         LYI         0               < Y=MODE ABSOLU.
         STAR
MEMX1:   EQU         $
         BR          AE11            < VERS L'INTERROGAION...
         PAGE
<
<
<        D I S P L A Y   L E   C O N T E N U   D ' U N
<                    M O T   M E M O I R E  :
<
<
DEBUG:   EQU         $
         LAD         DEMADR
         SVC         0               < ENTREE DE L'ADRESSE DEMANDEE, OU BIEN
                                     < D'UN NVP SI L'ADRESSE INDIQUEE EST ENTRE
                                     < '8000 ET '807F...
         LXI         0               < X=INDEX DU BUFFER,
         LBY         &ABADR
         STZ         IDEBUG          < R/C A PRIORI...
         CPI         '0D
         JE          DEBUG4          < MODE CONTINU A ADRESSE CONSTANTE...
         IC          IDEBUG          < EOT A PRIORI...
         CPI         '04
         JE          DEBUG4          < MODE CONTINU A ADRESSE CROISSANTE...
<
< MODE DISCRET :
<
         LYI         4               < Y=DECOMPTEUR DES CHIFFRES.
DEBUG1:  EQU         $
         LBY         &ABADR          < A=CARACTERE COURANT,
         ADRI        -"0",A          < DECODAGE ASCI,
         JAL         DEBUG2          < ERREUR !!!
         CPI         9
         JLE         DEBUG3          < CHIFFRE...
         ADRI        -"A"+"9"+1,A    < LETTRE ???
         CPI         10
         JL          DEBUG2          < ERREUR !!!
         CPI         15
         JG          DEBUG2          < ERREUR !!!
DEBUG3:  EQU         $
         SCRS        4
         SCLD        4               < GENERATION DE L'ADRESSE BINAIRE.
         ADRI        1,X             < PASSAGE AU CARACTERE SUIVANT,
         ADRI        -1,Y            < ET DECOMPTAGE...
         CPZR        Y               < SUIVANT ???
         JG          DEBUG1          < OUI...
         LR          B,A             < NON,
         STA         ADEBUG          < ET SAVE...
         ACTD        1               < A=ADRESSE OU NVP...
         LR          B,Y             < Y=CONTENU DESIRE...
         LXI         -1              < POUR 'DISP'...
         LAD         MEGAL
         BSR         ADISP           < DISPLAY DE (Y).
         BR          AE11            < VERS L'INTEROGATION...
DEBUG2:  EQU         $
         BR          AERR            < VERS L'ERREUR...
<
< MODE CONTINU :
<
DEBUG4:  EQU         $
         LY          ADEBUG
         LXI         -1
         LAD         MRC
         BSR         ADISP           < EDITION DE L'ADRESSE...
         LA          ADEBUG
         ACTD        1               < RECUPERATION DE LA VALEUR,
         AD          IDEBUG
         STA         ADEBUG          < PROGRESSION EVENTUELLE DE 'ADEBUG'...
         LR          B,Y             < ET MISE DANS Y,
         LXI         -1              < POUR ADISP :
         LAD         MDEBUG
         BSR         ADISP           < VISUALISATION DE (Y).
         JMP         DEBUG4          < ET ON BOUCLE JUSQU'A UN ALT-MODE...
         PAGE
<
<
<        V A L I D A T I O N   I M P L E M E N T A T I O N  :
<
<
X120:    VAL         $-ZERO
X120:    VAL         '3EF-X120
ZEROV:   EQU         ZERO+X120       < ERREUR VOLONTAIRE D'ASSEMBLAGE
                                     < SI IDLE FAIT PLUS D'UN K...
         END         IDLE



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