NMPROC:  VAL         "GE"            < NOM DU PROCESSEUR.
         IDP         "SODOME - RELEASE 01/06/1979"
         IDP         "JOHN F. COLONNA"
         PAGE
         EOT         #SIP DEFINITION CMS5#
         IF          ORDI-"S",XWOR%,,XWOR%
         IDP         "VERSION SOLAR SOUS CMS5"
XWOR%:   VAL         0
         IF          ORDI-"T",XWOR%,,XWOR%
         IDP         "VERSION T1600 SOUS CMS4"
XWOR%:   VAL         0
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        SODOME          < @POINT D'ENTREE DE SODOME.
         WORD        0
GOMORE:  EQU         $               < P DE LANCEMENT DE SODOME LORS
                                     < DE SON APPEL PAR LE CCI DE CMS4.
                                     < A NOTER : P='12...)
         LRP         L
         BR          -2,L            < ENTRY DANS SODEOME ...
         PAGE
         EOT         #SIP DEFINITION ITEM#
LNOM:    VAL         '26             < NBRE MAX DE CARACTERES D'UN NOM
                                     < DE BANDES MAGNETIQUES.
ITEM1:   EQU         ZERO+PILE-LTNI  < @ITEM1.
ITEM2:   EQU         ITEM1-LTNI      < @ITEM2.
         PAGE
<
<
<        C A R T E S   P O U R   L E   C C I  :
<
<
         TABLE
MDATE:   ASCI        "!DAT"
         BYTE        "E";'04
CASS:    ASCI        "!ASSIGN 2="
         BYTE        "S";'04
MSGN:    ASCI        "!SGN"
         BYTE        '04;0
         PAGE
<
<
<        A C C E S   A   L A   L R U   M A G  :
<
<
NMAG:    VAL         9               < NBRE DE MAGNETOSCOPES DU
                                     < SYSTEME (NUMEROTES DE 0 A NMAG-1)
<
<        E N - T E T E   S O U S   : S Y S  :
<
LRUMAG:  ASCI        ":EAO"
         BYTE        '04;":"
         ASCI        "MA"
         BYTE        "G";'1F
         BYTE        '04;0
LLRU:    VAL         $-LRUMAG*2      < LONGUEUR DU NOM D'ACCES A LRU.
<
<        P I L E   L R U  :
<
<        FORMAT DE CHAQUE ENTREE :
<                    BIT0=0 : MAGNETOSCOPE EN SERVICE ,
<                        =1 : MAGNETOSCOPE HS ,
<                    BITS1-7=NUMERO DU MAGNETO (DE 0 A NMAG-1) ,
<                    BIT8=1 : INUTILISE ,
<                    BITS9-15=ID DE L'UTILISATEUR POSSEDANT CE MAGNETO.
<
LRU:     EQU         $
         DO          NMAG
         BYTE        $-LRU;'FF       < MAGNETOSCOPE LIBRE INITIALEMENT.
<
<        N O M S   D E S   B A N D E S   M O N T E E S  :
<
TAPES:   EQU         $
         DO          NMAG
         DZS         LNOM/2
LMAG:    VAL         $-LRUMAG*2      < LONGUEUR TOTALE EN OCTETS.
         PAGE
<
<
<        L O C A L  :
<
<
CARTE:   EQU         ZERO+PILE-100   < BUFFER DE LECTURE DES CARTES
                                     < EN MODE BINAIRE (UNE COLONNE
                                     < DE LA CARTE PAR MOT).
         LOCAL
LOC:     EQU         $
<
<        M E S S A G E S  :
<
MWELC:   BYTE        35;'6D
         ASCI        " SMC VOUS SOUHAITE LA BIENVENUE!"
         BYTE        "!";'6D
MERR:    BYTE        7;'6D
         ASCI        "!!ERR."
MESGN:   BYTE        5;'6D
         ASCI        "!SGN"
MASSGN:  BYTE        7;'6D
         ASCI        "!ASSGN"
MPAR:    BYTE        7;'6D
         ASCI        "!CARTE"
MLRU:    BYTE        18;'6D
         ASCI        "OK DELETE LRU MAG "
M1:      BYTE        11;'6D
         ASCI        "1 SECTEUR?"
M16:     BYTE        9;'6D
         ASCI        "ALORS 16"
MMG:     BYTE        5;'6D
         ASCI        "MGXY"
MHS:     BYTE        3;" "
         ASCI        "HS"
MES:     BYTE        7;" "
         ASCI        "IDXY"
         ASCI        " ="
MNOM:    BYTE        5;'6D
         ASCI        "NOM>"
MDK:     BYTE        3;'6D
         ASCI        "DK"
MAS:     BYTE        3;'6D
         ASCI        "AS"
MQUOI:   BYTE        2;'6D;">";0
MKM:     BYTE        3;'6D
         ASCI        "KM"
MINC:    BYTE        1;"?"
MCOM:    BYTE        2;'6D
         ASCI        "* "
BUFFER:  DZS         2               < BUFFER D'ENTREE DES COMMANDES ,
                                     < DE PUNCH DES C ARTES , ET
                                     < D'ENTREE DES NOMS DE PROCESSEURS.
<
<        D E M A N D E S   A   C M S 4  :
<
DEMOUT:  WORD        '0202           < ENVOI D'UN MESSAGE SUR LA VISU.
         WORD        0               < @OCTET DU BUFFER.
         WORD        0               < NBRE DE CARACTERES DU MESSAGE.
DEMIN:   WORD        '0101           < ENTRRE SUR VISU AVEC ECHO.
         WORD        BUFFER-ZERO*2
         WORD        1               < 1 CARACTERE A PRIORI.
DEMPCH:  WORD        '0B02           < DEMANDE DE PUNCH SUR NVP=11.
         WORD        BUFFER-ZERO*2
         WORD        2               < 1 COLONNE=2 OCTETS.
DEMCR:   WORD        '0A08           < DEMANDE DE LECTURE BINAIRE
                                     < SUR NVP=10.
         WORD        CARTE-ZERO*2
         WORD        2*80            < NBRE D'OCTETS POUR UNE CARTE
                                     < BINAIRE.
DEMSGN:  WORD        '0602           < DEMANDE DE 'LOAD SOUS :SYS'.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMLRU:  WORD        '000A           < DEMANDE D'ACCES A LA LRU
                                     < SOUS L'ACN :EAO.
         WORD        LRUMAG-ZERO*2
         WORD        LMAG
         WORD        LLRU            < DEPLACEMENT D'ACCES A LA LRU
                                     < PROPREMENT DITE ; EN EFFET
                                     < L'EN-TETE DE LA LRU SOUS :SYS
                                     < CONTIENT L'ACN :EAO ; IL Y A
                                     < DONC UN DECALALGE PAR RAPPORT
                                     < A LA LRU :EAO ....
DEMCCI:  WORD        '0001           < DEMANDE DE RETOUR AU CCI.
DEMINT:  WORD        '0002           < ACCES AU CCI NON INTERACTIF.
         WORD        0               < @OCTET DE LA CARTE A INTERPRETER.
         WORD        80              < LONGUEUR MAX D'UNE CARTE.
SLEEP:   WORD        '0005           < DEMANDE DE MISE EN SOMMEIL.
         WORD        0
         WORD        3               < POUR 3 SECONDES.
CCINSP:  WORD        '0003           < DEMANDE D'ASSIGNATION DU
                                     < NVP=9 , A UN DISQUE.
         WORD        '0900           < NVP=9 , NSP=NSPDK1/2/3.
DEMDK:   WORD        '0900           < DEMANDE DE LECTURE SUR NVP=9.
         WORD        ITEM2-ZERO*2
         WORD        256             < 1 SECTEUR=256 OCTETS.
         WORD        0               < @SECTEUR COURANT.
<
<        R E L A I   D E   T A B L E S  :
<
ACOM:    WORD        TCOM,X          < TABLE DES COMMANDES SOUS :SYS.
AI2:     WORD        ITEM2-1,X       < RELAI DESTINE A RAZER ITEM2 ,
                                     < ET ITEM1 AVEC UN INDEX ALLANT
                                     < JUSQU'A 1 PAR JDX.
ACARTE:  WORD        CARTE+80,X      < RELAI VERS LA CARTE BINAIRE.
ABUF:    WORD        BUFFER,X        < RELAI BUFFER D'ENTREE.
ACASS:   WORD        CASS+4          < POUR MISE A JOUR DU NVP DE CASS.
ALRU:    WORD        LRU-1,X         < POUR UN PARCOURS DE LA LRU
                                     < INDEXE DE NMAG A 1.
AFLRU:   WORD        $+1,X;SERV;HS;DEMONT
ATAPES:  WORD        TAPES           < @LISTE DES NOMS DE BANDES.
NOMTAP:  WORD        0               < RELAI VERS LE NOM DE LA
                                     < BANDE COURANTE.
         IF          ORDI-"T",XWOR%,,XWOR%
ABOOT:   WORD        BOOT            < ADRESSE DE LANCEMENT DU MODULE
                                     < STAND ALONE DE LECTURE CARTES.
XWOR%:   VAL         0
APILE:   WORD        PILE-1          < POUR INITIALISER K.
<
<        R E L A I   D E S   R O U T I N E S  :
<
AOVL:    WORD        OVL             < CHARGEMENT DE L'OVERLAY 'GE    '.
APRINT:  WORD        PRINT           < ENVOI D'UN MESSAGE.
ASVC:    WORD        SVC             < EXECUTION D'1N SVC ET SAVE (X).
ANMP:    WORD        NMP             < DEMANDE DU NOM D'UN PROCESSEUR.
ACTTE:   WORD        CTTE            < ENTREE D'UNE CONSTANTE HEXA.
ACONV:   WORD        CONV            < CONVERSION HEXA-DECIMALE.
ACV10:   WORD        CV10            < CONVERSION DECIMALE 1 CHIFFRE.
AFINDM:  WORD        FINDM           < RECHERCHE D'UN MAGNETO DANS
                                     < LA PILE LRU.
AMAGS:   WORD        MAGS            < ACCES AU SGN POUR LA LRU.
ADIV:    WORD        DIV             < CONVERSION BASE 10.
AADB:    WORD        ADB             < GENERATION RELAI VERS LE
                                     < NOM D'1NE BANDE.
