NMPROC:  VAL         " C"            < NOM DU PROCESSEUR.
         IDP         "SEMANTIQUE C - RELEASE 01/06/1979"
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        SEMANT          < ADRESSE DE LANCEMENT.
         WORD        0
PSEM:    EQU         $               < A NOTER : P='12 !!!!
         LRP         L
         BR          -2,L            < ENTREE DANS LE PROCESSEUR.
         EOT         #SIP DEFINITION ITEM#
<
<
<        C O N S T A N T E S   D U   D I C T I O N N A I R E  :
<
<
NCATG:   VAL         32              < NBRE MAX DE CATEGORIES
                                     < GRAMMATICALES.
LMOT:    VAL         40              < NBRE MAX DE CARACTERES D'UN MOT.
NCATG4:  VAL         NCATG+3/4       < NBRE D'OCTETS NECESSAIRES
                                     < AUX CATEGORIES GRAMMATICALES.
NSEM:    VAL         4               < NBRE D'OCTETS DE VALEUR
                                     < SEMANTIQUE DU MOT.
<
<
<        C O N S T A N T E S   L E X I C O G R A P H I Q U E S  :
<
<
LPHR:    VAL         112             < NBRE DE CARACTERES MAX
                                     < D'UNE PHRASE.
                                     < (=LBUFESC DANS DCTESC...)
<
<
<        F O R M A T   D E S C R I P T E U R   M O T  :
<
<
DESCI:   VAL         0               < INDEX DU 1ER CARACTERE DU MOT ;
                                     < DESCI=-1 EN FIN DE PHRASE.
DESCL:   VAL         1               < LONGUEUR OCTETS DU MOT.
                                     < DESCL=NBRE DE MOTS DE LA
                                     < PHRASE EN FIN DE PHRASE.
DESCD:   VAL         2               < NOM DU DICTIONNAIRE D'APPARTE-
                                     < NANCE ; DESCL=0 SI LE MOT
                                     < EST INCONNU.
DESCS:   VAL         3               < OCTET1=SEPARATEUR PRECEDANT ,
                                     < OCTET0=INDICATEUR EVENTUEL DE
                                     <        DE DEBUT DE GROUPE.
DESCF:   VAL         4               < OCTET1=CATEGORIE GRAMMATICALE
                                     <        DANS SON CONTEXTE ;
                                     < OCTET0=NIVEAU DE RECURSIVITE MOT.
DESCV:   VAL         5               < VALEUR SEMANTIQUE DU MOT.
DESCC:   VAL         NSEM+1/2+DESCV  < CATEGORIES GRAMMATICALES DU MOT.
LDESC:   VAL         NCATG4+3/4+DESCC  < LONGUEUR D'UN DESCRIPTEUR MOT.
<
<
<                    D E S C R I P T E U R
<        P R O P O S I T I O N   R E L A T I V E  :
<
<
<        FORMAT :
<                    <SUJET>(<OPERATEUR>(<OBJET>)).
<
<
SUJET:   VAL         0               < SUJET> DE LA PROPOSITION.
OPERA:   VAL         2               < <OPERATEUR> DE LA PROPOSITION.
OBJET:   VAL         4               < <OBJET> DE LA PROPOSITION.
LREL:    VAL         10              < LONGUEUR DU DESCRIPTEUR.
<
<
<        C A T E G O R I E S   L E X I C A L E S  :
<
<
SEP1:    VAL         4               < SEPARATEUR DU TYPE 'SPACE'.
SEP2:    VAL         3               < SEPARATEURS : ',',';',....
SEP3:    VAL         2               < SEPARATEUR TYPE 'APOSTROPHE'.
SEP4:    VAL         1               < SEPARATEUR TYPE 'PARENTHESE'.
FINF:    VAL         0               < FIN DE PHRASE : 'EOT'/R-C.
CAR:     VAL         8               < FRONTIERE ENTRE LES CARACTERES A
                                     < VALEUR 'LETTRES' ET LES CARACTERES
                                     < A VALEUR 'SEPARATEURS'.
