NMPROC: VAL "DI" < NOM DU PROCESSEUR. IDP "DICTIONNAIRE - RELEASE 01/06/1979" IDP "JOHN F. COLONNA" EOT #SIP DEF PROCESSEUR# WORD DICO < ADRESSE DE LANCEMENT DU < PROCESSEUR 'DI'. LOCAL WORD 0 < POUR FAIRE : $=$+1. PROG PDICO: EQU $ < A NOTER : P='12 !!!!!! LRP L BR -2,L < ENTREE DANS LE PROCESSEUR. PAGE 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 : < < LMOT: VAL 40 < NBRE MAX DE CARACTERES D'UN < MOT DU DICTIONNAIRE. NCATG: VAL 32 < NBRE DE CATEGORIES GRAMMATICALES. NCATG4: VAL NCATG+3/4 < NBRE D'OCTETS NECESSAIRES. NSEM: VAL 4 < NBRE D'OCTETS DE VALEUR < SEMANTIQUE DU MOT. < < < 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 VERBE: VAL 2 ADJECT: VAL 3 < ADJECTIF. ADVERB: VAL 4 < ADVERBE. PROPER: VAL 5 < PRONOM PERSONNEL. PRODEM: VAL 6 < PRONOM DEMONSTRATIF. INTERJ: VAL 7 < INTERJECTION. PREPOS: VAL 8 < PREPOSITION. CONJ: VAL 9 < CONJONCTION. ARTICL: VAL 10 < ARTICLE. PROREL: VAL 11 < PRONOM RELATIF. PAGE < < < L O C A L : < < LOCAL LOC: EQU $ < < M E S S A G E S : < BUFFER: DZS NSEM+1/2 < BUFFER D'ENTREE. MMOT: BYTE 5;'6D ASCI "MOT>" < INVITATION A ENTRER UN MOT. MUSUEL: BYTE 7;'6D ASCI "USUEL?" < MOT USUEL ???? MINDIC: BYTE 13;'6D ASCI "INDICATEURS=" < ENTREE DES CATEGORIES GRAM- < MATICALES. MNOM: BYTE 5;'6D ASCI "NOM?" MVERB: BYTE 7;'6D ASCI "VERBE?" MADJ: BYTE 10;'6D ASCI "ADJECTIF? " MADV: BYTE 9;'6D ASCI "ADVERBE?" MPP: BYTE 9;'6D ASCI "PRO.PER?" MPD: BYTE 9;'6D ASCI "PRO.DEM?" MINJ: BYTE 8;'6D ASCI "INTERJ? " MPREP: BYTE 13;'6D ASCI "PREPOSITION?" MCONJ: BYTE 13;'6D ASCI "CONJONCTION?" MART: BYTE 9;'6D ASCI "ARTICLE?" MPREL: BYTE 9;'6D ASCI "PRO.REL?" MSEM: BYTE 19;'6D ASCI "VALEUR SEMANTIQUE=" ILDIC: ASCI "I+: ;IL: ;ED" LILDIC: VAL $-ILDIC < AFIN DE REMETRRE A 'SPACE' < LA FIN DE LA LIGNE. DO NBCAR/2-LILDIC ASCI " " LONG: ASCI "00" < LONGUEUR DU MOT EN ASCI. MOT: EQU $ < MOT SOUS FORME ASCI. DO LMOT+NCATG4+1+NSEM+2/2 ASCI " " LILDIC: VAL $-ILDIC < NBRE DE MOTS OCCUPES PAR < LA ZONE 'ILDIC'. INIT: EQU $ < VALEUR INITIALE DE LA VALEUR < SEMANTIQUE ET DES CATEGORIES < GRAMMATICALES DONNEE A L'ENVERS : < LE DERNIER CARACTERE SERA LE 1ER. ASCI " ;" DO NSEM+1/2 ASCI " " DO NCATG4+1/2 WORD '4040 < < R E L A I S D E T A B L E S : < AI2: WORD ZERO+PILE-LTNI-LTNI+LTN,X < RELAI VERS LE CORPS DE L'ITEM2 < POUR INDEXATION PAR RAPPORT A 0. APILE: WORD PILE-1 < VALEUR INITIALE DU REGISTRE K. AMOT: WORD MOT,X < RELAI INDEXE VERS LE MOT ENTRE. ABUF: WORD BUFFER,X < RELAI VERS LE BUFFER D'ENTREE. AINIT: WORD INIT,X < RELAI VERS LA VALEUR INITIALE < INVERSEE DES CATEGORIES < GRAMMATICALES. AKP: WORD ILDIC,X < REALI D'ACCES AU 1ER CARACTERE < SUIVANT 'I+:'. AKL: WORD ILDIC+3,X < RELAI D'ACCES AU 1ER CARACTERE < SUIVANT 'IL:'. AI21: WORD ZERO+PILE-LTNI-LTNI+LTN-1,X < RELAI INDEXE D'ACCES AU CORPS DE < L'ITEM2 POUR INDEXATION PAR < RAPPORT A 1. ANOM: WORD TNOM,X < TABLE D'ACCES AUX ADRESSES DES < NOMS DES CATEGORIES GRAMMATICALES < X CONTENANT CETTE CATEGORIE. CG1: VAL 1 < 1ERE CATEGORIE GRAMMATICALE. TNOM: EQU $-CG1 WORD MNOM WORD MVERB WORD MADJ WORD MADV WORD MPP WORD MPD WORD MINJ WORD MPREP WORD MCONJ WORD MART WORD MPREL NCG: VAL $-TNOM-CG1 < NBRE DE CATEGORIES GRAMMATICALES < RECONNUES. < < C O N S T A N T E S : < NCP: WORD NBCAR*NBLIG < NBRE DE CARACTERES OCCUPES < PAR LE CORPS D'UN ITEM. NMP: WORD NBCAR*NBLIG/2 < NBRE DE MOTS OCCUPES PAR LE < CORPS D'UN ITEM. NGI: ASCI "GI" < NOM DE L'OVERLAY 'GI'. NGE: ASCI "GE" < NOM DE L'OVERLAY 'GE'. DIX: WORD 10 < POUR LES CONVERSIONS DECIMALES. CAT1: WORD 0 < MEMORISATION DE L'INDEX DU 1ER < CARACTERE DE CATEGORIE GRAMMA- < TICAL DANS LE MOT. < < R E L A I S D E S R O U T I N E S : < APRINT: WORD PRINT < ROUTINE D'EMISSOON MESSAGE. AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. AGOGE: WORD GOGE < RETOUR A 'GE'. < < D E M A N D E S A C M S 4 : < DEMIN: WORD '0101 < LECTURE D'UN OCTET AVEC ECHO. WORD BUFFER-ZERO*2 WORD 1 DEMMOT: WORD '0101 < ENTREE D'UN MOT AVEC ECHO. WORD MOT-ZERO*2 WORD LMOT DEMSEM: WORD '0101 < ENTREE DE LA VALEUR SEMANTIQUE. WORD BUFFER-ZERO*2 WORD NSEM DEMOUT: WORD '0202 < SORTI DES MESSAGES (CF. APRINT). WORD 0 < @OCTET DU MESSAGE. WORD 0 < LONGUEUR OCTET DU MESSAGE. DEMSGN: WORD '8402 < DEMANDE D'ACCES AU SGN , < INITIALISE POUR UNE GENERATION < DE LA BRANCHE 'DI'. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DEMCCI: WORD '0001 < DEMANDE D'ACCES AU CCI. PAGE < < < I M P R E S S I O N M E S S A G E : < < < ARGUMENT : < A=@MOT DU MESSAGE , DONT LE 1ER < OCTET EN CONTIENT LA LONGUEUR. < < PROG PRINT: EQU $ 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'3N MET DANS DEMOUT. LAD DEMOUT SVC 0 < ENVOI DU MESSAGE A CMS4. RSR < ET VOILA ... PAGE < < < G E S T I O N D U D I C T I O N N A I R E : < < < DICTIONNAIRE : < LE DICTIONNAIRE UTILISE EST DECOUPE < EN N*N+1 PAGES (N ETANT LE NBRE DE < CARACTERES RECONNUS) : LA 1ERE EST CELLE < DES MOTS USUELS ; LES N*N AUTRES SONT DES < PAGES ALPHABETIQUES AVEC CLASSEMENT SUR < LES 2 PREMIERES LETTRES DES MOTS . LES < PAGES DU DICTIONNAIRE PORTENT LES NOMS < SUIVANTS : < ': ' : MOTS USUELS , < ':'<K1><K2> : MOTS NON USUELS COMMENCANT < PAR LES 2 LETTRES <K1> ET < <K2> (<K2> POUVANT ETRE < 'SPACE'). < ON LIMITE LES NOMS DES PAGES DU < DICTIONNAIRE A 3 LETTRES AFIN DE NE PAS < AVOIR A APPLIQUER L'ALGORITHME DE CODAGE < DES NOMS UTILISES DANS SODOME ; ON < AURA ALORS : < ':'<K1><K2>::=':'<K1><K2>'3@0' , < LE NOM DE 6 CARACTERES ETANT LE NOM < VU PAR LE SGN .... < CE DICTIONNAIRE EST GEREE SEMI- < MANUELLEMENT PAR L'INTERMEDIAIRE DE 'ED'. < LE ROLE DE 'DI' EST D'EN PREPARER LE < TRAVAIL , EN RECUPERANT LE MOT , AINSI < QUE CES INDICATEURS DE CATEGORIES < GRAMMATICALES , ET ENFIN DE PROCEDER AU < CHARGEMENT (AVEC CREATION PRELIMINAIRE < EVENTUELLE) DE LA PAGE ADEQUAT DU DICTIONNAIRE. < < < FORMAT D'UN MOT DANS LE DICTIONNAIRE : < < <MOT>::=<L1><L2><K1><K2>...<KN>,<I1>...<IP><S1>...<SM>; < OU : < <L1><L2> REPRESENTE LA LONGUEUR DU MOT EN ASCI , < <K1><K2>...<KN> EST LE MOT PRPREMENT DIT , < , UN SEPARATEUR , < <I1>...<IP> LES INDICATEURS DE CATEGORIES < GRAMMATICALES , < <S1>...<SM> LA VALEUR SEMANTIQUE DU MOT , < ; LA FIN DE ZONE (COMPARABLE A UN 'EOT'). < < < CARACTERES SPECIAUX : < # : INDIQUE UN CARACTERE DE VALEUR INDIFFERENTE , < CARACTERE EN EXPOSANT : INDIQUE UN CARACTERE < FACULTATIF. < . : FIN DE MOT ; LES CARACTERES SUIVANTS < SONT INUTILISES LORS DE LA RECHERCHE < LEXICALE ; A NOTER QUE LE CARACTERE < PRECEDANT LE '.' DOIT ETRE LE DERNIER < CARACTERE DU MOT QUE L'ON RECHERCHE < DANS LE DICTIONNAIRE. < : : FIN DE RACINE ; LES CARACTERES SUIVANTS , < TANT DANS LE MOT DU DICTIONNAIRE , QUE < DANS LE MOT QUE L'ON RECHERCHE SONT < IGNORES. < < < E N T R Y D U P R O C E S S E U R : < < WORD LOC+'80 < VALEUR INITIALE DE LA BASE L. WORD BRANCH < VALEUR INITIALE DE LA BASE W. DICO: EQU $ LRP K ADRI -1,K PLR L,W < INITIALISATION DES BASES L & W. LA APILE LR A,K < INITIALISATION DU REGISTRE K. < < INITIALISATION DE DEMSGN : < LAI 6 < A=NVP DE 'LOAD SOUS :SYS'. STBY DEMSGN < MISE EN PLACE DU NVP DE DEMSGN. < < < E N T R E E D U M O T : < < E4: EQU $ LAD MMOT BSR APRINT < ENVOI DU MESSAGE D'INVITATION < A DONNER LE MOT. LAD DEMMOT SVC 0 < LECTURE DU MOT. < < CALCUL DE LA LONGUEUR DU MOT ET < RECHERCHE DE SON DERNIER CARACTERE : < LXI 0 < X=INDEX DE PARCOURS DU MOT. E2: EQU $ LBY &AMOT < ACCES A UN CARACTERE DU MOT. CPI '0D < EST-CE UN R/C ??? JE E3 < OK , FIN DE MOT TROUVEE. CPI '04 < EST-CE EOT ??? JE E3 < OK , FIN DE MOT TROUVEE. ADRI 1,X < SINON PROGRESSION DE L'INDEX < CARACTERE DU MOT. LR X,A < POUR VALIDATION DE L'INDEX. CPI LMOT < EST-ON EN PRESENCE D'UN MOT < DE LONGUEUR MAX ??? JL E2 < NON , ON PEUT POURSUIVRE LA < RECHERCHE. < < CAS DES 'EOT' , R/C , OU DES MOTS DE LONGUEUR MAX : < E3: EQU $ CPZR X < LE MOT EST-IL VIDE ??? JNE E300 < NON LE MOT N'EST PAS VIDE. BR AGOGE < MOT VIDE : IL EST REFUSE !!! E300: EQU $ LAI "," < NON , LE MOT N'EST PAS VIDE. STBY &AMOT < ON MET UNE ',' EN BOUT DE MOT < (ECRASANT EVENTUELLEMENT LES < CARACTERES 'EOT'-R/C). < < INITIALISATION DES INDICATEURS < DE CATEGORIES GRAMMATICALES : < LR X,Y < Y=INDEX MOT. LXI NCATG4+NSEM+1 < X=COMPTEUR ET INDEX D'ACCES < A LAZONE D'INITIALISATION. E6: EQU $ LBY &AINIT < ACCES A UN CARACTERE INITIAL. XR X,Y ADRI 1,X < PROGRESSION DE L'INDEX-MOT. STBY &AMOT < INITIALISATION DES INDICATEURS < DU MOT. XR X,Y JDX E6 < INITIALISATION SUIVANTE. < < CODAGE ASCI DE LA LONGUEUR DU MOT : < ADRI -NCATG4-NSEM,Y STY CAT1 < SAVE L'2NDEX DU 1ER CARACTERE DE < CATEGORIE GRAMMATICALE < DANS LE MOT. ADRI -1,Y < Y=LONGUEUR DU MOT. LR Y,B < B=LONGUEUR DU MOT. LAI 0 < A=0. DV DIX < A=CHIFFRE DES DIZAINES , < B=CHIFFRES DES UNITES. LXI -2 < X=INDEX DES DIZAINES. E7: EQU $ ADRI '30,A < CONVERSION ASCI DES DIZAINES < LA 1ERE FOIS ET DES UNITES < LA 2EME. STBY &AMOT < MISE EN PLACE LONGUEUR ASCI. LR B,A < RECUPERATION DES UNITES < LORS DU 1ER PASSAGE. JIX E7 < VERS LA CONVERSION DES UNITES. < < < A C C E S A U T Y P E D U M O T : < < E8: EQU $ LAD MUSUEL BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION < A DONNER LE TYPE 'USUEL' DU MOT. LAD DEMIN SVC 0 < LECTURE DE LA REPONSE. < < ANALYSE DE LA REPONSE : < LBY BUFFER < A=REPONSE SUR UN CARACTERE. < < REPONSES RECONNUES : < O : LE MOT EST USUEL , < N : LE MOT N'EST PAS USUEL , < F : DEMANDE DE RETOUR A 'GE' , < C : DEMANDE DE RETOUR A CCI. < CPI "O" JE E9 < LE MOT EST USUEL , RIEN A FAIRE. CPI "N" JE E10 < LE MOT N'EST PAS USUEL. CPI "F" JE GOGE < UN RETOUR A 'GE' EST DEMANDE. CPI "C" JE GOCCI < UN RETOUR A CCI EST DEMANDE. JMP E8 < LA REPONSE EST INCOMPREHENSIBLE , < ON RE-INTERROGE. < < C A S D E S M O T S N O N U S U E L S : < E10: EQU $ LXI 0 < INDEX DU 1ER CARACTERE DU MOT. LBY &AMOT < A=<K1>. LXI 3 < INDEX 1ER CARACTERE SUIVANT < ':' D'APPEL A UNE PAGE DU < DICTIONNAIRE. STBY &AKP < GENERATION DE ':'<K1>. STBY &AKL < GENERATION DE ':'<K1>. LXI 1 < INDEX D'ACCES AU 2EME CARACTERE < DU MOT. LBY &AMOT < A=<K2> OU ','. CPI "," < EST-CE UN MOT D'UNE LETTRE ???? JNE E11 < NON , A=<K2>. LAI " " < OUI : A='SPACE'. E11: EQU $ LXI 4 < INDEX 2EME CARACTERE SUIVANT < ':' DANS LES ACCES AUX PAGES < DU DICTIONNAIRE. STBY &AKP < GENERATION DE ':'<K1><K2>. STBY &AKL < GENERATION DE ':'<K1><K2>. < (<K2> POUVANT ETRE 'SPACE'). < < < C A T E G O R I E S G R A M M A T I C A L E S : < < E9: EQU $ LAD MINDIC BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION. LAD DEMIN SVC 0 < ENTREE DE LA REPONSE DE L'UTI- < LISATEUR. LBY BUFFER < ACCES A LA REPONSE. < < REPONSES RECONNUES : < O : ON RENTRE LES CATEGORIES GRAMMATICALES , < N : ON INITIALISE A L'ETAT VIDE '@@@..@'. < CPI "N" JE E100 < OK , RIEN A FAIRE , ON PASSE < A L'ETAT NEUTRE. CPI "O" JNE E9 < REPONSE INCOMPRENSIBLE ... < < ENTREE DES CATEGORIES GRAMMATICALES : < LXI NCG < X=INDEX DE LA DERNIERE CATEGORIE. E101: EQU $ LR X,Y < SAVE LA CATEGORIE DANS Y. E103: EQU $ LA &ANOM < A=@MESSAGE DU NOM DE LA < CATEGORIE COURANTE. BSR APRINT < ENVOI DU NOM DE LA CATEGORIE. LAD DEMIN SVC 0 < LECTURE DE LA REPONSE. LBY BUFFER < ACCES A LA REPONSE. < < REPONSES RECONNUES : < O : LE MOT RECOIT CETTE CATEGORIE , < N : CATEGORIE IGNOREE POUR CE MOT. < CPI "N" JE E102 < OK , CATEGORIE IGNOREE. LR Y,X < RESTAURATION DE LA CATEGORIE < GRAMMATICALE DANS X AU CAS OU < LA REPONSE NE SERAIT PAS < RECONNUE. CPI "O" JNE E103 < REPONSE INCOMPREHENSIBLE. < < CAS OU LE MOT RECOIT LA CATEGORIE < GRAMMATICALE COURANTE : < LAI 0 < CLEAR LE REGISTRE A. LR Y,B < B=CATEGORIE GRAMMATICALE. SCRD 2 SCLS 2 XR A,B < A=INDEX DU CARACTERE A METTRE < A JOUR , ET < B=NUMERO DU BIT-12 A METTRE A 1. AD CAT1 LR A,X < X=INDEX D'ACCES AU CARACTERE < CONTENANT LA CATEGORIE < DEMANDEE. LBY &AMOT < ACCES AU CARACTERE DE CATEGORIE. XR B,X < X=NUMERO DU BIT -12 A METTRE A 1. SBT 12,X < POSITIONNEMENT DE LA CATEGORIE < GRAMMATICALE DEMANDEE. XR B,X < RESTAURE LE NUMERO D'OCTET (X). STBY &AMOT < MISE A JOUR DU CARACTERE < DE CATEGORIE. < < PASSAGE A LA CATEGORIE PRECDENTE : < E102: EQU $ LR Y,X < RESTAURE X=CATEGORIE GRAMMATICALE JDX E101 < PRECEDENTE ... E100: EQU $ < < < E N T R E E D E L A V A L E U R S E M A N T I Q U E : < < LAD MSEM BSR APRINT < ENVOI D'UN MESSAGE SPECIFIQUE. LAD DEMSEM SVC 0 < ENTREE DE LA VALEUR SEMANTIQUE < SUR 4 CARACTERES MAX. < < GENERATION DE LA VALEUR SEMANTIQUE < DERRIERE LES VALEURS GRAMMATICALES : < LXI 0 < X=INDEX DU BUFFER. LY CAT1 ADRI NCATG4,Y < Y=INDEX DU MOT INITIALISE < SUR LE 1ER OCTET DE VALEUR < SEMANTIQUE. < < BOUCLE DE RECUPERATION : < E220: EQU $ LBY &ABUF < A=UN OCTET ENTRE. CPI '04 < EST-CE 'EOT' ??? JE E221 < OUI , C'EST FINI. CPI '0D < EST-CE R/C ??? JE E221 < OUI , C'EST FINI. XR X,Y < SINON PERMUTATION DES INDEX. STBY &AMOT < L'OCTET DE VALEUR SEMANTIQUE < EST MIS DANS LE MOT. ADRI 1,X < PROGRESSION DE L'2NDEX MOT. XR X,Y < RESTAURATION DES INDEX. ADRI 1,X < PROGRESSION DE L'INDEX BUFFER. LR X,A < POUR LE TEST DE FIN. CPI NSEM < A-T'ON TESTE 'NSEM' CARACTERES ??? JL E220 < NON , ON CONTINUE .... E221: EQU $ < < SUPPRESSION DE L'ITEM2 PUISQU'ON LE MODIFIE : < LXI -LTN < -LONGUEUR DE L'EN-TETE ITEM2. RZ2: EQU $ STZ &AI2 < RAZ DE L'EN-TETE DE L'ITEM2. JIX RZ2 < < < P R E P A R A T I O N D U D I C T I O N N A I R E : < < < MISE EN PLACE DE LA LONGUEUR ET DU TYPE DE L'ITEM2 : < LA NCP LXI LRITEM-LTN STA &AI2 < MISE EN PLACE DE LA LONGUEUR < DE L'ITEM2 (POUR UN TEXTE). LAI "T" < TYPE 'TEXTE'. LXI IINDIC-LTN*2 STBY &AI2 < L'ITEM2 RECOIT LE TYPE 'TEXTE'. < < MISE A 'SPACE' DE L'ITEM2 : < LX NMP < X=NBRE DE MOTS A METTRE < A 'SPACE'. LAI " " SBT 2 < A='SPACE''SPACE'. E12: EQU $ STA &AI21 < MISE A 'SPACE' DE L'ITEM2. JDX E12 < < GENERATION DES ARGUMENTS A 'GI' : < LAD ILDIC < A=@ILDIC=EMETTEUR. LB AI2 RBT 0+16 < B=@CORPS(ITEM2)=RECEPTEUR. LXI LILDIC < X=NBRE DE MOTS A DEPLACER. MOVE < GENERATION DES ARGUMENTS A < 'GI' DANS L'ITEM2. < < < P A S S A G E A ' G I ' : < < GOGI: EQU $ LA NGI < A=NOM DE L'OVERLAY 'GI'. < < PREPARATION DES OVERLAYS : < E5: EQU $ STA 0,W < MISE EN PLACE DU NOM DE L'OVERLAY < A CHARGER EN TETE DE BRANCHE. LAD DEMSGN < A=@DEMSGN , ET ON A W=@BRANCH. BSR AOVL < TENTATIVE DE CHARGEMENT DE < L'OVERLAY 'GE'/'GI'. < (EN CAS D'ERREUR , ON RETOURNE A < CCI). < < < R E T O U R A U C C I : < < GOCCI: EQU $ LAD DEMCCI SVC 0 < RETOUR A CCI , PUIS RETOUR < A 'GE' SI !GO. < < < R E T O U R A ' G E ' : < < GOGE: EQU $ LA NGE < A=NOM DE L'OVERLAY 'GE'. JMP E5 < VERS LA TENTATIVE DE CHARGEMENT. < < < V A L I D A T I O N D E L ' I M P L A N T A T I O N : < < X12: EQU ZERO+PILE-LTNI-LTNI X10: VAL X12-$ ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI < L'IMPLANTATION EST MAUVAISE. DZS X10+1 < PAR PURE PROPRETE .... EOT #SIP GEN PROCESSEUR#