APUNCH:  WORD        PUNCH           < PUNCH N CARTES.
APCH1:   WORD        PUNCH1          < PUNCH PREMIERES COLONNES CARTE.
APCHK:   WORD        PUNCHK          < PUNCH DERNIERE COLONNE ET TEMPO.
APUNR:   WORD        PUNR            < ROUTINE DE PUNCH CARTE 'R    '.
APUNRC:  WORD        PUNRC           < ROUTINE DE PUNCH 'R/C    '.
ACOUNT:  WORD        COUNT           < COMPTAGE MODULO 64 DES CARTES.
ASODOM:  WORD        E40             < @DE RETOUR DES FONCTIONS DE
                                     < SAVE/RESTORE PROCESSEUR.
ARETDK:  WORD        RETDK           < RETOUR DES OPERATIONS SUR DK.
AE25:    WORD        E25             < ACCES COMMANDE SUIVANTE (:SYS).
AE27:    WORD        E27             < TRAITEMENT DES ERREURS.
<
<        C O N S T A N T E S  :
<
NMOTS:   WORD        2*LTNI          < NBRE DE MOTS OCCUPES PAR LES
                                     < ITEM1 ET ITEM2.
ACNSYS:  ASCI        ":SYS"          < ACN DU SYSTEME.
NC:      WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2+79/80*80
                                     < NBRE DE CARACTERES (EN MULTIPLE
                                     < DE 80) OCCUPES PAR UNE BRANCHE
                                     < D'OVERLAY.
         IF          ORDI-"T",XWOR%,,XWOR%
T1:      WORD        $+1,X           < POUR GENERER LES PROGRAMMES
                                     < CANAUX D'ACCES AUX DISQUES.
         BYTE        0;'58;'50;'5C
T2:      WORD        $+1,X           < POUR GENERER LES DEMANDES DE
                                     < DESOCCUPATION DES DISQUES.
         BYTE        0;6;4;7
XWOR%:   VAL         0
NSECT:   WORD        0               < NBRE COURANT DE SECTEURS
                                     < RESTANT A LIRE.
MAXSEC:  WORD        '2000           < @SECTEUR MAX +1 SUR LES DK.
NVPDK:   WORD        '0900           < LECTURE SUR LE NVP=9.
COD1:    WORD        256             < LONGUEUR OCTETS D'UN SECTEUR.
COD16:   WORD        256*16          < LONGUEUR OCTETS DE 16 SECTEURS.
CODN:    WORD        256*16          < LONGUEUR OCTETS DE 1/16 SECTEURS
                                     < INITIALISEE SUR 16.
NCS:     WORD        4*80            < NBRE DE CARACTERES CONTENUS
                                     < DANS 4 CARTES (1 SECTEUR).
NUMK:    WORD        0               < NUMERO DE CARTE MODULO 64.
NUM:     WORD        0               < POUR CALCULER LE NUMERO DE
                                     < COLONNE MODULO 4.
CARTR:   WORD        '4011           < CODE CARTE DU CARACTERE 'R'.
CARTRC:  WORD        '3021           < CODE CARTE DU RETOUR-CHARIOT.
C10:     WORD        10              < BASE DE CONVERSION DECIMALE.
NUMAG:   WORD        0               < NUMERO DU MAGNETO COURANT.
FLRU:    WORD        0               < MEMORISATION DE LA FONCTION
                                     < DEMANDEE SUR LA LRU :
                                     < 0 : MISE EN SERVICE MAGNETO ,
                                     < 1 : MISE HS D'1N MAGNETO ,
                                     < 2 : DEMONTAGE D'1NE BANDE.
         PAGE
         IF          ORDI-"T",XWOR%,,XWOR%
<
<
<        C A R T E   B O O T S T R A P :
<
<
<        FONCTION :
<                      CETTE ZONE PERMET DE REGENERER LE DISQUE
<                    A PARTIR DU DECK.
<
<
RETOUR:  WORD        '1E02           < RSR DU MODULE STAND-ALONE.
<
<
<        C O M M O N :
<
<
LBOOT:   EQU         $
WDK:     VAL         $-LBOOT         < PROGRAMME CANAL ECRITURE DK.
         WORD        '5003           < DK1 : '58 , DK2 : '50 , DK3 : '5C
         WORD        0               < ADRESSE MOT EN MEMOIRE.
         WORD        'BF80           < ECRITURE 128 MOTS (1 SECTEUR).
         WORD        0               < @SECTEUR COURANT.
OCDK:    VAL         $-LBOOT         < DESOCCUPATION DU NIVEAU DK.
         BYTE        0;0             < DK1 : 6 , DK2 : 4 , DK3 : 7.
TDK:     VAL         $-LBOOT         < ENTREE ETAT DU DK.
         WORD        '5000           < DK1 : '58 , DK2 : '50 , DK3 : '5C.
FCR:     VAL         $-LBOOT         < FONCTION D'APPEL CARTE EN MODE
                                     < PROGRAMME SIMPLE SUR LE COUPLEUR 3.
         WORD        'D000
RCR:     VAL         $-LBOOT         < OPERANDE D'UNE SIO DE LECTURE.
         WORD        '020C           < LECTURE , PERIPH 16 BITS.
SFCR:    VAL         $-LBOOT         < OPERANDE SIO SORTIE FONCTION.
         WORD        '020E
BBUF:    VAL         $-LBOOT         < RELAI VERS LE BUFFER DE RECONSTITUTION
                                     < DU SECTEUR COURANT.
                                     < A T T E N T I O N :
                                     < LE RELAI EST IMPLANTE SUR
                                     < L'INSTRUCTION 'LRP C' !!!
<
<
<        B O O T S T R A P :
<
<
         PROG
BOOT:    EQU         $
FDECK:   BYTE        '26;RETOUR-$
         ACTD
SIZE:    VAL         $-LBOOT         < TAILLE DU BOOTSTRAP.
XBUFDK:  VAL         $-BOOT
XBUFDK:  VAL         40-SIZE/2+XBUFDK  < PAR PRUDENCE !!!!!!
BUFDK:   EQU         ZERO+XBUFDK
         IF          SIZE,,X100,
         DZS         40-SIZE         < AFIN D'OCCUPER UNE CARTE ENTIERE.
X100:    VAL         0
XWOR%:   VAL         0
         DZS         128             < BUFFER CONTENANT UN SECTEUR DK
                                     < LORS DE LA RESTAURATION STAND-
                                     < ALONDE DES PROCESSEURS CMS4.
         DZS         80-1*4/2-128    < PARCEQU'ON LIT 4 CARTES ENTIERES
                                     < SUR 79 (80-1) COLONNES ...
         PAGE
<
<
<        C O M M A N D E S   S O U S   : S Y S  :
<
<
TCOM:    EQU         $-'41
         WORD        E27             < A.
         WORD        E27             < B.
         WORD        E27             < C.
         WORD        E90             < D : ACCES AUX DK ABSOLUS.
         WORD        E27             < E.
         WORD        E26             < F : ACCES AU CCI.
         WORD        E24             < G : APPEL DE 'GE'.
         WORD        E27             < H.
         WORD        E27             < I.
         WORD        E27             < J.
         WORD        E27             < K.
         WORD        EDIT            < L : EDITION DE LA LRU MAGNETO.
         WORD        E420            < M : MODIFICATION PROCESSEUR.
         WORD        E27             < N.
         WORD        E27             < O.
         WORD        PDK             < P : REECRITURE PROCESSEUR SGN.
         WORD        E27             < Q.
         WORD        E23             < R : RESTAURATION PROCESSEUR.
         WORD        E22             < S : SAVE PROCESSEUR.
         WORD        SSIZE           < T : TAILLE ENREGISTREMENT 1/16.
         WORD        PRES            < U : PROCESSEUR RESIDENT.
         WORD        MAJLRU          < V : MODIFICATION DE LA LRU.
         WORD        E27             < W.
         WORD        E27             < X.
         WORD        E27             < Y.
         WORD        DELETE          < Z : DELETE LA LRU MAGNETO.
         PROG
         PAGE
<
<
<        A C C E S   S G N   P O U R   L A   L R U  :
<
<
<        ARGUMENT :
<                    A=NVP D'ACCES AU SGN.
<
<
MAGS:    EQU         $
         STBY        DEMLRU          < MISE EN PLACE DU NVP SGN.
         LAD         DEMLRU
         SVC         0               < L'APPEL DU SGN SE FAIT AVEC
                                     < LA FONCTION 'A , AFIN DE
                                     < TRAVAILLER SOUS :EAO.
         RSR                         < LES CONDITIONS DE RETOUR
                                     < NE SONT APAS TESTEES.
         PAGE
<
<
<        R E C H E R C H E   M A G N E T O   D A N S   L R U  :
<
<
<        RESULTAT :
<                    X=NUMERO DE L'ENTREE DANS LA QUELLE
<                      ON TROUVE LE MAGNETO CHERCHE ,
<                    OCTET0(B)=OCTET1(ENTREE COURANTE DE LA LRU) ,
<                    OCTET1(A)=BITS1-7(ENTREE COURANTE LRU).
<                    BIT8(A)=0 (EN-SERVICE A PRIORI).
<
<
FINDM:   EQU         $
         LXI         NMAG            < POUR UN PARCOURS PAR JDX
                                     < DE LA PILE LRU.
<
< BOUCLE DE RECHERCHE :
<
E1003:   EQU         $
         LA          &ALRU
         SLRD        8               < DECONCATENATION DE L'ENTREE
                                     < COURANTE DE LA LRU.
         ANDI        '7F             < RAZ A PRIORI DU BIT EN-SERVICE.
         CP          NUMAG           < EST-CE LE MAGNETO CHERCHE ???
         JE          E1004           < OUI , ON S'ARRETE ICI.
         JDX         E1003           < NON AU SUIVANT ...
         JMP         $               < E R R E U R   N O N   T R O U V E
<
< RETOUR OK :
<
E1004:   EQU         $
         RSR
         PAGE
