NMPROC: VAL "PH" < NOM DU PROCESSEUR.
IDP "PH - RELEASE 01/06/1979"
IDP "JOHN F. COLONNA"
EOT #SIP DEF PROCESSEUR#
PROG
WORD LEXIC < ADRESSE DE LANCEMENT DE 'PH'.
WORD 0 < POUR FAIRE $=$+1.
PLEXIC: EQU $ < A NOTER : P='12 !!!!!
LRP L
BR -2,L < ENTREE DANS LE PROCESSEUR 'PH'.
EOT #SIP DEFINITION ITEM#
PAGE
<
<
< 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 DE CATEGORIES GRAMMATICALES.
LMOT: VAL 40 < NBRE DE CARACTERES MAX 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.
PAGE
<
<
< 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'1NE PHRASE.
< (=LBUFESC DANS DCTESC...)
<
< F O R M A T D ' U N D E S C R I P T E U R
< D E M O T :
<
DESCI: VAL 0 < INDEX DU 1ER CARACTERE DU MOT.
< DESCI=-1 EN FIN DE PHRASE ...
DESCL: VAL 1 < LONGUEUR EN OCTETS DU MOT.
DESCD: VAL 2 < NOM DU DICTUIONNAIRE D'APPARTE-
< NANCE :
< 0 : LE MOT EST INCONNU ,
< ' ' : MOT USUEL CONNU ,
< <K1><K2> : MOT NON USUEL CONNU.
DESCS: VAL 3 < SEPARATEUR PRECEDENT LE MOT
< COURANT CODE A L'AIDE DE 'SEPX'.
DESCF: VAL 4 < CATEGORIE GRAMMATICALE REELLE
< DU MOT DANS SON CONTEXTE.
DESCV: VAL 5 < VALEUR SEMANTIQUE DU MOT.
DESCC: VAL NSEM+1/2+DESCV < CATEGORIES GRAMMATICALES DU MOT.
< RES POUR MEMORISER LE
LDESC: VAL NCATG4+3/4+DESCC < NBRE DE MOTS MACHINES NECESSAI-
< DESCRIPTEUR D'UN MOT FRANCAIS.
<
< 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 DU TYPE ',',';',...
SEP3: VAL 2 < SEPARATEUR DU TYPE APOSTROPHE.
SEP4: VAL 1 < SEPARATEURS DU TYPE 'PARENTHESE'.
FINF: VAL 0 < SEPARATEUR DE FIN DE PHRASE ,
< 'EOT' ET R/C.
CAR: VAL 8 < LIMITE ENTRE LES CARACTERES
< DE TYPE 'SEPARATEUR' ET LES
< CARACTERES DE TYPE 'LETTRES'.
LETR: VAL 8 < CARACTERES DU TYPE LETTRES ,
< DE 'A' A 'Z'.
CHIF: VAL 9 < CARACTERES DU TYPE 'CHIFFRE' ,
< DE '0' A '9'.
CARS: VAL 'A < CARACTERES SPECIAUX ASSIMILES
< A DES LETTRES : '-','+','*',...
IGNOR: VAL 'B < CARACTERES NON RECONNUS ET
< REMPLACES PAR '#' (ASSIMILE
< A DES LETTRES) , PAR EXEMPLE
< 'GS' , 'DC1' ,...
PAGE
<
<
< 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.
PAGE
<
<
< V A L E U R S L E X I C A L E S
< D E S C A R A C T E R E S :
<
<
VALK: EQU $
BYTE IGNOR;IGNOR < NUL SOH 00 01
BYTE IGNOR;IGNOR < STX ETX 02 03
BYTE FINF;IGNOR < EOT ENQ 04 05
BYTE IGNOR;IGNOR < ACK BEL 06 07
BYTE IGNOR;IGNOR < BS HT 08 09
BYTE IGNOR;IGNOR < LF VT 0A 0B
BYTE IGNOR;FINF < FF CR 0C 0D
BYTE IGNOR;IGNOR < SO SI 0E 0F
BYTE IGNOR;IGNOR < DLE DC1 10 11
BYTE IGNOR;IGNOR < DC2 DC3 12 13
BYTE IGNOR;IGNOR < DC4 NAK 14 15
BYTE IGNOR;IGNOR < SYN ETB 16 17
BYTE IGNOR;IGNOR < CAN EM 18 19
BYTE IGNOR;IGNOR < SUB ESC 1A 1B
BYTE IGNOR;IGNOR < FS GS 1C 1D
BYTE IGNOR;IGNOR < RS US 1E 1F
BYTE SEP1;SEP2 < SPACE ! 20 21
BYTE CARS;CARS < " # 22 23
BYTE CARS;CARS < $ % 24 25
BYTE CARS;SEP3 < & ' 26 27
BYTE SEP4;SEP4 < ( ) 28 29
BYTE CARS;CARS < * + 2A 2B
BYTE SEP2;CARS < , - 2C 2D
BYTE FINF;CARS < . / 2E 2F
BYTE CHIF;CHIF < 0 1 30 31
BYTE CHIF;CHIF < 2 3 32 33
BYTE CHIF;CHIF < 4 5 34 35
BYTE CHIF;CHIF < 6 7 36 37
BYTE CHIF;CHIF < 8 9 38 39
BYTE SEP2;SEP2 < : ; 3A 3B
BYTE CARS;CARS < < = 3C 3D
BYTE CARS;SEP2 < > ? 3E 3F
BYTE CARS;LETR < @ A 40 41
BYTE LETR;LETR < B C 42 43
BYTE LETR;LETR < D E 44 45
BYTE LETR;LETR < F G 46 47
BYTE LETR;LETR < H I 48 49
BYTE LETR;LETR < J K 4A 4B
BYTE LETR;LETR < L M 4C 4D
BYTE LETR;LETR < N O 4E 4F
BYTE LETR;LETR < P Q 50 51
BYTE LETR;LETR < R S 52 53
BYTE LETR;LETR < T U 54 55
BYTE LETR;LETR < V W 56 57
BYTE LETR;LETR < X Y 58 59
BYTE LETR;CARS < Z CROCHET( 5A 5B
BYTE CARS;CARS < ANTI/ CROCHET) 5C 5D
BYTE CARS;CARS < 5E 5F
PAGE
<
< A C T I O N S L E X I C A L E S :
<
<
ACTL: EQU $
WORD RIEN < FIN DE PHRASE.
WORD RIEN < SEP4.
WORD RIEN < SEP3.
WORD RIEN < SEP2.
WORD RIEN < SEP1.
WORD RIEN < 5.
WORD RIEN < 6.
WORD RIEN < 7.
WORD RIEN < LETTRES.
WORD RIEN < CHIFFRES.
WORD RIEN < CARACTERES SPECIAUX.
WORD REPLAC < CARACTERES NON RECONNUS (IGNOR).
WORD RIEN < C.
WORD RIEN < D.
WORD RIEN < E.
WORD RIEN < F.
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 :
<
MPHR: BYTE 8;'6D
ASCI "PHRASE> "
MINC: BYTE 5;'6D
ASCI "??? "
<
< R E L A I S D E T A B L E S :
<
< PHRASE A ANALYSER :
<
PHR: VAL FREE < ZONE CONTENATNT LA PHRASE
< A ANALYSER.
APHR: WORD PHR+'8000 < RELAI INDEX VERS LA PHRASE
< A ANALYSER.
FREE: VAL LPHR/2+FREE+1 < PROGRESSION DE LA ZONE LIBRE.
< (+1 A CAUSE DE L'EOT QUE L'ON
< AJOUTE SYSTEMATIQUEMENT EN
< BOUT DE ZONE 'PHR').
<
< ZONE ARGUMENTS :
<
LDUM: VAL 32 < LONGUEUR DE LA ZONE ARGUMENT.
DUMY: VAL FREE < ZONE ARGUMENT (SYNTAXE-->
< SEMANTIQUE).
FREE: VAL FREE+LDUM
<
< ZONE DES DESCRIPTEURS ET DES PROPOSITIONS :
<
DPHR: VAL FREE < ZONE DES DESCRIPTEURS DES MOTS
< DE LA PHRASE.
FREE: VAL LDESC*LPHR/2+FREE
< PROGRESSION DE LA ZONE LIBRE
< DANS UN GACHIS SUPERBE.....
< (/2 PARCEQUE L'ON A AU MAXIMUM
< LPHR/2 MOTS DANS UNE PHRASE
< DE LPHR CARACTERES MAX !!!).
ADPHR: WORD DPHR < ADRESSE DU 1ER DESCRIPTEUR
< LEXICOGRAPHIQUE.
AI1: WORD ZERO+PILE-LTNI+LTN,X < RELAI VERS L'ITEM1.
AI2H: WORD ZERO+PILE-LTNI-LTNI
< @DE L'EN-TETE DE L'ITEM2.
AI2: WORD ZERO+PILE-LTNI-LTNI+LTN,X
< RELAI INDEX VERS LE CORPS DE
< DE L'ITEM2.
AVALK: WORD VALK,X < RELAI VERS LA TABLE DES
< VALEURS LEXICOGRAPHIQUES DES
< CARACTERES.
AACTL: WORD ACTL,X < RELAI VERS LA TABLE DES ACTIONS
< LEXICOGRAPHIQUES.
<
< 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 DU MESSAGE.
DEMIT: WORD '0602 < CAHARGEMENT DES PAGES DE
< DICTIONNAIRE DANS L'ITEM2.
WORD PILE-LTNI-LTNI*2
WORD 2*LTNI
WORD -1
DEMSGN: WORD '0402 < DEMANDE DE CHARGEMENT DES
< OVERLAYS INITIALISES EN MODE
< GENERATION.
WORD BRANCH-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
DEMIN: WORD '0101 < DEMANDE D'ENTREE D'UNE PHRASE
< AVEC ECHO.
WORD PHR*2
WORD LPHR
DEMCCI: WORD '0001 < APPEL DU CCI.
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION MEMOIRE.
WORD 0
WORD '3000 < DEMANDE DE 6K MOTS.
<
< P I L E D E ' P H ' :
<
APILES: WORD PILE-1 < PILE DE SODOME , UTILISEE
< DANS LE CAS OU UN RETOUR
< A 'GE' EST FAIT POUR PHRASE VIDE.
PILE: VAL FREE+1
APILE: WORD PILE-1 < POUR INITIALISER LE REGISTRE
< K DANS LA ZONE LIBRE.
<
< A D R E S S E S D E S R O U T I N E S :
<
APRINT: WORD PRINT < ROUTINE D'EMESSION DE MESSAGE.
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
AGTK: WORD 0 < CONTIENT SOIT @GTK1 , SOIT @GTK2.
AGTK1: WORD GTK1 < TRANSFERT DE LA PHRASE DE
< L'ITEM2 VERS 'PHR' , ET RECU-
< PERATION DU TYPE DES CARACTERES.
< (APPEL PAR 'SE').
AGTK2: WORD GTK2 < ACCES AU TYPE D'UN
< CARACTERE DE RANG DONNE.
< (APPEL PAR 'GE')
ALOADI: WORD LOADI < CHARGEMENT D'1NE PAGE DE
< DICTIONNAIRE.
AGT1: WORD GT1 < ACCES A UN CARACTERE QUELCONQUE
< D'UNE PAGE DE DICTIONNAIRE.
AGT2: WORD GT2 < ACCES A UN CARACTERE DECIMAL
< D'UNE PAGE DE DICTIONNAIRE.
ATEST: WORD TEST < TEST DE LA PRESENCE D'UN MOT
< DANS UNE PAGE DU DICTIONNAIRE.
AGETCG: WORD GETCG < RECUPERATION DES CATEGORIES
< GRAMMATICALES DANS UNE PAGE
< DU DICTIONNAIRE.
AGETV: WORD GETV < RECUPERATION DE LA VALEUR
< SEMANTIQUE DU MOT.
<
< C O N S T A N T E S :
<
DIX: WORD 10 < POUR CONVERSION DECIMALE.
NBC: WORD NBCAR*NBLIG < NBRE DE CARACTERES D'UN ITEM.
NSYNT: ASCI " X" < NOM DE LA BRANCHE D'ANALYSE
< SYNTAXIQUE.
NGE: ASCI "GE" < NOM DE L'OVERLAY 'GE'.
NDIC: ASCI ": 3" < NOM DE LA PAGE DES MOTS USUELS
BYTE '40;"0"
< DU DICTIONNAIRE.
BYTE '04;"T"
NOMDIC: ASCI " " < NOM DE LA PAGE COURANTE DU
< DICTIONNAIRE.
< (A ':' PRES ....).
X2: WORD 0 < INDEX COURANT DE L'ITEM2.
PAGE
<
<
< E M I S S I O N D ' U N M E S S A G E :
<
<
< ARGUMENT :
< A=@MOT DU MESSAGE DONT LE 1ER
< OCTET EN CONTIENT LA LONGUEUR.
<
<
PROG
PRINT: EQU $
PSR C < PAR PRUDENCE.
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 < PAR PRUDENCE.
RSR
PAGE
<
<
< T Y P E L E X I C O G R A P H I Q U E
< D ' U N C A R A C T E R E :
<
<
< FONCTION :
< -GTK1 : TRANSFERT LA PHRASE DE L'ITEM2
< VERS PHR PAR CARACTERE , PUIS RECUPERE
< LE TYPE DES CARACTERES (CAS DES APPELS
< PAR 'SE') ,
< -GTK2 : RECUPERE LE TYPE LEXICOGRA-
< PHIQUE D'UN CARACTERE DE RANG
< DONNE (CAS DES APPELS PAR 'GE').
<
<
< ARGUMENT :
< X=INDEX DU CARACTERE PRECEDENT DANS LA PHRASE.
<
<
< RESULTAT :
< X<--(X)+1 AVANT LA RECUPERATION DU TYPE ,
< A=TYPE LEXICOGRAPHIQUE DU CARACTERE D'INDEX (X).
<
<
GTK1: EQU $ < PHRASE DANS L'ITEM2.
PSR X < SAVE L'INDEX DE PHR.
LA X2 < A=INDEX COURANT DE L'ITEM2.
LR A,X < ET X=INDEX COURANT DE L'ITEM2.
CPI LPHR < VALIDATION DE LA LONGUEUR.
LAI "." < PHRASE TROP LONGUE A PRIORI.
JGE E102 < EFFECTIVEMENT , ON FAIT COMME
< SI UN '.' AVAIT ETE RECUPERE.
LBY &AI2 < A=CARACTERE COURANT DE L'ITEM2.
IC X2 < PROGRESSION INDEX ITEM2.
E102: EQU $ < CAS PHRASE OVERFLOW.
PLR X < RESTAURE X=INDEX PHR.
ADRI 1,X < PROGRESSION DE L'INDEX DE PHR.
STBY &APHR < ET TRANSFERT DE L'ITEM2
< VERS PHR PAR CARACTERE.
JMP GTK3 < VERS LA RECUPERATION DU TYPE
< LEXICO DU CARACTERE.
GTK2: EQU $ < PHRASE DANS 'PHR'.
ADRI 1,X < PASSAGE AU CARACTERE SUIVANT.
LBY &APHR < A=CARACTERE D'INDEX (X).
GTK3: EQU $
PSR X < SAVE L'INDEX DU CARACTERE.
LR A,X < X=CARACTERE ASCI.
LBY &AVALK < A=TYPE LEXICOGRAPHIQUE DU
< CARACTERE COURANT DE LA PHRASE.
PLR X < RESTAURE L'INDEX CARACTERE DE
< LA PHRASE.
RSR
PAGE
<
<
< A C C E S A U X C A R A C T E R E S D ' U N E P A G E
< D E D I C T I O N N A I R E :
<
<
< ARGUMENT :
< X=INDEX DU CARACTERE A RECUPERER.
<
<
< RESULTAT :
< A>0 : OK : A=CARACTERE (EVENTUELLENT CONVERTI
< EN BINAIRE POUR GT2).
< A<0 : ERREUR : SOIT DEBORDEMENT DE L'INDEX
< HORS L'ITEM2 , SOIT LE CARACTERE DECIMAL
< ATTENDU N'EST PAS DECIMAL.
< X<--(X)+1 EN GENERAL.
<
<
< C A R A C T E R E Q U E L C O N Q U E :
<
<
GT1: EQU $
LBY &AI2 < ACCES AU CARACTERE SANS
< CONVERSION.
JMP GT11 < VERS LA PROGRESSION DE X.
<
<
< C A R A C T E R E D E C I M A L :
<
<
GT2: EQU $
LBY &AI2 < ACCES AU CARACTERE PRESUME
< DECIMAL.
ADRI -'30,A < CONVERSION DECIMALE-->BINAIRE.
JAL GT14 < ERREUR : A<0 (!!!).
CPI 9 < VALIDATION DECIMALE.
JG GT13 < SORTIE EN ERREUR.
<
< PROGRESSION DE L'INDEX X :
<
GT11: EQU $
ADRI 1,X
XR A,X < A=INDEX POUR VALIDATION.
CP NBC < INDEX DANS L'ITEM ???
XR A,X < RESTAURE X.
JL GT14 < OK , LE NOUVEL X EST DANS
< L'ITEM2.
<
< RETOURS EN ERREUR :
<
GT13: EQU $
LAI -1 < ON RENVOIE A=-1<0.
<
< RETOUR AVEC (A) :
<
GT14: EQU $
RSR
PAGE
<
<
< R E C U P E R A T I O N D E S C A T E G O R I E S
< G R A M M A T I C A L E S :
<
<
< FONCTION :
< CETTE ROUTINE RECUPERE SI CELA
< EST POSSIBLE , LES CATEGORIES
< GRAMMATICALES D'UN MOT DONNE LORSQUE
< CELUI-CI A ETE RECONNU DANS LA
< PAGE COURANTE DU DICTIONNAIRE.
< LA RECUPERATION SE FAIT 16 BITS PAR 16 BITS ....
<
<
< RESULTAT :
< A>0 : B=16 BITS DE CATEGORIES GRAMMATICALES ,
< X<--(X)+4 ,
< A<0 : ERREUR DE RECUPERATION (OVER-ITEM2,...).
<
<
GETCG: EQU $
LYI 4 < DECOMPTEUR DU NBRE DE CARACTERES
< DE CATEGORIES A RECUPERER.
<
< BOUCLE DE RECUPERATION :
<
GETCG1: EQU $
BSR AGT1 < RECUPERATION DU CARACTERE
< COURANT DU DICTIONNAIRE.
JAL GETCG2 < A<0 : ERREUR DE RECUPERATION.
ANDI 'F < A>0 : OK , ON RECUPERE LES 4
< DERNIERS BITS DU CARACTERE.
SCRS 4 < CADRAGE A GAUCHE DANS A.
SCLD 4 < ET CUMUL DANS B.
ADRI -1,Y < DECOMPTE DES RECUPERATIONS.
CPZR Y < EST-CE FINI ???
JNE GETCG1 < NON , ON CONTINUE.
<
< FIN DE RECUPERATION : A NOTER QUE SI
< LE RETOUR SE FAIT AVEC Y=0 , ON A : A>0 ....
<
GETCG2: EQU $
RSR
PAGE
<
<
< R E C U P E R A T I O N D E L A V A L E U R
< S E M A N T I Q U E D ' U N M O T :
<
<
< RESULTAT :
< A>0 : B=2 OCTETS DE VALEUR SEMANTIQUE ,
< A<0 : ERREUR.
<
<
GETV: EQU $
BSR AGT1 < RECUPERATION DU CARACTERE COURANT
< DU DICTIONNAIRE.
JAL GETV1 < ERREUR DE RECUPERATION.
SWBR A,B < OK , ON SAUVEGARDE DANS
< L'OCTET0 DE B.
BSR AGT1 < RECUPERATION DU CARACTERE
< COURANT SUIVANT.
JAL GETV1 < ERREUR DE RECUPERATION.
ORR A,B < OK , ON CONCATENE LE 2EME
< OCTET AVEC LE 1ER , LE TOUT
< SE TROUVANT DANS B , ET A>0.
<
< FIN DE RECUPERATION :
<
GETV1: EQU $
RSR
PAGE
<
<
< C H A R G E M E N T D ' U N E P A G E
< D E D I C T I O N N A I R E :
<
<
< FONCTION :
< CETTE ROUTINE ESSAYE DE CHARGER
< LA PAGE DU DICTIONNAIRE DONT LE
< NOM EST EN EN-TETE DE L'ITEM2 ;
< SI CE CHARGEMENT REUSSI , ELLE
< VERIFIE QUE L'ITEM CHARGE A BIEN
< LE TYPE TEXTE , ON NE SAIT JAMAIS...
<
<
< RESULTAT :
< X=0 : OK , CHARGEMENT CORRECT ET L'ITEM2
< EST DE TYPE 'TEXTE' ,
< X#0 : ERREUR : SOIT LA PAGE DEMANDEE
< N'EXISTE PAS , SOIT ELLE N'A PAS
< LE TYPE 'TEXTE'.
< LES INDICATEURS SONT POSITIONNES PAR 'CPZR X'.
<
<
<
LOADI: EQU $
LAD DEMIT
SVC 0 < TENTATIVE DE CHARGEMENT.
JNE E30 < ERREUR : LA PAGE DEMANDEE
< N'EXISTE PAS , ON A : X#0 ...
<
< TEST DE L'ITEM QUE L'ON VIENT DE CHARGER :
<
LXI IINDIC-LTN*2
LBY &AI2 < ACCES AU TYPE DE L'ITEM.
CPI "T" < EST LE TYPE 'TEXTE' ????
JNE E30 < NON , ERREUR : A NOTER X#0 ....
<
< CAS D'UN RETOUR OK :
<
LXI 0 < ON RENVOIE X=0.
<
< SORTIE DE LA ROUTINE :
<
E30: EQU $
CPZR X < POUR UN TEST EN RETOUR.
RSR
PAGE
<
<
< T E S T E X I S T E N C E M O T D A N S L E
< D I C T I O N N A I R E C O U R A N T :
<
<
< FONCTION :
< CETTE ROUTINE TESTE SI LE MOT
< COURANT EXISTE OU PAS DANS LA
< PAGE COURANTE DU DICTIONNAIRE.
< SI CELUI EXISTE , L'ENTREE 'DESCD'
< DE SON DESCRIPTEUR RECOIT LE
< NOM DE LA PAGE DU DICTIONNAIRE.
< SINON , LE MOT RESTE INCONNU.
<
<
< ARGUMENT :
< C=@DESCRIPTEUR COURANT.
< ITEM2 : PAGE COURANTE DU DICTIONNAIRE ,
< NOMDIC : NOM DE LA PAGE COURANTE.
<
<
< RESULTAT :
< A=0 : LE NOM EXISTE ,
< A=-1<0 : LE NOM N'EXISTE PAS.
<
<
TEST: EQU $
<
< INITIALISATION DU TEST :
<
LXI 0 < X=INDEX DE L'ITEM2.
<
< BOUCLE DE PARCOURS DE LA PAGE COURANTE DU DICTIONNAIRE :
<
TEST1: EQU $
<
< CALCUL DE LA LONGUEUR DU MOT COURANT DE
< LA PAGE COURANTE DU DICTIONNAIRE :
<
BSR AGT2 < A=<L1>.
JAL TESTN < ERREUR : LE MOT ARGUMENT
< N'EXISTE PAS DANS CETTE PAGE ...
MP DIX < SINON , B=10*<L1>.
BSR AGT2 < A=<L2>.
JAL TESTN < ERREUR : LE MOT ARGUMENT
< N'EXISTE PAS DANS CETTE PAGE.
ADR B,A < A=10*<L1>+<L2>=LONGUEUR DU
< MOT COURANT DU DICTIONNAIRE.
CP DESCL,C < COMPARAISON AVEC LA LONGUEUR DU
< MOT ARGUMENT.
JL TEST2 < ON N'EST SUREMENT PAS EN
< PRESENCE DU MOT ARGUMENT.
<
< CAS OU LE MOT COURANT DU DICTIONNAIRE
< A UNE LONGUEUR SUPERIEURE OU EGALE A
< CELLE DU MOT ARGUMENT :
<
LR A,B < B=LONGUEUR DU MOT COURANT.
LY DESCI,C < Y=INDEX DU 1ER CARACTERE DU
< MOT ARGUMENT.
<
< BOUCLE DE COMPARAISON CARACTERE PAR
< CARACTERE DU MOT COURANT ET DU MOT
< ARGUMENT :
<
TEST3: EQU $
< ON A ICI :
< X=INDEX DU MOT COURANT DU DICTIONNAIRE ,
< Y=INDEX COURANT DU MOT ARGUMENT ,
< B=LONGUEUR RESIDUELLE DE TEST.
ADRI -1,B < DECOMPTE IMMEDIAT DES TESTS
< RESTANT A FAIRE.
BSR AGT1 < A=CARACTERE COURANT DU
< DICTIONNAIRE.
JAL TESTN < ERREUR : LE MOT ARGUMENT
< N'EXISTE PAS.
CPI "#" < EST-CE UN CARACTERE INDIFFERENT????
JE TEST7 < OUI , ON NE COMPARE DONC PAS ....
CPI "." < EST-CE LA FIN DU MOT DANS
< LE DICTIONNAIRE ????
JE TEST9 < OUI , CELA DOIT ETRE AUSSI
< LA FIN DU MOT QUE L'ON RECHERCHE.
CPI ":" < EST-CE LA FIN DE LA RACINE DU
< MOT COURANT ???
JE TEST10 < OUI , ARRET DE LA COMPARAISON.
XR X,Y < X=INDEX DU MOT ARGFUMENT.
CPBY &APHR < COMPARAISON DU CARACTERE COURANT
< DU DICTIONNAIRE AVEC LE CARACTERE
< COURANT DU MOT ARGUMENT.
XR X,Y < RESTAURE LES INDEX.
JE TEST7 < OK , 2 CARACTERES IDENTIQUES.
<
< TEST DES CARACTERES FACULTATIFS :
<
TBT 8 < EST-CE UN CARACTERE FACULTATIF
< (CARACTERE EN EXPOSANT) ????
JNC TEST5 < NON , LES 2 MOTS DIFFERENT DONC.
ANDI '7F < DANS LE CAS D'UN CARACTERE
< FACULTATIF , RECUPERONS SA
< VALEUR (BITS9-15).
XR X,Y < X=INDEX DU MOT ARGUMENT.
CPBY &APHR < NOUVELLE COMPARAISON DU MOT
XR X,Y < RESTAURE LES INDEX.
JNE TEST8 < DANS LE CAS OU LES 2 CARACTERES
< DIFFERENT ,
< ON SAUTE LE CARACTERE FACULTATIF
< EN L'IGNORANT ...
<
< CAS OU 2 CARACTERES SONT IDENTIQUES :
<
TEST7: EQU $
ADRI 1,Y < PROGRESSION DE L'INDEX DU MOT
< ARGUMENT ; LA PROGRESSION DE X EST
< ASSUREE PAR 'AGT1'.
TEST8: EQU $
CPZR B < EST-ON AU BOUT DE LA COMPARAISON?
JNE TEST3 < NON , ON COONTINUE.
<
< EST-ON ARRIVE AU BOUT DU MOT ARGUMENT ????
<
TEST9: EQU $
LR Y,A < A=INDEX FINAL DE PARCOURS
< DU MOT ARGUMENT.
SB DESCI,C < A=LONGUEUR PARCOURUE DANS LE
< MOT ARGUMENT.
CP DESCL,C < EST-CE AUSSI LA LONGUEUR DU
< MOT ARGUMENT ????
JNE TEST5 < NON , ON ADMET QUE LES 2 MOTS
< DIFFERENT ....
<
< CAS OU ON TROUVE LA COINCIDENCE :
<
TEST10: EQU $
ADR B,X < X=INDEX PRESUME DE ',' SI LE
< DICTIONNAIRE EST BIEN FORMATE ;
< CETTE OPERATION EST DU AU
< CARACTERE '.' DE FIN DE MOT.
BSR AGT1 < ACCES PRESUME A ',' SUIVANT
< LE MOT RECONNU DANS LA PAGE.
JAL TESTN < ERREUR D'ACCES A LA PAGE.
CPI "," < A>0 : OK , EST-CE BIEN ',' ????
JNE TESTN < NON , RETOUR EN ERREUR ....
<
< R E C U P E R A T I O N D E S G A T E G O R I E S
< G R A M M A T I CA L E S :
<
BSR AGETCG < RECUPERATION DES 16 PREMIERS
< BITS DE CATEGORIES GRAMMATICALES.
JAL TESTN < RECUPERATION EN ERREUR.
STB DESCC,C < A>0 : OK RANGEMENT DES 16
< PREMIERS BITS DE CATEGORIES.
IF NCATG4-4,X100,X100,
BSR AGETCG < RECUPERATION DES 16 BITS
< SUIVANTS DE CATEGORIES.
JAL TESTN < RECUPERATION EN ERREUR ....
STB DESCC+1,C < A>0 : OK RANGEMENT DES 16 BITS
< SUIVANTS DES CATEGORIES.
X100: VAL 0
<
< R E C U P E R A T I O N D E L A V A L E U R
< S E M A N T I Q U E :
<
BSR AGETV < RECUPERATION DES 2 OCTETS DE
< VALEUR SEMANTIQUE.
JAL TESTN < RECUPERATION EN ERREUR.
STB DESCV,C < A>0 : 3K ON SAUVEGARDE LES 2
< PREMIERS OCTETS DANS LE
< DESCRIPTEUR DU MOT.
IF NSEM+1/2-2,X100,,
BSR AGETV < RECUPERATION DES 2 OCTETS
< SUIVANTS.
JAL TESTN < ERREUR DE RECUPERATION.
STB DESCV+1,C < A>0 : OK , ON SAUVEGARDE LES
< 2 OCTETS SUIVANTS ....
X100: VAL 0
<
< VALIDATION DE LA FIN DU MOT COURANT DU DICTIONNAIRE :
<
BSR AGT1 < ACCES PRESUME A ';'.
JAL TESTN < A<0 : ACCES EN ERREUR ...
CPI ";" < A>0 : EST-CE BIEN ';' ????
JNE TESTN < NON RETOUR EN ERREUR ...
<
< R E C U P E R A T I O N D U N O M D E L A P A G E
< C O U R A N T E D U D I C T I O N N A I R E :
<
LA NOMDIC < RECUPERATION DU NOM DE LA
< PAGE COURANTE DU DICTIONNAIRE.
STA DESCD,C < ET MEMORISATION AVEC QUE LE
< MOT ARGUMENT EST CONNU.
<
< SORTIE POUR LA QUELLE LE NOM ARGUMENT EXISTE :
<
TESTP: EQU $
LAI 0 < RETOUR AVEC A=0 (OK).
<
< SORTIE DE LA ROUTINE DE TEST :
<
TEST4: EQU $
RSR
<
< SORTIE POUR LA QUELLE LE MOT ARGUMENT EST INCONNU :
<
TESTN: EQU TEST4 < L'AMBIGUITE GRAMMATICALE
< MAX SERA MISE A LA FIN DE TOUS L
< LES TESTS D'EXISTENCE.
<
< PASSAGE AU MOT SUIVANT DE LA
< PAGE COURANTE DU DICTIONNAIRE :
<
TEST2: EQU $
< ON A ICI :
< A=LONGUEUR DU MOT COURANT DU DICTIONNAIRE.
ADR A,X < PASSAGE SUR LA ',' SUIVANT
< LE MOT COURANT.
JMP TEST6 < VERS LE CALCUL FINAL DE X.
TEST5: EQU $
< ON A ICI :
< B=NBRE DE TESTS RESTANT A FAIRE-1.
ADR B,X < PASSAGE DE X SUR LA ',' SUIVANT
< LE MOT COURANT.
TEST6: EQU $
ADRI NCATG4+2+NSEM,X < X=INDEX DE <L1> DU MOT SUIVANT
< DANS LA PAGE DU DICTIONNAIRE.
JMP TEST1 < VERS L'ACCES UA MOT SUIVANT
< DANS LA PAGE COURANTE.
PAGE
<
<
< A C T I O N S L E X I C O G R A P H I Q U E S :
<
<
< R E M P L A C E M E N T :
<
<
< FONCTION :
< CETTE ROUTINE EST APPELEE QUAND
< LE TYPE 'IGNOR' EST RECONNU.
< ELLE REMPLACE LE CARACTERE COURANT
< PAR LE CARACTERE '#'.
<
<
< ARGUMENT :
< A=INDEX DU CARACTERE COURANT.
< X=TYPE LEXICOGRAPHIQUE.
<
<
REPLAC: EQU $
LR A,X < X=INDEX DU CARACTERE COURANT
< DE LA PHRASE.
LAI "#" < A=CARACTERE DE REMPLACEMENT.
STBY &APHR < QUE L'ON MET DANS LA PHRASE EN
< CARACTERE COURANT.
<
<
< A C T I O N V I D E :
<
<
RIEN: EQU $
RSR < RETOUR SANS RIEN FAIRE.
PAGE
<
<
< A N A L Y S E U R L E X I C O G R A P H I Q U E :
<
<
< FONCTION :
< L'ANALYSEUR LEXICOGRAPHIQUE A A
< SA CHARGE DE RECUPERER UNE PHRASE ,
< D'ISOLER LES MOTS , ET DE GENERER
< UNE LISTE LINEAIRE DESCRIPTIVE
< DES MOTS QUI LA COMPOSE.
< LE FORMAT DE LA LISTE DESCRIPTIVE
< EST FOURNIE EN TETE DU LISTING.
< LES LIMITEURS LEXICOGRAPHIQUES
< UTILISES SONT LE 'SPACE' EST LES
< CARACTERES DE PONCTUATION ; IL EST
< A NOTER QUE LES MOTS COMPOSES
< S'ECRIRONT OBLIGATOIREMENT AVEC
< UN TRAIT D'UNION '-' , AFIN DE LES
< DELIMITER SUREMENT.
<
<
< PHRASE A ANALYSER :
< 1- APPEL PAR 'GE' : PHRASE LUE SUR NSPIN ,
< 2- APPEL PAR 'EI'/'GO' : PHRASE CONTENU DANS ITEM2,
< ET DETRUITE PAR LES PAGES
< DE DICTIONNAIRE !!!!
< 3- APPEL PAR 'SE' : PHRASE LUE SUR NSPIN.
<
<
< E N T R Y ' P H ' :
<
<
WORD LOC+'80 < VALEUR INITIALE DE LA BASE L.
WORD BRANCH < VALEUR INITIALE DE LA BASE W.
LEXIC: EQU $
LRP K
ADRI -1,K
PLR L,W < INITIALISATION DES BASES L & W.
<
< DEMANDE D'ALLOCATION MEMOIRE :
<
LAD DEMMEM
QUIT < DEMANDE D'ALLOCATION DE 6K MOTS
< SANS UTILISER LA PILE K QUI
< N'EST PAS DANS LES 4K COURANTS.
LA APILE
LR A,K < INITIALISATION DU REGSITRE K.
<
< INITIALISATION DE L'ANALYSEUR :
<
LAI 6
STBY DEMSGN < DEMSGN EST MISE EN MODE 'LOAD
< SOUS ':SYS'.
LB AGTK1 < PHRASE DANS L'ITEM2 A PRIORI.
LA MODCAL,W < A=NATURE DE L'APPEL.
CPI 2 < EST-CE UN APPEL PAR 'SE' ???
JE E100 < OUI , LA PHRASE EST BIEN DANS
< L'ITEM2.
<
< CAS D'UNE PHRASE A LIRE :
<
LB AGTK2 < AUTRES CAS : IL FAUT LIRE
< LA PHRASE DANS PHR.
LXI LPHR
LAI '04
STBY &APHR < UN 'EOT' EST MIS A PRIORI EN
< BOUT DE PHRASE AU CAS OU
< LA PHRASE A ANALYSER AURAIT
< LA LONGUEUR MAXIMALE.
<
< ENTREE DE LA PHRASE :
<
LAD MPHR
BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION.
LAD DEMIN
SVC 0 < ENTREE DE LA PHRASE.
<
< TEST D'UNE PHRASE VIDE :
<
LXI 0
LBY &APHR < A=1ER CARACTERE DE LA PHRASE.
CPI '04 < EST-CE 'EOT' ???
JE PHVID < OUI , LA PHRASE EST VIDE.
CPI '0D < EST-CE 'R/C' ???
JE PHVID < OUI , LA PHRASE EST VIDE.
<
< CAS D'UNE PHRASE LUE NON VIDE ,
< OU D'UNE PHRASE ENTREE PAR L'ITEM2 :
<
E100: EQU $
STB AGTK < GENERATION DU RELAI VERS LA
< ROUTINE DES TYPES LEXICOS.
<
<
< G E N E R A T I O N D E L A L I S T E
< D E S C R I P T I V E :
<
<
LXI -1 < X=INDEX DU 1ER CARACTERE
< PRECEDANT LA PHRASE.
LYI SEP1+1 < Y=SEPARATEUR INITIAL MAX.
LBI 0 < B=NBRE INITIAL DE MOTS ISOLES.
LA ADPHR
LR A,C < C=@DU 1ER DESCRIPTEUR LEXICAL.
<
< BOUCLE D'ANALYSE :
< UTILISATION DES REGISTRES :
< X=INDEX CARACTERE COURANT DE LA PHRASE ,
< Y=SEPARATEUR MAXIMUM COURANT ,
< B=NBRE DE MOTS ISOLES.
<
E10: EQU $
BSR AGTK < RENVOIE : A=TYPE DU CARACTERE
< COURANT.
CPI CAR < DISCRIMINATION ENTRE LES
< DELIMITEURS ET LES CARACTERES
< QUI N'EN SONT PAS.
JL E20 < CAS DES SEPARATEURS.
<
< CAS DES LETTRES/CHIFFRES/... : ON
< EST EN PRESENCE DU DEBUT D'UN NOUVEAU
< MOT :
<
ADRI 1,B < COMPTE LE NBRE DE MOTS ISOLES.
STY DESCS,C < RANGEMENT DU SEPARATEUR PRECEDENT
< LE NOUVEAU MOT.
STX DESCI,C < RANGEMENT DE L'INDEX DU 1ER
< CARACTERE DU NOUVEAU MOT.
STZ DESCD,C < LE MOT EST A PRIORI INCONNU.
STZ DESCF,C < LA CATEGORIE GRAMMATICALE DU
< MOT DANS SON CONTEXTE EST
STZ DESCV,C < RAZ VALEUR SEMANTIQUE.
< INCONNUE A PRIORI.
IF NSEM+1/2-2,X100,,
STZ DESCV+1,C < RAZ VALEUR SEMANTIQUE.
X100: VAL 0
<
< ACTION LEXICOGRAPHIQUE :
<
E13: EQU $
PSR X < SAVE L'INDEX COURANT CARACTERE.
XR A,X < A=INDEX CARACTERE ; X=TYPE
< LEXICOGRAPHIQUE.
BSR &AACTL < APPEL D'UNE ROUTINE LEXICOGRA-
< PHIQUE SPECIFIQUE.
PLR X < RESTAURE L'2NDEX CARACTERE.
<
< ACCES AU CARACTERE SUIVANT :
<
E11: EQU $
BSR AGTK < RENVOIE A=TYPE DU CARACTERE
< COURANT (X).
CPI CAR < EST-CE UN DELIMITEUR ???
JGE E13 < NON ALLONS VERS L'ACTION
< LEXICOGRAPHIQUE.
<
< RECONNAISSANCE D'UNE FIN DE MOT :
< (X CONTIENT L'INDEX DU 1ER CARACTERE
< NON RECONNU)
<
E12: EQU $
< ON A ICI :
< X=INDEX DU DELIMITEUR ,
< A=TYPE DU DELIMITEUR.
LR A,Y < Y=NOUVEAU DELIMITEUR.
LR X,A < A=INDEX DU DELIMITEUR DE FIN
< DE MOT.
SB DESCI,C < A=LONGUEUR DU MOT QUE L'ON
< VIENT D'ISOLER ,
STA DESCL,C < ET SAVE DANS LE DESCRIPTEUR.
ADRI LDESC,C < PASSAGE SUR LE DESCRIPTEUR SUIVANT.
LR Y,A < RESTAURE A=TYPE DU SEPARATEUR
< SUR LEQUEL ONB EST ARRETE.
JMP E21 < VERS LE TEST DE FIN DE PHRASE.
<
< CAS DES SEPARATEURS :
<
E20: EQU $
CPR A,Y < RECHERCHE DU SEPARATEUR LE PLUS
< IMPORTANT DEPUIS LA FIN DU
< MOT PRECEDENT (PAR EXEMPLE L'
< APOSTROPHE EST PLUS IMPORTANTE
< QUE LE 'SPACE').
JLE E21 < Y<=A , ON CONSERVE LE SEPARATEUR
< COURANT (Y).
LR A,Y < SINON , LE NOUVEAU SEPARATEUR
< DEVIENT LE SEPARATEUR COURANT.
<
< TEST DE FIN DE PHRASE :
<
E21: EQU $
CPI FINF < EST-CE UN SEPARATEUR DE FIN
< PHRASE ????
JNE E10 < NON , ON CONTINUE ....
<
< F I N D E P H R A S E :
<
LAI -1
STA DESCI,C < LE MOT 'DESCI' DU DESCRIPTEUR
< COURANT EST MIS A -1 POUR
< MEMORISER LA FIN DE PHRASE.
STB DESCL,C < LE NBRE DE MOTS ISOLES EST
< MIS DANS LE MOT 'DESCL' DU
< DESCRIPTEUR COURANT.
<
<
< C H A R G E M E N T D U D I C T I O N N A I R E
< D E S M O T S U S U EL S :
<
<
E50: EQU $
<
< MISE EN PLACE DU NOM DE LA PAGE DES MOTS USUELS :
<
LAD NDIC < A=EMETTEUR D'INITIALISATION.
LB AI2H < B=RECEPTEUR=@EN-TETE(ITEM2).
LXI 4 < X=4 MOTS A DEPLACER.
MOVE < PAGE DES NOMS USUELS.
<
< CHARGEMENT DE LA PGAE DES MOTS USUELS :
<
BSR ALOADI
JNE E42 < LA PAGE DES MOTS USUELS
< N'EXISTE PAS , ESSAYONS LES
< AUTRES PAGES ...
<
< P A R C O U R S D E S M O T S U S U E L S :
<
LA ADPHR
LR A,C < C=@1ER DESCRIPTEUR DE LA PHRASE
< A ANALYSER.
<
< BOUCLE DE RECHERCHE DES MOTS USUELS :
<
E41: EQU $
CPZ DESCI,C < EST-ON EN BOUT DE PHRASE ???
JL E42 < OUI , PASSONS AUX MOTS NON USUELS
BSR ATEST < SINON , TEST DU MOT COURANT
< EN TANT QUE MOT USUEL.
ADRI LDESC,C < PASSAGE AU DESCRIPTEUR SUIVANT.
JMP E41 < VERS LE TEST DU MOT SUIVANT.
<
< C A S D E S M O T S N O N U S U E L S :
<
E42: EQU $
LA ADPHR
LR A,C < C=@1ER DESCRIPTEUR DE LA
< PHRASE COURANTE.
<
< BOUCLE DE PARCOURS DES PAGES NON USUELLES :
<
E43: EQU $
LA DESCI,C < EST-ON EN BOUT DE PHRASE ???
JAL E44 < OUI , C'EST FINI ....
CPZ DESCD,C < LE MOT COURANT EST-IL DEJA
< RECONNU COMME MOT USUEL ???
JNE E46 < OUI , RIEN A FAIRE.
<
< CAS DES MOTS NON ENCORE RECONNUS :
<
LR A,X < X=INDEX DU 1ER CARACTEREE DU MOT
< COURANT DE LA PHRASE.
LBY &APHR < A=<K1> DU MOT COURANT.
LR A,B < B=<K1>.
LA DESCL,C < ACCES A LA LONGUEUR DU MOT
< COURANT.
CPI 1 < ESTUN MOT DE 1 LETTRE ????
LAI " " < OUI A PRIORI ; ON FAIT ALORS
< <K2>='SPACE'.
JE E45 < OUI , C'EST UN MOT D'1NE LETTRE.
ADRI 1,X < SINON , PASSAGE SUR <K2>.
LBY &APHR < A=<K2> DU MOT COURANT.
E45: EQU $
< ON A ICI :
< A=<K2> OU 'SPACE' ,
< B=<K1>.
LXI -2*LTN+2 < X=INDEX DU 3EME CARACTERE DU
< DU NOM DE L'ITEM2.
STBY &AI2 < RANGEMENT DE <K2>/'SPACE'
< DANS L'EN-TETE DE L'ITEM2.
ADRI -1,X < PASSAGE SUR LE 2EME CARACTERE.
XR A,B < A=<K1> ; B=<K2>.
STBY &AI2 < RANGEMENT DE <K1> DANS L'EN-TETE
< DE L'ITEM2.
SWBR A,A < OCTET0(A)=<K1>.
ORR B,A < OCTET1(A)=<K2>.
CP NOMDIC < LE NOM DE LA PAGE NECESSAIRE
< POUR LE MOT COURANT SERAIT-ELLE
< LA PAGE COURANTE ???
JE E48 < OUI , PAS DE CHARGEMENT A FAIRE ...
<
< CHARGEMENT D'UNE PAGE NON USUELLE :
<
STA NOMDIC < SAVE LE NOM DE LA PAGE COURANTE
< POUR LA ROUITNE 'TEST'.
BSR ALOADI < TENTATIVE DE CHARGEMENT DE
< LA PAGE.
JNE E47 < CETTE PAGE N'EXISTE PAS , LE
< MOT COURANT NON PLUS (ET CECI
< D'UNE MANIERE DEFINITIVE!!!).
<
< PARCOURS DE LA PAGE COURANTE :
<
E48: EQU $
BSR ATEST < RECHERCHE DU MOT COURANT
< DANS LA PAGE COURANTE.
JAE E46 < OK , ON A TROUVE LE MOT COURANT.
<
< C A S D E S M O T S I N C O N N U S :
<
E47: EQU $
LAD MINC
BSR APRINT < ENVOI D'UN INDICATIF.
LA DESCI,C < A=INDEX DU 1ER CARACTERE DU
< MOT INCONNU.
SBT 2 < TRANSLATION DE 8K OCTETS.
STA DEMOUT+1 < GENERATION DE L'ADRESSE OCTET
< DU MOT INCONNU.
LA DESCL,C < ACCES A LA LONGUEUR DU MOT
< INCONNU ,
STA DEMOUT+2 < QUE L'ON MET DANS DEMOUT.
<
< MISE EN PLACE DE L'AMBIGUITE
< GRAMMATICALE MAXIMALE :
<
CPI 5 < ET TEST DE POSITION PAR RAPPORT
< A LA LONGUEUR DE 5 LETTRES.
< (MERDE ALORS !!!).
LAI -1
IF NCATG4-4,X100,X100,
LBI -1
X100: VAL 0
JLE TEST20 < CAS DES MOTS DE 5 LETTRES
< OU MOINS ...
<
< CAS DES MOTS INCONNUS DE PLUS DE 5 LETTRES :
< ON ADMET QU'ILS NE PEUVENT ETRE NI ARTICLE ,
< NI PRONOM RELATIF , NI CONJONCTION , NI
< PRONOM PERSONNEL.
<
RBT ARTICL
RBT PROREL
RBT CONJ
RBT PROPER
TEST20: EQU $
STA DESCC,C < UN MOT INCONNU RECOIT DES
< CATEGORIES D'AMBIGUITE MAX.
IF NCATG4-4,X100,X100,
STB DESCC+1,C < AMBIGUITE GRAMMATICALE MAX.
X100: VAL 0
<
< AFFICHAGE DU MOT INCONNU :
<
LAD DEMOUT
SVC 0 < AFFICHAGE DU MOT INCONNU.
<
< PASSAGE AU MOT SUIVANT DE LA PHRASE :
<
E46: EQU $
ADRI LDESC,C < PROGRESSION DU POINTEUR DES
< DESCRIPTEURS.
JMP E43 < VERS LE MOT NON USUEL SUIVANT.
<
< F I N D E P H R A S E :
<
E44: EQU $
LA NSYNT < A=NOM DE L'OVERLAY D'ANALYSE
< SYNTAXIQUE.
<
< C H A R G E M E N T D E L ' O V E R L A Y
< S U I V A N T :
<
E52: EQU $
STA 0,W < MISE EN PLACE DU NOM DE LA
< BRANCHE SUIVANTE.
LAD DEMSGN < A=@DEMSGN.
BSR AOVL < TENTATIVE DE CHARGEMENT.
LAD DEMCCI < CAS DES ERREURS DE CHARGEMENT.
SVC 0 < ON PASSE LA MAIN AU CCI.
E200: EQU $ < ENTRY 'PHRASE VIDE'.
LA NGE < A=NOM DE L'OVERLAY 'GE'.
JMP E52 < DANS LE CAS D'UN !GO , ON
< TENTE DE CHARGER 'GE'.
<
<
< P H R A S E L U E V I D E :
<
<
< FONCTION :
< CE MODULE APPELE LORSQU'UNE
< PHRASE A ETE LUE VIDE , PROVOQUE
< UN RETOUR DE L'ESPACE MEMOIRE
< A 4K , ET UN RETOUR A 'GE'.
<
<
PHVID: EQU $
LAI 0
SBT 2 < A='2000 OCTETS=4K MOTS.
STA DEMMEM+2 < MISE A JOUR DE DEMMEM.
LAD DEMMEM
QUIT < L'ESPACE MEMOIRE PASSE A 4K MOTS.
LA APILES
LR A,K < RETOUR SUR LA PILE DE SODOME.
STZ MODCAL,W < MODCAL<--0 ,
STZ CDRET,W < CDRET<--0.
JMP E200 < VERS LE RETOUR A 'GE'.
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 < 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, 2017-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2017-2024.