NMPROC:  VAL         "EY"            < NOM DU PROCESSEUR.
         IDP         "EY - RELEASE 02 - 28/11/80"
         IDP         "EDITEUR EXAUSTIF DES IMAGES DU CATALOGUE"
         IDP         "JOHN F. COLONNA"
         PROG
         PAGE
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        CATAL           < ENTRY POINT DU PROCESSEUR.
         WORD        0
PCATAL:  EQU         $               < P='12 !!!
         LRP         L
         BR          -2,L            < ENTRY DANS LE PROCESSEUR.
         PAGE
         EOT         #SIP DEFINITION ITEM#
         EOT         #SIP IMAGE 256#
LNOM:    VAL         20              < NBRE DE MOTS MAX OCCUPES PAR
                                     < UN NOM SOUS SGN.
<
<        V A L E U R   D ' U N   N O M  :
<
NOMIM:   EQU         ZERO+PILE+5-LNOM-2  < NOM IMAGE.
IMAG:    EQU         NOMIM+LNOM      < IMAGE: ATTENTION!!! SI IMAGE 4K,
                                     < ALORS L'IMAGE PROPREMENT DITE NE COMMENCE
                                     < QU'EN IMAG + 2 MOTS.
         PAGE
<
<
<        L O C A L  :
<
<
         TABLE
MSTD:    BYTE        10;'6D
         ASCI        "STANDARD?"
MSAV:    BYTE        13;'6D
         ASCI        "SAVE SUR 0B?"
MDKV:    BYTE        14;'6D
         ASCI        "DISQUE VIDEO?"
MEOR:    BYTE        23;'6D
         ASCI        "I(N)=I(N-1).EOR.I(N) ?"
CDAI:    ASCI        "!CDA"
         BYTE        "I";'04
         LOCAL
LOC:     EQU         $
<
< BUFFERS ET MESSAGES :
<
REP:     WORD        0               < REPONSE 1 CARACTERE UTILISATEUR.
         $EQU        REP
REP3:    DZS         2               < REPONSE SUR 3 OU 4 CARACTERES.
HNOM1:   BYTE        0;'6D
HNOM2:   DZS         LNOM+2*2
RCLF:    BYTE        0;'6D
NOM:     ASCI        "NOIR"          < PAR PRUDENCE.
         BYTE        '04;0
LNOIR::  VAL         $-NOM
         DZS         LNOM+2-LNOIR
         BYTE        '04;0           < POUR LA RECHERCHE DE L'EOT DE FIN
                                     < DE RACINE DE RECERCHE.
FNOM:    EQU         $
MINT:    BYTE        3;" ";"?";"?"
MRAC:    BYTE        8;'6D
         ASCI        "RACINE> "
MPART:   BYTE        13;'6D
         ASCI        "A PARTIR DE "
MOK:     BYTE        4;" ";"O";"K";"?"
MIMSD:   BYTE        16;'6D
         ASCI        "IMAGES SGN/DKU?"
MVOL:    BYTE        19;'6D
         ASCI        "IMAGES SUR VOLUME?"
MLISTD:  BYTE        8;'6D
         ASCI        "DELETE? "
MPAS:    BYTE        11;'6D
         ASCI        "PAS A PAS?"
MHEXA:   BYTE        13;'6D
         ASCI        "HEXADECIMAL?"
<
< RELAIS DIVERS :
<
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
AGOSGN:  WORD        GOSGN           < APPEL DU SGN POUR CATAL.
ATEST:   WORD        TEST            < TEST NOM COURANT (IMAGE OU PAS...).
ALVIS:   WORD        LVIS            < LOAD ET VISUALISATION IMAGE.
AVISU:   WORD        VISU            < VISUALISATION SEULE...
APRINT:  WORD        PRINT           < EMISSION MESSAGE.
AHEXA:   WORD        HEXA            < CONVERSION BINAIRE-->HEXADECIMAL.
ACCI:    WORD        CCI             < APPEL CCI INTERPRETATIF.
AIHEX:   WORD        HEX             < CONVERSION : ASCI --> BIANIRE.
AGOGE:   WORD        E50             < RETOUR A 'GE'.
AE351:   WORD        E351            < RELAI DU MODE STANDARD...
AREPX:   WORD        REP,X           < RELAI INDEXE VERS LA REPONSE...
ANOM:    WORD        NOM,X           < RELAI D'ACCES AU NOM COURANT.
AHNOM:   WORD        HNOM2,X         < RANGEMENT DU NOM EN HEXA.
AIMAG:   WORD        IMAG,X          < POUR ATTEINDRE L'IMAGE ET FAIRE 'EOR'...
ASTACK:  WORD        STACK-1         < PILE DU PROCESSEUR.
APILE:   WORD        PILE-1          < @PILE DE SODOME.
<
< CONSTANTES DIVERSES :
<
KIN:     WORD        -1              < COMPTEUR DES ENTRIES.
NGE:     WORD        "GE"            < NOM DU PROCESSEUR GE.
XRAC:    WORD        0               < MEMORISATION DE L'INDEX INITIAL.
SXRAC:   WORD        0               < SAVE LE (X) INITIAL.
VISUAL:  WORD        0               < INDICATEUR DE VISUALISATION :
                                     < 0 : NE PAS VISUALISER VALEUR ,
                                     < #0 : VISUALISER LA VALEUR(NOM).
ISAVE:   WORD        0               < 0=PAS DE SAUVEGARDE,
                                     < 1=SAUVEGARDE DES IMAGES EN MEMOIRE
                                     <   D'IMAGE SUR BANDE MAGNETIQUE.
IDKV:    WORD        0               < INDICATEUR D'ENVOI SUR LE DISQUE VIDEO :
                                     < 0 : NON,
                                     < 1 : OUI.
WDKV:    BYTE        "I";'0D         < COMMANDE D'ECRITURE INCREMENTALE.
LWDKV::  VAL         $-WDKV          < LONGUEUR DE 'WDKV'.
IDEL:    DZS         1               < INDICATEUR MODE DELETE:
                                     < = 0 : NON,
                                     < = 1 : OUI.
IPAS:    DZS         1               < INDICATEUR MODE PAS A PAS:
                                     < = 0 : OUI,
                                     < = 1 : NON.
ITYPIM:  WORD        1               < INDICATEUR TYPE D'IMAGE:
                                     < = 0 : IMAGE 4K,
                                     < = 1 : IMAGE 12 K NOUVEAU MODELE,
                                     < =-1 : IMAGE 12K ANCIEN MODELE,
                                     < = 2 : IMAGES 12K SGN/DKU.
                                     < (INITIALISE POUR "NOIR"...)
