IF          VIRE,X100,,X100
NMPROC:  VAL         "VI"            < NOM DU PROCESSEUR.
         IDP         "VI - RELEASE 01/06/1979"
X100:    VAL         0
         IF          VIRE,,X100,
NMPROC:  VAL         "RE"            < NOM DU PROCESSEUR.
         IDP         "RE - RELEASE 01/06/1979"
X100:    VAL         0
         IDP         "JOHN F. COLONNA"
DEBUG:   VAL         VIRE            < LE DEBUG N'AURA LIEU QUE
                                     < SOUS LA VERSION 'RE' (EDITION
                                     < DES ADRESSES LUES SUR LES
                                     < BANDES MAGNETOS.)
VERSIO:  VAL         1               < NUMERO DE LA VERSION DU
                                     < SYSTEME DE TELECOMMANDE DES
                                     < MAGNETOSCOPES (0 EST LE 1ER).
         EOT         #SIP DEF PROCESSEUR#
         PROG
NOEUD1:  EQU         BRANCH
         WORD        VIDEO           < ADRESSE DE DEPART DU PROCESSEUR.
         WORD        0
PVIDEO:  EQU         $               < P DE LANCEMENT DU PROCESSEUR
                                     < VIDEO ; A NOTER : P='12 !!!!
         LRP         L
         BR          -2,L            < ENTREE DANS LE PROCESSEUR.
         EOT         #SIP DEFINITION ITEM#
XNOM:    VAL         -LNOM/2+LTN-2   < DEPLACEMENT DU NOM DANS L'EN-TETE.
         IF          VIRE,X100,,X100
ITEM1:   EQU         ZERO+PILE-LTNI
X100:    VAL         0
         PAGE
<
<
<        C O R P S   I T E M   D E   S E R V I C E  :
<
<
SERASE:  VAL         0               < SERASE=0 : EFFACER L'ECRAN APRES,
                                     <       #0 : NE PAS EFFACER.
SDEBS:   VAL         1               < ADRESSE DE DEBUT DE SEQUENCE.
                                     < SI SDEBS<0 : PAS DE POSITION-
                                     < NEMENT DE DEBUT DE SEQUENCE.
SFINS:   VAL         2               < ADRESSE DE FIN DE SEQUENCE.
SMOVE:   VAL         3               < QUE FAIRE DE L'ITEM VIDEO ???
                                     < LES BITS SUIVANTS L'INDIQUENT :
                                     < (A NOTER QUE SI SMOVE=0 , IL
                                     < S'AGIT D'UN SURCH & PLAY).
SPLAY:   VAL         0               < PLAY EN CONTINU.
SURCH:   VAL         1               < POSITIONNEMENT , PUIS STOP.
SARRET:  VAL         2               < STOP.
LIS:     VAL         8               < LONGUEUR EN OCTETS DU CORPS
                                     < D'UN ITEM VIDEO.
         IF          VIRE,,X100,
         PAGE
<
<
<        D E F I N I T I O N   D E   L A   B A I E
<        D E   C O M M U T A T I O N  :
<
<
NIN:     VAL         20              < NOMBRE D'ENTREES DE LA BAIE :
                                     < A T T E N T I O N  : LES 'NMAG'
                                     < PREMIERES SONT RESERVEES AUX
                                     < 'NMAG' MAGNETOSCOPES DU
                                     < SYSTEME ...
NOUT:    VAL         8               < NOMBRE DE SORTIES DE LA BAIE.
<
< IMAGE NON PARTAGEABLE DE LA MEMOIRE DE COMMUTATION :
<
NMEMB:   EQU         $
         ASCI        ":COM"
         BYTE        '1F;'04         < NOM DE L'IMAGE SUR DISQUE DE
                                     < LA MEMOIRE DE COMMUTATION.
MEMB:    EQU         $
         DO          NOUT
         WORD        -1              < PAS DE COMMUTATION INITIALE.
LMEMB:   VAL         $-NMEMB*2
<
<        FORMAT DE LA MEMOIRE :
<
<                    LES ADRESSES SONT LES NUMEROS DE SORTIES ,
<                    LES CONTENUS SONT LES ENTREES CONNCTEES AUX SORTIES
<
<
<        NOTA :
<                      UNE MEME ENTREE PEUT ETRE CONNECTEE A
<                    PLUSIEURS SORTIES SIMULTANEMENT ...
X100:    VAL         0
         PAGE
<
<
<        T A B L E   N O N   P A T A G E A B L E
<        D ' O C C U P A T I O N   D E S
<                    M A G N E T O S C O P E S  :
<
<
NMAG:    VAL         9               < NBRE DE MAGNETOSCOPES.
         TABLE
MAGNET:  EQU         $
         ASCI        ":MAG"
         BYTE        '1F;'04         < NOM-SGN DE LA TABLE (LE CODE
                                     < '1F-US , EST DESTINE A RENDRE
                                     < LE NOM INACCESSIBLE...).
<
<        P I L E   L R U   D ' U T I L I S A T I O N  :
<
<        FORMAT D'UNE ENTREE :
<                    BIT0=0 : OK ,
<                         =1 : MAGNETOSCOPE HORS-SERVICE ,
<                    BITS1-7 : NUMERO DU MAGNETOSCOPE ,
<                              (DE 0 A NMAG-1)
<                    BIT8=1 (INUTILISE) ,
<                    BITS9-15 : IDENTIFICATEUR (ID) DE L'ESCLAVE
<                               TRAVAILLANT SUR CE MAGNETOSCOPE.
<                               ('FF A L'INITIALISATION)
<                      LA PILE LRU EST A ACCES ASSOCIATIF.
<
LRU:     EQU         $
         DO          NMAG
         BYTE        $-LRU;'FF       < PAS D'ID INITIALEMENT.
<
<        N O M   D E S   B A N D E S   M O N T E E S  :
<
<        FORMAT :
<                      CETTE TABLE CONTIENT POUR CHAQUE
<                    MAGNETOSCOPE LE NOM DE LA SEQUENCE (ET
<                    DONC LE NOM DE LA BANDE) EN VISIONNAGE.
<                      ELLE EST INDEXEE PAR LE NUMERO DE MAGNETOSCOPE.
<
TAPES:   EQU         $
         DO          NMAG
         DZS         LNOM/2
LMAG:    VAL         $-MAGNET*2      < LONGUEUR OCTET DE LA TABLE.
         IF          VIRE,,X100,
         PAGE
<
<
<        F A U X   I T E M 1  :
<
<
ITEM1:   DZS         LIS/2+LTN       < DE QUOI CONTENIR UNE FAUSSE
                                     < E-TETE ET UN CORPS D'ITEM
                                     < DE SERVICE DE TYPE VIDEO.
X100:    VAL         0
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
<        B U F F E R S   E T   M E S S A G E S  :
<
BUFFER:  WORD        0
         IF          VIRE,,X100,
         WORD        0               < SUITE DU BUFFER D'ENTREE.
X100:    VAL         0
BUFTV:   WORD        0               < BUFFER DE COMMANDE DE LA BAIE
                                     < ET DES MAGNETOSCOPES.
MACN:    BYTE        5;'6D
         ASCI        "!ACN"
MITEM:   BYTE        6;'6D
         ASCI        "!ITEM "
MAGER:   BYTE        13;'6D
         ASCI        "MAGNETOSCOPE"
MOUNT:   ASCI        " MXX"          < NUMERO DE MAGNETOSCOPE.
MREL10:  ASCI        "!ASSIGN A="
         BYTE        "S";'04
MREL11:  ASCI        "!ASSIGN B="
         BYTE        "S";'04
MCU2:    ASCI        "!ASSIGN A=CU"
         BYTE        "2";'04
MCU3:    ASCI        "!ASSIGN B=CU"
         BYTE        "3";'04
MTY1:    ASCI        "!ASSIGN B="
<        ASCI        "TY"            < NORMALEMENT......
         BYTE        "O";'04
         BYTE        "1";'04
         IF          VIRE,,X100,
MIN:     BYTE        4;" "
         ASCI        "IN= "
MOUT:    BYTE        5;" "
         ASCI        "OUT="
MINT:    BYTE        2;'6D;">";0
MERR:    BYTE        3;'6D
         ASCI        "??"
MAGN:    BYTE        7;"A"
         ASCI        "GNETO="
MORDRE:  BYTE        7;" "
         ASCI        "ORDRE="
MLIST:   BYTE        8;'6D
         ASCI        "XX-->YY "
X100:    VAL         0
<
<        D E M A N D E S   A   C M S 4  :
<
DEMOUT:  WORD        '0202           < DEMANDE DE SORTIE SUR NSPOUT.
         WORD        0               < @OCTET DU BUFFER.
         WORD        0               < LONGUEUR OCTET DU MESSAGE.
         IF          VIRE,,X100,
DEML:    WORD        '0202           < EDITION DE LA MEMOIRE DE
                                     < COMMUTATION VIDEO.
         WORD        MLIST-ZERO*2+1
         WORD        8
DEMIN:   WORD        '0101           < DEMANDE D'ENTREE AVEC ECHO.
         WORD        BUFFER-ZERO*2
         WORD        0               < LE COMPTE D'OCTETS DEMANDES
                                     < EST VARIABLE.
DEMLB:   WORD        '0502           < LOAD MEMOIRE DE COMMUTATION.
         WORD        NMEMB-ZERO*2
         WORD        LMEMB
         WORD        -1
DEMSB:   WORD        '0402           < STORE MEMOIRE DE COMMUTATION.
         WORD        NMEMB-ZERO*2
         WORD        LMEMB
         WORD        -1
DEMDB:   WORD        '0302           < DELETE MEMOIRE DE COMMUTATION.
         WORD        NMEMB-ZERO*2
         WORD        LMEMB
         WORD        -1
DEMMEM:  WORD        '0004           < DEMANDE D'ALLOCATION 1K.
RELMEM:  WORD        '0004           < DEMANDE D'ALLOCATION 4K.
         WORD        '800            < 1K MOTS='800 OCTETS.
         WORD        '2000           < 4K MOTS='2000 OCTETS.
X100:    VAL         0
DEMERA:  WORD        '0205           < EFFACEMENT DE L'ECRAN.
DEMSGN:  WORD        '0402           < ACCES AU SGN , INITIALISE
                                     < STORE DE 'VI' SUR LUI-MEME.
         WORD        NOEUD1-ZERO*2   < @BRANCHE D'OVERLAY (OCTET).
         WORD        ZERO-NOEUD1+PILE-LTNI-LTNI*2
         WORD        -1
DEMTYO:  WORD        '0B02           < SORTIE MESSAGE SUR TY1.
         WORD        ITEM1-ZERO+XNOM*2
         WORD        0               < LONGUEUR DU NOM DE BANDE.
DEMTYM:  WORD        '0B02           < DEMANDE DE MONTAGE BANDE (TY1).
         WORD        MOUNT-ZERO*2
         WORD        4
DEMTYI:  WORD        '0B00           < LECTURE REPONSE OPERATEUR TY1.
         WORD        BUFFER-ZERO*2
         WORD        1               < 1 CARACTERE.
DEMMAG:  WORD        '0502           < DEMANDE D'ACCES AU SGN POUR
                                     < LA TABLE D'OCCUPATION DES
                                     < MAGNETOSCOPES.
         WORD        MAGNET-ZERO*2
         WORD        LMAG
         WORD        -1