<
<
<        C O N V E R S I O N   D E C I M A L E  :
<
<
<        ARGUMENT :
<                    X=INDEX COURANT DE 'BUFFER' ,
<                    Y=CUMUL COURANT ,
<
<
<        RESULTAT :
<                    Y=NOUVEAU CUMUL , APRES CONVERSION DU CARACTERE
<                      COURANT DE 'BUFFER' ,
<                    X<--(X)+1.
<
<
CV10:    EQU         $
         LBY         &ABUF           < ACCES AU CARACTERE COURANT.
         ADRI        -'30,A          < DECONVERSION ASCI.
         JAL         E1000           < ERREUR ...
         CPI         9               < VALIDATION DECIMALE.
         JG          E1000           < ERREUR ...
         XR          A,Y             < A=CUMUL COURANT ; Y=CHIFFRE.
         MP          C10
         ADR         B,Y             < Y=NOUVEAU CUMUL.
         ADRI        1,X             < PROGRESSION DE L'INDEX BUFFER.
         RSR                         < ET C'EST TOUT ...
<
< RETOUR EN ERREUR :
<
E1000:   EQU         $
         ADRI        -1,K            < ANNULATION DU BSR.
EE27:    BR          AE27            < RETOUR EN ERREUR SOUS :SYS.
         PAGE
<
<
<        R E L A I   V E R S   U N   N O M   D E   B A N D E  :
<
<
<        ARGUMENT :
<                    NUMAG=NUMERO DE MAGNETOSCOPE ,
<
<
<        RESULTAT :
<                    NOMTAP=@NOM DE LA BANDE ATTACHEE A (NUMAG).
<
<
ADB:     EQU         $
         LAI         LNOM/2
         MP          NUMAG
         LR          B,A
         AD          ATAPES
         STA         NOMTAP          < GENERATION D'UN RELAI D'ACCES
                                     < AUX 2 PREMIERS CARACTERES
                                     < DU NOM DE LA BANDE MONTEE SUR
                                     < LE MAGNETO (NUMAG).
         RSR
         PAGE
<
<
<        D I V I S I O N   P A R   1 0  :
<
<
<        ARGUMENT :
<                    A=NBRE A DIVISER PAR 10 (<100).
<
<
<        RESULTAT :
<                    A=NBRE CODES EN ASCI SUR 2 CARACTERES.
<
<
DIV:     EQU         $
         DV          C10             < A=NBRE DE DIZAINES ; B=UNITES.
         ADRI        '30,A           < CONVERSION ASCI.
         ADRI        '30,B           < CONVERSION ASCI.
         SWBR        A,A             < CADRAGE A DROITE DANS A.
         ORR         B,A             < CONCATENATION DE B AVEC A.
         RSR
         PAGE
<
<
<        D E L E T E   L R U   M A G  :
<
<
<        FONCTION :
<                      LA COMMANDE 'L' PERMET DE DELETER
<                    LA TABLE LRU D'OCCUPATION DES
<                    MAGNETOSCOPES RANGEE PAR LE SGN
<                    SOUS LE NOM ':MAG''1F SOUS LE NUMERO
<                    DE COMPTE ':EAO'.
<                      CETTE COMMANDE N'EST EXECUTABLE
<                    EVIDEMMENT QUE SOUS :SYS !!!!
<
<
DELETE:  EQU         $
         LAI         3               < A=NVP DELETE SOUS SGN.
         BSR         AMAGS           < OK , DELETE LA LRU ....
         LAD         MLRU            < MESSAGE OK A PRIORI.
         JE          E913            < EFFECTIVEMENT , LA LRU A ETE
                                     < DELETEE.
         LAD         MERR            < SINON , ON VA ENVOYER UN
                                     < MESSAGE D'ERREUR.
E913:    EQU         $
         BSR         APRINT          < ENVOI D'UN MESSAGE INDIQUANT
                                     < LA NATURE DE LA FIN DU DELETE.
<
< REINITIALISATION DE LA LRU EN MEMOIRE :
<
         LXI         NMAG
E1020:   EQU         $
         LR          X,A
         ADRI        -1,A            < A=NUMERO DE MAGNETOSCOPE.
                                     < (DE NMAG-1 A 0).
         SWBR        A,A             < OCTET0(A)=NUMERO MAGNETO.
         ORI         'FF             < PAS D'ID ATTACHE A CE MAGNETO.
         STA         &ALRU           < REINIT L'ENTREE COURANTE LRU.
         JDX         E1020           < VERS L'ENTREE PRECEDENTE.
         BR          AE25            < VERS UNE NOUVELLE COMMANDE.
         PAGE
<
<
<        E D I T I O N   D E   L A   L R U  :
<
<
<        FONCTION :
<                      PERMET DE VISUALISER SUR L'ECRAN
<                    L'ETAT D'OCCUPATION DES MAGNETOSCOPES
<                    DU SYSTEME.
<                    MGXY HS         MAGNETO HS.
<                    MGXY            MAGNETO EN SERVICE SANS ID ATTACHE,
<                    MGXY IDXY       MAGNETO EN SERVICE AVEC ID ,
<                                    MAIS SANS BANDE MONTEE ,
<                    MGXY IDXY =...  MAGNETO EN-SERVICE , AVEC ID , ET
<                                    BANDE MONTEE.
<
<
EDIT:    EQU         $
         LAI         5
         BSR         AMAGS           < LECTURE DE LA LRU ; IL NE
                                     < S'AGIT PAS D'1NE PHASE CRITIQUE
                                     < PUISQU'ON NE LA MET PAS A JOUR.
<
< RECUPERATION DE CHAQUE MAGNETOSCOPE
< EN COMMENCANT PAR LE MOINS UTILISE :
<
         LXI         NMAG
E1010:   EQU         $
         LA          &ALRU           < ACCES A L'ENTREE COURANTE LRU.
         LR          A,Y             < Y=ENTREE COURANTE DE LA LRU.
         PSR         X               < SAVE LE NUMERO DE L'ENTREE
                                     < COURANTE DE LA LRU.
         RBT         0               < RAZ DU BIT HS/EN-SERVICE.
         SLRD        8+16            < CADRAGE DU NUMERO DE MAGNETO
                                     < A DROITE DANS B.
         STB         NUMAG           < ET NUMAG RECOIT LE NUMERO
                                     < DE MAGNETO COURANT.
         BSR         ADIV            < ET CONVERSION ASCI.
         STA         MMG+2
         LAD         MMG
         BSR         APRINT          < EDITION DU NUMERO DE MAGNETO.
         LR          Y,A             < RESTAURE A=ENTREE COURANTE LRU.
         JAGE        E1011           < CAS D'UN MAGNETO EN-SERVICE.
<
< CAS D'UN MAGNETO HS :
<
         LAD         MHS
         BSR         APRINT          < ENVOI D'UN MESSAGE HS.
<
< PASSAGE A UNE ENTREE PLUS UTILISEE :
<
E1012:   EQU         $
         PLR         X               < RESTAURE LE NUMERO D'ENTREE LRU.
         JDX         E1010           < PASSAGE ENTREE PRECEDENTE.
         BR          AE25            < VERS L'ACCES COMMANDE SUIVANTE.