IIMSD:   DZS         1               < INDICATEUR DE PRISE EN COMPTE DES IMAGES
                                     < SGN/DKU:
                                     < = 0 : LES IGNORER,
                                     < = 1 : LES PRENDRE EN COMPTE.
CLI4K:   WORD        LIMAG+2*2       < LONGUEUR OCTETS IMAGE 4K.
CLI12K:  WORD        LIMAG*3*2       < LONGUEUR IMAGE 12 K NOUVEAU MODELE.
XANOM:   WORD        0               < INDEX DU NOM EN ALPHA.
XHNOM:   WORD        0               < INDEX DU NOM EN HEXA.
INDH:    WORD        0               < =0 : EDITION ALPHA DES NOMS ,
                                     < #0 : EDITION ALPHA+HEXA NOMS.
KCONT:   WORD        1               < CALCUL DE LA LA LONGUER DES
                                     < MESSAGES LORS DE L'EDITION DES
                                     < NOMS.
<
< POUR FAIRE I(N-1).EOR.I(N) :
<
IEOR:    WORD        0               < =0 : NE RIEN FAIRE,
                                     < #0 : FAIRE I(N)=I(N-1).EOR.I(N), SACHANT
                                     <      QUE I(0)="NOIR"...
                                     < =+1 : SAVE (COMPACTAGE),
                                     < =-1 : RESTAURE (DECOMPACTAGE).
XEOR:    WORD        0               < MOT COURANT DE LA "CDAI"...
XLIMAG:  WORD        LIMAG*3         < LONGUEUR EN MOT D'UNE IMAGE 12K...
<
< DEMANDES A CMS4 :
<
DEMSGN:  WORD        '0402           < SGN OVERLAY.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
SCATAL:  WORD        '0002           < SGN CATALOGUE.
         WORD        NOM-ZERO*2
         WORD        0               < LONGUEUR COURANTE DU NOM.
         WORD        -1
DEMLOD:  WORD        '0502           < DEMANDE DE LOAD SOUS ACN.
         WORD        NOMIM-ZERO*2
         WORD        LIMAG*3+LNOM*2  < (INITIALISE
DELTA:   WORD        LNOM*2          <             POUR "NOIR")
DEMDEL:  WORD        '0302           < DELETE NOM.
         WORD        NOM-ZERO*2
         WORD        LNOM+2*2
         WORD        LNOM*2
DMRDKU:  WORD        '8A00           < LECTURE IMAGE 12K SGN/DKU SUR DKU.
         WORD        IMAG-ZERO*2
         WORD        LIMAG*3*2
ASDKU:   DZS         1               < ADRESSE SECTEUR DKU.
DMLISD:  WORD        '0502           < LOAD IMAGE SGN/DKU.
         WORD        NOM-ZERO*2
         WORD        ASDKU-NOM*2+2
         WORD        ASDKU-NOM*2
DEMREP:  WORD        '0101           < ENTREE REPONSES UTILISATEUR.
         WORD        REP-ZERO*2
         WORD        1
DEMMES:  WORD        '0202           < EMISSION D'UN MESSAGE.
         WORD        0               < @OCTET DU MESSAGE.
         WORD        0               < LONGUEUR DU MESSAGE.
DEMIN:   WORD        '0101           < ENTREE DE LA RCINE DU CATALOGUE.
         WORD        NOM-ZERO*2
         WORD        2*LNOM-1
DEMOUT:  WORD        '0202           < AFFICHAGE DU NOM COURANT.
         WORD        RCLF-ZERO*2+1
         WORD        0               < LONGUEUR DU NOM COURANT.
DEMCCI:  WORD        '0001           < RETOUR AU CCI.
OUI:     ASCI        "OUI"
DMREP3:  WORD        '0101           < DEMANDE REPONSE DE 3 CARACTERES.
         WORD        REP3-ZERO*2
         WORD        3
DEMM16:  WORD        '0004           < DEMANDE MEMOIRE DE 16 K MOTS.
         WORD        0
         WORD        '8000
DEMTST:  WORD        '8502           < LOAD SGN POUR TESTER NOM COURANT.
         WORD        NOM-ZERO*2
         WORD        FNOM-NOM*2
         WORD        -1
RELMEM:  WORD        '0004           < DEMANDE DE RETOUR A 4K MOTS.
         WORD        0
         WORD        '2000           < 4K MOTS.
STABIL:  WORD        '8A01           < STABILISATION DE L'IMAGE VIDEO.
         DZS         1
         WORD        '2000
         WORD        0
DWDKV:   WORD        '8C02           < ECRITURE SUR LE DISQUE VIDEO.
         WORD        WDKV-ZERO*2
         WORD        LWDKV*2
<
< SAUVEGARDE SUR L'UNITE '0B :
<
NVPSAV:: VAL         '0B
SAVB:    BYTE        NVPSAV;'0B      < FONCTION DE PASSAGE A 'MEMTV'...
         WORD        0               < SAUVEGARDE A PARTIR DU PREMIER MOT,
         WORD        LIMAG*3*2       < DE TOUS LES MOTS...
         WORD        0
<
< ACCES AU VOLUME EXTENSION :
<
AASDKU:  ASCI        "!ASSIGN A=DK"
         BYTE        "U";'04
MVDKU:   ASCI        "!DKU M A"
NAVOL:   BYTE        "=";"X";"Y";"Z";"T";'04
ANAVOL:  WORD        NAVOL,X         < POUR GENERER LE NUMERO DE VOLUME.
MCLOSE:  ASCI        "!ASSIGN A="
         BYTE        "S";'04
VOLNUM:  WORD        0               < NUMERO DU VOLUME COURANT (0=ABSENT)...
DEMCC:   WORD        2               < ACCES AU CCI INTERPRETATIF.
         WORD        0               < ADRESSE DE LA CARTE.
         WORD        80
NBRHEX:  VAL         4               < NOMBRE DE CHIFFRES HEXA-DECIMAUX...
DEMHEX:  WORD        '0101
         WORD        REP-ZERO*2
         WORD        NBRHEX
MVOLNU:  BYTE        8;'6D
         ASCI        "VOLUME="
LIMVO::  VAL         2               < LONGUEUR MOT DE L'EXTENSION.
IVALEX:: VAL         0               < BIT DE DISCRIMINATION EXTENSION 'BOX'.
         PROG
         PAGE
         PAGE
<
<
<        A C C E S   A U   S G N  :
<
<
<        ARGUMENT :
<                    A=NVP D'ACCES AU SGN.
<
<
<        RESULTAT :
<                    A=CONDITIONS DE RETOUR DU SGN ,
<                    INDICATEURS POSITIONNES SUR ERREUR.
<
<
GOSGN:   EQU         $
         CPZR        X
         JGE         GOSGN1          < OK...
         PSR         A
         LXI         0               < ON REINITIALISE LE PARCOURS, IL
         LAI         '04             < S'AGIT SUREMENT D'UN DELETE DE
         STBY        &ANOM           < TOUT UN CATALOGUE...
         PLR         A