LETR:    VAL         8               < CARACTERES DE 'A' A 'Z'.
CHIF:    VAL         9               < CARACTERES DE '0' A '9'.
CARS:    VAL         'A              < CARACTERES SPECIAUX : '-','+',....
IGNOR:   VAL         'B              < CARACTERES NON RECONNUS.
<
<
<        C A T E G O R I E S   G R A M M A T I C A L E S  :
<
<
NOM:     VAL         1               < NOM.
VERBE:   VAL         2               < VERBE.
ADJECT:  VAL         3               < ADJECTIF.
ADVERB:  VAL         4               < ADVERBE.
PROPER:  VAL         5               < PRONOM PERSONNEL.
PRODEM:  VAL         6               < PRONOM DEMONSTRATIF.
INTERJ:  VAL         7               < INTERJECTION , 'OUI' , 'NON'.
PREPOS:  VAL         8               < PREPOSITION.
CONJ:    VAL         9               < CONJONCTION.
ARTICL:  VAL         10              < ARTICLE.
PROREL:  VAL         11              < PRONOM RELATIF.
<
<
<        G R O U P E S   S Y N T A G M A T I Q U E S  :
<
<
PHRASE:  VAL         NCATG+1         < PHRASE.
TGV:     VAL         NCATG+2         < GROUPE VERBAL.
TGN:     VAL         NCATG+3         < GROUPE NOMINAL.
TREL:    VAL         NCATG+4         < PROPOSITION RELATIVE.
TINT:    VAL         NCATG+5         < INTERJECTION.
TCONJ:   VAL         NCATG+6         < CONJONCTION DE COORDINATION.
<
<
<        V A L E U R S   S E M A N T I Q U E S  :
<
<
<        FONCTION :
<                      CETTE LISTE DONNE LES VALEURS
<                    POSSIBLES DE L'OCTET0 DU DESCV
<                    D'UN MOT.
<
<
TGI:     VAL         "!"             < VALEUR SEMANTIQUE D'APPEL 'GI'.
TGR:     VAL         "&"             < VALEUR SEMANTIQUE GRAPHIQUE.
         PAGE
<
<
<        M E M O I R E   L I B R E  :
<
<
FREE:    VAL         '1000           < ADRESSE DU 1ER MOT LIBRE
                                     < DES 2 DERNIERS K DE LA MEMOIRE.
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
<        M E S S A G E S  :
<
MOVL:    BYTE        10;'6D
         ASCI        "OVERFLOW! "
MINIT:   BYTE        16;'6D
         ASCI        "INITIALISATION? "
MNUM:    BYTE        8;'6D
         ASCI        "NUMERO= "
BUFFER:  WORD        0               < BUFFER D'ENTREE DES REPONSES ,
                                     < ET DU NUMERO DE PHRASE ('SE').
<
<        R E L A I S   D E   T A B L E S  :
<
< PHRASE A ANALYSER :
<
PHR:     VAL         FREE            < PHRASE A ANALYSER.
APHR:    WORD        PHR+'8000       < RELAI INDEXE VERS LA PHRASE.
FREE:    VAL         LPHR/2+FREE+1
<
< ZONE DES ARGUMENTS :
<
LDUM:    VAL         32              < LONGUEUR DE LA ZONE ARGUMENTS.
DUMY:    VAL         FREE            < ZONE DE TRANSMISSION ARGUMENTS
                                     < ENTRE SYNTAXE ET SEMANTIQUE.
PROP1:   VAL         0               < NUMERO DU MOT CONTENANT L'ADRESSE
                                     < REELLE DE LA ZONE 'PROPOS'.
PROPP:   VAL         1               < NUMERO DU MOT CONTENANT LA
                                     < L'ADRESSE DE LA LISTE DES
                                     < PROPOSITIONS DE LA PHRASE.
NPROP:   VAL         2               < NBRE DE PROPOSITIONS RECONNUES.
CONDRT:  VAL         3               < CONDITIONS DE RETOUR DE L'ANALYSE
                                     < SYNTAXIQUE.
FREE:    VAL         FREE+LDUM
ADUMY:   WORD        DUMY+'8000      < RELAI INDEXE VERS LA ZONE DUMY.
<
< ZONE DES DESCRIPTEURS DE PROPOSITIONS :
<
DPHR:    VAL         FREE            < ZONE DES DESCRIPTEURS LEXICO-
                                     < GRAPHIQUES DES MOTS DE LA PHRASE.
FREE:    VAL         LDESC*LPHR/2+FREE
ADPHR:   WORD        DPHR            < ADRESSE DU 1ER DESCRIPTEUR.
PROPOS:  VAL         FREE            < ZONE DES DESCRIPTEURS DES
                                     < PROPOSITIONS , MAIS
                                     < A T T E N T I O N  : CETTE ZONE
                                     < EST EN FAIT EN RECOUVREMENT
                                     < AVEC LA ZONE :DPHR'.
FREE:    VAL         LPHR/2+FREE
APROPO:  WORD        PROPOS          < ADRESSE DU 1ER DESCRIPTEUR
                                     < DE PROPOSITIONS.
APR:     WORD        PROPOS          < ADRESSE COURANTE DES DESCRIPTEURS
                                     < DE PROPOSITIONS.
<
< RELAIS COURANTS :
<
AI2H:    WORD        ZERO+PILE-LTNI-LTNI
                                     < @EN-TETE DE L'ITEM2.
AI2:     WORD        ZERO+PILE-LTNI-LTNI+LTN,X
                                     < RELAI INDEX CORPS(ITEM2).
AI1:     WORD        ZERO+PILE-LTNI+LTN,X
                                     < RELAI VERS LE CORPS DE L'ITEM1.
ABIBS:   WORD        BIBS,X          < RELAI D'ACCES VERS LE NOM DE
                                     < LA BIBLIOTHEQUE SEMANTIQUE
                                     < GRAPHIQUE.