<
< CAS D'UN MAGNETO EN-SERVICE :
<
E1011:   EQU         $
         ANDI        '7F             < RECUPERATION DE L'ID DE
                                     < L'UTILISATEUR LE POSSEDANT.
         CPI         '7F             < LE MAGNETO EST-IL ATTACHE ???
         JE          E1012           < NON , RIEN A FAIRE D'AUTRE.
                                     < (ON A JUSTE EDITE SON NUMERO).
         SLRD        16              < SI OUI , CADRAGE DE L'ID A
                                     < DROITE DANS B.
         BSR         ADIV            < ET CONVERSION ASCI.
         STA         MES+2
         LAD         MES
         BSR         APRINT          < EDITION DE L'ID DE L'UTILI-
                                     < SATEUR ASSOCIE A CE MAGNETO.
         BSR         AADB            < GENERATION D'UN RELAI VERS LE
                                     < NOM DE LA BANDE MONTEE.
         CPZ         &NOMTAP         < Y-A-T'IL BIEN UNE BANDE MONTEE ???
         JE          E1012           < NON , RIEN D'AUTRE A FAIRE.
                                     < (ON A EDITE LE NUMERO DU
                                     < MAGNETOSCOPE ET L'ID ASSOCIE).
         SLLS        1               < SI NOM , L'ADRRESE MOT DU NOM
                                     < DE BANDE EST CONVERTI EN OCTET.
         STA         DEMOUT+1        < ET MAJ DE DEMOUT.
         LAI         LNOM
         STA         DEMOUT+2        < MISE EN PLACE DU COMPTE
                                     < D'OCTETS DE DEMOUT.
         LAD         DEMOUT
         SVC         0               < EDITION DU NOM DE LA BANDE
                                     < MONTEE SUR LE MAGNETO.
         JMP         E1012           < PASSAGE A L'ENTREE PRECEDENTE.
         PAGE
<
<
<        M O D I F I C A T I O N   D E   L A   L R U  :
<
<
<        FONCTION :
<                      PERMET DE MODIFIER LA LRU DES
<                    MAGNETOSCOPES EN METTANT HS OU EN
<                    SERVICE DES MAGNETO , ET EN DEMONTANT DES
<                    BANDES.
<
<
MAJLRU:  EQU         $
         LAD         MQUOI
         BSR         APRINT          < ENVOI DU MESSAGE '>'.
         LAI         3
         STA         DEMIN+2         < MISE DE DEMIN EN LECTURE
                                     < DE 3 CARACTERES.
         LAD         DEMIN
         SVC         0               < ENTREE DE LA COMMANDE LRU.
<
< ANALYSE DE LA COMMANDE :
<
         LXI         0               < INITIALISATION INDEX BUFFER.
         LYI         0               < INITIALISATION DU CUMUL.
         BSR         ACV10           < CONVERSION 1ER CHIFFRE.
         BSR         ACV10           < CONVERSION 2EME CHIFFRE.
         LR          Y,A             < A=NUMERO DE MAGNETOSCOPE.
         CPI         NMAG            < VALIDATION DU NUMERO DE MAGNETO.
         JGE         EE27            < ERREUR : IL N'EXISTE PAS.
         STA         NUMAG           < SI EXISTE , ON LE SAUVEGARDE.
         LBY         &ABUF           < A=COMMANDE SUR LA MAGNETO.
         STZ         FLRU            < FLRU=0 A PRIORI.
         CPI         "+"             < MISE EN SERVICE ???
         JE          E1001           < OUI , FLRU=0.
         CPI         "-"             < MISE HORS-SERVICE ???
         JE          E1002           < OUI , FLRU=1.
         CPI         "D"             < DEMONTAGE D'1NE BANDE ???
         JNE         EE27            < ERREUR DE COMMANDE.
         IC          FLRU            < OUI DEMONTAGE , FLRU=2.
E1002:   EQU         $
         IC          FLRU            < FLRU=1.
<
<        A C C E S   A   L A   L R U  :
<
E1001:   EQU         $
         LAI         5               < A=NVP DE LOAD DE LA LRU.
<
<        P H A S E   C R I T I Q U E   S U R   L A   L R U  :
<
         WORD        '1ED5           < TEST & SET 5.
         JC          $-1             < ATTENTE DU PASSAGE LIBRE.
         BSR         AMAGS           < OK , LOAD LA LRU ...ET RETOUR
                                     < INDIFFERENT , CE QUI PERMET
                                     < D'INITIALISER LA LRU.
         LX          FLRU            < X=FONCTION DESIREE SUR LA LRU.
         BR          &AFLRU          < VERS L'EXECUTION SPECIFIQUE.
<
<        M I S E   H O R S - S E R V I C E   M A G N E T O  :
<
HS:      EQU         $
         BSR         AFINDM          < ACCES AU MAGNETO (NUMAG).
         SBT         8               < POSITIONNEMENT DU FUTUR BIT HS.
         JMP         E1005           < VERS LA MAJ DE LA LRU.
<
<        M I S E   E N - S E R V I C E   M A G N E T O  :
<
SERV:    EQU         $
         BSR         AFINDM          < RECHERCHE DU MAGNETO (NUMAG).
E1005:   EQU         $               < ENTRY 'HORS-SERVICE'.
         SLLD        8               < RECONCATENATION DE L'ENTREE
                                     < COURANTE DE LA LRU.
         STA         &ALRU           < MISE A JOUR DE LA LRU AVEC LE
                                     < BIT0 POSITIONNE CORRECTEMENT.
         JMP         WLRU            < VERS LA REECRITURE DE LA LRU.
<
<        D E M O N T A G E   D ' U N E   B A N D E  :
<
DEMONT:  EQU         $
         BSR         AADB            < GENERATION DU RELAI VERS
                                     < LE NOM DE LA BANDE.
         STZ         &NOMTAP         < ARZ LES 2 PREMIERS CARACTERES !!!
<
<        R E E C R I T U R E   D E   L A   L R U  :
<
WLRU:    EQU         $
         LAI         3
         BSR         AMAGS           < DELETE LA LRU A PRIORI.
         LAI         4
         BSR         AMAGS           < REECRITURE (OU INITIALISATION
                                     < LA 1ERE FOIS) DE LA LRU.
<
<        F I N   D E   P H A S E   C R I T I Q U E   S U R   L R U  :
<
         WORD        '1E55           < RESET 5.
         JC          $               < E R R E U R   ????
         BR          AE25            < VERS LA COMMANDE SUIVANTE.
         PAGE
<
<
<        E N V O I   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT DU MESSAGE ,
<                    OCTET0(MESSAGE)=NBRE DE CARACTERES DU MESSAGE.
<
<
<        DETRUIT C.
<
<
PRINT:   EQU         $
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < L'@OCTET DU BUFFER EST MISE
                                     < DANS DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MISE EN PLACE DU COMPTE D'OCTETS
                                     < DE DEMOUT.
         LAD         DEMOUT
         SVC         0               < ENVOI DU MESSAGE.
         RSR
         PAGE
<
<
<        E X E C U T I O N   D ' U N   S V C  :
<
<
<        ARGUMENT :
<                    A=@DEMANDE.
<
<
<        RESULTAT :
<                    INDICATEURS POSITIONNES OK OUI/NON.
<
<
SVC:     EQU         $
         PSR         X               < SAVE X.
         SVC         0               < ENVOI DE LA DEMANDE (A).
         PLR         X               < RESTAURE X.
         RSR                         < ET C'EST TOUT ...
         PAGE
<
<
<        N O M   D ' U N   P R O C E S S E U R  :
<
<
<        FONCTION :
<                      CETTE ROUTINE DEMANDE ET
<                    RECUPERE AUPRES DU DEMANDEUR LE
<                    NOM D'UN PROCESSEUR SOUS FORME
<                    DE 2 CARACTERES DANS 'BUFFER'.
<
<
<        RESULTAT :
<                    BUFFER=2 CARACTERES DU NOM.
<
<
NMP:     EQU         $
         LAD         MNOM
         BSR         APRINT          < ENVOI DU MESSAGE 'NOM>'.
CTTE:    EQU         $               < ENTRY ENTREE CTTE SEULE.
         IC          DEMIN+2         < POUR LECTURE DE 2 CARACTERES.
         LAD         DEMIN
         SVC         0               < LECTURE DU NOM DU PROCESSEUR.
         DC          DEMIN+2         < RETOUR A 1 CARACTERE.
         RSR                         < ET C'EST TOUT.
         PAGE
<
<
<        C O N V E R S I O N   H E X A D E C I M A L E  :
<
<
<        ARGUMENT :
<                    X=NBRE DE CARACTERES A CONVERTIR MOINS 1.
<
<
<        RESULTAT :
<                    B=VALEUR BINAIRE CADREE A GAUCHE (!!!).
<
<
CONV:    EQU         $
         LBI         0               < CLEAR DU REGISTRE B.
<
< BOUCLE DE CONVERSION :
<
E93:     EQU         $
         LBY         &ABUF           < RECUPERATION D'UN CARACTERE ;
                                     < LA RECUPERATION DANS BUFFER SE
                                     < FAIT A REBROUSE POIL.
         ADRI        -'30,A
         JAL         E91             < ERREUR.
         CPI         9
         JLE         E92             < C'EST UN CHIFFRE DECIMAL.
         ADRI        -'41+'39+1,A
         CPI         'A
         JL          E91             < ERREUR.
         CPI         'F
         JG          E91             < ERREUR.
E92:     EQU         $
         SLRD        4               < CONCATENATION DU CHIFFRE AVEC
                                     < LE CONTENU DE B.
         ADRI        -1,X            < DECOMPTE DES CARACTERES.
         CPZR        X
         JGE         E93             < ACCES AU CARACTERE SUIVANT.
         RSR
<
< TRAITEMENT DES ERREURS :
<
E91:     EQU         $
         ADRI        -1,K            < RATTRAPAGE DE LA PILE K.
         BR          AE27            < RETOUR EN ERREUR.
         PAGE
<
<
<        P U N C H   L E S   C A R T E S   ' R '   E T   ' R / C '  :
<
<
<        FONCTION :
<                      PERMET D'ENCADRER CHAQUE PROCESSEUR
<                    DE SODOME QUE L'ON PUNCHE PAR UNE
<                    CARTE 'R   ' POUR LA RESTAURATION
<                    ULTEIEURE , ET UNE CARTE 'R/C    ' ,
<                    QUI TERMINE CETTE RESTAURATION PAR
<                    UNE NON-MODIFICATION.
<
<
PUNRC:   EQU         $
         LA          CARTRC          < A=CODE CARTE DU R/C.
         JMP         E900
PUNR:    EQU         $
         LA          CARTR           < A=CODE CARTE DU 'R'.
E900:    EQU         $
         STA         BUFFER          < MISE DU 1ER CARACTERE DE LA
                                     < CARTE DANS LE BUFFER.
         LAD         DEMPCH          < A=@DEMPCH.
         BSR         ASVC            < PUNCH DU 1ER CARACTERE.
         JNE         EE70            < PROBLABELEMENT UNE ERREUR ASSIGN...
         STZ         BUFFER          < ON MET DANS LE BUFFER LE 'SPACE'.
         LXI         80-1            < EN VUE DE COMPLETER LA CARTE
                                     < PAE DES 'SPACE'.
E901:    EQU         $
         BSR         ASVC            < MISE A 'SPACE' DE LA CARTE.
         JDX         E901
         LAD         SLEEP
         BSR         ASVC            < TEMPORISATION INTER-CARTE.
         RSR                         < ET C'EST TOUT ....
EE70:    EQU         $
         JMP         E70             < VERS LES MESSAGES D'ERREUR.
         PAGE
<
<
<        C O M P T A G E   M O D U L O   6 4   D E S   C A R T E S  :
<
<
COUNT:   EQU         $
         LA          NUMK            < ACCES AU NUMERO COURANT.
         ANDI        '3F             < MODULO 64 AVANT LE +1 ....
         ADRI        1,A             < COMPTAGE DE LA CARTE.
         STA         NUMK            < MISE A JOUR DU NUMERO DE CARTE.
         RSR
         PAGE
<
<
<        P U N C H   C A R T E S  :
<
<
<        NOTA :
<                      EN GENERAL UNE COLONNE N'EST PAS
<                    VIDE (LA SEULE EXCEPTION SERA
<                    LA DERNIERE COLONNE DE LA DERNIERE
<                    CARTE D'UN DECK DE SAUVEGARDE
<                    ABSOLUE DES DK.
<
<
<        P U N C H   N   C O L O N N E S  :
<        ( D E   1   A   7 9 )
<
<
<        ARGUMENT :
<                    Y=NBRE DE COLONNES A PUNCHER.
<
<
PUNCH1:  EQU         $
         BSR         ACOUNT          < COMPTAGE DE LA CARTE COURANTE.
         LR          Y,A
         ANDI        '3              < CALCUL DE (Y) MODULO 4.
         NGR         A,A
         ADRI        4,A
         STA         NUM             < NUM EST UNE CONSTANTE DE
                                     < TRANSLATION POUR LES NUMEROS
                                     < DE COLONNE MODULO 4.
<
< PUNCH UN OCTET DU PROCESSEUR :
<
E31:     EQU         $
         LBY         &AI2            < A=OCTET COURANT DU PROCESSEUR.
         SWBR        A,A
         ORR         Y,A             < CONCATENATION DE L'OCTET
                                     < AVEC SON NUMERO DE COLONNE.
         AD          NUM             < TRANSLATION DU NUMERO DE COLONNE.
         SCRS        2               < LE NUMERO DE COLONNE MODULO 4
                                     < EST MIS DEVANT L'OCTET.
<        NOTA :
<                      IL S'AGIT EN FAIT DE '80-NUMERO DE COLONE' !!!
         RBT         0               < RAZ BIT0 A PRIORI.
         PSR         Y
         XR          A,Y             < SAVE A DANS Y.
         ADRI        -81,A
         NGR         A,A             < A=NUMERO DE LA COLONNE COURANTE.
         CP          NUMK            < A-T'ON NUMERO DE COLONNE
                                     < =NUMERO CARTE COURANTE ????
         LR          Y,A             < RESTAURE A.
         JNE         E870            < NON , ON LAISSE BIT0=0.
         SBT         0               < OUI , ALORS : BIT0=1.
E870:    EQU         $
         PLR         Y               < RESTAURE Y.
         ANDI        'FFC0           < RAZ DES BITS 10-15.
         ORI         '21             < MISE EN PLACE DU CODE NUMERIQUE ,
                                     < ET DE L'INDICATEUR COLONNE 1 A 79
         STA         BUFFER          < MISE DE L'OCTET ET DE SES BITS
                                     < DE VALIDATION DANS LE BUFFER
                                     < DE PUNCH.
         LAD         DEMPCH
         BSR         ASVC            < ESSAI DE PUNCH 1 COLONNE.
         JNE         E70             < LE CU N'EST CERTAINEMENT PAS
                                     < ASSIGNE : ERREUR.
         ADRI        1,X             < INDEX DE L'OCTET SUIVANT.
         ADRI        -1,B            < DECOMPTE TOTAL DES OCTETS.
         ADRI        -1,Y            < DECOMPTE DES COLONNES D'UNE
                                     < CARTE.
         CPZR        Y               < LA CARTE EST-ELLE COMPLETE ????
         JNE         E31             < NON ,POURSUIVONS.
         RSR
<
<
<        P U N C H   D E C K  :
<
<
<        ARGUMENT :
<                    B=NBRE DE CARACTERES A PUNCHER (MELTIPLE DE 80).
<
<
<
PUNCH:   EQU         $
         STZ         NUMK            < RAZ DU NUMERO DE CARTE COURANTE.
         LXI         2               < INDEX INITIAL DE L'ITEM2 (ON
                                     < NOTERA QUE LE RELAI POINTE
                                     < SUR ITEM2-1 !!!!).
<
< PUNCH UNE CARTE :
<
E30:     EQU         $
         LYI         80              < DECOMPTEUR DES COLONNES D'UNE
                                     < CARTE.
         BSR         APCH1           < PUNCH LES COLONNES 1 A 80.
<
< FIN D'UNE CARTE : TEMPORISATION :
<
         LAD         SLEEP
         BSR         ASVC            < MISE EN SOMMEIL POUR 4 SECONDES.
         CPZR        B               < LA SAUVEGARDE EST-ELLE FINIE ???
         JNE         E30             < NON , PASSAGE CARTE SUIVANTE.
         RSR
<
<
<        P U N C H   D E R N I E R E   C O L O N N E
<        E T   T E M P O R I S A T I O N  :
<
<
<        ARGUMENT :
<                    A=CONTENU DE LA DERNIERE COLONNE.
<
<
PUNCHK:  EQU         $
         STA         BUFFER          < MISE DE LA DERNIERE COLONNE DANS
                                     < LE BUFFER DE PUNCH.
         LAD         DEMPCH
         BSR         ASVC            < PUNCH LA DERNIERE COLONNE.
         LAD         SLEEP
         BSR         ASVC            < TEMPORISATION D'ATTENTE
                                     < DE FIN DE PUNCH DE LA CARTE
                                     < ENTIERE.
         RSR
         PAGE
<
<
<        P R O C E S S E U R   S O D O M E  :
<
<
<        FONCTION :
<                      SODOME EST LE PROCESSEUR DE BASE
<                    APPELE PAR !GE A L'AIDE DU CCI.
<                    SON ROLE EST DE SOUHAITER LA
<                    BIENVENUE , DE FAIRE L'ASSIGNATION
<                    !SGN SI ELLE N'EST DEJA FAITE ,
<                    ET ENFIN DE PASSER LA MAIN AU
<                    PROCESSEUR PRIMAIRE 'GE    '.
<                      DANS LE CAS OU LE DEMANDEUR
<                    EST SOUS :SYS , LA FONCTION EST
<                    PLUS COMPLEXE ; SODOME PERMET
<                    LE PASSAGE A 'GE' , MAIS AUSSI
<                    LA SAUVEGARDE/RESTAURATION DES
<                    PROCESSEURS DU SYSTEME SOUS FORME
<                    DE PAQUETS DE CARTES BINAIRES ;
<                    LES COMMANDES UTILISEES SONT LES
<                    SUIVANTES :
<                    1- G : APPEL DE 'GE' ,
<                    2- S : SAUVEGARDE D'UN PROCESSEUR ,
<                    3- R : RESTAURATION D'UN PROCESSEUR , AVEC
<                           CHANGEMENT EVENTUEL DE SON NOM  (LE NOM
<                           NE CHANGE PAS SI LA REPONSE EST VIDE).
<                            3.1- <R/C> : NOM INCHANGE ,
<                            3.2- <EOT> : PASSAGE PAR LE CCI ,
<                            3.3- 'XY' : LE NOM DEVIENT 'XY'.
<                    4- D : SAUVEGARDE ABSOLUE DES DISQUES ,
<                            4.1- P : PUNCH NK SUR CARTES ,
<                            4.2- R : LECTURE 2K SUR DISQUE ,
<                            4.3- W : ECRITURE 2K SUR DISQUE ,
<                            4.4- S : RESTAURATION STAND-ALONE DES
<                                     PROCESSEURS DE BASE.
<                    5- F : RETOUR AU CCI.
<                    6- M : MODIFICATION D'UN PROCESSEUR (CF. 'R').
<                    7- Z : DELETE LA LRU D'OCCUPATION
<                           DES MAGNETOSCOPES (SOUS :EAO!!!).
<                    8- V : MODIFICATION DE LA LRU DES MAGNETO :
<                            8.1- XY+ : MISE EN SERVICE MAGNETO 'XY' ,
<                            8.2- XY- : MISE HS DU MAGNETO 'XY' ,
<                            8.3- XYD : DEMONTAGE BANDE SUR LE
<                                       MAGNETO 'XY'.
<                    9- L : LISTAGE DE LA LRU.
<                    10- U : REND UN PROCESSEUR RESIDENT ,
<                    11- P : RESTORE LE PROCESSEUR RESIDENT.
<                    12- T : CHANGEMENT DE LA TAILLE D'UN
<                            ENREGISTREMENT DISQUE LORS DES
<                            COMMANDES 'R'/'W' : 1 OU 16 SECTEURS.
<
<
         WORD        LOC+'80         < VALEUR INITIALE DE LA BASE L.
         WORD        BRANCH          < VALEUR INITIALE DE LA BASE W.
SODOME:  EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DE L ET DE W.
         LB          APILE
         LR          B,K             < INITIALISATION DU REGISTRE K.
<
< RAZ DES ITEM1 ET ITEM2 :
<
E40:     EQU         $               < RETOUR DES SAUVEGARDES ET
                                     < RESTAURATIONS DE PROCESSEUR.
         LX          NMOTS           < X=NBRE DE MOTS A RAZER.
E10:     EQU         $
         STZ         &AI2            < ARZ PAR MOT.
         JDX         E10
<
< ENVOI DU MESSAGE DE BIENVENUE ET DE LA DATE :
<
         LAD         MWELC
         BSR         APRINT          < ENVOI DE 'BIENVENUE...'.
         LBI         MDATE-ZERO*2    < B=@OCTET DE LA CARTE !DATE.
         STB         DEMINT+1        < MAJ DE LA DEMANDE DU CCI NON
                                     < INTERACTIF.
         LAD         DEMINT
         SVC         0               < APPEL DU CCI NON INTERACTIF.
<
< TENTATIVE D'ASSIGNATION !SGN :
<
         LAI         CASS-ZERO*2
         STA         DEMINT+1        < POUR EMISSION DE '!ASSIGN X=S'.
         LAI         "2"
         STBY        &ACASS          < DEPART SUR LE NVP=2.
         LXI         9-3+1           < NVP DE 3 A 9 A DESASSIGNER.
ASS:     EQU         $
         LBY         &ACASS          < A=NVP COURANT,
         ADRI        1,A             < ET PASSAGE AU NVP SUIVANT.
         STBY        &ACASS
         PSR         X
         LAD         DEMINT
         SVC         0               < DESASSIGNATION DU NVP COURANT.
         PLR         X
         JDX         ASS
         LBI         MSGN-ZERO*2     < B=@OCTET DE LA CARTE !SGN.
         STB         DEMINT+1
E11:     EQU         $
<        ON A ICI :
<                    A=@DEMINT.
         SVC         0               < APPEL DU CCI NON INTERACTIF.
<
< RECUPERATION DE L'<ACN> DU DEMANDEUR :
<
         WORD        '1E25           < RENVOI : (A,B)=<ACN>.
         CP          ACNSYS          < EST-CE :SYS ???
         JNE         E20             < NON.
         LR          B,A
         CP          ACNSYS+1        < EST-CE :SYS ???
         JE          E21             < CAS D'UN DEMANDEUR SOUS :SYS.
E20:     EQU         $
<
< TENTATIVE DE CHARGEMENT DE 'GE    ' :
<
         LAD         DEMSGN          < A=@DEMSGN ET W=@BRANCH.
         BSR         AOVL            < TENTATIVE D'OVERLAY.
<
< RETOUR EN ERREUR : C'EST PROBABLEMENT
< !SGN QUI A ECHOUE PRECEDEMMENT ,
< ON VA DONC RENDRE LA MAIN AU CCI :
<
         LAD         MERR
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI.
         LAD         DEMINT          < A=@DEMANDE CCI NON INTERACTIF.
         JMP         E11             < DANS LE CAS DU !GO , ON RETENTE
                                     < LE !SGN , PUIS LE CHARGEMENT
                                     < DU PROCESSEUR 'GE    '.
         PAGE
<
<
<        C A S   D E S   D E M A N D E S   S O U S   : S Y S  :
<
<
<        PHILOSOPHIE :
<                      LA FONCTION DE SAUVEGARDE/RESTAURATION DES
<                    PROCESSEURS EST IMPLANTEES SANS SODOME , ET
<                    NON PAS DANS 'KA' , CAR 'KA' EST LUI-MEME
<                    UN PROCESSEUR , ALORS QUE SODOME EST UN
<                    PROCESSEUR DE BASE DE CMS4 (APPELE
<                    DIRECTEMENT PAR CCI PAR !GE) ; DANS LE CSA
<                    TRES EXCEPTIONNEL D'UN CRASH DU SYSTEME ,
<                    L'ESPACE DES NOMS EST PERDU , ET PAR VOIE DE
<                    CONSEQUENCES LES PROCESSEURS , ET LES
<                    FICHIERS SONT DETRUITS ; PAR CONTRE POUR
<                    LES PROCESSEURS DE BASE DONT LES ADRESSES
<                    DISQUES SONT DES CONSTANTES ABSOLUES DE
<                    CMS4 , IL N'EN EST RIEN ; DONC EN CAS DE
<                    CRASH , IL SUFFIT DE RAPPELER CMS4 DU
<                    DISQUE , ET A L'AIDE DE SODOME (!GE)
<                    RECONSTITUER LES PROCESSEURS (GE,ED,GR,...)
<
<
<
<        FORMAT DES PAQUETS DE CARTES :
<                      IL Y A 33 CARTES PAR PROCESSEUR ;
<                    CHAQUE COLONNE CONTIENT UN OCTET DU
<                    PROCESSEUR SOUS LE FORMAT SUIVANT :
<                    BIT0=0 EN GENERAL ,
<                        =1 SI NUMERO-COLONNE=NUMERO-CARTE (MOD64) ,
<                    BIT1=NUMERO DE L'OCTET MODULO 2 ,
<                    BITS2-9 : OCTET ,
<                    BITS10-15=10 0001 (CODE NUMERIQUE).
<
<
<        SAUVEGARDE ABSOLUE D'UN PROCESSEUR SUR DK :
<                    1- U : REND LE PROCESSEUR RESIDENT ,
<                    2- D : EN MODE 'W' PERMET D'ECRIRE EN
<                           ABSOLU LE PROCESSEUR SUR DK.
<
<
<        RESTAURATION ABSOLUE D'UN PROCESSEUR :
<                    1- D : EN MODE 'R' PERMET DE LIRE EN
<                           ABSOLU LE PROCESSEUR SUR DK ,
<                    2- P : PERMET DE RESTORER LE PROCESSEUR
<                           DANS LE SGN.
<
<
<        SAUVEGARDE ABSOLUE :
<                      DE PLUS , ON PEUT SAUVEGARDER
<                    EN ABSOLU LES DISQUES , A RAISON
<                    DE 4 CARTES PAR SECTEUR.
<
<
<        FORMAT DES CARTES :
<                    COLONNES 1-79 :
<                      BIT0=0 EN GENERAL ,
<                          =1 SI NUMERO-COLONNE=NUMERO-CARTE (MOD.64) ,
<                      BIT1=NUMERO DE L'OCTET MODULO 2 ,
<                      BITS2-9 : OCTET ,
<                      BITS10-15=10 0001 ,
<                    COLONNE 80 :
<                      FIN DES 3 PREMIERES CARTES : 01 00000000 01 0001
<                      FIN DE LA 4EME CARTE :       01 00000000 11 0001
<                      FIN DU DECK :                00 00000000 00 0001.
<
<
E21:     EQU         $
<
< MODIFICATION DE DEMSGN :
<
         LAI         6
         STBY        DEMSGN          < RESTAURATION DE DEMSGN SOUS
                                     < LE MODE 'LOAD SOUS :SYS'.
         LA          AI2
         ADRI        1,A             < A=@MOT DE ITEM2.
         SLLS        1               < A=@OCTET DE ITEM2.
         STA         DEMSGN+1        < DEMSGN TRAVAILLERA SUR ITEM2.
<
< ANALYSE FREUDIENNE DES DESIRS DE L'UTILISATEUR :
< (TRES RECOMMANDE DANS SODOME...)
<
RETDK:   EQU         $               < RETOUR DES OPERATIONS SUR DK.
E25:     EQU         $
         LAD         MCOM
         BSR         APRINT          < ENVOI DU MESSAGE D'INVITATION.
         LAI         1
         STA         DEMIN+2         < MISE DE DEMIN EN LECTURE 1
                                     < CARACTERE A PRIORI.
         LAD         DEMIN
         SVC         0               < ENTRE 1 CARACTERE DE COMMANDE.
         LBY         BUFFER          < A=CARACTERE FRAPPE.
         CPI         "A"             < VALIDATION COMMANDE.
         JL          E27             < ERREUR : COMMANDE NON RECONNUE.
         CPI         "Z"             < VALIDATION COMMANDE.
         JG          E27             < ERREUR COMMANDE NON RECONNUE.
         LR          A,X             < X=COMMANDE DE 'A' A 'Z'.
         BR          &ACOM           < VERS L'EXECUTION SPECIFIQUE ....
<
< TRAITEMENT DES ERREURS :
<
E27:     EQU         $
         LAD         MINC
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR.
         JMP         E21             < VERS LA REINITIALISATION DE
                                     < DEMSGN ET UNE INTERROGATION.
<
< ERREURS D'ASSIGNATION :
<
E70:     EQU         $
         LAD         MASSGN
         JMP         E76             < VERS L'ENVOI DES MESSAGES ERREUR.
<
< ERREUR SGN :
<
E72:     EQU         $
         LAD         MESGN
         JMP         E76             < VERS L'ENVOI MESSAGES ERREUR.
<
< ERREUR DANS LE PAQUET DE CARTES :
<
E74:     EQU         $
         LAD         MPAR
<
< ENVOI DES MESSAGES D'ERREUR :
<
E76:     EQU         $
         LB          APILE
         LR          B,K             < REINITIALISATION DU REGISTRE
                                     < K A PRIORI.
         BSR         APRINT          < ENVOI MESSAGE SPECIFIQUE.
         LAD         MERR
         BSR         APRINT          < ENVOI MESSAGE GENERAL.
         JMP         E21             < VERS LA REINITIALISATION DE
                                     < DEMSGN ET UNE INTERROGATION.
<
<
<        A P P E L   D E   ' G E '  :
<
<
E24:     EQU         $
<
< RAZ DES ITEM1 ET ITEM2 :
<
         LX          NMOTS           < X=NBRE DE MOTS A METTRE A 0.
E500:    EQU         $
         STZ         &AI2            < RAZ ITEM1 & 2.
         JDX         E500
<
< RESTAURATION DE DEMSGN :
<
         LAI         BRANCH-ZERO*2
         STA         DEMSGN+1        < AFIN DE POUVOIR CHARGER
                                     < CORRECTEMENT L'OVERLAY.
         JMP         E20             < VERS L'APPEL DE 'GE    '.
<
<
<        R E T O U R   A U   C C I  :
<
<
E26:     EQU         $
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI.
         JMP         E25             < VERS L'INTERROGATION SI !GO.
         PAGE
<
<
<        P R O C E S S E U R   R E S I D E N T  :
<
<
PRES:    EQU         $
         LYI         -1              < DEMANDE DE RESIDENCE SEULE.
         JMP         E421            < VERS LE CHAGEMENT DU PROCESSEUR.
<
<
<        M O D I F Y   P R O C E S S O R  :
<
<
E420:    EQU         $
         LYI         0               < MEMORISATION D'UNE MODIFICATION
                                     < DE PROCESSEUR DEMANDEE.
         JMP         E421            < VERS LE CHARGEMENT DU PROCESSEUR.
<
<
<        S A V E   P R O C E S S O R  :
<
<
E22:     EQU         $
         LYI         1               < MEMORISATION DU SAVE PROCESSEUR
                                     < DEMANDE.
<
< CHARGEMENT DU PROCESSEUR :
<
E421:    EQU         $
         BSR         ANMP            < DEMANDE DU NOM DU PROCESSEUR
                                     < A SAUVEGARDER.
         LA          BUFFER          < A=NOM DEMANDE.
         LXI         1               < INDEX DU MOT0(ITEM2).
         STA         &AI2            < MISE EN PLACE DES 2 PREMIERS
                                     < CARACTERES DU NOM DU PROCESSEUR.
         LB          AI2
         RBT         16              < RAZ DU BIT D'INDEX.
         ADRI        2,B             < PASSAGE SUR LE MOT1(ITEM2).
         LAD         1,W             < A=@MOT1(BRANCH).
         LXI         3               < 3 MOTS A DEPLACER.
         MOVE                        < GENERATION DU NOM DU PROCESSEUR,
                                     < EN COMPLETANT PAR 4'SPACE''EOT'.
<
< TENTATIVE DE CHARGEMENT :
<
         LAD         DEMSGN
         SVC         0               < ESSAI DE CHARGEMENT DANS ITEM2.
         JNE         E72             < ERREUR DE CHARGEMENT : LE
                                     < PROCESSEUR DEMANDE N'EXISTE
                                     < SUREMENT PAS.
<
< QUE FAIRE DU PROCESSEUR ???
<
         CPZR        Y               < Y=-1,0,+1 SUIVANT LES CAS.
         JL          E21             < Y=-1 : SEULE LA RESIDENCE ...
         JE          E422            < Y=0 : MODIFICATION PROCESSEUR.
<
<        P U N C H   D U   P R O C E S S E U R  :
<
         BSR         APUNR           < PUNCH LA CARTE 'R    '.
         LB          NC              < B=NBRE DE CARACTERES A PUNVHER.
         BSR         APUNCH          < PUNCH LES 33 CARTES DU PROCESSEUR
         BSR         APUNRC          < PUNCH LA CARTE 'R/C   '.
         BR          ASODOM          < OK , RETOUR SUR LE RAZ DES ITEMS.
<
<        M O D I F Y   P R O C E S S O R  :
<
E422:    EQU         $
         LAI         3
         STBY        DEMSGN          < MISE EN PLACE D'UN NVP DE
                                     < DELETE NOM+VALEUR.
         LAD         DEMSGN
         SVC         0               < DELETE LE PROCESSEUR AVANT
                                     < DE LE MODIFIER.
         JNE         E72             < BIZARRE ????
         JMP         E423            < VERS LE TRAITEMENT DES RESTAU-
                                     < RATIONS DES PROCESSEURS.
         PAGE
<
<
<        R E S T A U R A T I O N   P R O C E S S E U R  :
<
<
E23:     EQU         $
         STZ         NUMK            < RAZ NUMERO DE CARTE COURANTE.
         LB          NC              < B=NBRE DE COLONNES A LIRE.
         LYI         2               < INITIALISATION DE L'INDEX
                                     < DE ITEM2 SUR OCTET0(ITEM2).
<
< LECTURE BINAIRE D'UNE CARTE :
<
E50:     EQU         $
         LAD         DEMCR
         SVC         0               < LECTURE BINAIRE 1 CARTE.
         JNE         E70             < LE CR1 N'EST CERTAINEMENT PAS
                                     < ASSIGNE , ERREUR.
         BSR         ACOUNT          < COMPTAGE DE LA CARTE COURANTE.
<
< DECODAGE DE LA CARTE COURANTE :
<
         LXI         -80             < INDEX DES COLONNES.
<
< DECODAGE 1 OCTET :
<
E51:     EQU         $
         LA          &ACARTE         < A=1 COLONNE.
         SLRS        6               < OCTET1(A)=OCTET COURANT.
         XR          X,Y             < X=INDEX COURANT DU PROCESSEUR
                                     < DANS ITEM2.
         STBY        &AI2            < RANGEMENT DE L'OCTET COURANT.
         XR          X,Y             < RESTAURE X=INDEX COLONNE.
         ADRI        1,Y             < PROGRESSION DE L'INDEX DE
                                     < RESTAURATION DU PROCESSEUR.
         SLRS        8               < A=2 BITS DE VALIDATION.
<
< VALIDATION DE L'INFORMATION :
<
         PSR         B
<        ON A ICI :
<                    BIT14(A)=1 SI NUMERO-CARTE=NUMERO-COLONNE ,
<                    BIT15(A)=NUMERO-COLONNE (MOD. 2).
         LR          X,B
         EORR        A,B             < EN EFFET SI LA CARTE EST BONNE ,
                                     < X ET A DOIVENT AVOIR LA
                                     < MEME PARITE.
         TBT         15+16           < TEST DE LA PARITE.
         PLR         B               < RESTAURE B.
         JC          E74             < ERREUR : A ET X SONT DE
                                     < PARITE OPPOSEE !!!
         ADRI        1,K             < RE-EMPILEMENT DE B.
         SLRD        17              < B=1 SI COLONNE DE SEQUENCEMENT.
         LR          X,A
         SB          NUMK
         ADRI        81,A
         JAE         E869            < A=0 : NUMERO-COLONNE=NUMERO CARTE
         LAI         1               < A=1 : NUMERO-COLONNE#NUMERO-CARTE
E869:    EQU         $
         EORR        B,A             < DE FACON A TESTER SIMULTANEMENT
                                     < LE NUMERO DE CARTE PAR RAPPORT
                                     < AU NUMERO DE COLONNE , ET LE
                                     < BIT DE SEQUENCEMENT.
         PLR         B               < RESTAURE B.
         JAE         E74             < ERREUR : MAUVAIS SEQUENCEMENT ...
         JIX         E51             < PASSAGE A LA COLONE SUIVANTE.
         ADRI        -80,B           < DECOMPTE DES OCTETS A RESTAURER.
         CPZR        B               < EST-CE FINI ???
         JNE         E50             < NON , LECTURE DE LA CARTE
                                     < SUIVANTE.
<
<        R E S T A U R A T I O N   D U   P R O C E S S E U R  :
<
PDK:     EQU         $
<
< RESTAURATION DU PROCESSEUR :
<
E423:    EQU         $               < ENTRY 'MODIFY PROCESSOR'.
         LAD         MNOM
         BSR         APRINT          < ENVOI DE 'NOM>'.
         LAI         2
         STA         DEMOUT+2        < ON VA ECRIRE 2 CARACTERES.
         LA          DEMSGN+1        < RECUPERATION @OCTET DE ITEM2.
         STA         DEMOUT+1        < ET MISE DANS DEMOUT.
         LAD         DEMOUT
         SVC         0               < SORTIE DES 2 PREMIERS CARACTERES
                                     < DU NOM DU PROCESSEUR.
<
<        M O D I F I C A T I O N   D U   P R O C E S S E U R  ? ? ?
<
E411:    EQU         $
         BSR         ANMP            < ON NE CHANGERA PAS LE NOM SI
                                     < LA REPONSE EST VIDE.
         LBY         BUFFER          < A=1CARACTERE DE LA REPONSE.
<
<        COMMANDES RECONNUES :
<                    <EOT> : FAIRE UN RETOUR AU CCI , PUIS RECOMMENCER ,
<                    <R/C> : NE PAS CHANGER LE NOM ,
<                    XY : DONNER LE NOM XY AU PROCESSEUR.
<
         CPI         '04             < EST-CE 'EOT' ???
         JNE         E410            < NON.
<
< RETOUR AU CCI :
<
         LAD         DEMCCI
         SVC         0               < OUI , RETOUR AU CCI.
         JMP         E411            < ET NOUVELLE INTERROGATION
                                     < SI !GO.
<
< DEMANDE DE CHANGEMENT DE NOM ???
<
E410:    EQU         $
         CPI         '0D             < EST-CE R/C ???
         JE          E52             < OUI , NOM INCHANGE.
         LA          BUFFER          < SI LA REPONSE N'EST PAS VIDE ,
                                     < ELLE CONSTITUE LE NOUVAEU
                                     < NOM DU PROCESSEUR.
         LXI         1               < INDEX DU MOT0(ITEM2).
         STA         &AI2            < CHANGEMENT DU NOM.
E52:     EQU         $
         LAI         4               < NVP='STORE SOUS L'ACN'.
         STBY        DEMSGN          < MODIFICATION DU NVP DE DEMSGN.
         LAD         DEMSGN
         SVC         0               < RESTAURATION DU PROCESSEUR.
         JNE         E72             < RETOUR EN ERREUR : PEUT-ETRE
                                     < EXISTE-T'IL DEJA ???
         BR          ASODOM          < OK , RETOUR SUR LE RAZ DES ITEMS.
         PAGE
<
<
<        S A U V E G A R D E   A B S O L U E   D E S   D I S Q U E S  :
<
<
<
< RETOURS EN ERREUR :
<
E94:     EQU         $
         BR          AE27            < VERS LA SORTIE EN ERREUR.
<
< E NTRY DE SAUVEGARDE :
<
E90:     EQU         $
<
< DEMANDE DU NUMERO DE DISQUE DESIRE :
<
         LAD         MDK
         BSR         APRINT          < ENVOI D'UN MESSAGE D'INVITATION.
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE DISQUE.
         LBY         BUFFER          < RECUPERATION DU CARACTERE ENTRE.
         ADRI        -'30,A          < CONVERSION.
         JALE        E94             < ERREUR.
         CPI         3               < VALIDATION DU NUMERO DE DK.
         JG          E94             < ERREUR.
         LR          A,X             < A=X=NUMERO DE DK (1/2/3).
         IF          ORDI-"T",XWOR%,,XWOR%
<
<        INITIALISATION DE LA CARTE BOOTSTRAP :
<
         LBY         &T1             < ACCES A L'ADRESSE DISQUE.
         STBY        LBOOT+WDK       < PROGRAMME CANAL D'ECRITURE DK.
         STBY        LBOOT+TDK       < PROGRAMME CANAL D'ETAT DK.
         LBY         &T2
         STBY        LBOOT+OCDK      < ADRESSE DU SOUS-NIVEAU DK.
XWOR%:   VAL         0
<
< MAJ DES DEMANDES D'ACCES AU DK :
<
         LR          X,A             < A=NUMERO DU DK.
         ADRI        NSPDK1-1,A      < A=NSP DU DK DEMANDE.
         OR          NVPDK           < GENERATION DE NVP=9.
         STA         CCINSP+1        < MAJ DE LA DEMANDE D'ASSIGNATION
                                     < DU NVP=9 AU DK.
<
< ACCES A L'ADRESSE DU 1ER SECTEUR :
<
         LAD         MAS
         BSR         APRINT          < MESSAGE D'INVITATION.
         IC          DEMIN+2
         IC          DEMIN+2
         BSR         ACTTE           < LECTURE DE 4 OCTETS.
         DC          DEMIN+2
         DC          DEMIN+2         < REMISE DE DEMIN A 1 OCTET.
         LBY         BUFFER          < TEST DU 1ER OCTET DE LA REPONSE.
         CPI         '0D             < EST-CE UN R/C ???
         JE          E400            < OUI , L'@SECTEUR RESTE INCHANGEE.
         CPI         '04             < EST-CE UN 'EOT' ???
         JE          E400            < OUI , L'@SECTEUR RESTE INCHANGEE.
         CPI         "+"             < EST-CE UNE DEMANDE D'INCRE-
                                     < MENTATION AUTOMATIQUE ???
         JNE         E401            < NON , ON ADMET QUE C'EST UNE
                                     < CONSTANTE HEXADECIMALE.
<
< INCREMENTATION AUTOMATIQUE :
<
         LA          DEMDK+3         < ACCES A L'@SECTEUR COURANTE.
         ADRI        16,A            < ON FAIT +16 SECTEURS , SOIT
                                     < +2 K MOTS.
         STA         DEMDK+3         < MAJ DE L'@SECTEUR COURANTE.
         JMP         E405            < VERS LA VALIDATION DE L'@SECTEUR
                                     < COURANTE.
<
< CAS DES ADRESSES PRECISEES :
<
E401:    EQU         $
         LXI         3               < POUR CONVERTIR 3+1 OCTETS.
         BSR         ACONV           < CONVERSION DANS B DE L'@SECTEUR
                                     < PRESUMEE.
         STB         DEMDK+3         < MAJ DE LA DEMANDE DE LECTURE DK.
         IF          ORDI-"T",XWOR%,,XWOR%
         STB         LBOOT+WDK+3     < MAJ DU PROGRAMME CANAL DK.
XWOR%:   VAL         0
<
< VALIDATION DE L'@SECTEUR COURANT :
<
E400:    EQU         $
         LA          DEMDK+3         < A=@SECTEUR COURANT.
E405:    EQU         $               < ENTRY 'INCREMENTATION AUTO'.
         IF          ORDI-"T",XWOR%,,XWOR%
         JAL         E94             < ERREUR.
         CP          MAXSEC
         JGE         E94             < ERREUR.
XWOR%:   VAL         0
<
< CHOIX DE L'ACTION A ENTREPRENDRE :
<
         LAD         MQUOI
         BSR         APRINT          < ENVOI D'UN MESSAGE D'INVITATION
                                     < VERS L'UTILISATEUR '>'.
         LAD         DEMIN
         SVC         0               < ENTREE DE LA REPONSE SUR 1 OCTET.
         LBY         BUFFER          < TEST DE LA REPONSE.
<
< LISTE DES COMMANDES RECONNUES :
<
<        1- P : PUNCH NK MOTS SUR CARTES ,
<        2- R : LECTURE DE 1/16 SECTEURS (CODN) SUR LE DISQUE ,
<        3- W : ECRITURE DE 1/1L SECTEURS (CODN) SUR LE DISUQE.
<                    NOTA : LA COMMANDE 'T' PERMET DE CHANGER
<                    CODN (NBRE DE SECTEURS ECHANGES) ; SA VALEUR
<                    IMPLICITE EST DE 16 SECTEURS.
         IF          ORDI-"T",XWOR%,,XWOR%
<        4- S : RESTAURATION STAND-ALONE DES PROCESSEURS DE BASE.
<
         CPI         "S"             < EST-CE UN APPEL STAND-ALONE ???
         JE          E800            < OUI - ALLONS Y ...
XWOR%:   VAL         0
         CPI         "P"             < EST-CE UNE DEMANDE DE PUNCH ???
         JNE         E402            < NON ESSAYONS R/W.
<
<
<        D E M A N D E   D E   P U N C H  :
<
<
         LA          NVPDK
         STA         DEMDK           < REINITIALISATION DE DEMDK
                                     < AVEC UNE LECTURE SUR NVP=9.
         LA          COD1
         STA         DEMDK+2         < REINITIALISATION DU COMPTE
                                     < D'OCTETS DE DEMDK SUR 1 SECTEUR.
<
< RECUPERATION DU NBRE DE K DEMANDE :
<
         LAD         MKM
         BSR         APRINT          < MESSAGE D'INVITATION.
         BSR         ACTTE           < LECTURE DE 2 OCTETS.
         LXI         1               < AFIN DE CONVERTIR 1+1 OCTETS.
         BSR         ACONV           < CONVERSION HEXADECIMALE.
         SWBR        B,A             < CADRAGE A DROITE DANS A DU
                                     < NBRE DE K A SAUVEGARDER.
         SLLS        3               < A=NBRE DE SECTEURS A SAUVEGARDER.
         STA         NSECT           < INITIALISATION DE NSECT.
<
< ASSIGNATION DU NVP=9 AU DK :
<
         LAD         CCINSP
         BSR         ASVC            < ENVOI DE LA DEMANDE DE CONNEXION
                                     < DIRECTE NVP-->NSP.
<
< SAUVEGARDE DES SECTEURS DEMANDES :
<
E103:    EQU         $
<
< LECTURE 1 SECTEUR :
<
         LAD         DEMDK
         BSR         ASVC            < LECTURE 1 SECTEUR.
         JNE         E406            < ARRET SI ERREUR (SUREMENT
                                     < UNE @SECTEUR INEXISTANTE).
<
< PUNCH 1 SECTEUR :
<
         LB          NCS             < B=NBRE D'OCTETS SUR 4 CARTES.
         LXI         2               < INITIALISATION DE L'INDEX ITEM2.
<
< PUNCH 1 CARTE :
<
E100:    EQU         $
         LYI         79
         BSR         APCH1           < PUNCH DES 79 PREMIERES COLONNES
                                     < D'UNE CARTE.
         LAI         '11             < A PRIORI DERNIERE COLONNE.
         ADRI        -1,B            < DECOMPTE IMMEDIAT DE LA DERNIERE
                                     < COLONNE.
         CPZR        B               < EST-ON SUR UNE 4EME CARTE ????
         JNE         E101            < NON.
         LAI         '31             < OUI : INDICATEUR FIN DE 4 CARTES.
E101:    EQU         $
         SBT         1               < BIT1=1 (NUMERO D'OCTET MODULO 4).
         BSR         APCHK           < PUNCH DE LA DERNIERE COLONNE
                                     < ET TEMPORISATION DE LA CARTE.
         CPZR        B
         JNE         E100            < VERS LE PUNCH DE LA CARTE
                                     < SUIVANTE D'UN PAQUET DE 4.
<
< PASSAGE AU SECTEUR SUIVANT :
<
         IC          DEMDK+3         < PROGRESSION DE L'ADRESSE
                                     < SECTEUR.
         DC          NSECT           < DECREMENTATION DU NBRE DE
                                     < SECTEURS RESTANT A LIRE.
         JNE         E103            < VERS LA LECTURE SECTEUR SUIVANT.
<
< PUNCH DE LA DERNIERE CARTE D'UN DECK DE SAUVEGARDE :
<
E406:    EQU         $               < ARRET SUR ERREUR DK.
         LXI         79
E105:    EQU         $
         STZ         &AI2            < NETTOYAGE ITEM2.
         JDX         E105
         LYI         79
         BSR         APCH1           < PUNCH LES 79 PREMIERES
                                     < COLONNES DE LA DERNIERE CARTE.
         LAI         1               < LA DERNIERE COLONNE EST VIERGE.
         BSR         APCHK           < PUNCH DERNIERE COLONNE
                                     < ET TEMPORISATION DE LA CARTE.
<
< RESTAURATION DES ASSIGNATIONS :
<
E403:    EQU         $               < RETOUR DE L'OPTION R/W.
         LAI         NSPNXS
         OR          NVPDK           < GENERATION DE NVP=9.
         STA         CCINSP+1
         LAD         CCINSP
         BSR         ASVC            < REASSIGNATION DU NVP=9 AU HDLNXS.
         BR          ARETDK          < VERS LE RETOUR DES DK.
<
<
<        D E M A N D E   R E A D / W R I T E  :
<
<
E402:    EQU         $
         CPI         "R"             < EST-CE READ ???
         JE          E404            < OUI , OK.
         CPI         "W"             < EST-CE WRITE ???
         JNE         E94             < NON , ERREUR ....
E404:    EQU         $
         ANDI        1               < RECUPERATION DU BIT15 :
                                     < A=0 POUR READ ("R"='52)  ,
                                     < A=1 POUR WRITE ("W"='57).
         SLLS        1               < OCTET1(A)=0 POUR 'R' ,
                                     < OCTET1(A)=2 POUR "W".
         OR          NVPDK           < GENERATION D'UNE DEMANDE DE
                                     < LECTURE(R)/ECRITURE(W).
                                     < SUR LE NVP=9.
         STA         DEMDK           < MAJ DE DEMDK.
         LA          CODN
         STA         DEMDK+2         < MAJ DE DEMDK POUR ACCES A
                                     < 1/16 SECTEURS (128/2K MOTS).
<
< ASSIGNATION AU NVP=9 :
<
         LAD         CCINSP
         SVC         0               < ENVOI DE LA DEMANDE DE CONNEXION
                                     < DIRECTE NVP-->NSP.
<
< LECTURE/ECRITURE DE 1/16 SECTEURS :
<
         LAD         DEMDK
         SVC         0               < ACCES AU DISUQUE.
         JMP         E403            < VERS LA RESTAURATION DES
                                     < ASSIGNATIONS EN FIN D'OPERATION.
<
<
<        T A I L L E   D ' U N   E N R E G I S T R E M E N T  :
<
<
SSIZE:   EQU         $
         LAD         M1
         BSR         APRINT          < DEMANDE '1 SECTEUR ???'
         LAD         DEMIN
         SVC         0               < ENTREE D'1 CARACTERE REPONSE.
         LBY         BUFFER          < A=CARACTERE REPONSE.
         LB          COD1            < B=1 SECTEUR A PRIORI.
         CPI         "O"
         JE          SSIZE1          < OUI , 1 SECTEUR ....
         CPI         "N"
         JNE         SSIZE           < RIEN COMPRIS ....
         LAD         M16
         BSR         APRINT          < BON ALORS C'EST 1L SECTEURS ...
         LB          COD16           < B=16 SECTEURS.
SSIZE1:  EQU         $
         STB         CODN            < MAJ DU CODN COURANT ...
         BR          ARETDK          < ET C'EST TOUT ...
         PAGE
         IF          ORDI-"T",XWOR%,,XWOR%
<
<
<        R E S T A U R A T I O N   S T A N D - A L O N E   D E S
<        P R O C E S S E U R S   D E   B A S E   D E   C M S 4 :
<
<
E800:    EQU         $
         LB          &ABOOT          < SAVE LE 'LRP C' QUI EST ECRASE
                                     < LORS D'UN RUN DU BOOTSTRAP ...
         LA          ABOOT           < A=@TRANSLATABLE DU MODULE
                                     < DE RESTAURATION STAND-ALONE.
         WORD        '1EC5           < VERS L'EXECUTION EN MODE MAITRE
                                     < DU BOOTSTRAP ...
         STB         &ABOOT          < RESTAURE LE 'LRP C' DU BOOT.
         BR          ARETDK          < APRES AVOIR BLOQUE LE SYSTEME,
                                     < ON FAIT UN RETOUR A L'ESCLAVE.
XWOR%:   VAL         0
         PAGE
<
<
<        V A L I D A T I O N   D E   L ' I M P L A N T A T I O N  :
<
<
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI
                                     < MAUVAISE IMPLANTATION.
         END         GOMORE



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.