GOSGN1:  EQU         $
         PSR         X               < SAVE X COURANT.
         STBY        SCATAL          < MISE EN PLACE DU NVP D'ACCES.
         LR          X,A
         ADRI        1,A
         STA         SCATAL+2        < MISE EN PLACE DE LA LONGUEU
                                     < COURANTE.
         LAD         SCATAL
         SVC         0               < APPEL DU SGN.
         LR          X,A             < A=CONDITIONS DE RETOUR.
         PLR         X               < RESTAURE X COURANT.
         RSR
         PAGE
<
<
<        C O N V E R S I O N   B I N A I R E   -->  H E X A  :
<
<
<        ARGUMENT :
<                    A=1 CHIFFRE HEXA EN BINAIRE.
<
<
<        RESULTAT :
<                    LE CHIFFRE HEXA EST CONVERTI EN HEXA (ASCI) ET MIS
<                    DANS LE BUFFER A L'INDEX (XHNOM) QUI ENSUITE
<                    PROGRESSE D'UNE UNITE.
<
<
HEXA:    EQU         $
         CPI         9               < EST-CE UN CHIFFRE DECIMLA ???
         JLE         HEXA1           < OUI.
         ADRI        '41-'39-1,A     < NON , TRANSLATION VERS LES LETTRES.
HEXA1:   EQU         $
         ADRI        '30,A           < CONVERSION ASCI.
         LX          XHNOM           < X=INDEX COURANT HEXA.
         STBY        &AHNOM          < MISE DANS LE BUFFER HEXA.
         IC          XHNOM           < ET PROGRESSION DE L'INDEX COURANT.
         RSR                         < ET CH)ST TOUT ...
         PAGE
<
<
<        E M I S S I O N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT DU MESSAGE , DONT LE 1ER OCTET EST
<                      SA LONGUEUR.
<
<
<        DETRUIT X ...
<
<
PRINT:   EQU         $
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMMES+1        < MAJ DE DEMMES.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMMES+2        < MAJ DE DEMMES.
         LAD         DEMMES
         SVC         0               < EMISSION DU MESSAGE.
         RSR
         PAGE
<
<
<        E N V O I   D ' U N E   C A R T E   A U   C C I  :
<
<
<        ARGUMENT :
<                    A=ADRESSE MOT DE LA CARTE.
<
<
CCI:     EQU         $
         ADR         A,A             < CONVERSION EN UNE ADRESSE OCTET.
         STA         DEMCC+1
         LAD         DEMCC
         SVC         0               < ET ENVOI DE LA CARTE...
         RSR
         PAGE
<
<
<        C O N V E R S I O N   H E X A   -->   B I N A I R E  :
<
<
<        ARGUMENT :
<                    LE BUFFER 'REP'.
<
<
<        RESULTAT :
<                    B=0 : (A)=VALEUR BINAIRE,
<                    B#0 : ERREUR DE SYNTAXE HEXA-DECIMALE.
<                    LES INDICATEURS POSITIONNES SUR (B).
<
<
HEX:     EQU         $
BASE10:  VAL         10
BASE16:  VAL         16
NBRHEX:  VAL         4
         PSR         X,Y
         LYI         NBRHEX
         LXI         0               < INDEX DU BUFFER DE REPONSE.
         LBI         0               < CLEAR LE REGISTRE B.
HEX1:    EQU         $
         LBY         &AREPX          < A=CARACTERE COURANT DU BUFFER.
         ADRI        -"0",A
         JAL         HEX4            < ERREUR : CARACTERE NON RECONNU.
         CPI         BASE10          < EST-CE UN CHIFFRE ???
         JL          HEX2            < OUI , C'EST UN CHIFFRE.
         ADRI        -"A"+"9"+1,A    < NON.
         CPI         BASE10          < VALIDATION.
         JL          HEX4            < ERREUR : CARACTERE NON RECONNU.
         CPI         BASE16          < VALIDATION.
         JGE         HEX4            < ERREUR : CARACTERE NON RECONNU.
HEX2:    EQU         $
         SCRS        NBITMO/NBRHEX   < MISE DES 4 BITS EN TETE DE A.
         SCLD        NBITMO/NBRHEX   < ET CONCATENATION A B.
         ADRI        1,X             < PROGRESSION DE L'INDEX.
         CPR         X,Y             < EST-CE FINI ???
         JNE         HEX1            < NON , ON CONTINUE.
         LR          B,A             < A=VALEUR BINAIRE DE (REP).
         LBI         0               < B=0 : RETOUR OK.
HEX3:    EQU         $
         PLR         X,Y
         CPZR        B               < POSITIONNEMENT DES INDICATEURS.
         RSR
<
< RETOURS EN ERREUR :
<
HEX4:    EQU         $
         LR          B,A             < A=VALEUR COURANTE...
         LBI         1               < B#0.
         JMP         HEX3            < VERS LA SORTIE ...
         PAGE
<
<
<        P R O C E S S E U R   D ' E D I T I O N
<        E X A U S T I V E   D E S   C A T A L O G U E S  :
<
<
<        FONCTION :
<                      CE PROCESSEUR PERMET D'EXPLORER LE CATALOGUE DES NOMS
<                    EN N'EN RETENANT QUE LES IMAGES QUI SONT SYSTEMATIQUE-
<                    MENT VISUALISEES.
<                      ON PEUT TRAVAILLER EN PAS A PAS OU AUTOMATIQUEMENT,
<                    ET L'ON PEUT DELETER OU NON LES IMAGES.
<                      IL EXISTE 4 TYPES D'IMAGES:
<                    - IMAGE 4K,
<                    - IMAGE 12 K ANCIEN MODELE,
<                    - IMAGE 12 K NOUVEAU MODELE,
<                    - IMAGE 12 K SGN/DKU, CES IMAGES N'ETANT PAS "DELETABLES"
<                    - IMAGE 12K D'EXTENSION SUR VOLUME.
<
<
         WORD        LOC+'80
         WORD        BRANCH
CATAL:   EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DE L ET W.
         LA          ASTACK
         LR          A,K             < INITIALOSATION DE K.
         IC          KIN             < COMPTAGE DES ENTRIES DANS 'EX'.
         JE          E340            < CAS DE LA 1ERE ...
         BR          AGOGE           < POUR LA SUIVANTE , ON VA A 'GE'.