CLEAR:   WORD        'AC00           < FONCTION DE CLEAR LES BASCULES.
DCLEAR:  WORD        '0B02           < CLEAR LA BAIE.
         WORD        CLEAR-ZERO*2
         WORD        2
DEMBAI:  WORD        '0B02           < ECRITURE SUR LA BAIE DE COMMU-
                                     < TATION SANS IT.
         WORD        BUFTV-ZERO*2
         WORD        2
DEMBAT:  WORD        '0B08           < LECTURE SUR LA BAIE AVEC IT.
         WORD        BUFTV-ZERO*2
         WORD        2
DEMTV:   WORD        '0A02           < TELECOMMANDE DES MAGNETOSCOPES.
         WORD        BUFTV-ZERO*2
         WORD        2
CCI:     WORD        '0001           < ACCES AU CCI INTERACTIF.
DEMCCI:  EQU         CCI             < PRUDENT ???
SLEEP:   WORD        '0005           < DEMANDE DE MISE EN SOMMEIL.
         WORD        0
         WORD        0               < DUREE EN SECONDES.
COMAND:  WORD        '0002           < ACCES AU CCI NON INTERACTIF.
         WORD        0               < @OCTET DE LA CARTE.
         WORD        80              < LONGUEUR D'UNE 'CARTE'.
<
<        C O N S T A N T E S  :
<
EAO:     ASCI        ":EAO"          < ACN DU SYSTEME D'ENSEIGNEMENT.
SYS:     ASCI        ":SYS"
F3:      WORD        0               < POUR SAUVEGARDE DU REGISTRE X.
C10:     WORD        10              < POUR LES CONVERSIONS DECIMALES.
C16:     WORD        16              < CONVERSION BCD-->ASCI.
         IF          VIRE,X100,,X100
NCALL:   WORD        $+1,X;"GE";"EI" < NOMS DES BRANCHES D'OVERLAY
                                     < DE RETOUR DE 'VI'.
X100:    VAL         0
         IF          VIRE,,X100,
NGE:     WORD        "GE"
COMOUT:  WORD        '8800           < ORDRE D'ENVOI UNE ADRESSE
                                     < MEMOIRE A LA BAIE DE COMUT.
NUMOUT:  WORD        0               < NUMERO DE LA SORTIE COURANTE
                                     < DEMANDEE SUR LA BAIE.
X100:    VAL         0
<
<        C O N S T A N T E S   M A G N E T O S C O P E S  :
<
VOISIN:  VAL         '40             < CONSTANTE POUR LES TESTS
                                     < DE VOISINNAGE DE DEBUT ET
                                     < DE FIN DE SEQUENCE.
NUMAG:   WORD        0               < NUMERO DU MAGNETOSCOPE ALLOUE
                                     < A CET ESCLAVE (DE 0 A NMAG-1).
PARITE:  WORD        0               < PARITE DES ORDRES AU COUPLEUR
                                     < DES MAGNETOSCOPES :
                                     < LE BIT1 EST A 1 SI LE NBRE DE
                                     < BITS DE NUMAG A 1 EST IMPAIR.
ADRES:   WORD        0               < ADRESSE COURANTE SUR LA BANDE
                                     < MAGNETOSCOPE.
DEMCU:   WORD        '0A00           < POUR REINITIALISER LE 1ER MOT
                                     < DE LA DEMANDE DEMTV.
TO:      EQU         $               < TABLE DES ORDRES MAGNETOS.
PLAY:    BYTE        '81;0           < ORDRE PLAY MAGNETOSCOPES.
RWD:     BYTE        '82;0           < ORDRE REWIND MAGNETOS.
FWD:     BYTE        'A3;0           < ORDRE FORWARD MAGNETOS.
STOP:    BYTE        '84;0           < ORDRE STOP MAGNETOS.
RECORD:  BYTE        'A5;0           < ORDRE ENREGISTREMENT MAGNETOS.
ADC:     BYTE        'A6;0           < DEMANDE DE L'ADRESSE COURANTE
                                     < SUR LA BANDE.
RAZADC:  BYTE        '87;0           < RAZ L'ADRESSE COURANTE SUR
                                     < LE MAGNETOSCOPE.
NORDRE:  VAL         $-TO            < NBRE D'ORDRES RECONNUS.
MBF00:   WORD        'BF00           < RAZ DU BIT1 ET DES BITS8-15.
DECOMO:  WORD        '0900           < MASQUE INVERSION DES BITS 4 & 7.
         IF          VERSIO-0,X200,,X200
DUREE:   WORD        0               < CONTIENT LE TEMPS RESTANT AVANT
                                     < UN STOP A PRIORI D'UN MAGNETO.
                                     < LORS D'UNE RECHERCHE RAPIDE.
CORECT:  WORD        0               < CORRECTION A APPORTER AUX
                                     < ADRESSES LUES SUR LA BANDE
                                     < MAGNETO , FONCTION DU SENS
                                     < DE DEFILEMENT :
                                     < CORECT=0 : MARCHE AVANT ,
                                     < CORECT=-'20 : MARCHE ARRIERE.
X200:    VAL         0
         IF          VIRE,X100,,X100
         IF          VERSIO-1,X200,,X200
LIMIT:   WORD        4               < NBRE MAX DE CHANGEMENTS DE
                                     < SENS DU TYPE FWD/RWD OU RWD/FWD.
GAMMA:   WORD        '14             < CONSTANTE SERVANT AU CALCUL
                                     < DE LA TRANSLATION DE L'ADRESSE
                                     < CIBLE LORS D'UN POSITIONNEMENT
                                     < DE BANDE.
ORDREP:  WORD        0               < CONTIENT L'ORDRE PRECEDENT
                                     < ENVOYE AU MAGNETO.
X200:    VAL         0
X100:    VAL         0
<
<        A D R E S S E S   D E   T A B L E S  :
<
APILE:   WORD        PILE-1          < POUR INITIALISER K.
         IF          VIRE,,X100,
STACK:   DZS         6               < PILE DE TRAVAIL DANS 1K MOTS.
X100:    VAL         0
AN1:     WORD        NOEUD1          < ADRESSE DE LA BARNCHE D'OVERLAY.
AI1:     WORD        ITEM1           < ADRESSE EN-TETE ITEM1.
AKI1:    WORD        ITEM1+LTN,X     < RELAI VERS LE CORPS DE L'ITEM1.
ALRU:    WORD        LRU             < ADRESSE DE LA PILE LRU.
ALRUA:   WORD        LRU+NMAG,X      < PARCOURS ASCENDANT DE LA LRU.
ALRUD:   WORD        LRU-1,X         < PARCOURS DESCENDANT DE LA LRU.
ATAPES:  WORD        TAPES           < ADRESSE DE LA LISTE DES NOMS
                                     < DE BANDES.
NOMTAP:  WORD        0               < RELAI COURANT VERS LE NOM DE
                                     < LA BANDE ASSOCIEE AU MAGNETOS-
                                     < COPE COURANT.
NOMSEQ:  WORD        ITEM1+XNOM,X    < RELAI VERS LE NOM DE LA
                                     < SEQUENCE COURANTE.
ATO:     WORD        TO-1,X          < RELAI VERS LES ORDRES MAGNETO.
         IF          VIRE,,X100,
AREP:    WORD        BUFFER,X        < RELAI D'ACCES AUX REPONSES.
AMEMB:   WORD        MEMB,X          < RELAI D'ACCES A LA MEMOIRE
                                     < DE COMMUTATION.
AMLIST:  WORD        MLIST,X         < POUR GENERER L'EDITION DE LA
                                     < MEMOIRE DE COMMUTATION.
X100:    VAL         0
<
<        R E L A I S   D E S   R O U T I N E S  :
<
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
APRINT:  WORD        PRINT           < EMISSION D'UN MESSAGE.
ACALCI:  WORD        CALCCI          < APPEL CCI NON INTERACTIF.
AMAGS:   WORD        MAGS            < ACCES AU SGN POUR LA LRU.
ARADC:   WORD        RADC            < RECUPERATION DE L'ADRESSE DE
                                     < LA BANDE SUR MAGNETOSCOPE.
AORDRE:  WORD        ORDRE           < ENVOI D'1N ORDRE AU COUPLEUR
                                     < MAGNETOSCOPE.
ASTOP:   WORD        RSTOP           < STOP MAGNETO. ET TEMPO 4 SECONDES
ATEMPO:  WORD        TEMPO           < MISE EN ATTENTE DU PROCESSEUR.
ACOMUT:  WORD        COMUT           < ACTION SUR LA BAIE.
ABORT:   WORD        PVIDEO          < 'PRESC' A PRIORI.
ABORTV:  WORD        HALT            < 'PRESC' LORS DE LA DIFFUSION
                                     < DES SEQUENCES AUDIO-VISUELLES.
AERR:    WORD        ERREUR          < CAS DES ERREURS D'EXECUTION.
AE422:   WORD        E422            < ABORT ESCLAVE.
         IF          VIRE,,X100,
AINTER:  WORD        INTER           < MODULE D'INTERROGATION ESCLAVE.
AGOGE:   WORD        E10             < MODULE DE RETOUR A 'GE'.
AHEX:    WORD        HEX             < ROUTINE DE CONVERSION HEXA
                                     < EN BINAIRE.
ADEC:    WORD        DEC             < CONVERSION DECIMALE 2 CHIFFRES.
ARNMAG:  WORD        RNMAG           < ROUTINE DE CALCUL D'UN NUMERO
                                     < D'ENTREE ET DE SA PPARITE.
X100:    VAL         0
<
<        E D I T I O N   A D R E S S E   C O U R A N T E  :
<
ABADC:   WORD        BADC+1,X        < POUR CONVERSION ASCI DE L'ADRESSE
BADC:    BYTE        5;'6D
         ASCI        " XYZ"          < ADRESSE COURANTE EN ASCI.
         PAGE
         PROG
<
<
<        E N V O I   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MESSAGE (DONT LE 1ER OCTET EN
<                      CONTIENT LA LONGUEUR EN OCTETS).
<
<
<        DETRUIT LA BASE C.
<
<
PRINT:   EQU         $
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < MAJ DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MAJ DEMOUT.
         LAD         DEMOUT
         SVC         0               < ENVOI DU MESSAGE.
         RSR
         PAGE
<
<
<        A P P E L   C C I   N O N   I N T E R A C T I F  :
<
<
<        ARGUMENT :
<                    A=@MOT DE LA CARTE.
<
<
CALCCI:  EQU         $
         ADR         A,A             < A=@OCTET DE LA CARTE.
         STA         COMAND+1        < MAJ DE COMAND.
         LAD         COMAND
         SVC         0               < ENVOI DE LA CARTE AU CCI.
         RSR
         IF          VIRE,,X100,
         PAGE
<
<
<        N U M E R O   D ' E N T R E E   E T   P A R I T E  :
<
<
<        ARGUMENT :
<                    A=NUMERO D'ENTREE COURANTE DEMANDEE.
<
<
RNMAG:   EQU         $
         STA         NUMAG           < SAVE LE NUMERO DE L'ENTREE
                                     < COURANTE DEMANDEE DANS NUMAG.
         PTY                         < CALCUL DE LA PARITE DE OCTET1.
         LAI         0               < PARITE PAIRE A PRIORI.
         JNC         RNMAG1          < EFFECTIVEMENT PARITE PAIRE.
         SBT         1               < CAS DE LA PARITE IMPAIRE.