<
<        D E M A N D E S   A   C M S 4  :
<
DEMOUT:  WORD        '0202           < SORTIE MESSAGE.
         WORD        0               < @OCTET DU MESSAGE.
         WORD        0               < LONGUEUR-OCTET DU MESSAGE.
DEMIN:   WORD        '0101           < ENTREE AVEC ECHO SUR NSPIN.
         WORD        BUFFER-ZERO*2
         WORD        1               < 1 CARACTERE.
DEMIT:   WORD        '0602           < CHARGEMENT DES PAGES DU
                                     < DICTIONNAIRE DANS  L'ITEM2.
         WORD        PILE-LTNI-LTNI*2
         WORD        2*LTNI
         WORD        -1
DEMSGN:  WORD        '0402           < CHARGEMENT DES OVERLAYS ,
                                     < INITIALISEE EN GENERATION
                                     < DE LA BRANCHE SEMANTIQUE.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMCCI:  WORD        '0001           < APPEL DU CCI.
DEMMEM:  WORD        '0004           < DEMANDE D'ALLOCATION MEMOIRE.
         WORD        0
         WORD        '2000           < DEMANDE DE RETOUR A 4K MOTS.
<
<        P I L E S   D E   T R A V A I L  :
<
APILES:  WORD        PILE            < PILE DE SODOME.
PILE:    VAL         FREE+1
APILE:   WORD        PILE-1          < PILE DE TRAVAIL DE L'ANALYSE.
<
<        A D R E S S E S   D E S   R O U T I N E S  :
<
APRINT:  WORD        PRINT           < EMISSION DES MESSAGES.
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
AINIT:   WORD        INIT            < INITIALISATION DE L'ITEM1.
AGEN1:   WORD        ST1             < GENERATION DE L'ITEM SEMANTIQUE
                                     < DANS ITEM1.
ATEST1:  WORD        TEST1           < COMPARAISON DE LHITEM1
                                     < (ITEM SEMANTIQUE) AVEC LA
                                     < PHRASE QUE L'ON ANALYSE.
AST1:    WORD        0               < @ST1 POUR LES APPELS PAR
                                     < 'GE' ET 'SE' ,ET
                                     < ET @TEST1 POUR LES APPELS
                                     < PAR 'EI' / 'GO'.
AST2:    WORD        ST2             < STORE CARACTERE DANS ITEM2.
AE10:    WORD        E10             < SORTIE EN ERREUR POUR NON
                                     < COINCIDENCE DE LA PHRASE
                                     < ANALYSEE ET DE L'ITEM1.
<
<        C O N S T A N T E S  :
<
X1:      WORD        0               < INDEX COURANT DE L'ITEM1.
X2:      WORD        0               < RELAI COURANT DE L'ITEM2.
NCP:     WORD        NBCAR*NBLIG     < NBRE DE CARACTERES PAR PAGE.
NMP:     WORD        NBCAR*NBLIG/2   < NBRE DE MOTS/PAGE.
BIBS:    ASCI        " ;SBIB$ "      < NOM DE LA BIBLIOTHEQUE SEMANTIQUE
LBIBS:   VAL         8               < NBRE DE CARACTERES DE BIBS.
SPACE:   ASCI        "  "
NCALL:   WORD        $+1,X;"GE"      < MODCAL=0.
         ASCI        "EI"            < MODCAL=1.
NGE:     ASCI        "GE"            < NOM DE L'OVERLAY 'GE'.
                                     < ET MODCAL=2 !!!
NGI:     ASCI        "GI"            < NOM DE L'OVERLAY 'GI'.
NDIC:    ASCI        ":  3"          < NOM DE LA PGE DES MOTS USUELS.
         BYTE        '40;"0"
         BYTE        '04;"T"
ATYP:    WORD        $+1,X           < TYPE A DONNER A ITEM1 ,
                                     < EN FONCTION DE MODCAL.
         BYTE        "T";0;"R";0
         PAGE
<
<
<        E M I S S I O N   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT D'UN MESSAGE A EMETTRE , DONT
<                      LE 1ER OCTET EN CONTIENT LA LONGUEUR.
<
<
         PROG
PRINT:   EQU         $
         PSR         C               < SAVE LA LBSE C.
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A
         ADRI        1,A             < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < QUE L'ON MET DANS DEMOUT.
         LBY         0,C             < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < QUE L'ON MET DANS DEMOUT.
         LAD         DEMOUT
         SVC         0               < EMISSION DU MESSAGE.
         PLR         C               < RESTAURE LA BASE C.
         RSR
         PAGE
<
<
<        I N I T I A L I S A T I O N   I T E M 1  :
<
<
INIT:    EQU         $
         LX          NMP             < X=NBRE DE MOTS DE L'ITEM1.
         DC          AI1             < POUR UNE INDEXATION /A 1.
         LA          SPACE           < A='SPACE''SPACE'.
E100:    EQU         $
         STA         &AI1            < REMISE DE L'ITEM1 A 'SPACE'.
         JDX         E100
         IC          AI1             < RESTAURATION DE AI1.
         RSR
         PAGE