E340:    EQU         $
<
< INITIALISATION DE L'EDITEUR :
<
         STZ         IDEL            < MODE DELETE = NON A PRIORI.
         STZ         IPAS            < MODE PAS A PAS = OUI A PRIORI.
         STZ         IIMSD           < A PRIORI ON IGNORE LES IMAGES SGN/DKU.
         STZ         ISAVE           < PAS DE SAUVEGARDE SUR '0B A PRIORI...
         STZ         VOLNUM          < PAS DE VOLUME...
<
< ALLOCATION MEMOIRE :
<
         LAD         DEMM16
         SVC         0               < 16K...
<
< MODE STANDARD OU PAS ???
<
         LAI         MSTD-ZERO
         BSR         APRINT
         LAD         DEMREP
         SVC         0
         LBY         REP             < (A)=REPONSE,
         CPI         "O"
         JNE         E351Y1          < NON...
         BR          AE351           < MODE STANDARD : PAS DE VOLUME, PAS DE
                                     < DELETE, PAS DE SAUVEGARDE ET PAS A PAS...
E351Y1:  EQU         $
         CPI         "N"
         JNE         E340            < ?!?!???!
<
< CAS DU MODE NON STANDARD,
< FAUT-IL SAUVEGARDER ???
<
E340X1:  EQU         $
         LAI         MSAV-ZERO
         BSR         APRINT
         LAD         DEMREP
         SVC         0
         LBY         REP             < (A)=REPONSE,
         CPI         "N"
         JE          E340X2          < PAS DE SAUVEGARDE...
         CPI         "O"
         JNE         E340X1          < ??!??!??!
         IC          ISAVE           < ISAVE=1...
E340X3:  EQU         $
         LAD         SAVB
         SVC         0               < ON ESSAIE DE COMMUTER LE DEROULEUR DE
                                     < BANDES SUR LA MEMOIRE D'IMAGE...
         JE          E340X4          < OK...
         QUIT        1               < ERREUR, !ASSIGN ???
         JMP         E340X3          < ON RE-TENTE...
E340X4:  EQU         $
         LAI         '02
         STA         SAVB            < ON MET 'SAVB' EN
         LAI         NVPSAV
         STBY        SAVB            <                  MODE ECRITURE...
E340X2:  EQU         $
<
< I(N)=I(N-1).EOR.I(N) ???
<
E340Z1:  EQU         $
         STZ         IEOR
         LAI         MEOR-ZERO
         BSR         APRINT          < ENVOI D'UN MESSAGE...
         LAD         DEMREP
         SVC         0               < LECTURE DE LA REPONSE :
         LBY         REP
         CPI         "N"
         JE          E340Z2          < NON, PAR DE "EOR"...
         STZ         IEOR
         DC          IEOR            < IEOR=-1 A PRIORI (RESTAURATION)...
         CPI         "R"
         JE          E340Z3
         STZ         IEOR
         IC          IEOR            < IEOR=+1 A PRIORI (SAUVEGARDE)...
         CPI         "S"
         JNE         E340Z1          < ?!?!??!?!
E340Z3:  EQU         $
         LXI         FNOM-NOM
         LAD         NOM
         LRM         B
         WORD        NOMIM
         MOVE                        < MISE EN PLACE DU NOM "NOIR",
         LAI         6
         STBY        DEMLOD          < POUR ACCEDER A ":SYS"...
         LAD         DEMLOD
         SVC         0               < INITIALISATION : I(0)="NOIR"...
         BSR         AVISU           < AFFICHAGE DE "NOIR"...
         LAI         5
         STBY        DEMLOD          < POUR ACCEDER A <ACN>...
         LAI         CDAI-ZERO
         BSR         ACCI            < ET ON VA ACCEDER A "CDAI"...
E340Z2:  EQU         $
<
< ECRITURE SUR LE DISQUE VIDEO ???
<
E340Y1:  EQU         $
         LAI         MDKV-ZERO
         BSR         APRINT          < ENVOI D'UN MESSAGE,
         LAD         DEMREP
         SVC         0               < LECTURE D LA REPONSE :
         LBY         REP             < (A)=REPONSE :
         CPI         "N"
         JE          E340Y2          < "N" : IDKV=0,
         CPI         "O"
         JNE         E340Y1          < ?!??!??!
         IC          IDKV            < "O" : IDKV=1.
E340Y2:  EQU         $
<
< FAUT-IL LISTER EN HEXADECIMAL ???
<
E1000:   EQU         $
         LAD         MHEXA
         BSR         APRINT          < ENVOI D'UN MESSAGE INTERROGATION.
         LAD         DEMREP
         SVC         0               < ENTREE DE LA REPONSE.
         LBY         REP             < A=CARACTERE REPONSE.
<
<        REPONSES RECONNUES :
<                    N : LISTAGE ALPHA-NUMEROQUE SEUL ,
<                    O : LISTAGE ALPHA-NUMERIQUE+HEXADECIMAL.
<
         CPI         "N"
         JE          E1001           < LISTAGE ALPHANUMERIQUE SEUL.
         CPI         "O"
         JNE         E1000           < INCOMPREHENSIBLE ...
<
< LISTAGE ALPHA-NUMERIQUE+HEXADECIMAL :
<
         LAI         HNOM1-ZERO*2+1  < CHANGEMENT DE L'ADRESSE BUFFER.
         STA         DEMOUT+1
         LAI         LNOM+2*4+2+1
         STA         KCONT           < CONSTANTE DE CALCUL DE LA
                                     < LONGUEUR DES MESSAGES LORS DE
                                     < L'EDITION DES NOMS.
         LAI         '20
         SWBR        A,A
         ORI         '20
         STA         RCLF            < ON REMPLACE LE RC-LF DE DEBUT DU
                                     < NOM ALPHA-NUMERIQUE PAR 2
                                     < CARACTERES 'SPACE'.
         STA         INDH            < DE PLUS , ON FAIT AINSI INDH#0.
E1001:   EQU         $
<
<
<        D E F I N I T I O N   D U   V O L U M E   C O U R A N T  :
<
<
         LAI         MVOL-ZERO
         BSR         APRINT
         LAD         DEMREP
         SVC         0               < FAUT-IL ATTEINDRE UN VOLUME ???
         LBY         REP
         CPI         "O"
         JE          VOL3            < OUI...
         CPI         "N"
         JNE         E1001           < ?!?!!!?!
         JMP         VOL4
VOL3:    EQU         $
VOLUME:  EQU         $
         LAD         MCLOSE
         BSR         ACCI            < LIBERATION PREVENTIVE DE 'A,
         STZ         VOLNUM          < ET PAS DE VOLUME A PRIORI...
         LAD         MVOLNU
         BSR         APRINT          < DEMANDE DU NUMERO DE VOLUME :
         LAD         DEMHEX
         SVC         0
         BSR         AIHEX           < ET CONVERSION BINAIRE :
         JNE         VOLUME          < BERK...