RNMAG1:  EQU         $
         STA         PARITE          < SAVE LA PARITE DU NUMERO DE
                                     < L'ENTREE DEMANDEE.
         RSR
X100:    VAL         0
         IF          VIRE,,X100,
         PAGE
<
<
<        C O N V E R S I O N   H A X E   B I N A I R E  :
<
<
<        ARGUMENT :
<                    Y=NBRE DE CARACTERES A CONVERTIR.
<                      (CARACTERES CONTENUS DANS 'BUFFER')
<
<
<        RESULTATS :
<                    SI B=0 : A=VALEUR BINAIRE ,
<                    SI B#0 : ERREUR DE SYNTAXE HEXADECIMALE ,
<                    POSITIONNEMENT DES INDICATEURS SUR (B).
<
<
HEX:     EQU         $
         LXI         0               < X=INDEX DE PARCOURS DE BUFFER.
         LBI         0               < CLEAR LE REGISTRE B.
<
< BOUCLE DE RECUPERATION DES CARACTERES :
<
HEX1:    EQU         $
         LBY         &AREP           < A=CARACTERE COURANT DE BUFFER.
         ADRI        -'30,A          < TRANSLATION PAR RAPPORT A '0'.
         JAL         HEX2            < ERREUR DE SYNTAXE.
         CPI         9               < EST-CE UN CHIFFRE ???
         JLE         HEX3            < OUI , OK.
         ADRI        -'41+'39+1,A    < TRANSLATION PAR RAPORT AU 'A'.
         CPI         'A              < EST-CE UNE LETTRE ???
         JL          HEX2            < NON , ERREUR DE SYNTAXE ...
         CPI         'F              < EST-CE UNE LETTRE HEXA ???
         JG          HEX2            < NON , ERREUR DE SYNTAXE ...
HEX3:    EQU         $
         SCRS        4               < CADRAGE EN TETE DE A ,
         SCLD        4               < ET CONCATENATION AVEC (B).
         ADRI        1,X             < PROGRESSION INDEX BUFFER.
         CPR         X,Y             < EST-CE FINI ???
         JNE         HEX1            < NON , ON CONTINUE ...
         LR          B,A             < SI OUI , A=VALEUR CONVERTIE.
HEX5:    EQU         $               < ENTRY DE CONVERSION DECIMALE OK.
         LBI         0               < B=0 : OK.
<
< SORTIE DE LA ROUTINE :
<
HEX4:    EQU         $
         CPZR        B               < POSITIONNEMENT DES INDICATEURS.
         RSR
<
< TRAITEMENT DES ERREURS :
<
HEX2:    EQU         $
         LBI         1               < B#0 : ERREUR.
         JMP         HEX4            < VERS LA SORTIE ...
X100:    VAL         0
         IF          VIRE,,X100,
         PAGE
<
<
<        C O N V E R S I O N   D E C I M A L E   B I N A I R E  :
<
<
<        ARGUMENTS :
<                    2 PREMIERS CARACTERES DE 'BUFFER'.
<
<
<        RESULTAT :
<                    B=0 : A=VALEUR BINAIRE ,
<                    B#0 : ERREUR DE SYNTAXE DECIMALE ,
<                    POSITIONNEMENT DES INDICATEURS SUR (B).
<
<
DEC:     EQU         $
         LXI         0
         LBY         &AREP           < A=PREMIER CHIFFRE EN ASCI.
         ADRI        -'30,A          < CONVERSION.
         JAL         HEX2            < ERREUR DE SYNTAXE.
         CPI         9               < EST-CE UN CHIFFRE ???
         JG          HEX2            < NON , ERREUR ....
         MP          C10             < MULTIPLICATION PAR LA BASE.
                                     < B=10*(PREMIER CHIFFRE).
         LXI         1
         LBY         &AREP           < A=2EME CHIFFRE.
         ADRI        -'30,A          < CONVERSION BINAIRE.
         JAL         HEX2            < ERREUR DE SYNTAXE DECIMALE.
         CPI         9               < EST-CE UN CHIFFRE ???
         JG          HEX2            < NON , ERREUR.
         ADR         B,A             < OK , A=VALEUR BINAIRE DU NOMBRE.
         JMP         HEX5            < VERS LA SORTIE OK.
X100:    VAL         0
         IF          VIRE,X100,,X100
         PAGE
<
<
<        D E M A N D E   D E   M O N T A G E   S U R   T Y 1  :
<
<
E420:    EQU         $
         LBY         &NOMSEQ         < RECUPERATION NOM-BANDE.
E407:    EQU         $
         ADRI        1,X             < PROGRESSION INDEX DE NOM.
         RBT         10              < POUR RAMENER LE CODE
                                     < DU '$' A CELUI DE 'EOT'.
         CPI         '04             < EST-CE LA FIN DU NOM DE BANDE ????
         JE          E421            < OUI , FIN DU NOM DE BANDE.
         CPR         X,Y             < EST-ON AU BOUT DU NOM DE
                                     < SEQUENCE ?????
         JNE         E420            < NON , POURSUITE DU PARCOURS ...
E421:    EQU         $
         STX         DEMTYO+2        < MISE EN PLACE DE LA LONGUEUR
                                     < DU NOM DE LA BANDE DANS LA
                                     < DEMANDE DE SORTIE SUR TY1.
<
< SAUVEGARDE DU NOM DE SEQUENCE COURANTE
< SUR LE MAGNETOSCOPE A LA SUITE DE LA LRU :
<
         LA          NOMSEQ
         RBT         0               < A=@ DU NOM DE LA SEQUENCE.
         LB          NOMTAP
         RBT         16              < B=@ DU NOM DE LA BANDE MONTEE
                                     < SUR LE MAGNETOSCOPE.
         LXI         LNOM/2          < X=NBRE DE MOTS A DEPLACER
                                     < DE (A) VERS (B).
         MOVE
<
< ENVOI DE LA DEMANDE A L'OPERATEUR TY1 :
<
<        REPONSES POSSIBLES :
<                    R/C : OK ,
<                    O : OK ,
<                    N : NON , ET ALORS ABORT DE L'ESCLAVE.
<
         LAD         MREL11
         BSR         ACALCI          < DESASSIGNATION DE NVP=11.
         LAD         MTY1
         BSR         ACALCI          < ASSIGNATION DU NVP=11 A TY1.
<
< ENVOI DU NUMERO DU MAGNETOSCOPE A MONTER ,
< PUIS DU NOM DE LA BANDE :
<
         LA          NUMAG           < A=NUMERO DU MAGNETOSCOPE.
         SLRD        16              < A=0 ; B=NBRE A CONVERTIR.
         DV          C10             < A=CHIFFRE DES DIZAINES ,
                                     < B=CHIFFRE DES UNITES.
         ADRI        '30,A           < CONVERSION ASCI.
         ADRI        '30,B           < CONVERSION ASCI.
         STB         MOUNT+1         < CHIFFRE DES UNITES.
         STBY        MOUNT+1         < RANGEMENT DU NUMERO ASCI
                                     < DANS LE MESSAGE VERS TY1.
         LAD         DEMTYM
         SVC         0               < ENVOI DU NUMERO DU MAGNE-
                                     < TOSCOPE A L'OPERATEUR TY1.
         LAD         DEMTYO
         SVC         0               < ENVOI DU NOM DE LA BANDE A
                                     < MONTER A L'OPERATEUR TY1.
E423:    EQU         $
         LAD         DEMTYI
         SVC         0               < ATTENTE DE LA REPONSE DE
                                     < L'OPERATEUR TY1.
         LBY         BUFFER          < ANALYSE DE LA REPONSE.
         CPI         '0D             < EST-CE UN R/C (=OK) ????
         JE          EE408           < OUI , VERS LA MAJ DE LA LRU.
         CPI         "O"             < EST-CE UN 'O' (=OK) ???
         JE          EE408           < OUI , VERS LA MAJ DE LA LRU.
         CPI         "N"             < EST-CE UN 'N' (NON) ????
         JNE         E423            < DEMANDE NOUVELLE REPONSE LORSQUE
                                     < CELLE-CI N'A PAS ETE COMPRISE.
         BR          AE422           < ABORT ESCLAVE ....
         PAGE
<
<
<        P R O C E S S E U R   V I D E O  :
<
<
<        FONCTION :
<                      CE PROCESSEUR APPELABLE AUSSI BIEN
<                    PAR 'EI'/'GO' QUE PAR 'GE' , PERMET
<                    D'EXPLOITER LES ITEMS DE TYPE 'S'.
<                      CE SYSTEME N'EST ACCESSIBLE QUE
<                    SOUS LE NUMERO DE COMPTE :EAO ,
<                    AFIN DE POUVOIR ACCEDER A LA LRU DE
<                    GESTION DES MAGNETOSCOPES.
<
<
<        NOM D'UN ITEM VIDEO :
<
<        <NOM-ITEM>::=<NOM-BANDE>($<NOM-SEQUENCE>)
<
<
<                      LE NUMERO DU TELEVISEUR ASSOCIE
<                    A LA VISU NSPOUT EST LE TELEVISEUR
<                    DE NUMERO  NSPOUT-NSPVI1 A L'ENTREE
<                    DE LA BAIE DE COMMUTATION VIDEO.
<
<
<        CONDITIONS DE RETOUR :
<                    CDRET=0 : RETOUR OK ,
<                    CDRET=1 : ERREUR D'ACN , DE TYPE D'ITEM ,
<                              OU MONTAGE IMPOSSIBLE ,
<                    CDRET=2 : SEQUENCE ABORTEE PAR L'ELEVE.
<                              (PAR UN CTRL-X-OFF)
<
<
<        E N T R Y   ' V I '  :
<
<
         WORD        LOC+'80         < VALEUR INITIALE DE LA BASE L.
         WORD        BRANCH          < VALEUR INITIALE DE LA BASE W.
VIDEO:   EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DES BASES L & W.
         LA          APILE
         LR          A,K             < INITIALISATION DU REGISTRE K.
         LX          MODCAL,W        < RECUPERATION DU MODE D'APPEL.
         LA          &NCALL          < A=NOM DE LA BRANCHE DE RETOUR.
         STA         0,W             < QUE L'3N MET EN TETE DU
                                     < PROCESSEUR.
         STZ         CDRET,W         < RAZ DE CDRET A PRIORI.
