IF GOEI,X100,,X100 NMPROC: VAL "GO" < NOM DU PROCESSEUR. IDP "GO - RELEASE 01/06/1979" X100: VAL 0 IF GOEI,,X100, NMPROC: VAL "EI" < NOM DU PROCESSEUR. IDP "EI - RELEASE 01/06/1979" X100: VAL 0 IDP "JOHN F. COLONNA" EOT #SIP DEFINITION ITEM# < < < C O R P S I T E M D E S E R V I C E : < < SERASE: VAL 0 < SERASE=0 : EFFACER L'ECRAN APRES, < #0 : NE PAS EFFACER L'ECRAN SDUREE: VAL 1 < CONTIENT LA DUREE EN SECONDES < DES PAUSES SYNCHRONES. SDUREA: VAL 2 < CONTIENT EN ASCI LA DUREE < EN MINUTES DES PAUSES SYNCHRONES. SDEBS: VAL 1 < ADRESSE DE DEBUT DE SEQUENCE. SFINS: VAL 2 < ADRESSE FIN SEQUENCE. SMOVE: VAL 3 < QUE FAIRE ??? LES BITS SUIVANTS < INDIQUENT CE QU'IL FAUT FAIRE < VAEC CET ITEM ; SI SMOVE=0 , < IL S'AGIT D'UN 'SURCH & PLAY'. SPLAY: VAL 0 < PLAY EN CONTINU (SMOVE<0). SURCH: VAL 1 < POSITIONNEMENT PUIS STOP. SARRET: VAL 2 < STOP MAGNETOSCOPE. LIC: VAL 2 < LONGUEUR CORPS ITEMS 'C'/'E' , < EN OCTETS. LIW: VAL 6 < LONGUEUR ITEM 'W' (EN OCTETS). < (LONGUEUR DU CORPS) LIS: VAL 8 < LONGUEUR OCTETS DU CORPS < D'UN ITEM 'S'. EOT #SIP DEF PROCESSEUR# PAGE < < < N O E U D S D E T R A V A I L : < < TABLE NOEUD1: EQU BRANCH WORD EIGRAF < @DE LANCEMENT DE 'EI' (COMPATIBLE < AVEC 'CALL' : ELLE EST DONNEE < EN SLO+'10). WORD 0 < POUR FAIRE +1 SUR $. PROG EI: EQU $ < POINT D'ENTREE LORS D'UN APPEL < PAR LE CCI DE CMS4 (P='12). LRP L BR -2,L < VERS L'INITIALISATION. TABLE X3: VAL $-NOEUD1 DZS LNOEUD-X3 < SUITE DE L'ESPACE DE NOEUD1. WORD NOEUD1+XNOMC,X < RELAI D'ACCES A <NOMC1>. WORD NOEUD1+XNOM,X < RELAI D'ACCES A <NOM1>. NOEUD2: DZS LNOEUD < NOEUD-FILS. WORD NOEUD2+XNOMC,X < RELAI D'ACCES A <NOMC2>. WORD NOEUD2+XNOM,X < RELAI D'ACCES A <NOM2>. PAGE < < < P I L E D E T R A V A I L : < < PILE: VAL 'FF0-6 < 6 MOTS SONT RESERVES POUR < LA PILE DE TRAVAIL AU SOMMET < DE L'ESPACE MEMOIRE. PAGE < < < I T E M 1 E T I T E M 2 : < < ITEM1: EQU ZERO+PILE-LTNI ITEM2: EQU ITEM1-LTNI PAGE < < < L O C A L : < < LOCAL LOCEI LOC: EQU $ < < B U F F E R S E T < M E S S A G E S : < BUFFER: WORD 0 < BUFFER DE DEBLOCAGE DES PAUSES. MRCLF: BYTE 1;'6D MQCM: BYTE 9;'6D ASCI "REPONSE>" MRCCI: BYTE 11;'6D ASCI "RETOUR CCI" MABS: BYTE 23;'6D MABSH: WORD 0 < ABSENCE EN HEURES. ASCI "H " MABSM: WORD 0 < ABSENCE EN MINUTES. ASCI "M " MABSS: WORD 0 < ABSENCE EN SECONDES. ASCI "S D'ABSENCE." MDUREE: BYTE 15;'6D WORD 0 < POUR METTRE LA DUREE ASCI < DES PAUSES SYNCHRONES (MINUTES). ASCI "MN DE PAUSE." MPAUSE: BYTE 6;"P" ASCI "AUSE> " MNOM: BYTE 9;'6D ASCI "ORIGINE>" MERN: BYTE 5;'6D ASCI "!ERN" MERI: BYTE 5;'6D ASCI "!ERI" MIT: BYTE 13;'6D ASCI "ITEM DESIRE=" MEDN: BYTE 4;'6D ASCI "-->" MDATE: ASCI "!DAT" BYTE "E";'04 < < B L O C D E S A U V E G A R D E L O R S < D E S R E T O U R S AU C C I : < SAVE: ASCI "SAV:" IDNC: BYTE '60;'04 < OCTET0(IDNC)=SYSID(UTILISATEUR) < +'60 ; ON NE PEUT METTRE BRUTA- < LEMENT LE SYSID DANS LE <NOM> , < EN EFFET ON AURAIT DES PROBLEMES < AVEC LE SYSID=4 (CF. 'EOT' !!!) CLENC: BYTE 0;"S"+'20 < CLEF DE VALIDATION DE L'INFOR- < MATION QUI SUIT ; ON A : < OCTET0(CLENC)=SYSID(UTILISATEUR). SAVNC: DZS 3 < <NOMC> DU NOEUD COURANT SUR < 3 MOTS. HEURNC: WORD 0 < HEURE DE LA SAUVEGARDE EXPRI- < MEE EN MULTIPLES DE 2 SECONDES. LSAVE: VAL $-SAVE*2 < LONGUEUR EN OCTETS DU <NOM>+ < <VALEUR>. < < D E M A N D E S A C M S 4 : < DEBLOC: WORD '0101 < DEMANDE DE DEBLOCAGE PAUSE. WORD BUFFER-ZERO*2 WORD 1 < 1 CARACTERE DE DEBLOCAGE SUFFIT. DEMIN: WORD '0101 < DEMANDE D'ENTREE AVEC ECHO. WORD NOEUD2-ZERO+XNOM*2 WORD LNOM < LONGUEUR MAX DE <NOM>. DEMIT: WORD '0101 < ENTREE DU NOM D'UN ITEM. WORD ITEM1-ZERO+XNOM*2 WORD LNOM DEMEDN: WORD '0202 < EDITION DU NOM D'UN ITEM, WORD ITEM1-ZERO+XNOM*2 WORD LNOM < LA LONGUEUR EST VARIABLE... DEMOUT: WORD '0202 < DEMANDE DE SORTIE. WORD 0 < @OCTET DU BUFFER. WORD 7 < 7 CARACTERES DU <NOMC> A SORTIR. DEMERA: WORD '0205 < EFFACEMENT DE L'ECRAN. DEMSGN: WORD '0402 < INITIALEMENT UN STORE DE 'EI ' < LUI-MEME. WORD NOEUD1-ZERO*2 < @BRANCHE D'OVERLAY. WORD ZERO-NOEUD1+PILE-LTNI-LTNI*2 WORD -1 < LA VALEUR SUIT IMMEDIATEMENT < LE NOM. DEMSAV: WORD '0402 < BLOC DE SAUVEGARDE DU NOEUD < COURANT PAR L'INTERMEDAIARE < DU SGN. WORD SAVE-ZERO*2 < @OCTET DU BLOC DE SAUVEGARDE. WORD LSAVE < TAILLE EN OCTETS <NOM>+<VALEUR>. WORD -1 < LA <VALEUR> SUIT LE <NOM>. CCI: WORD '0001 DEMCCI: EQU CCI < ON NE SAIT JAMIS ... SLEEP: WORD '0005 < DEMANDE DE MISE EN SOMMEIL. WORD 0 WORD 0 < TEMPS EN SECONDES DEMANDE. COMAND: WORD '0002 < ACCES AU CCI NON INTERACTIF. WORD 0 < @OCTET DE LA CARTE. WORD 80 < LONGUEUR MAX D'UNE CARTE. < < C O N S T A N T E S : < KIN: WORD -1 < POUR RETOURNER A 'GE' SOUS 'GO'... IF GOEI,,X100, EIGO: WORD 0 < INDICATEUR DU PROCESSUR EXECUTE : X100: VAL 0 IF GOEI,X100,,X100 EIGO: WORD 1 < INDICATEUR DU PROCESSER EXECUTE : X100: VAL 0 < -1 : GENERATION DE 'EI' ET 'GO' , < 0 : PROCESSUR 'EI' , < 1 : PROCESSEUR 'GO'. NGE: ASCI "GE" < POUR NOMMER 'GE'. NGR: ASCI "G3" < NOM DE L'EDITEUR GRAPHIQUE. NEX: ASCI "3D" < NOM DU PROCESSEUR GRAPHIQUE. NED: ASCI "ED" < NOM DU PROCESSEUR 'ED'. NPH: ASCI "PH" < NOM DE L'ANALYSEUR DU FRANCAIS. NVI: ASCI "VI" < NOM DU PROCESSEUR VIDEO. NSC: ASCI "SC" < NOM DU PROCESSEUR FILM DIGITAL. EAO: ASCI ":EAO" < ACN DU SYSTEME D'ENSEIGNEMENT. ALTNI2: WORD LTNI*2 < LONGUEUR TOTALE EN OCTETS < DES ITEMS (EN-TETE+CORPS). ALTNI: WORD LTNI < LONGUEUR TOTALE EN MOTS ITEM. F3: WORD 0 < STOCKAGE INTERMEDIAIRE DE F3 : < F3=SIGMA(EOR(I*K(I))). < (APPROXIMATIVEMENT ????....) LOVL: WORD ZERO-NOEUD1+PILE-LTNI-LTNI*2 < LONGUEUR EN OCTETS DES BRANCHES < D'OVERLAY. C10: WORD 10 < POUR LES CONVERSIONS DECIMALES. C16: WORD 16 < CONVERSION BCD-->ASCI. C60: WORD 60 < 1 MINUTE=60 SECONDES. C3600: WORD 3600 < 1 HEURE=3600 SECONDES. NPROC: WORD 0 < POUR RECUPERER LE NOM DU < PROCESSEUR GRAPHIQUE POUR < LES ITEMS DE TYPE 'D'. < < ENVOI EN ZDC : < VALZDC: WORD 0 < MOT DE SYNCHRONISATION... ZDC2: DZS XXNOMC/XXNOCM < <NOMC> QUE L'ON ECHANGE... BYTE XXEOT;0 LONZDC:: VAL $-VALZDC*2 AZDC: WORD ZDC2,X < POUR DEPLACER <NOMC>... DEMZDC: WORD '0008 < ACCES <NOMC> EN ZDC. WORD VALZDC-ZERO*2 WORD LONZDC WORD 'FFC0 DELZDC: WORD '000A < ENVOI DE L'ACQUITTEMENT ZDC. WORD VALZDC-ZERO*2 WORD ZDC2-VALZDC*2 WORD 'C000 < < A D R E S S E S D E T A B L E S : < AN1: WORD NOEUD1 < ADRESSE DU NOEUD1. AN2: WORD NOEUD2 < ADRESSE DU NOEUD2. AI1: WORD ITEM1 < ADRESSE DE ITEM1. AI2: WORD ITEM2 < ADRESSE DE ITEM2. AKI1: WORD ITEM1+XWORK2,X < RELAI VERS LE CORPS DE L'ITEM1. ACOM: WORD COM,X < RELAI DE LA TABLE D'EXECUTION < DE L'ITEM COURANT (ITEM1). APILE: WORD PILE-1 < VALEUR INITIALE DU REGISTRE K. < < R E L A I S D E S R O U T I N E S : < AOVL: WORD OVL < INTERFACE DE CHARGEMENT DES < BRANCHES D'OVERLAY. ACODAG: WORD CODAGE < CODAGE DES <NOM> EN <NOMC>. APRINT: WORD PRINT < ENVOI D'UN MESSAGE. ACALCI: WORD CALCCI < APPEL CCI NON INTERACTIF. AGTCAR: WORD GETCAR < ROUTINE D'ACCES A UN CARACTERE. ACONV: WORD CONV < CONVERSIONS DECIMALES. ASGN: WORD SGN < ACCES AU SGN POUR 'LOAD-VALUE < SOUS :SYS'. ASAV: WORD SAV < ACCES AU SGN LORS DE LA SAU- < VEGARDE DU NOEUD COURANT. AERR: WORD ERREUR < ERREURS DEFINITIVES ... APGO: WORD PGO < ENTRY SECONDAIRE DE 'GO'. APEI: WORD PEI < ENTRY SECONDAIRE DE 'EI'. AGOBGE: WORD E500 < RETOUR EN ERREUR A 'GE'. PAGE < < < T A B L E D ' E X E C U T I O N D E S I T E M S : < < < FONCTION : < CETTE TABLE EST INDEXEE PAR LE < TYTPE DE L'ITEM COURANT (ITEM1) A < UNE TRANSLATION PRES ('41) . ELLE < PERMET D'ACCEDER UN MODULE D'EXECUTION < DU CONTENU DE L'ITEM1. < < COM: EQU $-'41 < ON COMMENCE AU TYPE 'A'. WORD ERREUR < A WORD ERREUR < B WORD GOCCI < C : RETOUR AU CCI. WORD DESSIN < D : EXECUTION PROG. GRAPHQIUE. AERASE: WORD ERASE < E : EFFACEMENT ECRAN. WORD ERREUR < F AGOGE: WORD GOGE < G : RETOUR A !GE. WORD ERREUR < H WORD FILMD < I : FILM DIGITAL. WORD ERREUR < J WORD ERREUR < K WORD ERREUR < L WORD QCM < M : QUESTIONS A CHOIX MULTIPLE. WORD ERREUR < N WORD ERREUR < O WORD PROG < P : RUNNER-PROCESSEUR GRAPHIQUE. WORD ERREUR < Q WORD REPON < R : REPONSE EN FRANCAIS. WORD VIDEO < S : SEQUENCE VIDEO. WORD TEXTE < T : AFFICHAGE D'UN TEXTE. WORD ERREUR < U WORD VIDE < V : ITEM VIDE. WORD WAIT < W : PAUSE. WORD ERREUR < X WORD ERREUR < Y WORD ERREUR < Z PAGE < < < C O D A G E < N O M > E N < N O M C > : < < < FONCTION : < CETTE ROUTINE CODE SUR 6 CARACTERES < <NOMC> LES 'N' CARACTERES <NOM> < D'UN NOEUD. < CECI EST FAIT SUIVANT UN SUPERBE < ALGORITHME DE COMPACTAGE PAS MAL < UNIVOQUE ... < < < ARGUMENT : < W=@NOEUD. < < < RESULTAT : < X=0 (OK). < < PROG USE W,NOEUD CODAGE: EQU $ < < INITIALISATION DU CODEUR : < STZ F3 < RAZ DE LA FONCTION F3. LYI 3 < 2*3 CARACTERES A METTRE A BLANC. LXI 0 < INDEX DE MISE A BLANC. LAI '20 SBT 2 < A='SPACE''SPACE'. E1: EQU $ STA &ANOMC < MISE DE <NOMC> A 'SPACE'. ADRI 1,X < INDEX DE RAZ. CPR X,Y JNE E1 < NEXT .... LXI -1 < X=INDEX CARACTERE. < =F1=LONGUEUR DU MOT ENTRE. LBI 0 < B=F2. < < UTILISATION DES REGISTRES : < < B=F2=EOR(K(I)) : EOR SUR TOUS LES < CARACTERES DE K(4) A K(L). < F2=EOR(K(4),K(5),...,K(L)) , < X=INDEX CARACTERES (IN ET OUT) , < =F1=LONGUEUR COURANTE DU MOT ENTRE (NBRE DE < CARACTERES NON COMPRIS 'EOT') , < F3=CF. F2 , MAIS A CHAQUE EOR , LE < RESULTAT INTERMEDIAIRE EST DECALE < CIRCULAIREMENT. < < < RECUPERATION DES 3 PREMIERS CARACTERES : < BSR AGTCAR < A=K(1). JE E2 < MOT VIDE , C'EST FINI. STBY &ANOMC < STORE : C(1)=K(1). BSR AGTCAR < A=K(2). JE E2 < LE MOT N' A QU'UNE LETTRE. STBY &ANOMC < C(2)=K(2). BSR AGTCAR < A=K(3). JE E2 < LE MOT N'A QUE 2 LETTRES. STBY &ANOMC < C(3)=K(3). < < CODAGE DES CARACTERES K(4),...,K(L) : < E3: EQU $ BSR AGTCAR < A=K(I) , I=4,...,L. < (L DESIGNANT LA LONGUER DU < MOT A CODER). JE E4 < ARRET DU CODAGE SUR 'EOT'. ADR X,A < LE CARACTERE COURANT (A) EST < 'PONDERE' PAR SA POSITION (X) < DANS LE MOT. < K(I)=K(I)+I. EORR A,B < CALCUL DE F2 : < F2=EOR(F2,K(I)). ADR A,B < F2=F2+K(I). EOR F3 < CALCUL DE F3 : < A=EOR(F3,K(I)). SCLS 1 < DECALAGE CIRCULAIRE. STA F3 < F3=SCLS(EOR(F3,K(I)),1). JMP E3 < CODAGE DU CARACTERE SUIVANT. < < MISE SOUS FORME ASCI DES FONCTIONS F2 & F3 : < E4: EQU $ LBY F3 < A=OCTET0(F3). AD F3 < A=F3+OCTET0(F3). ANDI '7F < A=OCTET0(F3)+OCTET1(F3). < (SUR 7 BITS). CPI "Z" JLE E5 ADRI -'30,A < F3 EST MIS SOUS LA FORME D'UN < CODE INFERIEUR AU 'Z'. E5: EQU $ CPI " " JG E6 ADRI '30,A < F3 EST DONC ENTRE LE 'Z' < (COMPRIS) ET LE 'SPACE' (NON < COMPRIS). E6: EQU $ < ON A ICI : < A=F3=CARACTERE ASCI DE '!' (='21) A 'Z' (='5A) ; < L'AMBIGUITE EST DONC POUR F3 DE '5A-'21. XR A,B < B=F3 , A=F2 A METTRE EN FORME. ANDI '7F < MISE SUR 7 BITS. CPI "Z" JLE E7 ADRI -'30,A < ON RAMENE F2 A UN CODE INFERIEUR < A CELUI DU 'Z'. E7: EQU $ CPI "0" JGE E8 ADRI '20,A < ON TENTE DE RAMENER F2 APRES < LE CODE DU '0' (ZERO). JMP E7 < POURSUIVONS LA TENTATIVE .... E8: EQU $ < ON A ICI : < A=F2=CARACTERE ASCI ALLANT DU '0' (COMPRIS) < AU 'Z' (COMPRIS) ; L'AMBIGUITE DE F2 EST DONC < DE '30-'5A : < AMBIGUITE(F2)<AMBIGUITE(F3). SWBR A,A ORR B,A < A=F2.F3. STA NOMC+2 < STORE : C(5)=F2 , C(6)=F3. < < CODAGE DE LA LONGUEUR DU MOT : < E2: EQU $ < ON A ICI : < X=LONGUEUR DU MOT ENTRE (NON COMPRIS 'EOT'). LR X,A ADRI '30,A < ON MET LA LONGUEUR SOUS FORME < D'UN CARACTERE ASCI QUI NOUS < DONNE F1 DONT L'AMBIGUITE EST < DE '30-.... , MAIS INFERIEUR A < CELLE DE F2 , ET DONC A CELLE < DE F3 A FORTIORI. LXI 3 < INDEX DE C(4). STBY &ANOMC < STORE : C(4)=F1. LXI 6 < INDEX DE C(7). LAI '04 < 'EON' DE FIN DE NOM CODE. STBY &ANOMC < STORE : C(7)='EON'. LXI 0 < RETOUR OK. RSR PAGE < < < A C C E S A U N C A R A C T E R E : < < < FONCTION : < CETTE ROUTINE FAIT PROGRESSER L'INDEX < CARACTERE COURANT (X) , LA LONGUEUR COURANTE < DU MOT (X) ET ACCEDE LE CARACTERE COURANT , < APRES INCREMENTATION DE X ; ENFIN < ELLE DIT SI LE CARACTERE ACCEDE EST < OU N'EST PAS 'EOT'. < < < NOTA : < UNE REPONSE EQUIVALENTE EST DONNEE < DANS LE CAS OU LA LONGUEUR COURANTE < ATTEINTE EST LA LONGUEUR MAX QUE < PEUT ATTEINDRE UN <NOM>. < < USE W,NOEUD GETCAR: EQU $ ADRI 1,X < PROGRESSION DE L'INDEX CARACTERE < COURANT (AVANT ACCES !!!!). < ET PROGRESSION DE LA LONGUEUR < COURANTE. LR X,A < ACCES A LA LONGUEUR COURANTE. CPI LNOM < EST-ON AU BOUT DU <NOM> SANS < AVOIR RENCONTRE D''EOT' ??? JE E140 < OUI , ON FAIT COMME SI.... LBY &ANOM < A=K(X). CPI '04 < EST-CE 'EOT' ???? E140: EQU $ RSR PAGE < < < E N V O I D ' U N M E S S A G E : < < < FORMAT DES MESSAGES : < OCTET0=LONGUEUR DU MESSAGE , < OCTET1,...=TEXTE DU MESSAGE. < < < ARGUMENT : < A=@MESSAGE. < < < DETRUIT LA BASE C. < < PRINT: EQU $ LR A,C < C ADRESSE LE MESSAGE A ENVOYER. ADR A,A ADRI 1,A < ADRESSE OCTET DU MESSAGE. STA DEMOUT+1 < MISE EN PLACE DE L'@OCTET DU < MESSAGE DANS DEMOUT. LBY 0,C < A=LONGUEUR DU MESSAGE. STA DEMOUT+2 < MISE EN PLACE DU COMPTE D'OCTETS < DANS DEMOUT. LAD DEMOUT SVC 0 < ENVOI DE LA DEMANDE A CMS4. RSR < LES CONDITIONS DE RETOUR SONT < IGNOREES. PAGE < < < A P P E L C C I N O N I N T E R A C T I F : < < < ARGUMENT : < A=@MOT DE LA CARTE A ENVOYER AU CCI. < < CALCCI: EQU $ ADR A,A < A=@OCTET DE LA CARTE. STA COMAND+1 < MISE EN PLACE DE L'@ OCTET < DE LA CARTE DANS LA DEMANDE. LAD COMAND SVC 0 < ENVOI DE LA CARTE AU CCI. RSR PAGE < < < A C C E S A U S G N : < < < FONCTION : < CETTE ROUTINE PERMET DE FAIRE < UN 'LOAD VALEUR'. < CETTE ROUTINE TRAVAILLE EN BASCULE < SUR LES MODES 'LOAD SOUS :SYS' , ET < 'LOAD SOUS <ACN>' ; LE BASCULEMNT < SE FAIT EN CAS D'ERREUR. < < < ARGUMENTS : < A=LONGUEUR OCTETS DE LA VALEUR ATTENDUE , < W=@MOT DE LA ZONE MEMOIRE OU RANGER LA VALEUR. < < < RESULTAT : < INDICATEURS POSITIONNES EN CAS D'ERREUR , < (POUR PERMETTRE DES TESTS JE/JNE) < X=CONDITIONS DE RETOUR DU SGN. < < SGN: EQU $ STA DEMSGN+2 < MISE EN PLACE DU COMPTE D'OCTETS < DE DEMSGN. LR W,A < A=@MOT DE LA VALEUR. ADR A,A < A=@OCTET DE LA VALEUR. STA DEMSGN+1 < MISE EN PLACE DE L'@OCTET < DU BUFFER DANS DEMSGN. LYI 1 < DECOMPTEUR DES TENTATIVES. < < BOUCLE DE BASCULE DES ACN : < E100: EQU $ LAD DEMSGN < A NOTER QU'ON A DEJA : NVP=6. SVC 0 < ENVOI DE LA DEMANDE A CMS4. JE E101 < OK , LE CHARGEMENT S'EST BIEN < TERMINE , RETOUR OK. ADRI -1,Y < DECOMPTE DES TENTATIVES. CPZR Y < 1ERE OU 2EME TENTATIVE ???? JL E101 < C'ETAIT LA 2EME , ON FAIT DONC < UN RETOUR EN ERREUR ; A NOTER < QUE LES INDICATEURS SONT < POSITIONNES SUR #0 , PUISQUE Y<0. < < 2EME TENTATIVE : < LA DEMSGN IBT 6 < ON ECHANGE NVP=5/6 , POUR IBT 7 < NVP=6/5 .... STA DEMSGN < MAJ DEMSGN. JMP E100 < VERS LA 2EME TENTATIVE. < < RETOUR DE LA ROUTINE : < E101: EQU $ RSR < X CONTIENT LES CONDITIONS DE < RETOUR DE CMS4. PAGE < < < A C C E S S G N P O U R ' S A V E ' : < < < ARGUMENT : < A=NVP D'ACCES AU SGN. < < < RESULTATS : < X=CONDITIONS DE RETOUR DU SGN , < INDICATEURS POSITIONES (OK OUI/NON). < < SAV: EQU $ STBY DEMSAV < MISE EN PLACE DU NVP DE DEMSAV. LAD DEMSAV SVC 0 < ENVOI DE LA DEMANDE. RSR PAGE < < < C O N V E R S I O N D E C I M A L E : < < < ARGUMENT : < A=NBRE BINAIRE INFERIEUR A 100. < < < RESULTAT : < A=NBRE CONVERTIE EN ASCI (2 CARACTERES). < < CONV: EQU $ PSR B < SAVE B. LR A,B LAI 0 DV C10 < A=CHIFFRE DES DIZAINES , < B=CHIFFRE DES UNITES. JAE E207 < SI LES DIZAINES SONT NULLES , < ON FAIT LA CONVERSION SOUS < FORME D'UN CARACTERE 'NULL'. ORI '30 < SINON , CONVERSION ASCI. SWBR A,A < LE CHIFFRE DES DIZAINES EST < MIS EN OCTET0(A). E207: EQU $ ORR B,A ORI '30 < CONVERSION DU CHIFFRE DES < DES UNITES (OCTET1(A)) EN ASCI. PLR B < RESTAURE B. RSR PAGE < < < P R O C E S S E U R D E P A R C O U R S D U < G R A P H E D ' E N C H A I N E M E N T < D E S I T E M S : < < < FONCTION : < CE PROCESSEUR EST DOUBLE , ET < EST APPELE POUR 2 FONCTIONS DISTINCTES < 'GO' : PERMET DE LANCER LE PROCESSUS , < EN DEMANDANT LE NOEUD DE DEPART < DANS LE GRAPHE D'ENCHAINEMENT ; < 'EI' : ENCHAINE ENSUITE LES ITEMS < ENTRE EUX , EN PARCOURANT LE GRAPHE < D'ENCHAINEMENT DANS LE SENS : < NOEUD-PERE-->NOEUD-FILS ; LE CHOIX DU < FILS SE FAIT EN FONCTION DES < CONDITIONS DE RETOUR D'UN ITEM , < CONDITIONS QUE L'ON TROUVE DANS < 'CDRET' . EN CHAQUE NOEUD DU < GRAPHE , ON 'EXECUTE' L'ITEM QUI < Y EST ATTACHE. < < < LE NOEUD COURANT EST IMPLANTE EN NOEUD2 !!!! < < WORD LOC+'80 < VALEUR INITIALE DE L. WORD NOEUD1 < VALEUR INITIALE DE W=@NOEUD1. EIGRAF: EQU $ LRP K ADRI -1,K PLR L,W < INITIALISATION DE < DE L (SUR LE LOCAL) , ET < DE W (SUR NOEUD1). LB APILE LR B,K < INITIALISATION DE K. PAGE < < < R U N D U B I - P R O C E S S E U R : < < < DIFFERENCIATION DES 2 PROCESSEURS : < EIGO=0 : 'EI' : PARCOURS DU GRAPHE , < EIGO=1 : 'GO' : INITIALISATION DU PARCOURS. < < USE W,NOEUD LAI 6 STBY DEMSGN < DEMSGN EST MISE EN MODE < 'LOAD-VALUE SOUS :SYS'. < < MISE EN PLACE DU NOEUD COURANT NOEUD2 : < ADRI LTN,W < W=@NOEUD2. < < TEST DES ALT-MODES : < IC KIN < COMPTAGE DES ENTREES... JE NALTM < LA PREMIERE, ON Y VA... BR AGOGE < CAS DES SUIVANTES... NALTM: EQU $ < < DISCRIMINATION DE 'EI' ET 'GO' : < CPZ EIGO < QUI EST LA ??? JE PEI < C'EST 'EI' ... PAGE < < < ' G O ' : I N I T I A L I S A T I O N < O U R E - I N I T I A L I S A T I O N D U < P A R C O U R S : < < < FONCTION : < PGO EST UTILISE SOIT POUR INTIALISER < LE PARCOURS DU GRAPHE , SOIT POUR < LE REINITIALISER , SUITE A UN RETOUR < PROVISOIRE AU CCI , PAR UN ITEM 'C' ; < < < NOEUD COURANT : < NOEUD2. < < PGO: EQU $ < < INITIALISATION DE LA ZONE < DE TRANSMISSION DES ARGUMENTS : < STZ CDRET-LTN,W < OK A PRIORI. STZ MODCAL-LTN,W < < PREPARATION DE L'APPEL DE 'EI' ; EN < FAIT LES CODES SONT < IDENTIQUES , L'APPEL PEUT DONC < ETRE SIMULE : < STZ EIGO < EIGO=0 : C'EST DONC 'EI' !?!!? < < TEST SUR UNE RESTAURATION EVENTUELLE : < WORD '1E45 < RENVOI : A=SYSID(UTILISATEUR). LR A,B < SAUVEGARDE B=SYSID(UTILISATEUR). ORI '60 < CONVERSION EN UNE MINUSCULE ASCI. STBY IDNC < GENERATION DU <NOM> DE L'EVENTUEL < BLOC 'SAVE'. LAI 5 < NVP='LOAD SOUS <ACN>. BSR ASAV < TENTATIVE DE RECUPERATION < D'UN BLOC 'SAVE'. JNE E200 < LE BLOC 'SAVE' N'EXISTEPAS , < ON FAIT DONC UNE INITIALISATION. < < VALIDATION D'UN BLOC 'SAVE' EXISTANT : < LBY CLENC < A=OCTET0(CLEF DE VALIDATION). CPR A,B < OCTET0(CLEF DE VALIDATION)=? < SYSID(UTILISATEUR) ???? JNE E200 < NON , ON FAIT DONC UNE INITIA- < LISATION DU PARCOURS DU GRAPHE. LA CLENC ANDI 'FF < A=OCTET1(CLEF DE VALIDATION). CPI "S"+'20 < VALIDATION ?? JNE E200 < CLEF NON VALIDE : INITIALISATION < DU PARCOURS DU GRAPHE. < < OK , RESTAURATION DU NOEUD COURANT : < LR W,B < B=@NOEUD2=@RECEPTEUR. LAD SAVNC < A=@EMETTEUR=@BLOC 'SAVE'. LXI 3 < 2*3 OCTETS A DEPLACER. MOVE < < DELETE DU BLOC 'SAVE' : < LAI 3 < NVP='DELETE VALUE'. BSR ASAV < ON NE TESTE PAS LES CONDITIONS < DE RETOUR DU SGN. < < CALCUL DU TEMPS ECOULE ENTRE LE < RETOUR AU CCI , ET LA RESTAURATION : < WORD '1E85 < RENVOI : A=HEURE EXPRIMEE EN < MULTIPLES DE 2 SECONDES. SB HEURNC < A LAQUELLE ON RETRANCE L'HEURE < DE RETOUR AU CCI. SLRD 15 < A=0 & B=TEMPS D'ABSENCE < EXPRIME EN SECONDES. DV C3600 < A=DUREE ECOULEE EN HEURES , < B=DUREE RESIDUELLE EN SECONDES. BSR ACONV < CONVERSION DE LA DUREE-HEURES < EN 2 CARACTERES ASCI. STA MABSH < MAJ DU MESSAGE MABS. LAI 0 DV C60 < A=DUREE EXPRIMEE EN MINUTES , < B=DUREE RESIDUELLE EN SECONDES. BSR ACONV < CONVERSION DE LA DUREE EN < MINUTES , EN ASCI. STA MABSM < MAJ DU MESSAGE MABS. LR B,A < A=DUREE RESIDUELLE EN SECONDES. BSR ACONV < CONVERSION DE LA DUREE EN < SECONDES EN ASCI. STA MABSS < MAJ DU MESSAGE MABS. LAD MABS BSR APRINT < ENVOI A L'UTILISATEUR DE LA < DUREE DE L'ABSENCE. JMP E202 < VERS LA POURSUITE DU PARCOURS < DANS LE GRAPHE. < (AVEC D'ABORD LE RECHARGEMENT < DU NOEUD COURANT). < < CAS D'UNE INITIALISATION VRAIE DU PARCOURS : < E200: EQU $ < < DEMANDE DU NOM DU NOEUD DE DEPART : < LAD MNOM BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION < A DONNER LE NOEUD DE DEPART. LAD DEMIN SVC 0 < LECTURE DU <NOM> DU NOEUD1. < ON A ICI : < W=@NOEUD2. BSR ACODAG < CODAGE DE <NOM> EN <NOMC>. JMP E31 < VERS LE CHARGEMENT DU NOEUD DE < DEPART DU GRAPHE. PAGE < < < C H A R G E M E N T D ' U N I T E M < A L A D E M A N D E : < < < FONCTION : < LORSQU'UN NOEUD N'A PAS < D'ITEM ASSOCIE, OU BIEN LORSQU'UN < CHARGEMENT D'ITEM SE FAIT MAL, ON < SE BRANCHE ICI ; CE MODULE DEMANDE < LE NOM D'UN ITEM, LE COMPACTE, ET < FAIT COMME SI IL AVAIT ETE RENCONTRE < DANS LE GRAPHE... < < < NOTA : < SI LE MESSAGE EST VIDE (EOT OU < R/C) ON FAIT COMME SI LE TYPE 'V' < ETAIT RENCONTRE... < < LI3: EQU $ LAD MERI BSR APRINT < MESSAGE D'ERREUR DE CHARGEMENT. LI1: EQU $ LA AI1 LR A,W < W=@ITEM1. SBT 0 < A=RELAI VERS LE NOM COMPACTE. STA ANOMCI-HITEM,W < GENERATION DU RELAI 'ANOMCI'. ADRI NOMI-HITEM,A < A=RELAI VERS LE NOM. STA ANOMI-HITEM,W < GENERATION DU RELAI 'ANOMI'. LAD MIT BSR APRINT < ENVOI D'UNE INVITATION... LAD DEMIT SVC 0 < ENTREE DU NOM REEL DE L'ITEM1. WORD '1E35 < B=BOX DE LA LECTURE VISU. LR B,A < A=NBRE DE CARACTERES ENTRES CPI 1 < MESSAGE VIDE (EOT OU R/C) ??? JE LI4A1 < OUI, ON VA RECUPERER SON <NOMC> DANS LA < ZDC SI 'R/C' OU LE CONSIDERER VIDE ('V') < SI <EOT>... BSR ACODAG < CALCUL DE <NOMC> DE L'ITEM1. JMP LI2 < ET ON FAIT COMME SI DE < RIEN N'ETAIT !!! < < CAS DES NOMS VIDES : < LI4A1: EQU $ LXI 0 LBY &ANOMI-HITEM,W < (A)=PREMIER CARACTERE : CPI XXEOT < <EOT> ??? JE LI4 < OUI, ON FAIT COMME SI TYPE 'V'... CPI '0D < 'R/C' ??? JNE $ < !???!??!??!? < < CAS DES 'R/C', ACCES A LA ZDC : < LAD DEMZDC ZDCIN1: EQU $ SVC 0 < ACCES A LA ZDC : CPZ VALZDC < EST-ELLE VALIDE ??? JE ZDCIN1 < NON, ON ATTEND... STZ VALZDC < OUI, ON L'ACQUITTE... LAD DELZDC SVC 0 < ACQUITTEMENT... < < TRANSFERT DU <NOMC> : < LXI XXNOMC < (X)=INDEX DES CARACTERES : ZDCIN2: EQU $ LBY &AZDC STBY &ANOMCI-HITEM,W < TRANSFERT DU <NOMC>... ADRI -1,X CPZR X JGE ZDCIN2 < < EDITION DU <NOM> : < LRP C < ON NE SAIT JAMAIS... LA ALTNI2 < (A)=NOMBRE D'OCTETS A CHARGER, BSR ASGN < ET CHARGEMENT DE L'ITEM DESIRE, AFIN DE < POUVOIR EDITER SON <NOM>... JNE LI3 < ERREUR... LXI 3 LBY &ANOMCI-HITEM,W < (A)=CARACTERE CODANT LA LONGUEUR, ADRI -'30,A < QUE L'ON DECODE, STA DEMEDN+2 < ET QUE L'ON MET DANS LA DEMANDE... LAD MEDN BSR APRINT < EDITION DE "-->", LAD DEMEDN SVC 0 < PUIS DU <NOM>... JMP LI5 < ET ON FAIT COMME SI DE RIEN N'ETAIT... PAGE < < < ' E I ' : P A R C O U R S D U G R A P H E : < < < UTILISATION DE LA BASE C : < EN DEHORS DE LA ROUTINE DE 'PRINT' , < ELLE CONTIENT EN GENERAL UNE ADRESSE < DE RETOUR PERMETTANT D'ITERER LES < DEMANDES D'ACCES AU SGN APRES AVOIR < FAIT UN RETOUR AU CCI. < < < UTILISATIONS DES NVP : < NVP=10 : CU2 (MAGNETOSCOPES) , < NVP=11 : CU3 (BAIE DE COMMUTATION) , OU < TY1. < < < NOEUD COURANT : < NOEUD2. < < PEI: EQU $ < < R E C H A R G E M E N T D U N O E U D C O U R A N T : < < ON A ICI : < W=@NOEUD2. LAD NCEI-LTN,W < A=@ZONE OU EST SAUVEGARDE < LE <NOMC> DU NOEUD COURANT. LR W,B < B=@DU <NOMC> DANS NOEUD2. LXI XXNOMC/XXNOCM < UN <NOMC> FAIT 2*3 CARACTERES. MOVE < RESTAURATION DE <NOMC> DU < NOEUD COURANT DANS NOEUD2. E202: EQU $ < ENTRY 'GO' REINITIALISATION. LAI '04 STBY NOMC+3 < MISE EN PLACE DE L'EOT DE < FIN DU <NOMC>. LRP C < C=@DE RETOUR EN CAS D'ERREUR SGN. LAI 2*LNOEUD < NBRE D'OCTETS D'UN NOEUD. BSR ASGN < DEMANDE DE RECHARGEMENT DU < NOEUD COURANT EN NOEUD2 ; IL < S'AGIT BIEN D'UN RECHARGEMENT , < CAR IL ETAIT CHARGE AVANT < L'EXECUTION DE L'ITEM PRECEDENT < QUI LUI ETAIT CONNECTE ; SI ON < ON LE RECHARGE C'EST QU'ON < CHERCHE SES FILS. JNE E200 < CAS DES ERREURS DE CHARGEMENT : < VERS UNE (RE-)INITIALISATION < DU PARCOURS DU GRAPHE : ON PEUT < DONC AINSI ABANDONNER LE < PARCOURS D'UN GRAPHE LORS D'1NE < RENTREE DANS !GE EN TAPANT < 'EI' A LA PLACE DE 'GO' (QUI < LUI , IRAIT RELIRE L'EVENTUEL < BLOC DE SAUVEGARDRE...) < < VALIDATION DU FILS DEMANDE : < LX CDRET-LTN,W < X=CDRET ; CDRET DONNE LE < NUMERO (DE 0 A 7) DU FILS < DEMANDE DU NOEUD COURANT. LR X,A < A=CDRET. CPI EI-ZERO JL VFILS < VERS LA VALIDATION DU FILS. < < CAS OU CDRET>=@E1 : IL VIENT D'Y AVOIR UN ALT-MODE : < LXI 2 < ON FORCE ALORS LE FILS NUMERO 2. JMP ALTM < VERS LA RECHERCHE DU FILS 2. VFILS: EQU $ < VALIDATION SI PAS D'ALT-MODE. JAL ERREUR < BIZARRE : CDRET,W<0 ?!!?!!? CPI 7 < VALIDATION DU CDRET. JG ERREUR < BIZARRE : CDRET,W>7 !?!?!?! < < OK , CDRET VALIDE : < ALTM: EQU $ < CAS DES ALT-MODES. LA FAMILY < A=FAMILLE DU NOEUD COURANT. TBT 8,X < TEST DU FILS (CDRET). JNC NINEX < LE FILS DEMANDE N'EXISTANT < PAS , ON VA REBOUCLER SUR LE < NOEUD COURANT !!! C'EST < BIEN FAIT POUR LUI ... < < C H A R G E M E N T D U F I L S < C O M M E N O U V E A U N O E U D C O U R A N T : < LR X,A < A=NUMERO DU FILS DEMANDE. ADR A,A ADR X,A < A=3*(CDRET). ADRI FILS-NOEUD,A ADR W,A < A=@<NOMC>(FILS)=@EMETTEUR. LR W,B < B=@NOEUD2=@RECEPTEUR. LXI XXNOMC/XXNOCM < UN <NOMC> FAIT 2*3 CARACTERES. MOVE < MISE DU FILS DU NOEUD COURANT , < COMME NOUVEAU NOEUD COURANT < EN NOEUD2. < < SAUVEGARDE DU NOUVEAU NOEUD COURANT : < E31: EQU $ < ENTRY 'GO' INITIALISATION. LAD NCEI-LTN,W LR A,B < B=@ZONE DE SAUVEGARDE DU NOEUD < COURANT=@RECEPTEUR. LR W,A < A=@<NOMC>(NOUVEAU NOEUD < COURANT)=@EMETTEUR. LXI XXNOMC/XXNOCM < UN <NOMC> FAIT 2*3 CARACTERES. MOVE < SAUVEGARDE DU NOUVEAU NOEUD < COURANT AVANT LA BRANCHE < D'OVERLAY (HABILE ?!?!) < < R E B O U C L A G E E V E N T U E L < S U R L E N O E U D C O U R A N T : < NINEX: EQU $ LRP C < C=@DE RETOUR SI ERREUR SGN. LAI 2*LNOEUD < A=NBRE D'OCTETS OCCUPES PAR < UN NOEUD. BSR ASGN < CHARGEMENT DU NOUVEAU NOEUD < COURANT. JNE E30 < ERREUR DE CHARGEMENT !?!?!? < < VALIDATION DU NOEUD COURANT : < LXI 7 LBY &ANOMC < ACCES AU 'TYPE'. CPI 'CE < EST-CE LE TYPE-NOEUD ??? < (CARACTERE 'N' AVEC BIT0=1). LXI '04 < CODE D'ERREUR 'NOM INEXISTANT' < A PRIORI. < (SI OK , X=4 EST UTILISE PAR < LE MOVE QUI VA SUIVRE). JNE E30 < LA VALEUR QUE L'ON VIENT DE < CHARGER N'EST PAS DE TYPE 'NOEUD' < ON FAIT COMME SI LE NOEUD N < EXISTAIT PAS (CF. X='04). < < C H A R G E M E N T D E L ' I T E M < C O N N E C T E A U N O E U D C O U R A N T : < < ON A ICI : < X=4 : UTILISE LORS DU MOVE .... LA INDIC TBT BITEM < Y-A-T'IL BIEN UN ITEM CONNECTE ?? JNC LI1 < NON, ON VA DEMANDER UN NOM < A L'UTILISATEUR.... < < DEPLACEMENT DU <NOMC> DE L'ITEM DANS ITEM1 : < LR W,A < A=@NOEUD2. ADRI ITEM-NOEUD,A < A=@<NOMC>(ITEM)=@EMETTEUR. LB AI1 < B=@ITEM1=@RECEPTEUR. < ON A ICI : < X=4 : POUR DEPLACER 7 OCTETS. MOVE < <NOMC>(ITEM) EST MIS DANS ITEM1. < < CHARGEMENT DE L'ITEM CONNECTE < AU NOEUD COURANT EN ITEM1 : < LR B,W < W=@ITEM1. LI2: EQU $ < ENTRY UTILISEE SUITE A L'ENTREE < D'UN NOM D'ITEM1 PAR L'UTILISATEUR LRP C < C=@DE RETOUR SI ERREUR SGN. LA ALTNI2 < A=NBRE MAX OCTETS D'UN ITEM. BSR ASGN < CHARGEMENT ITEM1. JNE LI3 < DANS LE CAS D'UNE ERREUR < DE CHARGEMENT, ON DEMANDE OU < REDEMANDE UN NOM D'ITEM.... < < ACCES AU TYPE DE L'ITEM : < LI5: EQU $ USE W,HITEM LA IINDIC STA NPROC < SAVE AU CAS OU L'ITEM SERAIT < DE TYPE 'D'. LBY IINDIC < A='TYPE-ITEM'. JANE E300 < OK , LE TYPE N'EST PAS 'VIDE'. LI4: EQU $ < CAS OU UN ITEM VIDE EST < SIMULE LORS DE LA DEMANDE D'UN < ITEM... LAI "V" < CAS DU TYPE 'VIDE' ('V'). E300: EQU $ CPI "A" < VALIDATION DU 'TYPE-ITEM'. JL ERREUR < BIZARRE !!!?!? CPI "Z" < VALIDATION DU 'TYPE-ITEM'. JG ERREUR < BIZARRE !?!!? LR A,X < X='TYPE-ITEM' SI NON-VIDE. < < REINITIALISATIONS : < USE W,NOEUD E33: EQU $ LB AN2 LR B,W < W=@NOEUD2. LAI 1 STA MODCAL-LTN,W < ON INDIQUE DANS LA ZONE DE < TRANSMISSION DES ARGUMENTS < QUE L'APPEL A LIEU PAR 'EI'. STZ CDRET-LTN,W < RAZ CDRET. < ON A ICI : < B=@NOEUD2 , < W=@NOEUD2 , BR &ACOM < BRANCHEMENT FONCTION DU TYPE < DE L'ITEM VERS UN MODULE SPECI- < FIQUE DU TYPE. PAGE < < < D E M A N D E D E P A U S E : < < < FONCTION : < CE MODULE PERMET DE BLOQUER LE < PROCESSUS DE PARCOURS DU GRAPHE , < SOIT UN TEMPS DONNE EN SECONDES (ET < FIXE PAR LE GRAPHE LUI-MEME) , < SOIT UN TEMPS INDETERMINE FIXE PAR < L'UTILISATEUR LUI-MEME. < < < ARGUMENT : < SDUREE=0 : PAUSE INDETERMINEE , < #0=DUREE EN SECONDES DE LA PAUSE. < < WAIT: EQU $ LXI SDUREE LA &AKI1 < RECUPERATION DUREE DE PAUSE. JAL ERREUR < BIZARRE !?!!?? JAE E62 < DEMANDE PAUSE INDETERMINEE. < < P A U S E I M P O S E E : < LR A,B < B=TEMPS DEMANDE (EN SECONDES). < < INDICATION DE LA DUREE A L'UTILISATEUR : < LXI SDUREA LA &AKI1 < RECUPERATION DE LA DUREE EN < MINUTES ET EN ASCI. STA MDUREE+1 < MISE DANS LE MESSAGE MDUREE. LAD MDUREE BSR APRINT < ENVOI DE 'XX MN DE PAUSE'. LAI 0 DV C60 < ON A ICI : < A=NBRE DE MINUTES A ATTENDRE , < B=NBRE DE SECONDES RESIDUELLES. LR A,X < X=NBRE DE MINUTES A ATTENDRE. CPI 0 < TEST DU NBRE DE MINUTES. LAD SLEEP < A=@DEMANDE DE MISE EN SOMMEIL. JE E60 < MOINS D'UNE MINUTE DEMANDE. LY C60 STY SLEEP+2 < POUR UNE DEMANDE DE MISE EN < SOMMEIL DE 1 MINUTE. < < BOUCLE DE SOMMEIL (X) FOIS 1 MINUTE : < E61: EQU $ PSR X < A CAUSE DU SVC. SVC 0 < 60 SECONDES DE SOMMEIL. PLR X JDX E61 < ENCORE 1 MINUTE DE PASEE ... < < ATTENTE RESIDUELLE : < E60: EQU $ STB SLEEP+2 < LE NBRE RESIDUEL DE SECONDES < EST MIS DANS LA DEMANDE DE SLEEP. SVC 0 < SOMMEIL DE (B) SECONDES. JMP ERASE < VERS L'EFFACEMENT EVENTUEL DE < L'ECRAN. < < P A U S E I N D E T E R M I N E E : < < FONCTION : < BLOQUE LE PROCESSUS JUSQU'A CE < QUE L'UTILISATEUR ENVOIE UN 'G'. < 'G' OU BIEN UN 'RETURN'. < < NOTA CONFIDENTIEL : < - CTRL-C : PERMET UN RETOUR (TEMPORAIRE) < AU CCI , AVEC RETOUR PAR !GO , < - CTRL-F : PERMET UN RETOUR (TEMPORAIRE) A GE , < AVEC RETOUR POSSIBLE PAR 'EI'. < E62: EQU $ LAD MRCLF BSR APRINT < PASSAGE A LALIGNE. LAD MDATE < A=@MOT DE !DATE. BSR ACALCI < AFFICHAGE DE LA DATE ET DE < L'HEURE AVANT LA PAUSE. LAD MPAUSE < A=@MESSAGE DE PAUSE. BSR APRINT < ENVOI DU MESSAGE INDIQUANT < QU'UNE SEANCE DE PAUSE (?!?!) EST < INITIALISEE. LAD DEBLOC SVC 0 < ATTENTE DU CARACTERE DE < DEBLOCAGE DE L'UTILISATEUR. < < ANALYSE DES DESIRS DE L'UTILISATEUR : < LBY BUFFER < A=CARACTERE FRAPPE. CPI "G" < DEMANDE DE POURSUITE DE PARCOURS < DU GRAPHE ??? JE E102 < VERS L'ENVOI DE LA DATE EN < FIN DE PAUSE (APRES 'G'). CPI '0D < 'RETURN' ??? JE E102 < POURSUITE DU PARCOURS DU < GRAPHE D'ENSEIGNEMENT. CPI '06 < CTRL-F ??? JE E500 < OUI , RETOUR A 'GE'. CPI '03 < EST-CE UNE DEMANDE SECRETE < DE RETOUR A CCI (CTRL-C) ??? JNE E62 < NON , POURSUITE DE LA PAUSE. LAD CCI SVC 0 < RETOUR A CCI POUR CTRL-C. JMP E62 < REPRISE DE LA PUSE LORS DU !GO. < < FIN DE PAUSE : < E102: EQU $ LAD MRCLF BSR APRINT < RETOUR A LA LIGNE. LAD MDATE < A=@MOT DE !DATE. BSR ACALCI < ENVOI DE LA DATE ET DE L'HEURE. < < < E F F A C E M E N T D E L ' E C R A N : < < < ARGUMENT : < SERASE=0 : EFFACER L'ECRAN , < #0 : NE PAS EFFACER L'ECRAN. < < ERASE: EQU $ LXI SERASE CPZ &AKI1 < UN EFFACEMENT EST-IL DEMANDE ?? JNE PEI < NON , VERS L'ACCES A L'ITEM < SUIVANT DU GRAPHE. LAD DEMERA SVC 0 < EFFACEMENT DE L'ECRAN. JMP PEI < VERS L'ACCES A L'ITEM < SUIVANT. PAGE < < < E R R E U R : C H A R G E M E N T N O E U D : < < E30: EQU $ < ON A ICI : < X=CODE D'ERREUR QUI A AMENE ICI. LA AGOBGE LR A,C < DANS LE CAS DE NOM INEXISTANT , < ON PREND COMME ADRESSE DE < RETOUR AU !GO , CELLE DU < DU RETOUR EN ERREUR A 'GE'. E210: EQU $ LAD MERN < A=@MESSAGE D'ERREUR. JMP E40 < VERS L'ENVOI DU MESSAGE D'ERREUR. < < < E R R E U R : C H A R G E M E N T I T E M : < < E32: EQU $ LAD MERI < A=@MESSAGE D'ERREUR. < < ENVOI D'UN MESSAGE D'ERREUR : < E40: EQU $ < ON A ICI : < C=@DE RETOUR SI UN !GO EST EMIS SOUS CCI. PSR C < EMPILEMENT DE L'@DE RETOUR. BSR APRINT < ENVOI DU MESSAGE D'ERREUR (A). LAD CCI SVC 0 < RETOUR AU CCI ,CAR UNE < ASSIGNATION AU CCI EST ABSENTE. RSR < SI !GO , ON FAIT FAIT UN < RETOUR SUR L'APPEL AU SGN < QUI AVAIT ECHOUE. < < R E T O U R D E F I N I T I F A C C I : < E41: EQU $ LAD CCI SVC 0 < RETOUR A CCI. JMP E41 < RE-RETOUR A CCI SI !GO ... < < < E R E U R : T Y P E I N E X I S T A N T : < < ERREUR: EQU E41 < RETOUR DEFINITIF AU CCI. PAGE < < < D E M A N D E D E R E T O U R A C C I : < < < BLOC DE SAUVEGARDE : < LORS DE LA RENCONTRE D'UN ITEM 'C' , < AVNT DE FAIRE LE RETOUR AU CCI , ON < CREE PAR L'INTERMEDIAIRE DU SGN , < UN BLOC DE SAUVEGARDE PERMETTANT , < ULTERIEUREMENT DE REPARTIR CORRECTEMENT < DANS LE GRAPHE. < <BLOC 'SAVE'>=<NOM><VALEUR> , < <NOM>='SAV:'<'60+SYSID><EOT>. < <VALEUR>=<CLEF DE VALIDATION><NOEUD COURANT><HEURE> < <CLEF DE VALIDATION>=<SYSID><"S"+'20>. < < GOCCI: EQU $ LAD MRCCI BSR APRINT < ENVOI D'UN MESSAGE ANNONCANT < LE RETOUR PROVISOIRE AU CCI. < < GENERATION DU BLOC DE SAUVEGARDE : < WORD '1E85 < RENVOI : A=HEURE EXPRIMEE EN < MULTIPLES DE 2 SECONDES. STA HEURNC < MISE DANS LE LE BLOC 'SAVE'. WORD '1E45 < RENVOI : A=SYSID(UTILISATEUR). STBY CLENC < GENERATION D'UNE CLEF DE < VALIDATION DU BLOC 'SAVE'. ORI '60 < CONVERSION DU SYSID EN UN CARAC- < TERE MINUSCULE ASCI. STBY IDNC < QUE L'ON MET DANS LE <NOM> DU < BLOC 'SAVE'. LAD SAVNC LR A,B < B=@RECEPTEUR (BLOC 'SAVE'). LAD NCEI-LTN,W < A=@EMETTEUR=@DE LA ZONE DE < TRANSMISSION DES ARGUMENTS. LXI 3 < 2*3 OCTETS A DEPLACER. MOVE < SAUVEGARDE DU NOEUD COURANT. < < ENVOI DU BLOC 'SAVE' AU SGN : < E204: EQU $ LAI 4 < A=NVP DE 'STORE VALUE'. BSR ASAV < ENVOI AU SGN. JE E203 < OK , ON PEUT RETOURNER AU CCI. < < RETOUR EN ERREUR : ON PEUT ADMETTRE < QUE <NOM> EXISTE DEJA , ET QUE CE < PHENOMENE EST DU A UN RETOUR PRECEDENT < AU CCI , SANS LE RETOUR AU GRAPHE ; UN < BLOC 'SAVE' A DONC ETE CREE , ET N'A PAS < ETE UTILISE ; ON VA DONC LE DELETER : < LAI 3 < NVP='DELETE VALUE'. BSR ASAV < ENVOI DE LA DEMANDE AU SGN. JE E204 < DELETE OK , NOUVELLE TENTATIVE < DE 'STORE' DU BLOC 'SAVE'. BR AERR < SINON , ERREUR IRRECUPERABLE. < < RETOUR PROVISOIRE AU CCI : < E203: EQU $ LAD CCI SVC 0 < VERS LE CCI. JMP ERASE < VERS UN EFFACEMENT EVENTUEL DE < L'ECRAN APRES LE RETOUR (!GO). PAGE < < < I T E M S V I D E S : < < < FONCTION : < PASSER A L'ITEM SUIVANT PAR < L'INTERMEDIAIRE DU FILS0 DU < NOEUD COURANT. < < VIDE: EQU PEI < < < D E M A N D E D E R E T O U R A ! G E : < < GOGE: EQU $ < < TEST D'EFFACEMENT DE L'ECRAN : < LXI SERASE CPZ &AKI1 < UN EFFACEMENT EST-IL DEMANDE ??? JNE E500 < NON , RETOUR DIRECT A GE. LAD DEMERA SVC 0 < OUI , EFFACEMENT DE L'ECRAN. E500: EQU $ < ON A ICI : < W=@NOEUD2. LR W,B < RESTAURE B=@NOEUD2 DANS LE < CAS DES RETOURS EN ERREUR. STZ MODCAL-LTN,W < MISE EN PLACE DE L'INDICATEUR < 'GE' ; EN EFFET , 'GE' NE PEUT < LE FAIRE LUI-MEME , CAR IL N'Y < A PLUS DE PLACE DANS SON CODE , < POUR INSERER CE RAZ !?!?! LA NGE < A=NOM DU PROCESSEUR 'GE'. JMP E34 < VERS LE CHARGEMENT DE 'GE'. < < < I T E M T Y P E - P R O G : < < PROG: EQU $ PSR B < SAVE @NOEUD2. < < DEPLACEMENT DE L'ITEM1 VERS L'ITEM2 : < LA AI1 < A=EMETTEUR=@ITEM1. LB AI2 < B=RECEPTEUR=@ITEM2. LX ALTNI < X=NBRE DE MOTS TOTAL D'UN ITEM. MOVE < DEPLACEMENT ITEM1 VERS ITEM2 , < AVEC ECRASEMENT ITEM2 !!!!!!!!!! < < PREPARATION DU CHARGEMENT : < PLR B < RESTAURE @NOEUD2. LA NEX < A=NOM DU RUNNER GRAPHIQUE. JMP E34 < VERS LE CHARGEMENT. < < < R E P O N S E E N F R A N C A I S : < < < FORMAT : < L'ITEM1 CONTIENT LA VALEUR SEMANTIQUE < DE LA REPONSE ATTENDUE. < < REPON: EQU $ LA NPH < ACCES AU NOM DE LA 1ERE < BRANCHE D'ANALYSE DU FRANCAIS. JMP E34 < VERS LE CHARGEMENT DE 'PH'. < < < I T E M T Y P E - D E S S I N : < < < NOTA : < L'OCTET1 DE IINDIC DONNE LA < 2EME LETTRE DU NOM DU PROCESSEUR < GRAPHIQUE A APPELER POUR CE DESSIN; < S'IL EST NUL, ON APPELLE IMPLI- < CITEMENT 'G3'. < < DESSIN: EQU $ LA NPROC < RESTAURE A=IINDIC... ANDI '00FF < A=OCTET1(IINDIC), JANE E1612 < OK, IL Y A DANS L'OCTET1 UN < NOM DE PROCESSEUR GRAPHIQUE. LA NGR < LORSQUE L'OCTET1='00, ON PREND < IMPLICITEMENT 'G3'. E1612: EQU $ STA NPROC LA NGR ANDI 'FF00 OR NPROC < A=NOM DU PROCESSEUR GRAPHIQUE < A APPELER POUR CE DESSIN. JMP E34 < VERS LE CHARGEMENT DE 'GR'. < < < I T E M D E T Y P E - T E X T E : < < TEXTE: EQU $ LA NED < A=NOM DU PROCESSEUR 'ED'. < < < C H A R G E M E N T D ' U N P R O C E S S E U R : < < E34: EQU $ ADRI -LTN,B < RETOUR SUR NOEUD1. ADRI -LTN,W < RETOUR SUR NOEUD1. < ON A ICI : < B=@NOEUD1 , < W=@NOEUD1 , < A=NOM DU PROCESSEUR A CHARGER , < MODCAL=1 (0 POUR L'APPEL DE 'GE') , < CDRET=0. STA 0,W < MISE DU NOM DU PROCESSEUR EN TETE < DU NOEUD1. LAI '20 SBT 2 < A='SPACE''SPACE'. STA 1,W STA 2,W < LE NOM DU PROCESSEUR EST < COMPLETE PAR 4 'SPACE' ; < L'EOT DE FIN DE NOM EST DEJA < POSITIONNE , PAR L'APPEL DU < NOEUD COURANT. LA LOVL < A=LONGUEUR EN OCTETS D'UNE < BRANCHE D'OVERLAY. STA DEMSGN+2 < MISE EN PLACE DU COMPTE < D'OCTETS DE DEMSGN. ADR B,B < B=@OCTET DE NOEUD1. STB DEMSGN+1 < MISE EN PLACE DE L'@OCTET < DU BUFFER DANS DEMSGN. LAI 6 STBY DEMSGN < DEMSGN EST REMISE EN MODE < 'LOAD SOUS :SYS' POUR LE < CHARGEMENT DES PROCESSEURS. < < CHARGEMENT DU PROCESSEUR : < E35: EQU $ LAD DEMSGN BSR AOVL < ENVOI DE LA DEMANDE D'OVERLAY. < < RETOUR EN ERREUR ASSEZ BIZARRE , < DONNONS LA MAIN AU CCI : < LAD CCI SVC 0 < RETOUR AU CCI. JMP E35 < TRY AGAIN SI !GO. PAGE < < < Q U E S T I O N S A C H O I X M U L T I P L E S : < < < FONCTION : < LE TYPE D'ITEM 'M' EST UTILISE < POUR LES QUESTIONS A CHOIX MULTIPLE. < UN TEXTE PREALABLEMENT EDITE PAR 'ED' < A POSE UNE QUESTION ET PROPOSE UNE < SERIE DE REPONSES NUMEROTEES ; CE < MODULE LIT LA REPONSE EMISE PAR < L'UTILISATEUR. < < < NOTA CONFIDENTIEL : < CTRL-F PERMET UN RETOUR A 'GE' LORS D'UN QCM .... < < QCM: EQU $ LAD MQCM BSR APRINT < ENVOI DU MESSAGE 'REPONSE>'. LAD DEBLOC SVC 0 < LECTURE D'1 CARACTERE DE < REPONSE. < < ANALYSE DE LA REPONSE : < LBY BUFFER < A=CARACTERE EMIS. CPI '06 < EST-CE UN CTRL-F ??? JE GOGE < OUI , RETOUR A 'GE' .... ADRI -'30,A < TRANSLATION EN BINAIRE. JAL QCM < CARACTERE INFERIEUR A '0' , < ON REFAIT L'INTERROGATION. CPI 7 JG QCM < CARACTERE SUPERIEUR A '7' , ON < REFAIT L'INTERROGATION. LR A,X < X=REPONSE EMISE DE 0 A 7. < < VALIDATION DE LA REPONSE : < USE W,NOEUD LA FAMILY TBT 8,X < LE FILS (X) DU NOEUD COURANT < EXISTE-T'IL ??? JNC QCM < NON , LA REPONSE EST INVALIDE , < ON REFAIT DONC L'INTERROGATION. < < CAS D'UNE REPONSE VALIDE : < STX CDRET-LTN,W < LA REPONSE EST MISE EN < CDRET (CONDITION DE RETOUR). BR AERASE < VERS LE TEST D'EFFACEMENT DE L' < ECRAN , ET L'ACCES A L'ITEM < SUIVANT. PAGE < < < S E Q U E N C E S V I D E O : < < < FONCTION : < L'ITEM 'S' PERMET DE VISIONNER < UNE SEQUENCE VIDEO DONT LE NOM < EST CELUI DE L'ITEM . CE VISIONNAGE < N'EST POSSIBLE QUE SOUS LE NUMERO DE < COMPTE :EAO . DE PLUS L'ACCES A LA < TABLE D'OCCUPATION DES MAGNETOSCOPES < EST UNE PHASE CRITIQUE INTER- < UTILISATEURS. < LE NOM D'UNE SEQUENCE VIDEO EST EN < FAIT LE NOM DE LA BANDE SUIVI D'UN $ , < ET D'UN NOM DE SEQUENCE : < <NOM-GLOBAL-SEQUENCE>::=<NOM-BANDE>$<NOM-LOCAL- < SEQUENCE>. < LE NUMERO DU TELEVISEUR ASSOCIE < A LA VISU 'NSPOUT' EST NSPOUT-NSPVI1. < < VIDEO: EQU $ LA NVI < A=NOM DU PROCESSEUR A CHARGER. JMP E34 < VERS L'APPEL DU PROCESSEUR VIDEO. < < < I T E M T Y P E F I L M - D I G I T A L : < < FILMD: EQU $ LA NPROC < RESTAURE A=IINDIC... ANDI '00FF < A=OCTET1(IINDIC), JANE E1612X < OK, IL Y A DANS L'OCTET1 UN < NOM DE PROCESSEUR 'SC'/'SD'. LA NSC < LORSQUE L'OCTET1='00, ON PREND < IMPLICITEMENT 'SC'. E1612X: EQU $ STA NPROC LA NSC ANDI 'FF00 OR NPROC < A=NOM DU PROCESSEUR 'SC'/'SD' < A APPELER POUR CE FILM. JMP E34 < VERS LE CHARGEMENT DE 'SC'. 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 : < < X4: VAL ITEM2-$ ZEROV: EQU ZERO+X4 < ERREUR D'ASSEMBLAGE SI X4<0 , < SOIT SI LE PROCESSEUR RECOUVRE < L'ITEM2. DZS X4+1 EOT #SIP GEN PROCESSEUR#