<
< MONTAGE DU VOLUME DEMANDE :
<
         JAE         VOLUM1          < EN FAIT, IL S'AGIT D'UN DEMONTAGE, OK...
         STA         VOLNUM          < ET NON, MONTAGE : MEMORISATION DU NUMERO
                                     < DE VOLUME,
         LAD         AASDKU
         BSR         ACCI            < ON TENTE DE S'APPROPRIER 'DKU' :
         JNE         VOL2            < IMPOSSIBLE, ERRORV, ON DEMONTE...
         LXI         4               < OK, ON A 'DKU',
VOL1:    EQU         $
         ADRI        -1,X
         LBY         &AREPX          < TRANSFERT DU NOM
         ADRI        1,X
         STBY        &ANAVOL         < DU VOLUME EN ASCI...
         JDX         VOL1
         LAD         MVDKU
         BSR         ACCI            < ET TENTATIVE DE MONTAGE...
         JE          VOLUM1          < OK, ON VA ACCEDER A DES IMAGES DE TYPE
                                     < EXTENSION SUR VOLUME...
         LAD         MCLOSE
         BSR         ACCI            < ERREUR DE VOLUME...
VOL2:    EQU         $
         STZ         VOLNUM          < ET ON DEMONTE SI ERREUR...
         JMP         VOLUME          < ET ON REDEMANDE...
VOLUM1:  EQU         $
         JMP         E300            < ON SAUTE SGN/DKU...
<
< FAUT-IL AUSSI LISTER LES IMAGES SGN/DKU ?
<
VOL4:    EQU         $
         LAD         MIMSD
         BSR         APRINT
         LAD         DEMREP
         SVC         0
         LBY         REP
         CPI         "N"
         JE          E300
         CPI         "O"
         JNE         E1001
         IC          IIMSD           < OUI, DONC PAS DE DELETE POSSIBLE...
         JMP         E350
<
< EST-CE UN LISTAGE AVEC DELETE EVENTUEL ???
<
E300:    EQU         $
         LAD         MLISTD
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMREP
         SVC         0               < ENTREE DE LA REPONSE.
         LBY         REP             < A=REPONSE UTILISATEUR.
         CPI         "N"
         JE          E350            < LISTAGE - VISUALISATION UNIQUEMENT.
         CPI         "O"
         JNE         E300            < REPONSE INCORECTE.
< DELETE DEMANDE, CONFIRMER EN REPONDANT "OUI".
         LAD         MOK
         BSR         APRINT
         LAD         DMREP3
         SVC         0
         LA          REP3
         CP          OUI
         JNE         E300
         LBY         REP3+1
         CPI         "I"
         JNE         E300
         IC          IDEL            < MODE DELETE = OUI.
E350:    EQU         $
         LAD         MPAS
         BSR         APRINT          < ENVOI DE L'INVITATION DE DELETE
                                     < EN PAS A PAS ...
         LAD         DEMREP
         SVC         0               < LECTURE DE LA REPONSE.
         LBY         REP             < A=REPONSE UTILISATEUR.
         CPI         "N"
         JE          E351            < DEMANDE D'AUTOMATIQUE.
         CPI         "O"
         JNE         E350            < ERREUR DE REPONSE ...
         IC          IPAS            < MODE AUTOMATIQUE.
E351:    EQU         $
<
< ENTREE DE LA RACINE DE PARCOURS :
<
E400:    EQU         $
         LAD         MRAC
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMIN
         SVC         0               < ENTREE DE LA RACINE.
         LXI         0               < INITIALISATION DE L'INDEX.
E210:    EQU         $
         LBY         &ANOM           < ACCES UN CARACTERE DE LA RACINE.
         CPI         '04             < EST-CE L'EOT ???
         JE          E211            < OUI.
         ADRI        1,X             < NON PROGRESSION INDEX.
         JMP         E210            < ACCES CARACTERE SUIVANT.
E211:    EQU         $
         STX         XRAC            < SAVE L'INDEX INITIAL.
         CPZR        X               < L'EOT EST-IL EN 1ER CARACTERE ???
         JE          E212            < OUI , (X) EST INCHANGE (=0).
         ADRI        -1,X            < SI NON , ON REVIENT SUR LE
                                     < CARACTERE PRECEDENT.
E212:    EQU         $
         STX         SXRAC           < SAVE LA VALEUR DU X INITIAL.
<
< EST-CE UN 'A PARTIR DE' ???
<
E430:    EQU         $
         LAD         MPART
         BSR         APRINT          < ENVOI D'UNE INVITATION.
         LAD         DEMREP
         SVC         0               < ENTREE DE LA REPONSE.
         LBY         REP             < A=REPONSE UTILISATEUR.
<
<        REPONSES RECONNUES :
<                    R/C , 'EOT' : SEULS SONT EDITES , LES NOMS
<                                  COMMENCANT PAR LA RACINE ,
<                    0,...,9 :     ON EDITE TOUT LE CATALOGUE A
<                                  PARTIR DES MOTS COMMENCANT PAR
<                                  LA RACINE.
<
         CPI         '0D
         JE          E431            < ON RESTERA SUR LA RACINE.
         CPI         '04
         JE          E431            < ON RESTERA SUR LA RACINE.
         ADRI        -'30,A          < CONVERSION BINAIRE.
         JAL         E430            < ERREUR : ON REINTERROGE.
         CPI         9               < VALIDATION SUPERIEURE ...
         JG          E430            < ERREUR : ON REINTERROGE ...
         STA         XRAC            < S'IL S'AGIT D'UN CHIFFRE
                                     < DECIMAL , IL DEVIENT LA
                                     < VALEUR DE TEST DE L'INDEX
                                     < COURANT DE PARCOURS (X).
E431:    EQU         $
         LX          SXRAC           < RESTAURE L'X INITIAL.
<
<        B O U C L E   D E   R E C U P E R A T I O N  :
<
E93:     EQU         $
         LAI         9
         BSR         AGOSGN          < DEMANDE DE NEXT-SERIE.
         CPI         5               < TEST DU CODE D'ERREUR.
         JE          E94             < IL N'Y A PAS DE NEXT SERIE ...
         JAE         E500            < OK , LE NEXT-SERIE EXISTE.
         LR          X,A
         CP          XRAC            < EST-ON DE RETOUR SUR LA RACINE ???
         JL          E50             < OUI , ON ARRETE LE LISTAGE.
         ADRI        -1,X            < DANS LES AUTRES CAS D'ERREURS ,
                                     < ON FAIT UN RETOUR ARRIERE , CAR
                                     < EN EFFET ON NE DOIT PLUS SAVOIR
                                     < OU L'ON EN EST SUITE A UN
                                     < DELETE SIMULTANE ...
         JMP         E93             < N'ETANT PAS DE RETOUR SUR
                                     < LA RACINE , ON CONTINUE.