<
<
<        C O M P A R A I S O N   I T E M 1
<        E T   P H R A S E   A N A L Y S E E  :
<
<
<        ARGUMENT :
<                    A=OCTET SEMANTIQUE COURANTE
<                      DE LA PHRASE ANALYSEE ,
<
<
<        RESULTAT :
<                    X<--(X)+1 ,
<                    ET RETOUR EN SEQUENCE SI L'OCTET
<                    ARGUMENT COINCIDE AVEC L'OCTET
<                    COURANT DE L'ITEM1 ; SINON , ON
<                    FAIT PROGRESSER 'CDRET' JUSQU'A
<                    CONCURENCE DE 'DPH' , ET ALORS IL
<                    Y A SORTIE DE ' C'.
<
<
PPH:     VAL         0               < NUMERO DU MOT DE L'ITEM1 CON-
                                     < TENANT L'INDEX DU 1ER CARACTERE
                                     < DE LA PHRASE 0.
DPH:     VAL         7               < IDEM POUR LA DERNIERE PHRASE.
<
<
TEST1:   EQU         $
         PSR         X
         LX          X1              < X=INDEX COURANT DE L'ITEM1.
         IC          X1              < PROGRESSION DE L'INDEX ITEM1.
         ANDI        'FF             < A=OCTET SEMANTIQUE ARGUMENT.
         CPBY        &AI1            < L'OCTET SEMANTIQUE COURANT
                                     < COINCIDE-T'IL AVEC L'OCTET
                                     < COURANT DE L'ITEM1 'R' ????
         PLR         X
         JNE         E201            < NON , RETOUR EN ERREUR.
         RSR                         < OUI , RETOUR EN SEQUENCE.
<
< CAS OU LA PHRASE ANALYSEE NE COINCIDE
< PAS SEMANTIQUEMENT PARLANT AVEC L'ITEM1 :
<
E201:    EQU         $
         ADRI        -1,K            < RATTRAPAGE DU RSR.
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH.
E202:    EQU         $               < ENTRY POUR SYNTAXE INCORRECTE.
         IC          CDRET,W         < PROGRESSION DE CDRET.
         LA          CDRET,W         < RECUPERATION DU CDRET POUR
                                     < VALIDATION.
         CPI         DPH             < ESTON SUR LA DERNIERE PHRASE ???
         JNE         E311            < NON , ON CONTINUE ...
         BR          AE10            < ET OUI , RETOUR AVEC CDRET=7 !!!
<
< PASSAGE A LA PHRASE SUIVANTE :
<
E311:    EQU         $
         LR          A,X             < X=CDRET COURANT.
<
<        I N I T I A L I S A T I O N   '   C '   S O U S   ' E I '  :
<
E312:    EQU         $
         LA          &AI1            < ACCES A L'INDEX DE LA PHRASE
                                     < DE NUMERO (X).
         JAL         E202            < PHRASE INEXISTANTE : PASSAGE
                                     < A LA SUIVANTE.
         STA         X1              < OK , SI ELLE EXISTE , SON INDEX
                                     < DE 1ER CARACTERE DEVIENT
                                     < L'INDEX COURANT DE L'ITEM1.
         LB          ATEST1          < A PRIORI , ON RESTAURE @TEST1.
         JMP         E200            < VERS LA RECONNAISSANCE
                                     < SEMANTIQUE.
         PAGE
<
<
<        S T O R E   D A N S   L ' I T E M 1   &
<        S T O R E   D A N S   L ' I T E M 2  :
<
<
<        ARGUMENT :
<                    A=CARACTERE A STORER DANS L'ITEM1(X)/ITEM2(X).
<
<
<        RESULTAT :
<                    X<--(X)+1.
<
<
ST1:     EQU         $               < STORE DANS L'ITEM1.
         PSR         X
         LX          X1              < X=INDEX COURANT DE L'ITEM1.
         STBY        &AI1            < STORE DANS L'ITEM1.
         IC          X1              < PROGRESSION DE L'INDEX ITEM1.
E102:    EQU         $
<
< VALIDATION DE L'INDEX ITEM1/ITEM2 :
<
         LR          X,A             < A=INDEX UTILISE POUR ITEM1/ITEM2.
         CP          NCP             < VALIDATION.
         JL          E360            < OK.
         ADRI        -2,K            < RATTRAPAGE DU PSR X ET DU RSR.
         LAD         MOVL
         BSR         APRINT          < ENVOI D'UN MESSAGE D'ERREUR.
         BR          AE10            < VERS LA SORTIE ....
E360:    EQU         $
         PLR         X
         RSR
ST2:     EQU         $               < STORE DANS L'ITEM2.
         PSR         X
         LX          X2              < X=INDEX COURANT DE L'ITEM2.
         STBY        &AI2            < STORE DANS L'ITEM2.
         IC          X2              < PROGRESSION INDEX ITEM2.
         JMP         E102            < VERS LA SORTIE.
         PAGE