<
< VALIDATION DU TYPE DE L'ITEM1 :
< (CAS D'UN APPEL PAR 'GE')
<
         LXI         IINDIC-LTN*2
         LBY         &AKI1           < A=TYPE DE L'ITEM1.
         CPI         "S"             < EST-CE LE TYPE VIDEO ???
         JE          ITEMS           < OK , TYPE 'S' , LET'S GO !!!
<
< ERREUR DE TYPE DE L'ITEM1 :
<
         LAD         MITEM
         BSR         APRINT          < ENVOI D'1N MESSAGE D'ERREUR.
         BR          AERR            < ET RETOUR EN ERREUR.
<
<
<        E X P L O I T A T I O N   D E   L ' I T E M   ' S '  :
<
<
ITEMS:   EQU         $
<
< VALIDATION DE L'ACN DU DEMANDEUR :
<
         WORD        '1E25           < (A,B)=<ACN>.
         CP          EAO
         JNE         E400            < ERREUR , <ACN> INVALIDE.
         XR          A,B             < ECHANGE 1ERE/2EME.
         CP          EAO+1
         JE          E401            < OK , ON EST SOUS :EAO.
E400:    EQU         $
         WORD        '1E25           < (A,B)=ACN.
         CP          SYS
         JNE         E1010           < ON N'EST PAS NON PLUS SOUS :SYS.
         XR          A,B             < ECHANGE 1ERE/2EME.
         CP          SYS+1
         JE          E401            < OK , ON EST SOUS :SYS.
E1010:   EQU         $
         LAD         MACN
         BSR         APRINT          < ENVOI D'1N MESSAGE D'ERREUR ,
                                     < PRECISANT QUE CE NUMERO DE
                                     < COMPTE N'EST PAS AUTORISE ...
         BR          AERR            < ET ABORT ....
<
< PHASE CRITIQUE D'ACCES A LA LRU :
<
E401:    EQU         $
         WORD        '1ED5           < 'TEST & SET' 5.
         JC          E401            < BLOCAGE SI 5 N'EST PAS LIBRE.
<
< ACCES A L'OCCUPATION DES MAGNETOSCOPES :
<
         LAI         5               < FONCTION 'LOAD'.
         BSR         AMAGS           < ACCES A LA TABLE DU LRU ; A
                                     < NOTER QUE LES CONDITIONS DE
                                     < RETOUR SONT INDIFFERENTES ; ON
                                     < PEUT AINSI INITIALISER LE
                                     < SYSTEME.
<
< ACCES A L'IDESC :
<
         WORD        '1E45           < A=IDESC .      XXX 1000  XXXXXXXXXXXXXXXX
         LR          A,B             < B=IDESC.
<
< RECHERCHE D'UN MAGNETOSCOPE DEJA ATTACHE A CET IDESC :
<
         LXI         -NMAG
E402:    EQU         $
         LA          &ALRUA          < PARCOURS ASCENDANT DE LA LRU.
         JAL         E410            < L'ENTREE N'EST PAS A PRENDRE
                                     < EN COMPTE , CAR LE MAFNETOSCOPE
                                     < QU'ELLE CONTIENT EST HS.
         ANDI        '7F             < A=ID ASSOCIE AU MAGNETOSCOPE
                                     < CONTENU DANS CET ENTREE.
         CPR         A,B             < EST-CE L'ID DE L'ESCLAVE ????
         JE          E405            < OK , C'EST BON , ON A TROUVE ID.
E410:    EQU         $
         JIX         E402            < ENTREE SUIVANTE DE LA LRU.
<
< CAS OU ON N'A PAS TROUVE L'ID :
<
         LXI         NMAG
E403:    EQU         $
         LA          &ALRUD          < PARCOURS DESCENDANT DE LA LRU.
         JAGE        E404            < OK , ON A TROUVE UN MAGNETOSCOPE
                                     < EN ETAT DE MARCHE (INDEPENDAM-
                                     < MENT DE L'ID ASSOCIE....).
         JDX         E403            < PASSAGE A L'ENTREE PRECDENTE
                                     < DANS LE CAS OU LE MAGNETOSCOPE
                                     < TROUVE EST HS.
X100:    VAL         0
E422:    EQU         $               < ENTRY 'REPONSE NEGATIVE DE
                                     < L'OPERATEUR TY1'.
         LAD         MAGER
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR
                                     < LORSQU'IL N'Y A PLUS DE
                                     < MAGNETOSCOPES LIBRES.
         BR          AERR            < ABORT ESCLAVE.
         IF          VIRE,X100,,X100
<
< OCCUPATION DU MAGNETOSCOPE TROUVE :
<
E404:    EQU         $
         ANDI        -'80            < RAZ DES BITS 9-15.
         ORR         B,A             < ON CONCATENE LE NUMERO DU
                                     < MAGNETOSCOPE (A) AVEC L'ID (B).
         STA         &ALRUD          < MAJ DE LA LRU.
         ADRI        -NMAG-1,X       < CALCUL D'UN NUMERO ASCENDANT.
<
< ROTATION DE LA LRU :
<
E405:    EQU         $
         LY          &ALRUA          < Y=ENTREE COURANTE DE LA LRU.
         ADRI        NMAG,X          < X=NBRE DE MOTS A DEPLACER
                                     < POUR FAIRE TOURNER LA LRU.
         CPZR        X
         JE          E406            < OK , L'ENTREE TROUVEE EST
                                     < DEJA EN TETE.
         LA          ALRU            < A=@EMETTEUR.
         LR          A,B
         ADRI        1,B             < B=@RECEPTEUR.
         MOVE                        < DEPLACEMENT DE (X) MOTS.
         STY         &ALRU           < MISE EN TETE DE L'ENTREE
                                     < COURANTE.
<
< RECUPERATION DU NUMERO DU MAGNETOSCOPE ALLOUE :
<
E406:    EQU         $
         LR          Y,A             < A=ENTREE COURANTE.
         SLRS        8               < A=NUMERO DU MAGNETOSCOPE.
         STA         NUMAG           < AND SAVE IT.
<
< RECUPERATION DU NOM DE LA BANDE VIDEO :
<
         LAI         LNOM/2          < NBRE DE MOTS MAX POUR LE
                                     < NOM D'UNE BANDE.
         MP          NUMAG
         LR          B,A
         AD          ATAPES          < A=@DU NOM DE LA BANDE DEMANDEE.
         SBT         0               < POSITIONNEMENT DE L'INDEX.
         STA         NOMTAP          < GENERATION DU RELAI D'ACCES
                                     < AU NOM DE LA BANDE DEJA
                                     < PRE-MONTEE SUR (NUMAG).
<
< TEST SUR UN PRE-MONTAGE DE LA BANDE DEMANDEE :
<
         LXI         0               < INDEX DE COMPARAISON.
         LYI         LNOM            < POUR LE TEST DE FIN DE NOM.
E411:    EQU         $
         LBY         &NOMSEQ         < NOM DE LA SEQUENCE.
         CPBY        &NOMTAP         < NOM DE LA BANDE PRE-MONTEE (???).
         JNE         E407            < IL N'Y A PAS COINCIDENCE.
         RBT         10              < AFIN DE RAMENER LE CODE
                                     < DE '$' A CELUI DE L'EOT.
         CPI         '04             < EST-ON AU BOUT DU NOM DE
                                     < BANDE ????
                                     < ('$'('24) OU 'EOT'('04))
         JE          E408            < OUI , C'EST BON OK ...
         ADRI        1,X             < PASSAGE AU CARACTERE SUIVANT.
         CPR         X,Y             < TEST DE FIN DE NOM.
         JNE         E411            < ON CONTINUE ....
<
< CAS OU LA BANDE DEMANDEE EST PRE-MONTEE :
<
E408:    EQU         $
EE408:   EQU         E408
         LAI         3               < FONCTION 'DELETE'.
         BSR         AMAGS           < ACCES AU SGN POUR DELETER
                                     < LA LRU AVANT SA MISE A JOUR.
         LAI         4               < FONCTION 'STORE'.
         BSR         AMAGS           < MAJ DE LA LRU.
<
< FIN DE LA PHASE CRITIQUE :
<
         WORD        '1E55           < 'RESET' 5.
         JC          $               < ????BIZARRE ....
X100:    VAL         0
         IF          VIRE,,X100,
         PAGE
<
<
<        R E G I E   V I D E O   S I M U L E E
<        S U R   L A   B A I E   D E   C O M M U T A T I O N  :
<
<
<        FONCTION :
<                      CE PROCESSEUR UTILISABLE SOUS LE
<                    NUMERO DE COMPTE DU SYSTEME PERMET
<                    DE COMMANDER LA BAIE DE COMMUTATION
<                    VIDEO FREQUENCE , AINSI QUE LES
<                    MAGNETOSCOPES DU SYSTEME ...
<
<
         WORD        LOC+'80
         WORD        BRANCH
VIDEO:   EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DES BASES L ET W.
         LAD         STACK-1
         LR          A,K             < INITIALISATION DE K SUR LA PILE
                                     < DE TRAVAIL DANS 1K MOTS.
         LA          NGE
         STA         0,W             < MISE EN PLACE DU NOM DE
                                     < L'3VERLAY DE RETOUR.
<
< VALIDATION DE L'ACN DU DEMANDEUR :
<
         WORD        '1E25           < (A,B)=ACN DU DEMANDEUR.
         CP          SYS             < EST-CE :SYS ???
         JNE         E400            < NON , ABORT ...
         LR          B,A             < PEUT-ETRE ....
         CP          SYS+1           < EST-CE :SYS ???
         JE          INTER1          < OUI , C'EST :SYS : ON Y VA ...
<
< CAS DES ACN NON AUTORISES :
<
E400:    EQU         $
         LAD         MACN
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREURS.
         BR          AERR            < VERS L'ABORT ...
<
<        C A S   D E   : S Y S  :
<
INTER1:  EQU         $
         WORD        '1E55           < RESET 5 PAR PRUDENCE.
         WORD        '1E65           < RESET 6 PAR PRUDENCE.
         WORD        '1E75           < RESET 7 PAR PRUDENCE.
<
< CAS DE :SYS : ASSIGNATION DU NVP='0A :
<
         LAD         MREL10
         BSR         ACALCI          < DESASSIGNATION DU NVP='0A.
         LAD         MCU2
         BSR         ACALCI          < !ASSIGN A=CU2.
<
< RESTAURATION EVENTUELLE DE LA MEMOIRE DE COMMUTATION :
<
         LAD         DEMLB
         SVC         0               < LE RETOUR EST INDIFFERENT !!!
<
<
<        I N T E R R O G A T I O N   D E   L ' U T I L I S A T E U R  :
<
<
<        COMMANDES RECONNUES :
<                    C : CONNEXION D'UNE ENTREE A UNE SORTIE ,
<                    D : DECONNEXION D'UNE SORTIE ,
<                    Z : RAZ DE TOUTES LES CONNEXIONS ,
<                    L : EDITION DU CONTENU DE LA MEMOIRE DE COMMUT ,
<                    M : TELECOMMANDE D'UN MAGNETOSCOPE ,
<                    W : RETOUR TEMPORAIRE AU CCI (PERMET !W) ,
<                    F : RETOUR A 'GE'.
<
<
<        A T T E N T I O N  :
<                      TOUT NUMERO DE DISPOSITIF VIDEO
<                    SERA DONNE SOUS LA FORME DE 2
<                    CHIFFRES DECIMAUX , QUE CE SOIT EN
<                    ENTREE COMME EN SORTIE.
<
<
INTER:   EQU         $
         LAD         MINT
         BSR         APRINT          < ENVOI D'UN MESSAGE D'INVITATION.
         LAI         1
         STA         DEMIN+2         < DEMANDE DE LECTURE 1 CARACTERE.
         LAD         DEMIN
         SVC         0               < ENTREE COMMANDE UTILISATEUR.
         LBY         BUFFER          < A=REPONSE SUR 1 CARACTERE.
         CPI         "C"
         JE          RCONEC          < DEMANDE DE CONNEXION.
         CPI         "D"
         JE          RDECON          < DEMANDE DE DECONNEXION.
         CPI         "M"
         JE          RMAGN           < TELECOMMANDE MAGNETOSCOPE.
         CPI         "F"
         JE          RFIN            < DEMANDE DE RETOUR A 'GE'.
         CPI         "W"
         JE          RCCI            < RETOUR TEMPORAIRE AU CCI.
         CPI         "Z"
         JE          RRAZ            < RAZ DE TOUTES LES CONNEXIONS.
         CPI         "L"
         JE          RLIST           < LISTE MEMOIRE DE COMMUTATION.
         LAD         MERR
         BSR         APRINT          < REPONSE NON RECONNUE : ERREUR.
         JMP         INTER           < VERS UNE NOUVELLE INTERROGATION.
<
<        R E T O U R   A   ' G E '  :
<
RFIN:    EQU         $
<
< SAUVEGARDE DE LA MEMOIRE DE COMMUTATION :
<
         LAD         DEMDB
         SVC         0               < DELETE MEMOIRE DE COMMUTATION.
         LAD         DEMSB
         SVC         0               < SAVE MEMOIRE DE COMMUTATION.
<
< RETOUR A 'GE' :
<
         BR          AGOGE           < VERS LE RETOUR A 'GE'.
<
<        R E T O U R   T E M P O R A I R E    A U   C C I  :
<
RCCI:    EQU         $
         LAD         DEMCCI
         SVC         0               < RETOUR TEMPORAIRE AU CCI ;
                                     < PERMET DONC DE METTRE LA
                                     < CONSOLE EN WAIT (!W).
         JMP         INTER           < NOUVELLE INTERROGATION SI !GO.
<
<        D E M A N D E   D E   C O N N E X I O N  :
<
<        NOTA :
<                      UNE MEME ENTREE PEUT ETRE CONNECTEE
<                    SIMULTANEMENT A PLUSIEURS SORTIES !!!
<
RCONEC:  EQU         $
         LYI         2               < Y=2.
         STY         DEMIN+2         < DEMANDE D'ENTREE DE 2 CARACTERES.
CON1:    EQU         $
         LAD         MIN
         BSR         APRINT          < ENVOI D'UN MESSAGE DEMANDANT
                                     < LE NUMERO D'ENTREE.
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE L'ENTREE
                                     < SOUS FORME DE 2 CHIFFRES
                                     < DECIMAUX.
         BSR         ADEC            < TENTATIVE DE CONVERSION.
         JNE         CON1            < ERREUR : ON REDEMANDE.
         CPI         NIN             < VALIDATION DU NUMERO DE L'ENTREE.
         JGE         CON1            < ERREUR : ENTREE INEXISTANTE.
         BSR         ARNMAG          < OK , ON SAVE LE NUMERO DE
                                     < L'ENTREE COURANTE (A) , ET
                                     < ON CALCULE SA PARITE.
CON3:    EQU         $
         LAD         MOUT
         BSR         APRINT          < ENVOI D'UN MESSAGE DEMANDANT
                                     < LE NUMERO DE LA SAORTIE.
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE LA SORTIE
                                     < SOUS FORME DE 2 CHIFFRES
                                     < DECIMAUX.
         BSR         ADEC            < CONVERSION DU NUMERO DE SORTIE.
         JNE         CON3            < ERREUR , ON REDEMANDE ...
         CPI         NOUT            < VALIDATION DU NUMERO DE LA
                                     < SORTIE DEMANDEE.
         JGE         CON3            < ERREUR : SORTIE INEXISTANTE.
         STA         NUMOUT          < OK , SAVE LE NUMERO DE LA
                                     < SORTIE COURANTE.
         LR          A,X             < X=NUMERO DE LA SORTIE COURANTE.
         LA          NUMAG           < A=NUMERO DE L'ENTREE COURANTE.
         STA         &AMEMB          < GENERATION DE LA MEMOIRE DE
                                     < COMMUTATION.
<
< EXECUTION DE LA DEMANDE DE CONNEXION :
<
         LYI         'A5             < Y=FONCTION DE CONNEXION.
         BSR         ACOMUT          < CONNEXION.
         JMP         INTER           < VERS UNE NOUVELLE INTERROGATION.
<
<        D E M A N D E   D E   D E C O N N E X I O N  :
<
RDECON:  EQU         $
         LYI         2               < Y=2.
         STY         DEMIN+2         < AFIN DE LIRE 2 CARACTERES.
DECON1:  EQU         $
         LAD         MOUT
         BSR         APRINT          < ENVOI D'UN MESSAGE DEMANDANT
                                     < LE NUMERO DE LA SORTIE A
                                     < DECONECTER.
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE LA SORTIE
                                     < SOUS FORME DE 2 CHIFFRES
                                     < DECIMAUX.
         BSR         ADEC            < CONVERSION BINAIRE.
         JNE         DECON1          < ERREUR DE SYNTAXE HEXA.
         CPI         NOUT            < VALIDATION DU NUMERO DE LA
                                     < SORTIE DEMANDEE.
         JGE         DECON1          < ERREUR : SORTIE INEXISTANTE.
         STA         NUMOUT          < OK , SAVE LE NUMERO DE LA SORTIE
                                     < COURANTE.
         LR          A,X             < X=NUMERO SORTIE COURANTE.
         LA          &AMEMB          < A=NUMERO DE L'ENTREE CONNECTEE.
         JAL         INTER           < DEJA DECONNECTE , RIEN A FAIRE ...
         BSR         ARNMAG          < SAVE LE NUMERO DE L'ENTREE
                                     < CONNECTEE ET CALCUL PARITE.
         LAI         -1
         STA         &AMEMB          < MEMORISATION DE LA DECONNEXION.
<
< EXECUTION DE LA DECONNEXION :
<
         LYI         '81             < Y=FONCTION DE DECONNEXION.
         BSR         ACOMUT          < DECONNEXION.
         JMP         INTER           < VERS UNE NOUVELLE INTERROGATION.
<
<        R A Z   D E   T O U T E S   L E S
<        C O N N E X I O N S  :
<
RRAZ:    EQU         $
         LAI         NOUT-1
         STA         NUMOUT          < ON COMMENCE PAR LA DERNIERE
                                     < SORTIE DE LA BAIE.
RRAZ1:   EQU         $
         LX          NUMOUT
         LA          &AMEMB          < A=ENTREE CONNECTEE A LA SORTIE.
         JAL         RRAZ2           < SORTIE NON CONNECTEE.
         BSR         ARNMAG          < SINON CALCUL DU NUMERO D'ENTREE
                                     < ET DE SA PARITE.
         LAI         -1
         STA         &AMEMB          < ET RAZ DE L'IMAGE DE LA MEMOIRE.
         LYI         '81
         BSR         ACOMUT          < COMMUTATION DE LA BAIE.
RRAZ2:   EQU         $
         DC          NUMOUT          < PASSAGE A LA SORTIE PRECEDENTE.
         JGE         RRAZ1           < OK , ELLE EXISTE.
         JMP         INTER           < SINON , INTERROGATION ESCLAVE.
<
<        E D I T I O N   D E S   C O N N E X I O N S  :
<
RLIST:   EQU         $
         LAI         NOUT-1
         STA         NUMOUT          < ON COMMENCE A LA DERNIERE SORTIE.
RLIST1:  EQU         $
         LX          NUMOUT
         LA          &AMEMB          < RECUPERATION DE L'ENTREE QUI
                                     < EST CONNECTEE A LA SORTIE (X).
         JAL         RLIST3          < SORTIE NON CONNECTEE.
         SLRD        16              < A=0 ; B=NUMERO D'ENTREE.
         DV          C10             < DECONCATENATION DECIMALE.
         ADRI        '30,A           < CONVERSION DECIMALE DU 1ER
                                     < CHIFFRE.
         LXI         2
         STBY        &AMLIST         < ET MISE DANS LE BUFFER D'EDITION.
         LR          B,A             < PASSAGE AU CHIFFRE SUIVANT.
         ADRI        '30,A           < CONVERSION ASCI.
         LXI         3
         STBY        &AMLIST         < ET MISE DANS LE BUFFER.
         LA          NUMOUT
         SLRD        16              < A=0 ; B=NUMERO DE SORTIE.
         DV          C10             < DECONCATENATION DECIMALE.
         ADRI        '30,A           < CONVERSION DECIMALE DU 1ER
                                     < CHIFFRE.
         LXI         7
         STBY        &AMLIST         < ET MISE DANS LE BUFFER.
         LR          B,A             < APSSAGE AU 2EME CHIFFRE.
         ADRI        '30,A           < CONVERSION ASCI.
         LXI         8
         STBY        &AMLIST         < ET MISE DANS LE BUFFER.
         LAD         DEML
         SVC         0               < EDITION D'UNE CONNEXION.
RLIST3:  EQU         $
         DC          NUMOUT          < PASSAGE A LA SORTIE PRECEDENTE.
         JGE         RLIST1          < OK , ELLE EXISTE ...
         JMP         INTER           < SINON , INTERROGATION ESCLAVE.
<
<        T E L E C O M M A N D E   D E S
<        M A G N E T O S C O P E S  :
<
<        NUMERO DE MAGNETOSCOPES :
<                    2 CHIFFRES DECIMAUX POUR 1 MAGNETOSCOPE ,
<                    <EOM> POUR UN ORDRE GENERAL.
<
<        COMMANDES RECONNUES :
<                    P : PLAY ,
<                    R : REWIND ,
<                    F : FORWARD ,
<                    S : STOP ,
<                    E : ENREGISTREMENT.
<                    @ : LECTURE DE L'ADRESSE COURANTE TOUTES LES
<                        SECONDES.
<
RMAGN:   EQU         $
         LYI         2               < Y=2.
         STY         DEMIN+2         < AFIN DE LIRE 2 CARACTERES.
RMAGN1:  EQU         $
         LAD         MAGN
         BSR         APRINT          < ENVOI D'UN MESSAGE DEMANDANT
                                     < LE NUMERO DE MAGNETOSCOPE.
         LAD         DEMIN
         SVC         0               < LECTURE DU NUMERO DE MAGNETO
                                     < SOUS FORME DE 2 CHIFFRES
                                     < DECIMAUX.
         WORD        '1E35           < RECUPERATION DANS B DU NBRE
                                     < DE CARACTERES ENTRES.
         LR          B,A             < A=NBRE DE CARACTERES LUS.
         CPI         1               < N'Y EN A-T'IL QU'UN ???
         JNE         RMAGN7          < NON 2 , DONC ORDRE MAGNETO.
<
< CAS D'UN APPEL GENERAL :
<
         LAI         0
         SBT         4               < POSITIONNEMENT DU BIT D'ORDRE
         STA         NUMAG           < GENERAL A LA PLACE DU NUMERO.
         LAI         0
         SBT         1               < BIT DE PARITE A PRIORI.
         STA         PARITE
         JMP         RMAGN8          < ET C'EST TOUT ...
<
< CAS DES APPELS SPECIFIQUES :
<
RMAGN7:  EQU         $
         BSR         ADEC            < CONVERSION BINAIRE.
         JNE         RMAGN1          < ERREUR DE SYNTAXE HEXA.
         CPI         NMAG            < VALIDATION DU NUMERO DE MAGNETO.
         JGE         RMAGN1          < ERREUR : MAGNETO INEXISTANT.
         BSR         ARNMAG          < SAVE LE NUMERO DE MAGNETO ET
                                     < SA PARITE.
<
< RECUPERATION DE L'3RDRE AU MAGNETO :
<
RMAGN8:  EQU         $
         LYI         1
         STY         DEMIN+2         < POUR LIRE 1 CARACTERE.
RMAGN2:  EQU         $
         LAD         MORDRE
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMIN
         SVC         0               < ENTREE D'1 CARACTERE D'ORDRE.
         LBY         BUFFER          < A=COMMMANDE DEMANDEE.
         LB          PLAY            < B=PLAY A PRIORI.
         CPI         "P"
         JE          RMAGN3          < EXECUTION D'UN PLAY.
         LB          RWD             < B=REWIND A PRIORI.
         CPI         "R"
         JE          RMAGN3          < EXECUTION D'UN REWIND.
         LB          FWD             < B=FORWARD A PRIORI.
         CPI         "F"
         JE          RMAGN3          < EXECUTION D'UN FORWARD.
         LB          STOP            < B=STOP A PRIORI.
         CPI         "S"
         JE          RMAGN3          < EXECUTION D'UN STOP.
         LB          RECORD          < B=RECORD A PRIORI.
         CPI         "E"
         JE          RMAGN3          < EXECUTION D'UN RECORD.
         CPI         '40
         JE          RMAGN5          < RECUPERATION PERIODIQUE DE
                                     < L'ADRESSE COURANTE.
         JNE         RMAGN2          < CAS D'UNE COMMANDE NON RECONNUE ,
                                     < ON REDEMANDE L'ORDRE.
<
< EXECUTION DES ORDRES INSTANTANES (P,S,E,R,F,..) :
<
RMAGN3:  EQU         $
         LR          B,A             < A=ORDRE A ENVOYER AU MAGNETO.
         OR          NUMAG           < CONCATENATION DU NUMERO MAGNETO ,
         OR          PARITE          < ET DE SA PARITE.
         BSR         AORDRE          < ENVOI DE L'ORDRE AU MAGNETO.
         BR          AINTER          < VERS UNE NOUVELLE INTERROGATION.
<
< AFFICHAGE PERIODIQUE DE L'ADRESSE COURANTE :
<
RMAGN5:  EQU         $
         LA          ADC             < RECUPERATION DE L'ORDRE.
         AND         MBF00           < NETTOYAGE !!!
         OR          NUMAG           < CONCATENATION NUMERO DE MAGNETO.
         OR          PARITE          < CONCATENATION PARITE DU NUMERO.
         STA         ADC             < MAJ DE L'ORDRE @ COURANTE.
RMAGN6:  EQU         $               < BOUCLE DE LECTURE PERIODIQUE.
         BSR         ARADC           < LECTURE DE L'ADRESSE COURANTE.
         LYI         1
         BSR         ATEMPO          < TEMPORISATION DE (Y)=1 SECONDE.
         JMP         RMAGN6          < BOUCLAGE JUSQU'AU JUGEMENT
                                     < DERNIER , A MOINS QU'UN ALT-
                                     < MODE NE VIENNE INTERROMPRE
                                     < LA BOUCLE !!!
RMAGN4:  EQU         $
X100:    VAL         0
         IF          VIRE,X100,,X100
<
< TELECOMMANDE DU MAGNETOSCOPE :
<
         LAD         MREL10
         BSR         ACALCI          < DESASSIGNATION DU NVP=10.
         LAD         MCU2
         BSR         ACALCI          < !ASSIGN 10=CU2 (TELECOMMANDE
                                     < DES MAGNETOSCOPES).
         LA          NUMAG           < A=NUMAG.
         PTY                         < CALCUL DE LA PARITE DE NUMAG.
         LAI         0               < BIT1=0 A PRIORI.
         JNC         E600            < EFFECTIVEMENT : PARITE PAIRE.
         SBT         1               < ET NON , PARITE IMPAIRE.
E600:    EQU         $
         STA         PARITE          < ET SAVE LA PARITE.
<
< PREPARATION DES ORDRES :
<
         LXI         NORDRE          < X=NBRE D'ORDRES.
E610:    EQU         $
         LA          &ATO            < ACCES A UN ORDRE.
         AND         MBF00           < NETTOYAGE , ON NE SAIT JAMAIS.
         OR          NUMAG           < CONCATENATION NUMAG.
         OR          PARITE          < CONCATENATION PARITE.
         STA         &ATO            < MAJ DE L'ODRE.
         JDX         E610            < AU SUIVANT ....
<
<
<        E N V O I   D E   L ' O R D R E   A U
<                    M A G N E T O S C O P E  :
<
<
E620:    EQU         $
         LAI         '13             < CARACTERE CTRL-X-OFF.
         WORD        '1EA5           < REMPLACEMENT DE 'ALT-MODE' PAR
                                     < LE CARACTERE CTRL-X-OFF.
         LA          ABORTV
         WORD        '1EB5           < MISE EN PLACE D'UN 'PRESC'
                                     < SPECIAL LORS DE LA DIFFUSION
                                     < DES SEQUENCES AUDIO-VISUELLES ,
                                     < PERMETTANT D'ARRETER LES MAGNETOS
                                     < MEME SI UN 'ALT-MODE' EST FRAPPE
         LYI         0               < PLAY EN CONTINU A PRIORI.
         LXI         SDEBS
         CPZ         &AKI1           < TEST D'UNE EVENTUELLE ADRESSE
                                     < DE DEBUT DE SEQUENCE.
         JL          E602            < SDEBS<0 : IL S'AGIT D'UN PLAY
                                     < A PARTIR DE L'ADRESSE COURANTE ,
                                     < AVEC TEST DE FIN SUR SFINS.
         LXI         SMOVE
         LA          &AKI1           < QUE FAIRE DE CET ITEM 'S' ???
         JAL         E602            < DEMANDE DE PLAY EN CONTINU.
         TBT         SARRET          < EST-CE UN STOP ???
         JC          E690            < OUI , VERS LE STOP MAGNETO.
         IF          VERSIO-0,X200,,X200
<
< ACCES A L 'ADRESSE COURANTE DE LA BANDE :
<
         LA          FWD
         BSR         AORDRE          < MISE DU MAGNETOSCOPE EN FORWARD
                                     < AFIN DE POUVOIR LIRE L'ADRESSE
                                     < COURANTE ....
         LYI         1               < Y=1 SECONDE DE FORWARD.
         BSR         ATEMPO          < ATTENTE DE L'ETABLISSEMENT
                                     < DU FORWARD.
         BSR         ARADC           < LECTURE DE L'ADRESSE COURANTE.
         BSR         ASTOP           < ARRET DU MAGNETOSCOPE , ET
                                     < TEMPORISATION DE 3 SECONDES.
<
< CHOIX DU SENS DE DEFILEMENT :
<
         LXI         SDEBS
         LX          &AKI1           < X=@DEBUT DE SEQUENCE.
E655:    EQU         $
         LR          X,A             < A=@DEBUT DE SEQUENCE.
         SB          ADRES           < A=@DEBUT-@COURANTE.
         LYI         0               < Y=0 : ON EST SUR L'@DEBUT.
                                     < (A PRIORI !!!!)
         JAE         E602            < ON EST ARRIVE , FABULEUX !!!
         JAL         E650            < @DEBUT<@COURANTE : REWIND.
         CPI         VOISIN          < EST-ON PRET DU DEBUT ????
         JLE         E651            < OUI , ALLONS FAIRE UNE
                                     < APPROCHE FINE ....
         LA          FWD             < SINON , ON PART EN FORWARD ...
         JMP         E603            < VERS LA RECHERCHE GROSSIERE.
E650:    EQU         $
         LA          RWD             < CAS DU REWIND NECESSAIRE.
E603:    EQU         $
         BSR         AORDRE          < ENVOI DE L'ORDRE RWD/FWD
                                     < AU MAGNETOSCOPE.
<
< BOUCLE D'ATTENTE DE POSITIONNEMENT :
<
         LYI         1               < Y=1 SECONDE DE TEMPORISATION
                                     < INTER-TEST.
         LAI         '80*VERSIO+3
         STA         DUREE           < DUREE=3*(Y) SECONDES.
                                     < (DANS LE CAS DE LA 2EME VERSION ,
                                     < LA DUREE EST PRISE SUPERIEURE
                                     < AU TEMPS DE PARCOURS ENTIER
                                     < DE LA BANDE A GRANDE VITESSE!).
E604:    EQU         $
         DC          DUREE
         JG          E656            < LA DUREE N'EST PAS ENCORE
                                     < POURSUIVONS LA RECHERCHE RAPIDE.
         BSR         ASTOP           < SI DUREE=0 : ON ARRETE LE
                                     < MAGNETO. ET ON RE-TESTE LA
                                     < POSITION PAR RAPPORT AU DEBUT
                                     < DE SEQUENCE (QU'ON A PU
                                     < PASSER SANS S'EN APERCEVOIR.
         JMP         E655            < VERS LE TEST DE DEBUT.
E656:    EQU         $
         BSR         ATEMPO          < TEMPORISATION (Y) SECONDES.
         BSR         ARADC           < LECTURE DE L'ADRESSE COURANTE.
         SBR         X,A             < ON FORME :
                                     < A=@COURANTE-@DEBUT SEQUENCE.
         CPI         -VOISIN
         JL          E604            < ON CONTINUE A TTENDRE.
         JAG         E604
<
< CAS OU L'ON EST PRESQUE ARRIVE :
< (ON ESSAYE DE S'ARRETER DANS LA FOURCHETTE -'40,0)
<
         BSR         ASTOP           < ARRET MAGNETO AVEC TEMPORI-
                                     < SATION DE 4 SECONDES.
<
<        P O S I T I O N N E M E N T   P L U S   F I N  :
<
E651:    EQU         $
         LYI         1               < Y=1 SECONDE.
                                     < (Y#0 : ON N'EST PAS SUR @DEBUT)
E602:    EQU         $
         LA          PLAY
         BSR         AORDRE          < ENVOI D'UN ORDRE PLAY.
         CPZR        Y               < EST-ON DEJA SUR @DEBUT ???
         JE          E641            < OUI , PAS DE POSITIONNEMENT FIN.
<
< BOUCLE DE POSITIONNEMNT FIN :
<
E640:    EQU         $
         BSR         ATEMPO          < ATTENTE (Y) SECONDES.
         BSR         ARADC           < RECUPERATION ADRESSE COURANTE.
         SBR         X,A             < A=@COURANTE-@DEBUT SEQUENCE.
         JAL         E640            < ON N'EST PAS ENCORE SUR LE
                                     < DEBUT DE SEQUENCE : ON CONTUNUE
                                     < LE PLAY SANS COMMUTATION.
X200:    VAL         0
         IF          VERSIO-1,X200,,X200
<
< CHOIX D'UN SENS A PRIORI :
<
         LA          FWD             < ON COMMENCE EN FWD.
         JMP         E1020           < ET C'EST PARTI (CF. EN 14...)
<
< BOUCLE DE RECUPERATION DE L'ADRESSE COURANTE ET DE POSITIONNEMENT :
<
E655:    EQU         $
         LR          X,A             < A=ADRESSE CIBLE TRANSLATEE.
         SB          ADRES           < A=DISTANCE CORRIGEE DE L'ADRESSE
                                     < COURANTE A L'ADRESSE CIBLE ,
         LR          A,Y             < ET SAVE Y=DISTANCE.
         SARD        16              < MISE DE LA DISTANCE SUR 32 BITS.
         DV          GAMMA
         LR          Y,A             < RESTAURE A=DISTANCE CORRIGEE.
         LYI         0               < A PRIORI Y=0=CONSTANTE DE
                                     < TRANSLATION.
         CPZR        B               < LA DISTANCE EST-ELLE UN
                                     < MULTIPLE DE GAMMA ???
         JNE         E656            < NON , Y=0.
         LYI         1               < OUI , ABS(Y)=1.
E656:    EQU         $
         JAL         E650            < DISTANCE CORRIGEE<0 : RWD.
         JAE         E1003           < DISTANCE CORRIGEE=0 : ORDRE
                                     < INCHANGE , ON VA OSCILLER AUTOUR
                                     < DE LA CIBLE ...
         LA          FWD             < DISTANCE CORRIGEE>0 : FWD.
         NGR         Y,Y             < DANS LE CAS DU FWD , LA CONSTANTE
                                     < DE TRANSLATION VAUT -1/0.
         JMP         E603
E650:    EQU         $
         LA          RWD             < DANS LE CAS DU RWD , LA CONSTANTE
                                     < DE TRANSLATION VAUT 1/0.
E603:    EQU         $
         ADR         Y,X             < CORRECTION DE L'ADRESSE CIBLE
                                     < (X) EN FONCTION DU SENS DE
                                     < PARCOURS COURANT RWD/FWD , ET
                                     < FONCTION DE LA DISTANCE CORRIGEE
                                     < DE L'ADRESSE COURANTE A L'ADRESSE
                                     < CIBLE (??!?!)
         CP          ORDREP          < LE SENS DETERMINE EST-IL LE
                                     < SENS COURANT DU MAGNETO ???
         JE          E1003           < [\[E,RP /7 '[[[\ELA ][\\ [N ...
         DC          LIMIT           < NON , MAIS IL NE FAUT PAS NON
                                     < PLUS CHANGER DE SENS TROP
                                     < SOUVENT : RISQUE D'OSCILLATIONS.
         JE          E1004           < C'EN EST TROP , ON ARRETE (DE
                                     < POISSON...)
<
< POINT D'ENTREE DE LA BOUCLE :
<
E1020:   EQU         $
         STA         ORDREP          < ET NON , IL FAUT LE SAUVEGARDER ,
                                     < ET L'ENVOYER ...
         LXI         SDEBS
         LX          &AKI1           < X=ADRESSE CIBLE.
                                     < (INIT OU REINIT)
         BSR         AORDRE          < ENVOI DU NOUVEL ORDRE (A).
         LYI         1
         BSR         ATEMPO          < APRES CHAQUE CHANGEMENT D'ODRE ,
                                     < ON ATTEND 1 SECONDE QUE LE
                                     < SYSTEME SE STABILISE ...
<
< ACCES A L'ADRESSE COURANTE :
<
E1003:   EQU         $
         BSR         ARADC
         JMP         E655            < VERS LE TEST DE POSITION.
<
< CAS OU L'ON EST PASSE APPAREMMENT SUR L'ADRESSE CIBLE :
<
E6020:   EQU         $
         DC          LIMIT           < POUR EVITER DE FACHEUSES
                                     < OSCILLATIONS.
         JE          E1004           < OK , ON ARRETE ...
                                     < (ET OUI , DE POISSON ENCORE ...)
         LR          X,A             < A=ADRESSE-CIBLE CORRIGEE.
         LXI         SDEBS
         LX          &AKI1           < X=ADRESSE-CIBLE REELLE.
         CPR         X,A             < Y-A-T'IL EU CORRECTION ???
         JNE         E655            < ET OUI , ON RECOMMENCE ...
<
< CAS OU L'ON ADMET QUE L'ON EST POSITIONNE :
<
E1004:   EQU         $
         BSR         ASTOP           < ARRET DU MAGNETO ET TEMPO (4S).
<
< MISE EN PLAY DU MAGNETO :
<
E602:    EQU         $
         LA          PLAY
         BSR         AORDRE
X200:    VAL         0
<
<        E T A B L I S S E M E N T   D E   L A   C O N N E X I O N  :
<
E641:    EQU         $
         LXI         SMOVE
         LA          &AKI1           < QUE FAIRE DE CET ITEM 'S' ????
         TBT         SURCH           < EST-CE UN POSITIONNEMENT SEUL ???
         JC          E690            < OUI , ON A DONC FINI , ALONS
                                     < ARRETER LE MAGNETO.
         LYI         'A5             < FONCTION DE CONNEXION.
         BSR         ACOMUT          < ETABLISSEMENT.
         LXI         SMOVE
         CPZ         &AKI1           < QUE FAIRE DE L'ITEM 'S' ????
         JL          E743            < CAS D'UNE DEMANDE DE PLAY EN
                                     < CONTINU ; ON VA SORTIR IMME-
                                     < DIATEMENT (ON RESTAURE MALGRE
                                     < TOUT LE ALT-MODE ET PRESC).
<
<        D I F F U S I O N   D E   L A   S E Q U E N C E  :
<
         LXI         SFINS
         LX          &AKI1           < X=@FIN DE SEQUENCE.
         LYI         2               < Y=2 SECONDES DE TEMPORISATION
                                     < INTER-TEST.
<
< BOUCLE D'ATTENTE DE FIN DE SEQUENCE :
<
E605:    EQU         $
         BSR         ATEMPO          < TEMPO (Y) SECONDES.
         BSR         ARADC           < LECTURE DE L'ADRESSE COURANTE
                                     < TOUTES LES (Y) SECONDES.
         SBR         X,A             < ON FORME :
                                     < A=@COURANTE-@FIN SEQUENCE.
         JAL         E605            < ON CONTINUE LA DIFFUSION.
X100:    VAL         0
<
<        F I N   D E   D I F F U S I O N  :
<
E690:    EQU         $               < ENTRY 'POSITIONNEMENT SEUL'.
         LA          STOP
         BSR         AORDRE          < ARRET DU MAGNETOSCOPE.
         LYI         '81             < FONCTION DE RUPTURE DE CONNEXION.
         BSR         ACOMUT          < RUPTURE DE LA CONNEXION.
         LYI         1
         BSR         ATEMPO          < 1 SECONDE DE TEMPORISATION
                                     < POUR LE STOP QUI EST DEMANDE.
<
< ET C'EST FINI ....
<
E743:    EQU         $               < POUR 'PLAY EN CONTINU'.
         LAI         '7D             < CARACTERE 'ALT-MODE'.
         WORD        '1EA5           < RESTAURATION DU 'ALT-MODE'.
E691:    EQU         $               < ENTRY 'PLAY EN CONTINU'.
         LA          ABORT
         WORD        '1EB5           < RESTAURATION DU 'PRESC'
                                     < IMPLICITE DE EI/GO.
         IF          VIRE,,X100,
         BR          AINTER          < VERS LA COMMANDE SUIVANTE.
X100:    VAL         0
         IF          VIRE,X100,,X100
<
<
<        T E S T   D ' E F F A C E M E N T   D E   L ' E C R A N  :
<
<
         LXI         SERASE
         CPZ         &AKI1           < UN EFFACEMENT EST-IL DEMANDE ???
         JNE         E10             < NON ..
         LAD         DEMERA
         SVC         0               < SI OUI , EFFACEMENT DE L'ECRAN.
X100:    VAL         0
<
<
<        R E T O U R   A   L ' A P P E L A N T  :
<
<
E10:     EQU         $
         IF          VIRE,,X100,
         LA          APILE
         LR          A,K             < REINITIALISATION DE K SUR LA
                                     < PILE DE SODOME.
X100:    VAL         0
<
< DESASSIGNATION DES NVP :
<
         LAD         MREL10
         BSR         ACALCI          < DESASSIGN LE NVP='0A.
         LAD         MREL11
         BSR         ACALCI          < DESASSIGN LE NVP='0B.
<
< PREPARATION DE L'OVERLAY :
<
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH.
         LR          A,C             < C#0 AU CAS OU L'3N FERAIT UN
                                     < RETOUR A 'EI'/'GO' (C#0 PERMET
                                     < DE DISTINGUER UNE GENERATION
                                     < D'UN RETOUR D'OVERLAY).
         STZ         MODCAL,W        < RAZ DU MODE D'APPEL A PRIORI.
         LAI         6
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE
                                     < 'LOAD SOUS :SYS'.
<
< APPEL DE L'OVERLAY SUIVANT :
<
E11:     EQU         $
         LAD         DEMSGN
         BSR         AOVL            < A=@DEMSGN ; W=@BRANCH.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI EN CAS D'ERREUR
                                     < CHARGEMENT ...
         JMP         E11             < TRY AGAIN LE CHARGEMENT SI !GO.
<
<
<        E R R E U R S   D ' E X E C U T I O N  :
<
<
<        FONCTION :
<                      PREPARE LE RETOUR A L'APPELANT EN
<                    FAISANT : CDRET=1.
<
<
<        ARGUMENT :
<                    W=@BRANCH.
<
<
ERREUR:  EQU         $
         IC          CDRET,W         < CDRET=1.
         WORD        '1E55           < RESET 5 A PRIORI.
         WORD        '1E65           < RESET 6 A PRIORI.
         WORD        '1E75           < RESET 7 A PRIORI.
         LAI         '7D
         WORD        '1EA5           < RESTAURE LE CARACTERE ALT-MODE.
         LA          ABORT
         WORD        '1EB5           < RESTAURE LE PRESC DE EI/GO.
         JMP         E10             < VERS LE RETOUR A L'APPELANT.
<
<
<        E N T R Y   U T I L I S E E   L O R S   D E S
<        A L T - M O D E   P E N D A N T   U N E
<        S E Q U E N C E   A U D I O - V I S U E L L E  :
<
<
HALT:    EQU         $
<
< RESET D'UNE EVENTUELLE PHASE CRITIQUE EN COURS :
<
         WORD        '1E55           < RESET 5 A PRIORI.
         WORD        '1E65           < RESET 6 A PRIORI.
         WORD        '1E75           < RESET 7 A PRIORI.
<
< MEMORISATION ALT-MODE :
<
         LA          APILE
         LR          A,K             < RESTAURATION DE K , C'EST
                                     < PLUS PRUDENT !!!
         LAI         2
         STA         CDRET,W         < CDRET=2 : "ODE POUR SEQUENCE
                                     < BAORTEE PAR L'ELEVE.
         JMP         E690            < VERS L'ARRET DU MAGNETO , ET
                                     < LA DECONNEXION DE LA BAIE.
         PAGE
<
<
<        R E C U P E R A T I O N   A D R E S S E
<        C O U R A N T E   S U R   L A   B A N D E
<        M A G N E T O S C O P E  :
<
<
<        RESULTAT :
<                    A=ADRES=ADRESSE COURANTE DE LA BANDE
<                            MONTEE SUR LE MAGNETOSCOPE NUMAG.
<
<
<        DETRUIT A & B.
<
<
RADCER:  EQU         $               < ENTRY 'ADRESSE NON VALIDE'.
         LXI         1               < X=1 SECONDE.
         STX         SLEEP+2
         LAD         SLEEP
         SVC         0               < ATTENTE DE STABILISATION DE
                                     < L'ADRESSE PENDANT 1 SECONDE.
         JMP         RADC1           < PUIS ON RECOMMENCE ...
RADC:    EQU         $
         STX         F3              < SAVE X DANS F3.
RADC1:   EQU         $
         LA          DEMCU
         LR          A,B             < B=DEMCU.
         ORI         2               < MISE EN PLACE D'UNE FONCTION
                                     < D'ECRITURE SUR LE NVP=A.
         STA         DEMTV           < DEMTV EST MISE EN MODE DE
                                     < D'ECRITURE.
         LA          ADC             < A=ORDRE 'ADRESSE COURANTE'.
         STA         BUFTV
         LAD         DEMTV           < A=@DEMTV.
<
<        P H A S E   C R I T I Q U E   D ' A C C E S   A U   N V P = A
<
         WORD        '1EE5           < TEST & SET 6.
         JC          $-1             < ATTENDRE LA LIBERATION DU
                                     < PASSAGE ...
<
< OK , LA VOIE EST LIBRE :
<
         SVC         0               < ENVOIU DE LA DEMANDE D'ADRESSE
                                     < COURANTE.
         STB         DEMTV           < DEMTV EST MISE EN MODE LECTURE.
         SVC         0               < LECTURE DE LHADRESSE COURANTE.
<
<        F I N   D E   P H A S E   C R I T I Q U E  :
<
         WORD        '1E65           < RESET 6.
         JC          $               < E R R E U R  ....
<
< RENVOI DE L'ADRESSE COURANTE :
<
         LA          BUFTV           < RECUPERATION DANS LE BUFFER
                                     < DE LECTURE.
         JAL         RADCER          < ADRESSE NON VALIDE (BIT0=1) ,
                                     < OPERATION A REFAIRE ...
         JAG         E6310           < OK : ADRESSE VALIDE (>0).
         LAD         DEMCCI          < (A)=0 : ADRESSE BIZARRE ???
         SVC         0               < ALORS ON FAIT UN RETOUR CCI ...
         JMP         RADCER          < PUIS VERS RADCER SI !GO ...
E6310:   EQU         $               < ADRESSE LUE OK ...
         IF          VERSIO-0,X200,,X200
         AD          CORECT          < CORRECTION DE LA LECTURE ,
                                     < FONCTION DU SENS DE PARCOURS.
X200:    VAL         0
         STA         ADRES           < RETOUR PAR (A) ET (ADEES).
<
<        T E S T   D E   L ' A D R E S S E   C O U R A N T E  :
<
         IF          VERSIO-0,X200,,X200
         LA          BUFTV           < RESTAURATION DE L'ADRESSE
                                     < REELLEMENT LUS , ET CECI A CAUSE
                                     < DE LA DETECTION DE LA VALIDITE
                                     < DES CODE BCD.
X200:    VAL         0
         LXI         3               < 3 CHIFFRES A CONVERTIR.
         SLRD        16+2            < A=0 , B=@COURANTE/4.
<
< BOUCLE DE CONVERSION :
<
E631:    EQU         $
         DV          C16             < CONVERSION BCD-->ASCI.
         XR          A,B             < A=RESTE DE LA DIVISION.
         CPI         9               < VALIDATION DE L'ADRESSE.
         JG          RADC1           < ADRESSE NON RECONNUE , ON
                                     < RECOMMENCE.
         IF          DEBUG,,X100,
<        IF          DEBUG,,X100,
         ORI         '30             < CONVERSION ASCI.
         STBY        &ABADC          < MISE DANS LE BUFFER D'EDITION.
X100:    VAL         0
         LAI         0               < CLEAR A.
         JDX         E631            < AU CHIFFRE SUIVANT.
         IF          DEBUG,,X100,
<        IF          DEBUG,,X100,
         LAD         BADC            < A=@MESSAGE D'ADRESSE COURANTE.
         BSR         APRINT          < AFFICHAGE DE L'ADRESSE COURANTE.
X100:    VAL         0
E630:    EQU         $
         LA          ADRES           < RESTAURE : A=ADRESSE COURANTE.
         JMP         E671            < VERS LA RESTAURATION DE X ,
                                     < ET LA SORTIE.
         PAGE
<
<
<        E N V O I   D ' U N   O R D R E  :
<
<
<        ARGUMENT :
<                    A=ORDRE A ENVOYER AU COUPLEUR
<                      DES MAGNETOSCOPES.
<
<
ORDRE:   EQU         $
         STA         BUFTV           < MISE EN PLACE DANS BUFTV.
         IF          VERSIO-0,X200,,X200
<
< DETERMINATION DES CORRECTIONS DE LECTURE :
<
         STZ         CORECT          < A PRIORI CORRECTION NULLE.
         CP          RWD             < EST-CE UN REWIND QUI EST DEMANDE?
         JNE         E680            < NON , ON A : CORECT=0.
         LAI         -'20
         STA         CORECT          < SI OUI , CORECT=-'20.
E680:    EQU         $
X200:    VAL         0
<
< ENVOI DE L'ORDRE :
<
         LA          DEMCU
         ORI         2               < MISE EN PLACE D'UNE FONCTION
                                     < D'ECRITURE SUR LE NVP=A.
         STA         DEMTV           < MISE DE DEMTV EN ECRITURE.
         LAD         DEMTV           < A=@DEMTV.
E670:    EQU         $               < ENTRY 'TEMPORISATION'.
         STX         F3              < SAUVEGARDE DE X.
         SVC         0               < ENVOI DE L'ORDRE.
E671:    EQU         $               < ENTRY POUR RADC.
         LX          F3              < RESTAURATION DE X.
         RSR
<
<
<        S T O P   M A G N E T O S C O P E  :
<
<
<        FONCTION :
<                      CETTE ROUTINE PROVOQUE UN ARRET
<                    DU MAGNETO. SUIVI D'UNE TEMPORISATION
<                    DE 3 SECONDES.
<
<
RSTOP:   EQU         $
         LA          STOP
         BSR         AORDRE          < ENVOI D'UN STOP AU MAGNETO.
         LYI         3+VERSIO        < Y=DUREE DE TEMPORISATION.
         BSR         ATEMPO          < TEMPORISATION DE (Y) SECONDES.
         RSR
         PAGE
<
<
<        T E M P O R I S A T I O N   D U   P R O C E S S E U R  :
<
<
<        ARGUMENT :
<                    Y=DUREE EN SECONDES DE LA TEMPORISATION.
<
<
<
<
TEMPO:   EQU         $
         STY         SLEEP+2         < MISE EN PLACE DE LA DUREE DANS
                                     < LE CODEM DE SLEEP.
         LAD         SLEEP           < A=@DEMANDE DE TEMPORISATION.
         JMP         E670            < VERS TEMPORISATION (Y) SECONDES.
         PAGE
<
<
<        C O M M U T A T I O N   D E   L A   B A I E  :
<
<
         IF          VIRE,X100,,X100
<        NUMERO DE TELEVISEUR ASSOCIE A UNE VISU :
<                    ON FORME : NSPOUT-NSPVI1+1.
X100:    VAL         0
<
<
<        ARGUMENT :
<                    Y='A5 : ETABLIR UNE CONNEXION ,
<                     ='81 : ROMPRE UNE CONNEXION.
<
<
COMUT:   EQU         $
<
< ETABLISSEMENT DE LA COMMUTATION SUR LA BAIE :
<
         LAD         MREL11
         BSR         ACALCI          < DESASSIGNATION DU NVP=11.
         LAD         MCU3
         BSR         ACALCI          < !ASSIGN 11=CU3 (BAIE).
         IF          VIRE,X100,,X100
         WORD        '1E95           < RENVOI : A=NSPOUT/NSPVI1.
         LBI         '88             < FONCTION 'ENVOI NUMERO TV'.
         SCRD        8               < A='88/NSPOUT.
         SWBR        B,B             < B=NSPVI1 .          XX 3300  XXXXXXXXXXXX
         SBR         B,A             < A='88/NUMERO DE TV .XX 1200  XXXXXXXXXXXX
         ADRI        1,A             < AFIN D'AVOIR UN NUMERO / A 1.
X100:    VAL         0
         IF          VIRE,,X100,
         LA          NUMOUT          < A=SORTIE COURANTE DEMANDEE.
         OR          COMOUT          < SUPERPOSITION DE L'ORDRE D'
                                     < ENVOI D'ADRESSE MEMOIRE.
X100:    VAL         0
         PTY                         < PARITE DU NUMERO DE TV.
         JNC         E601            < PARITE PAIRE.
         SBT         1               < PARITE IMPAIRE.
E601:    EQU         $
         LR          A,B             < SAVE LA COMMANDE DE LA BAIE
                                     < DANS LE REGISTRE B.
         LAD         DCLEAR
<
<        P H A S E   C R I T I Q U E   S U R   L A   B A I E  :
<
         WORD        '1EF5           < TEST & SET 7.
         JC          $-1             < ATTENTE DU PASSAGE ...
         SVC         0               < CLEAR DES BASCULES DE LA BAIE ,
                                     < AU CAS OU LA SEQUENCE DE
                                     < COMMANDES PRECEDENTE AURAIT
                                     < ETE ABORTEE (CF. L'ENVOI D'UN
                                     < CARACTERE D'ABORT!!!!).
         LAD         DEMBAT
         SVC         0               < LECTURE AVEC IT SUR LA BAIE.
         LR          Y,A             < ACCES A LA FONCTION DEMANDEE.
         CPI         '81             < EST-CE UNE DECONNEXION ???
         JE          DCOMUT          < OUI , ALLONS LA PREPARER ...
<
< CAS D'UNE CONNEXION :
<
         STB         BUFTV           < MISE EN PLACE DE LA COMMANDE
                                     < DE LA BAIE.
         LAD         DEMBAI
         SVC         0               < ENVOI DU NUMERO DE TV A LA BAIE.
         LAD         DEMBAT
         SVC         0               < LECTURE AVEC IT DE LA REPONSE.
         SWBR        Y,A             < CADRAGE DE LA FONCTION.
         OR          NUMAG           < CONCATENATION NUMAG.
         OR          PARITE          < CONCATENATION PARITE MAGNETO.
COMUT1:  EQU         $               < ENTRY DECONNEXION.
         STA         BUFTV           < MISE EN PLACE DE LA COMMANDE
                                     < DE LA BAIE.
         LAD         DEMBAI
         SVC         0               < ENVOI DU NUMERO DE
                                     < MAGNETOSCOPE A LA BAIE.
         LAD         DEMBAT
         SVC         0               < LECTURE AVEC IT DE LA REPONSE.
<
<        F I N   D E   P H A S E   C R I T I Q U E  :
<
         WORD        '1E75           < RESET 7.
         JC          $               < E R R E U R ....
         RSR                         < RETOUR ...
<
< CAS D'UNE DECONNEXION :
<
DCOMUT:  EQU         $
         LR          B,A             < RECUPERATION DU NUMERO DE
                                     < SORTIE ET DE SA PARITE.
         EOR         DECOMO          < INVERSION DES BITS 4 ET 7.
         JMP         COMUT1          < VERS LA DECONNEXION.
         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.
<
<
<        REMARQUE :
<                      EN GENERAL LES CONDITIONS DE RETOUR
<                    (X) SONT IGNOREES.
<
<
MAGS:    EQU         $
         STBY        DEMMAG          < MISE DU NVP DEMANDE DANS DEMMAG.
         LAD         DEMMAG
         SVC         0               < ACCES AU SGN.
         RSR
         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  :
<
<
X10:     VAL         ZERO-$+'3EE
ZEROW:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI 'RE'
                                     < FAIT PLUS D'1K MOTS !!!
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$           < CETTE CONSTANTE DOIT ETRE >=0 !!!
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI MAUVAISE
                                     < IMPLANTATION.
         DZS         X10+1           < PAR PROPRETE ...
         EOT         #SIP GEN PROCESSEUR#



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