<
< CAS OU IL Y A UN NEXT-SERIE :
<
E500:    EQU         $
         ADRI        1,X
         LBY         &ANOM           < RECUPERATION DE CE NEXT-SERIE.
         CPI         '04             < EST-CE UNE FIN DE NOM ???
         JNE         E93             < NON , ON CONTINUE A RECUPERER.
         BSR         ATEST           < TEST DU NOM (IMAGE OU PAS ET 'ITYPIM').
         JNE         E98             < CE N'EST PAS UNE IMAGE.
<
< EDITION DU NOM COURANT :
<
         PSR         X               < SAVE L'INDEX COURANT.
         LR          X,A             < A=NBRE DE CARACTERES DU NOM.
         AD          KCONT           < CALCUL DE LA LONGUEUR DU
                                     < MESSAGE A EDITER.
         STA         DEMOUT+2        < ET MAJ DE DEMOUT AVEC (A).
         CPZ         INDH            < FAUT-IL DE PLUS CONVERTIR EN HEXA?
         JE          E1002           < NON , ON VA EDITER ....
<
< CONVERSION HEXA DES NOMS :
<
         STZ         XHNOM           < RAZ DE L'INDEX DU NOM HEXA.
         STZ         XANOM           < RAZ DE L'INDEX DU NOM ALPHA.
E1003:   EQU         $               < BOUCLE DE CONVERSION ALPHA-HEXA.
         PSR         X               < SAVE LE NBRE DE CARACTERES A
                                     < CONVERTIR.
         LX          XANOM           < X=INDEX DU NOM ALPHA.
         LBY         &ANOM           < A=1 CARACTERE ALPHA.
         IC          XANOM           < PROGRESSION DE L'INDEX ALPHA.
         SLRD        4               < A=1ER CHIFFRE HEXA , ET SAVE
                                     < LE 2EME DANS B.
         BSR         AHEXA           < CONVERSION HEXA ET MISE DANS
                                     < LE BUFFER HEXA.
         LAI         0               < CLEAR A ,
         SLLD        4               < ET RECUPERATION DU 2EME CHIFFRE.
         BSR         AHEXA           < CONVERSION HEXA DU 2EME
                                     < CHIFFRE ,, ET MISE DANS LE BUFFER.
         PLR         X               < RESTAURE LE COMPTE DE CARACTERES.
         JDX         E1003           < AU SUIVANT ...
         LX          XHNOM           < X=INDEX COURANT BUFFER HEXA.
         LAI         '20             < A='SPACE'.
E1004:   EQU         $               < BOUCLE DE MISE A 'SPACE' DE
                                     < LA FIN DU BUFFER ...
         XR          A,X
         CPI         LNOM+2*4        < EST-ON AU BOUT DU BUFFER ???
         JE          E1002X          < OUI , ON ARRETE ...
         XR          A,X             < NON ,
         STBY        &AHNOM          < MISE A 'SPACE' DU CARACTERE
                                     < COURANT.
         ADRI        1,X             < AU SUIVANT ,...
         JMP         E1004
E1002X:  EQU         $
         LA          DEMOUT+2        < A=CODEM,
         LB          DEMOUT+1        < B=AMDEM,
         PSR         A,B             < ET SAVE...
         SLRS        1               < POUR FAIRE 2 ECHANGES :
         LR          A,B             < B=CODEM DU 2EME ECHANGE,
         ADCR        A               < A=CODEM DU PREMIER...
         STA         DEMOUT+2
         LAD         DEMOUT
         SVC         0               < PREMIERE PARTIE DE LA SORTIE...
         JNE         E50X            < CTRL-X-OFF...
         LA          DEMOUT+1
         AD          DEMOUT+2        < TRANSLATION DE AMDEM,
         STA         DEMOUT+1
         STB         DEMOUT+2
         LAD         DEMOUT
         SVC         0               < DEUXIEME PARTIE DE LA SORTIE...
E50X:    EQU         $
         PLR         A,B
         STA         DEMOUT+2        < RESTAURATION DE LA DEMANDE...
         STB         DEMOUT+1
         JNE         E50             < SORTIE ABORTEE PAR CTRL-X-OFF...
         JMP         E1002Y
E1002:   EQU         $               < EDITION DU BUFFER.
         LAD         DEMOUT
         SVC         0               < EDITION DU NOM COURANT.
         JNE         E50             < ARRET SUR CTRL-X-OFF ...
<
< VISUALISATION DE L'IMAGE.
<
E1002Y:  EQU         $
         LXI         FNOM-NOM
         LAD         NOM
         LRM         B
         WORD        NOMIM
         MOVE                        < MOVE NOM IMAGE EN TETE DE LA FUTURE
                                     < ZONE A VISUALISER.
         BSR         ALVIS           < LOAD ET VISUALISATION.
         CPZ         ISAVE           < FAUT-IL SAUVEGARDER ???
         JE          E320Y1          < NON...
E320Y2:  EQU         $
         LAD         SAVB
         SVC         0               < OUI, ON ESSAYE...
         JE          E320Y1          < OK...
         QUIT        1               < ERREUR ???!?!
         JMP         E320Y2          < ON RE-TENTE...
E320Y1:  EQU         $
         CPZ         IDKV            < SAUVEGARDE-T'ON SUR LE DISQUE VIDEO ???
         JE          E320Z1          < NON....
         LAD         DWDKV
         SVC         0               < OUI, EN INCREMENTAL ("I")...
E320Z1:  EQU         $
<
< PAS A PAS EVENTUEL, DELETE EVENTUEL SUR IMAGE COURANTE.
<
         LAI         "-"             < POUR EVENTUEL DELETE AUTOMATIQUE.
         CPZ         IDEL
         JNE         E320Y
         LAI         '0D             < POUR VISUALISATION AUTOMATIQUE EVENTUELLE
E320Y:   EQU         $
         CPZ         IPAS            < PAS A PAS ?
         JE          E320            < MODE AUTOMATIQUE.
E320X:   EQU         $               < MODE PAS A PAS.
         LAD         MINT            < INTERROGATION.
         BSR         APRINT
         LAD         DEMREP
         SVC         0
         LBY         REP             < 'A' = REPONSE.
         CPZ         IDEL            < SI MODE DELETE = NON,
         JE          E321            < ALORS C'EST FINI POUR CETTE IMAGE.
E320:    EQU         $               < EXAMEN DE LA REPONSE.
         CPI         '0D
         JE          E321
         CPI         '04
         JE          E321
         CPI         "+"
         JE          E321
         CPI         "-"
         JNE         E320X           < REPONSE INCORRECTE.