<
<
<        E N T R Y   S E M A N T I Q U E  :
<
<
<        RESULTAT DE LA PASSE SEMANTIQUE :
<                    1- APPEL PAR 'GE' : ITEM1 CONTIENT LES CHAINES
<                                        SEMANTIQUES '&' , ET ITEM2 LES
<                                        CHAINES '!' ,
<                    2- APPEL PAR 'EI'/'GO' : NE FAIT QUE POSITIONNER
<                                             CDRET EN FONCTION DE
<                                             COMPRAISON DE LA VALEUR
<                                             SEMANTIQUE DE LA PHRASE
<                                             LUE PRECEDEMMENT , ET
<                                             DE CELLES QUI SONT STOCKEES
<                                             DANS L'ITEM1 ,
<                    3- APPEL PAR 'SE' : CONSTRUIT DANS L'ITEM1
<                                        UNE LISTE DE PHRASES ; A CHAQUE
<                                        APPEL DE TYPE MISE A JOUR ,
<                                        ON RAJOUTE LA VALEUR SEMANTIQUE
<                                        DE LA PHRASE PRECEDENTE A
<                                        LA LISTE PRE-EXISTANTE ,
<                                        ET DONT LE FORMAT EST DONNE
<                                        EN 'E301'.
<
<
         WORD        LOC+'80         < VALEUR INITIALE DE LA BASE L.
         WORD        BRANCH          < VALEUR INITIALE DE LA BASE W.
SEMANT:  EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DES BASES L & W.
         LA          APILE
         LR          A,K             < INITIALISATION DE K SUR LA
                                     < PILE DE L'ANALYSE.
         LAI         6
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE DE
                                     < CHARGEMENT SOUS :SYS.
         LX          MODCAL,W        < X=NATURE DE L'APPEL.
         LA          &NCALL          < A=BRANCHE DE RETOUR.
         STA         0,W             < LE NOM DE LA BRANCHE SUIVANTE
                                     < EST FONCTION DE MODCAL.
         STZ         CDRET,W         < CDRET=0 A PRIORI.
<
< RECUPERATION DES ARGUMENTS TRANSMIS
< PAR L'ANALYSE SYNTAXIQUE :
<
         LXI         CONDRT
         CPZ         &ADUMY          < COMMENT CELA S'EST-IL PASSE ???
         JE          E310            < BIEN , ON PEUT Y ALLER ...
<
< CAS DES SYNTAXES INCORRECTES :
<
         LAI         DPH
         STA         CDRET,W         < DPH DEVIENT LE CDRET.
         BR          AE10            < VERS LA SORTIE ....
<
< CAS D'UNE SYNTAXE CORRECTE :
<
E310:    EQU         $
         LXI         PROP1
         LA          &ADUMY          < RECUPERATION DE L'ADRESSE DU
                                     < 1ER DESCRIPTEUR DE PROPOSITION.
         STA         APROPO
         STA         APR
<
<        D I S C R I M I N A T I O N   D E S   A P P E L S  :
<
         LA          MODCAL,W        < A=NATURE DE L'APPEL.
         CPI         1               < EST-CE UN APPEL PAR 'EI'/'GO' ????
         LXI         PPH             < TEST SEMANTIQUE A PRIORI :
                                     < X=NUMERO DE LA 1ERE PHRASE.
         JE          E312            < VERS L'INITIALISATION DE ' C'
                                     < SOUS 'EI'/'GO'.
         CPI         2               < EST-CE UN APPEL PAR 'SE' ???
         JNE         E300            < NON ('GE').
<
<        A P P E L   P A R   ' S E '  :
<
<        FONCTION :
<                      ON VA GENERER UN ITEM (ITEM1) ,
<                    DE TYPE 'R' . SON FORMAT EST LE
<                    SUIVANT :
<                    MOT0=INDEX DU 1ER CARACTERE DE LA 1ERE PHRASE ,
<                    (...)
<                    MOT7=INDEX DU 1ER CARACTERE DE LA 7EME PHRASE ,
<                    MOT8=INDEX COURANT DE L'ITEM ,
<                    MOTS SUIVANTS=CHAINES SEMANTIQUES FORMANT
<                                  LE SENS DES PHRASES.
<
E301:    EQU         $
         LAD         MINIT
         BSR         APRINT          < ENVOI D'UN MESSAGE.
         LAD         DEMIN
         SVC         0               < LECTURE DE LA REPONSE.
         LBY         BUFFER          < A=REPONSE SUR 1 CARACTERE.
         CPI         "O"             < S'AGIT-IL D'UNE INITIALISATION ???
         JE          E302            < OUI , INITIALISATION DE L'ITEM1.
         CPI         "N"             < EST-CE LA MISE A JOUR DE ITEM1 ???
         JNE         E301            < NON , ON REPOSE LA QUESTION.
<
< CAS D'UNE MISE A JOUR DE L'ITEM1 :
<
         LXI         DPH+1
         LA          &AI1            < RECUPERATION DE L'INDEX COURANT
         STA         X1              < QUI DEVIENT L'INDEX COURANT
                                     < DE L'ITEM1.
E303:    EQU         $
         LAD         MNUM
         BSR         APRINT
         LAD         DEMIN
         SVC         0               < ENTREE DU NUMERO DE LA PHRASE
                                     < QUE L'ON DESIRE INSERER.
         LBY         BUFFER          < A=NUMERO ASCI PRESUME.
         ADRI        -'30,A          < CONVERSION BINAIRE.
         JAL         E303            < NUMERO ERRONE.
         CPI         DPH             < VALIDATION SUPERIEURE ???
         JGE         E303            < ERREUR , ON RECOMMENCE.
         LR          A,X             < OK , X=NUMERO DE 0 A DPH-1.
         LA          X1              < RECUPERATION DE L'INDEX COURANT
                                     < DE L'ITEM1 QUI DEVIENT L'INDEX DU
                                     < 1ER CARACTERE DE LA PHRASE
                                     < DE NUMERO (X).
         STA         &AI1            < ET SAVE CET INDEX 1ER CARACTERE.
         LB          AGEN1           < AFIN DE FAIRE UNE GENERATION
                                     < DE L'ITEM SEMANTIQUE ITEM1.
         JMP         E370            < VERS LA GENERATION DE LA CHAINE
                                     < SEMANTIQUE DE LA PHRASE (X).
<
< CAS DE L'INITIALISATION DE L'ITEM1 :
<
E302:    EQU         $
         BSR         AINIT           < INITIALISATION DE L'ITEM1.
         LAI         -1              < AFIN DE METTRE LES INDEX DE 1)R
                                     < CARACTERE DE CHAQUE PHRASE A -1.
         LXI         DPH
E305:    EQU         $
         STA         &AI1            < INITIALISATION DES INDEX
                                     < DES PHRASES DE DPH A 1.
         JDX         E305
         STA         &AI1            < CAS DE LA PHRASE PPH (0).
         LXI         DPH+1
         LAI         DPH+1*2+2
         STA         &AI1            < INITIALISATION DE L'INDEX DU
                                     < 1ER CARACTERE LIBRE DE ITEM1.
         STA         X1              < INITIALISATION DE L'INDEX
                                     < COURANT DE L'ITEM1.
         JMP         E303            < VERS LA DEMANDE DU NUMERO DE
                                     < DE LA PHRASE COURANTE.
<
<        A P P E L   P A R   ' G E '  :
<
E300:    EQU         $
         LB          AGEN1           < ON VA FAIRE UNE GENERATION DE
                                     < L'ITEM SEMANTIQUE ITEM1.
         BSR         AINIT           < INITIALISATION DE L'ITEM1.
<
<        A P P E L   P A R   ' S E '  :
<
E370:    EQU         $               < CAS DES APPELS PAR 'SE'.
<
< MISE EN PLACE DU TYPE DE L'ITEM1 :
<
         LX          MODCAL,W        < X=NATURE DE L'APPEL.
         LBY         &ATYP           < A=TYPE A DONNER A ITEM1.
         LXI         IINDIC-LTN*2
         STBY        &AI1
E200:    EQU         $
         STB         AST1            < MISE EN PLACE DE LA ROUTINE
                                     < DE GENERATION OU DE TEST DE ITEM1
<
< MISE EN PLACE DE L'APPEL DE LA BIBLIOTHEQUE SEMANTIQUE :
<
         LXI         LBIBS-1
E101:    EQU         $
         LBY         &ABIBS          < RECUPEARTION DU NOM DE LA
                                     < BIBLIOTHEQUE SEMANTIQUE.
         BSR         AST1            < QUE L'ON TRANSFERE EN TETE
                                     < DE L'ITEM1.
         JDX         E101
<
<
<        A N A L Y S E   S E M A N T I Q U E  :
<
<
SEMAN:   EQU         $
         LXI         PROPP
         LY          &ADUMY          < Y=@@1ER DESCRIPTEUR DE
                                     < PROPOSITIONS.
         LXI         0               < INITIALISATION DE L'INDEX ITEM2.
<
< BOUCLE DE RECUPERATION DES PROPOSITIONS :
<
E20:     EQU         $
         LR          Y,W             < W=@@DESCRIPTEUR PROPOSITION
                                     < COURANTE.
         LA          0,W             < A=@DESCRIPTEUR PROPOSITION
                                     < COURANTE.
         JAL         E21             < ET BIEN NON , FIN DE PHRASE ...
         LR          A,W             < W=@NIVEAU DE RECURSIVITE DE
                                     < LA PROPOSITION COURANTE.
         LA          0,W             < A=NIVEAU DE RECURSIVITE.
         CPI         1
         JG          E22             < SEULES SONT PRISES EN COMPTE
                                     < LES PROPOSITIONS DE NIVEAU 0 & 1.