<
< DELETE DE L'IMAGE.
<
NSPDKU:: VAL         'A3             < DISCRIMINATEUR D'EXTENSION...
         CPZ         VOLNUM          < Y-A-T'IL UN VOLUME DE MONTE ???
         LAI         0
         JE          E321X           < NON...
         LAI         NSPDKU          < OUI,
E321X:   EQU         $
         STBY        DEMDEL+3        < ON MET EN PLACE LE DISCRIMINATEUR...
         LAD         DEMDEL
         SVC         0               < ENVOI DE LA DEMANDE DE DELETE.
         JE          $+2
         ACTD
E321:    EQU         $
         PLR         X               < RESTAURE L'INDEX COURANT.
E322:    EQU         $
<
< RECHERCHE DU NEXT-PARALLELE :
<
E98:     EQU         $
E94:     EQU         E98             < ENTRY DE 1ERE RECHERCHE NEXT-
                                     < SERIE (CF. RACINE D'UN CATALOGUE)
         LAI         8
         BSR         AGOSGN          < RECHERCHE NEXT-PARALLELE.
         CPI         5               < TEST DU CODE D'ERREUR.
         JE          E97             < CAS DU NEXT-PARALLELE QUI
                                     < N'EXISTE PAS ...
         JANE        E93             < AUTRES CAS DU SUREMENT A UN
                                     < DELETE SIMULTANE QUI DESORIENTE!!!
<
< CAS OU IL Y A UN NEXT-PARALLELE :
<
E330:    EQU         $
         ADRI        1,X
         LBY         &ANOM           < RECUPERATION DE CELUI-CI.
         ADRI        -1,X
         STBY        &ANOM           < ET ON LE MET A SA BONNE PLACE.
         JMP         E93             < ET RETOUR A LA BOUCLE DE
                                     < RECUPERATION.
<
< CAS OU IL N'Y A PAS DE NEXT-PARALLELZE :
<
E97:     EQU         $
         ADRI        -1,X            < RETOU ARRIERE DANS LE NOM.
         LR          X,A             < POUR VALIDATION.
         CP          XRAC            < EST-ON DE RETOUR SUR LA RACINE ???
         JGE         E98             < NON , ON CONTINUE ...
<
<        R E T O U R   A ' G E '  :
<
E50:     EQU         $
         LA          APILE
         LR          A,K             < RESTAURE EVENTUELLEMENT LA
                                     < PILE K PAR PURE PROPRETE (CF.
                                     < PAR EXEMPLE LES CTRL-X-OFF...)
         LAD         RELMEM
         SVC         0               < REYOUR A 4K MOTS A PRIORI.
         CPZ         VOLNUM          < VOLUME MONTE ???
         JE          E50X1           < NON...
         LAD         MCLOSE          < OUI,
         BSR         ACCI            < ON LIBERE 'A...
E50X1:   EQU         $
         LA          NGE
         STA         0,W             < MISE EN PLACE DU NOM DE GE EN
                                     < TETE DE LA BRANCHE D'OVERLAY.
         LAI         6
         STBY        DEMSGN          < MISE EN PLACE DU NVP DE LOAD
                                     < SOUS :SYS.
E101:    EQU         $
         LAD         DEMSGN
         BSR         AOVL            < TENTATIVE DE CHARGEMENT GE.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI SI ERREUR.
         JMP         E101            < ET NOUVELLE TENTATIVE SI !GO.
         PAGE
TEST:    EQU         $
<
<        T E S T   N O M   C O U R A N T.
<
<        - ARGUMENT:
<                    'NOM' DU LOCAL.
<
<        - RESULTAT:
<                    AU RETOUR FAIRE:
<                                    JE        IMAGE   < C'EST UNE IMAGE.
<                                    JNE       PASIMAGE < ...
<
<                    'ITYPIM': EST SIGNIFICATIF SI C'EST UNE IMAGE,
<                    = 0 : IMAGE 4 K,
<                    = 1 : IMAGE 12 K NOUVEAU MODELE,
<                    =-1 : IMAGE 12 K ANCIEN MODELE,
<                    = 2 : IMAGE 12K SGN/DKU.
<                    = 3 : IMAGE SUR VOLUME.
<
         PSR         A,B,X,Y         < SAUVEGARDES.
         STZ         ITYPIM          < A PRIORI.
         LAD         DEMTST          < LOAD POUR AVOIR LA BOX.
         SVC         0
         JE          $+2
         ACTD
         WORD        '1E35           < 'B' = (BOX).
         LR          B,A
         JAGE        TEST6           < CE NE PEUT ETRE UNE EXTENSION VOLUME...
         RBT         IVALEX
         CPI         LIMVO*2         < VALIDATION ???
         JE          TEST10          < OK...
         ACTD                        < E R R E U R ...
TEST10:  EQU         $
         CPZ         VOLNUM          < C'EST UNE EXTENSION, MAIS Y-A-T'IL UN
                                     < VOLUME DE MONTE ???
         JE          TEST2           < NON, ON IGNORE CETTE IMAGE...
         LAI         3               < OUI,
         JMP         TEST7           < ON VA LA VISUALISER...
TEST6:   EQU         $
         CP          CLI4K
         JE          TEST1           < IMAGE 4K.
         CPI         2
         JE          TEST5           < IMAGE SGN/DKU.
         CP          CLI12K
         JL          TEST2           < CE N'EST PAS UNE IMAGE.
         JE          TEST3           < IMAGE 12K NOUVEAU MODELE.
         DC          ITYPIM          < IMAGE 12K ANCIEN MODELE.
         JMP         TEST1
TEST3:   EQU         $
         IC          ITYPIM          < IMAGE 4K NOUVEAU MODELE.
TEST1:   EQU         $
         LYI         0               < C'EST UNE IMAGE.
         JMP         TEST4
TEST5:   EQU         $               < IMAGE 12K SGN/DKU.
         CPZ         IIMSD           < LA PRENDRE EN COMPTE ?
         JE          TEST2           < NON.
         LAI         2               < OUI,
TEST7:   EQU         $
         STA         ITYPIM          < TYPE IMAGE = 12K SGN/DKU.
         JMP         TEST1
TEST2:   EQU         $
         LYI         1               < CE N'EST PAS UNE IMAGE.
TEST4:   EQU         $
         CPZR        Y               < POUR TEST AU RETOUR.
         PLR         A,B,X,Y         < RESTAURATIONS.
         RSR
         PAGE
LVIS:    EQU         $
<
<        L O A D   E T   V I S U A L I S T I O N   I M A G E.
<
<        ARGUMENT:
<                    - 'ITYPIM': INDICATEUR TYPE IMAGE.
<
<        L'IMAGE 12 K EST VISUALISEE PAR TRANSFERT DANS LES STACKS RVB,
<        L'IMAGE 4K EST VISUALISEE PAR DUPLICATION DANS CHACUN DE CES TROIS
<        STACKS.
<
         PSR         A,B,X           < SAUVEGARDES.
         LA          ITYPIM
         JAE         LVIS2           < IMAGE 4K.
         CPI         2
         JE          LVIS7           < IMAGE 12K SGN/DKU.
         JL          LVIS9           < CE N'EST PAS UNE EXTENSION...
         LRM         A,B             < C'EST UNE EXTENSION SUR VOLUME :
         WORD        LNOM+LIMVO*2
         BYTE        NSPDKU;LNOM*2
         JMP         LVIS1           < VERS LA VISULISATION...
LVIS9:   EQU         $
         LRM         A,B             < LONGUEUR ET DELTA A PRIORI.
         WORD        LIMAG*3+LNOM*2
         WORD        -1
         CPZ         ITYPIM
         JL          LVIS1           < IMAGE 12K ANCIEN MODELE.
         LBI         LNOM*2          < CHANGER DELTA POUR NOUVEAU MODELE.
LVIS1:   EQU         $
         STA         DEMLOD+2        < LONGUEUR.
         STB         DEMLOD+3        < DELTA.
         JMP         LVIS3
LVIS2:   EQU         $               < IMAGE 4K.
         LRM         A,B             < LONGUEUR ET DELTA.
         WORD        LIMAG+LNOM+2*2
         WORD        LNOM*2
         JMP         LVIS1           < VERS STA STB ET LOAD.
LVIS3:   EQU         $
         LAD         DEMLOD          < LOAD IMAGE.
         SVC         0
         JE          LVIS8
         ACTD
LVIS7:   EQU         $               < IMAGE 12K SGN/DKU.
         LAD         DMLISD          < LOAD SGN (VALEUR = ADRESSE SECTEUR DKU).
         SVC         0
         LAD         DMRDKU          < READ DKU DAND 'IMAG'.
         SVC         0
         JE          LVIS8
         ACTD
LVIS8:   EQU         $
         LBY         DEMLOD+3
         CPI         NSPDKU          < ETAIT-CE UNE EXTENSION VOLUME ???
         JE          LVISB           < OUI, PAS DE VISUALISATION...
<
< I(N)=I(N-1).EOR.I(N) ???
< (AVEC : I(N-1)=ECRAN,
< I(N)=RESIDENT ET I(0)="NOIR")
<
         LA          ITYPIM
         CPI         1               < EST-CE UNE IMAGE 12K ???
         JNE         EOR1            < NON...
         CPZ         IEOR            < OUI, FAUT-IL FAIRE "EOR" ???
         JE          EOR1            < NON...
         PSR         A,B,X,Y         < OUI :
         JL          EOR3            < IEOR=-1 : RESTAURATION...
         LRM         A,B,X           < SAUVEGARDE DE L'IMAGE I(N),
SIMAG::  VAL         'D000           < ZONE DE SAUVEGARDE EN "CDAI" COMPATI-
                                     < BLE AVEC LE MODE ENTRELACAGE DE CMS5.
         WORD        SIMAG
         WORD        IMAG
         WORD        LIMAG*3
         WCDA
EOR3:    EQU         $
         LYI         0               < (Y)=INDEX COURANT DU "EOR",
EOR2:    EQU         $
         LAD         XEOR
         LR          A,B             < (B)=ADRESSE DU RECEPTEUR RESIDENT,
         LR          Y,A             < (A)=ADRESSE DE L'EMETTEUR EN "CDAI",
         LXI         1               < (X)=1 MOT A TRANSFERER,
         RCDA
                                     < ACCES AU MOT COURANT DE I(N-1),
         LR          Y,X             < (X)=INDEX COURANT DE I(N),
         LA          &AIMAG          < I(N),
         EOR         XEOR            < I(N).EOR.I(N-1),
         STA         &AIMAG          < I(N)=I(N).EOR.I(N-1).
         ADRI        1,Y             < PASSAGE AU MOT SUIVANT,
         LR          Y,A
         CP          XLIMAG          < SI EXISTE...
         JL          EOR2            < ET OUI...
         LBY         DEMLOD
         PSR         A               < SAUVEGARDE DE NVP(DEMLOD),
         LAI         3
         STBY        DEMLOD
         LAD         DEMLOD
         SVC         0               < DESTRUCTION DE L'IMAGE COURANTE,
         LAI         4
         STBY        DEMLOD
         LAD         DEMLOD
         SVC         0               < ET RECREATION APRES "EOR"...
         PLR         A
         STBY        DEMLOD          < ET RESTAURATION DE NVP(DEMLOD).
         CPZ         IEOR
         JL          EOR4            < IEOR=-1 : RESTAURATION...
         LRM         A,B,X           < RESTAURATION DE I(N) AVANT "EOR"
                                     < POUR LA VISUALISATION...
         WORD        SIMAG
         WORD        IMAG
         WORD        LIMAG*3
         RCDA
EOR4:    EQU         $
         PLR         A,B,X,Y
EOR1:    EQU         $
<
< VISUALISATION.
<
LVIS10:  EQU         $
         LRM         A               < ADRESSE OCTET DEBUT IMAGE.
         WORD        IMAG-ZERO*2
         CPZ         ITYPIM
         JNE         LVIS6
         ADRI        4,A             < IMAGE 4K: L'IMAGE PROPREMENT DITE NE
                                     < COMMENCE QU'AU 3EME MOT DE LA VALEUR.
LVIS6:   EQU         $
         STA         STABIL+1
         LXI         3               < 3 STACKS.
         LRM         B               < INCREMENT EVENTUEL ADRESSE A VISUALISER.
         WORD        LIMAG*2
LVIS4:   EQU         $               < BOUCLE DE VISUALISATION,
         PSR         X
         LAI         4
         SBR         X,A
         STA         STABIL+3        < NUMERO STACK COURANT.
         LAD         STABIL
         SVC         0
         JE          $+2
         ACTD
         CPZ         ITYPIM
         JE          LVIS5
< INCREMENTER L'ADRESSE A VISUALISER.
         LA          STABIL+1
         ADR         B,A
         STA         STABIL+1
LVIS5:   EQU         $
         PLR         X
         JDX         LVIS4
LVISB:   EQU         $
<
         PLR         A,B,X           < RESTAURATIONS.
         RSR
<
<
<        E N T R Y   V I S U A L I S A T I O N   S E U L E  :
<
<
VISU:    EQU         $
         PSR         A,B,X
         JMP         LVIS10
         PAGE
<
<
<        I M P L A N T A T I O N  :
<
<
STACK:   DZS         20              < PILE DU PROCESSEUR.
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI MAUVAISE
                                     < IMPLANTATION.
         DZS         X10+1
         EOT         #SIP GEN PROCESSEUR#



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