<
< BOUCLE DE PARCOURS D'UNE PROPOSITION :
<
E25:     EQU         $
         ADRI        1,W             < PASSAGE MOT SUIVANT.
         LA          0,W             < A=@DESCRIPTEUR DU MOT COURANT
                                     < DE LA PROPOSITION COURANTE.
         JAE         E22             < ET NON , FIN DE PROPOSITION ...
         LR          A,C             < SI OUI : C=@DESCRIPTEUR DU MOT
                                     < COURANT.
         CPZ         DESCD,C         < EST-CE UN MOT CONNU ???
         JNE         E23             < OUI.
<
< CAS DES MOTS INCONNUS : ON LES TRANSFERE DANS L'ITEM2
< AVEC UN ';' EN QUEUE (CF. 'EOT' DE 'GI').
<
         IC          DESCD,C         < ON MET DESCD A 1 AFIN QUE LE
                                     < MOT SOIT CONSIDERE COMME CONNU
                                     < A PARTIR DE MAINTENANT.
         PSR         Y               < SAVE Y.
         LY          DESCI,C         < Y=INDEX INITIAL DU MOT INCONNU.
         LB          DESCL,C         < B=LONGUEUR DU MOT INCONNU.
E24:     EQU         $
         XR          X,Y
         LBY         &APHR           < RECUPERATION D'UN CRACTERE
                                     < DU MOT.
         ADRI        1,X             < PROGRESSION INDEX MOT.
         XR          X,Y             < RETABLISSEMENT DES INDEX.
         BSR         AST2            < ET RANGEMENT DANS L'ITEM2.
         ADRI        -1,B            < DECOMPTE DES CARACTERES.
         CPZR        B               < EST-CE FINI ???
         JNE         E24             < NON , ON CONTINUE.
         LAI         ";"             < SI C'EST FINI , ON RAJOUTE UN
         BSR         AST2            < ';' EN FIN DU MOT INCONNU.
         PLR         Y               < RESTAURE Y.
         JMP         E25             < VERS LE PASSAGE AU MOT SUIVANT.
<
< CAS DES MOTS CONNUS :
<
E23:     EQU         $
         LBY         DESCV,C         < RECUPERATION OCTET0 DE LA
                                     < VALEUR SEMANTIQUE.
         CPI         TGI             < EST-CE UN APPEL 'GI' ???
         JE          CGI             < OUI.
         CPI         TGR             < EST-CE UN APPEL 'GRAPHIQUE' ???
         JE          CGR             < OUI.
         JMP         E25             < SI LA VALEUR N'EST PAS RECONNUE ,
                                     < ON L'IGNORE ET ON PASSE AU MOT
                                     < SUIVANT.
<
<        A P P E L   ' G I '  :
<
CGI:     EQU         $
         LA          DESCV,C         < ACCES OCTET1 DE LA VALEUR.
         ANDI        'FF             < ACCES A L'OCTET1 DE LA
                                     < VALEUR SEMANTIQUE.
         CPI         " "             < EST-CE 'SPACE' ???
         JE          E25             < OUI , PASSAGE AU MOT SUIVANT.
         BSR         AST2            < SINON , ON RANGE L'OCTET1 DE LA
                                     < VALEUR SEMANTIQUE DANS L'ITEM2.
         LBY         DESCV+1,C       < ACCES A L'OCTET2 DE LA VALEUR.
         CPI         " "             < EST-CE 'SPACE' ???
         JE          E25             < OUI , ON PASSE AU MOT SUIVANT.
         BSR         AST2            < NON , ON RANGE L'OCTET2 DANS
                                     < L'ITEM2.
         JMP         E25             < PUIS , ON PASSE AU MOT SUIVANT.
<
<        A P P E L   ' G R A P H I Q U E '  :
<
CGR:     EQU         $
         BSR         AST1            < L'OCTET0 DE LA VALEUR EST
                                     < RANGE DANS L'ITEM1.
         LA          DESCV,C
         BSR         AST1            < ENVOI DE L'OCTET1 DANS ITEM1.
         LBY         DESCV+1,C
         BSR         AST1            < ENVOI DE L'OCTET2 DANS ITEM1.
         LA          DESCV+1,C
         BSR         AST1            < ENVOI DE L'OCTET3 DANS ITEM1.
         LAI         ";"
         BSR         AST1            < ENVOI D'UN ';' A PRIORI AU
                                     < BOUT DE LA VALEUR SEMANTIQUE
                                     < (POUR FIN DE NOM DE S OUS-
                                     < -PROGRAMMAE GRAPHIQUE , OU
                                     < COMME ELEMENT NEUTRE).
         JMP         E25             < PUIS ACCES AU MOT SUIVANT.
<
< FIN D'UNE PROPOSITION :
<
E22:     EQU         $
         ADRI        LREL,Y          < PASSAGE PROPOSITION SUIVANTE.
         JMP         E20             < (SI ELLE EXISTE!!!).
<
< FIN DE PHRASE :
<
E21:     EQU         $
         LAI         "F"
         BSR         AST1            < MISE D'UN 'F' EN FIN DE L'ITEM1 ...
         LAI         BRANCH-ZERO
         LR          A,W             < W=@BRANCH (PAR PRUDENCE).
         LA          MODCAL,W        < A=NATURE DE L'APPEL DE ' C'.
         CPI         1               < EST-CE UN APPEL PAR 'EI'/'GO' ???
         JE          E10             < OUI , RIEN A FAIRE ....
                                     < (MEME PAS D'APPEL DE 'GI'!!!)
         CPI         2               < EST-CE UN APPEL PAR 'SE' ???
         JE          E26             < OUI , VERS LA MISE A JOUR DE
                                     < LA LONGUEUR DE ITEM1.
         CPZ         X2              < A-T'ON TRANSFERE QUELQUE CHOSE
                                     < DANS L'ITEM2 ????
         JE          E380            < VERS LA MISE EN PLACE DE LA
                                     < LONGUEUR DE L'ITEM1.
<
<        A P P E L   D E   ' G I '   S O U S   ' G E '  :
<
         LBI         LNOM            < ON VA METTRE UNE SUCCESSION
                                     < DE 'GE ' AU BOUT DES ARGUMENTS
                                     < DE 'GI' AU CAS OU CEUX-CI
                                     < SERAIENT ERRONES OU DECALES ..
E30:     EQU         $
         LBY         NGE
         BSR         AST2            < MISE EN PLACE DE 'GE' AU BOUT
                                     < DES ARGUMENTS DE 'GI'.
         LA          NGE
         ANDI        'FF
         BSR         AST2            < SUITE ...
         LAI         " "
         BSR         AST2            < MISE D'UN 'SPACE' DERRIERE
                                     < LE NOM 'GE'.
                                     < (AFIN QUE 'GE' NE COMMENCE PAS
                                     < TOUJOURS A UNE FRONTIERE DE MOT).
         ADRI        -1,B            < DECOMPTE DES 'GE '.
         CPZR        B               < EST-CE FINI ???
         JNE         E30             < NON , ON CONTINUE ...
<
< RAZ DE L'EN-TETE DE L'ITEM2 ET MISE
< EN PLACE D'UN TYPE 'T' POUR 'GI' :
<
         LXI         -LTN
RZ2:     EQU         $
         STZ         &AI2            < RAZ DE L'EN-TETE ITEM2.
         JIX         RZ2
         LXI         IINDIC-LTN*2
         LAI         "T"
         STBY        &AI2            < LE TYPE 'T' EST RENDU NECESSAIRE
                                     < DANS L'EN-TETE ITEM2 CAR
                                     < 'GI' FAIT CETTE VERIFICATION ...
<
< MISE EN PLACE DU NOM  DE 'GI' :
<
         LA          NGI             < NOM DE LA BRANCHE 'GI'.
         STA         0,W             < ON VA APPELER 'GI' ET NON
                                     < PAS 'GE' ....
E380:    EQU         $
         LB          NCP             < B=LONGUEUR MAX D'UN ITEM A PRIORI
         JMP         E203            < VERS LA SORTIE.
<
<        C A S   D E S   A P P E L S   S O U S   ' S E '  :
<
E26:     EQU         $
         LB          X1              < SINON , C'EST UN TYPE 'R' ,
                                     < L'INDEX COURANT DE L'ITEM1 EN
                                     < DONNE LA LONGUEUR.
         LXI         DPH+1
         STB         &AI1            < SAUVEGARDE DE L'INDEX COURANT
                                     < DE L'ITEM1 EN VUE D'UNE
                                     < EVENTUELLE MISE A JOUR.
E203:    EQU         $
         LXI         LRITEM-LTN
         STB         &AI1            < STORE LONGUEUR DE L'ITEM1.
<
<
<        P A S S A G E   A   L ' O V E R L A Y   S U I V A N T  :
<
<
E10:     EQU         $
         STZ         MODCAL,W        < RAZ NATURE DE L'APPEL.

         LA          APILES
         LR          A,K             < LE REGISTRE K REVIENT SUR
                                     < LA PILE DE SODOME.
         LAD         DEMMEM
         SVC         0               < RETOUR A UNE MEMOIRE DE 4K.
<
< PASSAGE A L'OVERLAY SUIVANT :
<
E11:     EQU         $
         LAD         DEMSGN
         BSR         AOVL            < A=@DEMSGN ; W=@BRANCH.
         LAD         DEMCCI
         SVC         0               < EN CAS DES ERREURS DE CHARGE-
                                     < MENT , ON RETOURNE A CCI.
         JMP         E11             < PUIS ON RETENTE LE CHARGEMENT.
         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  :
<
<
PILE:    VAL         'FF0-6          < RETOUR SUR LA PILE  DE SODOME.
X12:     EQU         ZERO+PILE-LTNI-LTNI
X10:     VAL         X12-$
ZEROV:   EQU         ZERO+X10        < ERREUR D'ASSEMBLAGE SI MAUVAISE
                                     < IMPLANTATION.
         DZS         X10+1           < PAR PURE 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.