NMPROC: VAL "KA" < NOM DU PROCESSEUR. IDP "KA - RELEASE 01/06/1979" IDP "JOHN F. COLONNA" EOT #SIP DEF PROCESSEUR# PROG WORD CARTE < ADRESSE DE DEPART DU PROCESSEUR. WORD 0 < POUR FAIRE $=$+1. PCARTE: EQU $ < P DE LANCEMENT DE 'CARTE A ITEM' < LORS D'UN APPEL PAR !GE. < (A NOTER : P='12). LRP L BR -2,L < ENTREE DANS LE PROCESSEUR. PAGE EOT #SIP DEFINITION ITEM# LNOM: VAL '26 < NBRE MAX DE CARACTERES D'UN < NOM D'ITEM. PAGE < < < L O C A L : < < LOCAL LOCCA LOC: EQU $ < < B U F F E R S : < BUFFER: WORD 0 < BUFFER D'ENTREE COMMANDES. BCARTE: DZS 40 < BUFFER DE LECTURE DES CARTES. MRET: BYTE 1;'6D M2: BYTE 2;'6D ASCI "> " MNOM: BYTE 5;'6D ASCI "NOM>" M1: BYTE 9;'6D ASCI "ERR-ITEM" M3: BYTE 1;"?" M4: BYTE 9;'6D ASCI "ERR-ASGN" M7: BYTE 0;'0D < A T T E N T I O N : FAIT < PARTIE DU MESSAGE M5. M5: BYTE '40;'0D;'0A;0 < POUR FAIRE UN SAUT DE PAGE. M6: BYTE " ";'0D < POUR LIBERATION DU DERNIER LF. < < C O N S T A N T E S : < RI: WORD 0 < RI=0 : COMMANDE 'R' , < RI=-1 : COMMANDE 'I'. NCP: WORD NBCAR*NBLIG < NBRE DE CARACTERES MAX < DANS L'ITEM. FINP: ASCI "*/" < INDICATEUR DE FIN D'ITEM. IPLUS: ASCI "*+" < POUR TESTER LES DEMANDES DE < CREATION D'ITEM (VIA 'GI'). NOM: EQU $ < ZONE DESTINEE A RECEVOIR LE < NOM D'UN ITEM LORS DE 'S'. DO NBCAR-2/2 ASCI " " ILOAD: ASCI "IL" < POUR GENERER UN 'IL' AUTOMATIQUE < DE L'ITEM LORS DE LA COMMANDE 'S' PVKA: ASCI " AK;" NGE: ASCI "GE" < NOM DE LA BRANCHE DE < L'OVERLAY !GE. NGI: ASCI "GI" < NOM DE LA BRANCHE 'GI'. ISGE: ASCI "ISGE" < COMMANDES A DESTINATION DE < 'GI' POUR FAIRE 'IS'+'GE'. < < R E L A I D E S T A B L E S : < APILE: WORD PILE-1 < POUR INITIALISER LE REGISTRE K. AIC: WORD ZERO+PILE-LTNI+LTN,X < RELAI VERS L'ITEM COURANT. < (ITEM1). SAIC: WORD ZERO+PILE-LTNI+LTN,X < POUR REINITIALISER 'AIC' A < CHAQUE RETOUR DU CCI (A < CAUSE DE LA COMMANDE 'S'). XAI2: WORD ZERO+PILE-LTNI-LTNI+LTN,X AI2: WORD ZERO+PILE-LTNI-LTNI+LTN < ADRESSE DE L'ITEM2. ATCOD: WORD TCOD,X < RELAI VERS LA TABLE DE CODAGE < DES CODES ASCI EN CODES CARTE. ANOM: WORD NOM,X < RELAI VERS LE NOM DE L'ITEM. APVKA: WORD PVKA,X DEBLIG: WORD 0 < RELAI DE DEBUT DE LIGNE. ACARTE: WORD LCARTE < LISTE DES CARTES A PUNCHER 'S'. LCARTE: EQU $ WORD CARTKA,X < CARTE 'KA '. ACARTR: WORD CARTR,X < CARTE 'R '. AIPLUS: WORD IPLUS,X < CARTE '*+<NOM>;'. ACARTI: WORD CARTI,X < CARTE 'I '. WORD 0 < FIN DE LISTE. < < R E L A I S D E S R O U T I N E S : < ASVC: WORD RSVC < ROUTINE D'EXECUTION DES SVC. ASVCI: WORD RSVCI < EXECUTION DES SVC DANS LE < CAS OU LA COMMANDE N'EST PAS 'I'. AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. AMESS: WORD MESS < EMISSION D'UN MESSAGE. ACHKI: WORD CHKI < VALIDATION DU TYPE-ITEM. AE23: WORD E23 < RETOUR DES FONCTIONS. AGOGE: WORD GOGE < ADRESSE DE RETOUR A 'GE'/'GI'. < < D E M A N D E S A C M S 4 : < DEMIN: WORD '0101 < LECTURE AVEC ECHO SUR LA VISU. WORD BUFFER-ZERO*2 < @OCTET DU BUFFER. WORD 1 < LECTURE 1 CARACTERE. DEMNOM: WORD '0101 < LECTURE AVEC ECHO DU NOM < DE L'ITEM DANS 'S'. WORD NOM-ZERO*2 WORD LNOM-1 < ON LIT 1 CARACTERE DE MOINS QUE < LE MAX POUR S'EVITER DES < PROBLEMES DELICATS.... DEMOUT: WORD '0202 < ECRITURE SUR LA VISU. WORD 0 < @OCTET DU MESSAGE. WORD 0 < LONGUEUR OCTETS DU MESSAGE. DERASE: WORD '0205 < EFFACEMENT DE L'ECRAN. DEMCA: WORD '0A00 < DEMANDE DE LECTURE SUR NVP=10. WORD BCARTE-ZERO*2 < @OCTET DU BUFFER CARTE. WORD 80 < ON EST OBLIGE DE LIRE UNE CARTE < ENTIERE (80 CARACTERES). DEMPCH: WORD '0B02 < DEMANDE D'ECRITURE SUR NVP=11. < (CAS CU1 ET PERFO). WORD BUFFER-ZERO*2 < @OCTET DU BUFFER. WORD 2 < ON ENVOIE UN MOT. DEMPRN: WORD '0B02 < DEMANDE D'ECRITURE < SUR NVP=11 (CAS LP1). WORD 0 < @OCTET DU BUFFER. WORD 0 < COMPTE OCTETS. DEMSGN: WORD '0402 < DEMANDE AU SGN , INITIALISE EN < STORE , AFIN DE GENERER LORS < DE !LOAD LA BRANCHE 'CA '. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 < LA VALEUR SUIT LE NOM. DEMCCI: WORD '0001 < RETOUR AU CCI. SLEEP: WORD '0005 < DEMANDE DE MISE EN SOMMEIL. WORD 0 WORD 4 < 4 SECONDES DE TEMPORISATION. PAGE TCOD: EQU $-'20+1 EOT #SIP CODAGE PUNCH# PAGE < < < C A R T E S A P U N C H E R S O U S ' S ' : < < CARTKA: EQU $ ASCI "KA" DO NBCAR-2/2 ASCI " " CARTR: EQU $ ASCI "R " DO NBCAR-2/2 ASCI " " CARTI: EQU $ ASCI "I " DO NBCAR-2/2 ASCI " " PAGE < < < E X E C U T I O N D E S S V C : < < < ARGUMENT : < A=@DEMANDE A CMS4. < < < RESULTAT : < A=CONDITIONS DE RETOUR DE CMS4 , < INDICATEURS POSITIONNES EN FONCTION DE CTRL-X-OFF. < < PROG < < < E X E C U T I O N C O N D I T I O N N E L L E D E S S V C < < < FONCTION : < CETTE ROUTINE N'EXECUTE LE SVC QUE < SI LA COMMANDE COURANTE N'EST PAS 'I'. < < RSVCI: EQU $ CPZ RI < DISCRIMINATION DE 'I' ... JNE E600 < C'EST 'I' : SVC IGNORE ... < NOTA : RI=-1<0 , DONC UN < TEST EN RETOUR SUR LES CONDITIONS < SERA TOUJOURS NEGATIF , PUISQU' < ON FAIT DES JGE (TEST DE (A) < PAR RAPPORT A '13). < < < E X E C U T O N I N C O N D I T I O N N E L L E : < < RSVC: EQU $ PSR X < SAVE X. SVC 0 < ENVOI DE LA DEMANDE (A) A CMS4. LR X,A < A=CONDITIONS DE RETOUR DE CMS4. PLR X < RESTAURE X. CPI '13 < POSITIONNEMENT DES INDICATEURS < EN FONCTION D'UN EVENTUEL < CTRL-X-OFF DANS LE CAS DES VISUS. E600: EQU $ RSR PAGE < < < E N V O I M E S S A G E : < < < FONCTION : < CETTE ROUTINE PREPARE DEMOUT , < ET ENSUITE ENVOIE LE MESSAGE < DONNE EN ARGUMENT ; ELLE IGNORE < LES CTRL-X-OFF. < < < ARGUMENT : < A=@MESSAGE (LE 1ER OCTET D'UN MESSAGE < EN DONNE LA LONGUEUR). < < MESS: EQU $ LR A,C < C=@MESSAGE. ADR A,A ADRI 1,A < A=@OCTET DE MESSAGE A ENVOYER. STA DEMOUT+1 < MISE EN PLACE DE L'@OCTET < DU BUFFER DANS DEMOUT. LBY 0,C < A=LONGUEUR DU MESSAGE. STA DEMOUT+2 < MISE EN PLACE DU COMPTE OCTETS < DE DEMOUT. LAD DEMOUT BSR ASVC < ENVOI DU MESSAGE. RSR PAGE < < < V A L I D A T I O N T Y P E I T E M : < < < RESULTAT : < LES INDICATEURS SONT POSITIONNES EN < FONCTION DE LA RENCONTRE DU < TYPE 'D'/'I'/'T'. < < < DETRUIT A,X. < < CHKI: EQU $ LXI IINDIC-LTN*2 LBY &AIC < A=TYPE DE L'ITEM COURANT. CPI "I" < EST-CE UN FILM DIGITAL ??? JE CHKI1 < OUI , OK. ORI '10 < ON RAJOUTE LE BIT11 QUI < DIFFERENCIE 'D' DE 'T'. CPI "T" < L'ITEM COURANT A-T'IL LE TYPE < 'TEXTE' ??? CHKI1: EQU $ RSR PAGE < < < L I S T A G E I T E M C O U R A N T : < < < FONCTION : < CE MODULE PERMET DE LISTER SUR < LP1 LE CONTENU DE L'ITEM COURANT. < < LIST: EQU $ < < VALIDATION DE L'ITEM COURANT : < BSR ACHKI < VALIDATION TYPE ITEM ('T'/'D'). JNE E24 < NON , ERREUR : RETOUR A !GE. < < PREPARATION DU LISTAGE : < LAI M7-ZERO*2+1 STA DEMPRN+1 < MISE EN PLACE DE L'@OCTET DU < MESSAGE DE SAUT DE PAGE. LAI 4 STA DEMPRN+2 < 3 OCTETS POUR FAIRE LE SAUT. < (+1 POUR FERMER LA LIGNE < PRECEDENTE EVENTUELLE PAR R/C) LAD DEMPRN BSR ASVC < ENVOI DU SAUT DE PAGE. JANE E22 < ERREUR : RETOUR A CCI. < UTILISATION DES REGISTRES : < X=NBRE DE LIGNES ENCORE A IMPRIMER , < B=@OCTET DE LA LIGNE COURANTE , < Y=2 (POUR ENVOYER RC+LF). LXI NBLIG < X=NBRE DE LIGNES A IMPRIMER. LA AIC SLLS 1 < A=@OCTET DE LA 1ERE LIGNE. LR A,B < B=@OCTET DES LIGNES DE L'ITEM. LYI 2 < Y=2 (POUR RC+LF). < < IMPRESSION D'UNE LIGNE : < E70: EQU $ LAI NBCAR STA DEMPRN+2 < MISE EN PLACE DU NBRE DE CARAC- < TERES CONTENUS DANS UNE LIGNE. STB DEMPRN+1 < MISE EN PLACE DE L'@OCTET DE < LA LIGNE COURANTE. LAD DEMPRN BSR ASVC < IMPRESSION DE LA LIGNE. JANE E22 < ERREUR : RETOUR A CCI. LAI M5-ZERO*2+1 STA DEMPRN+1 < MISE EN PLACE DE L'@OCTET < DU MESSAGE RC+LF. STY DEMPRN+2 < POUR ENVOI DE 2 CARACTERES. LAD DEMPRN BSR ASVC < ENVOI DE RC+LF. JANE E22 < ERREUR : RETOUR A CCI. < < PASSAGE A LA LIGNE SUIVANTE : < ADRI NBCAR,B < PROGRESSION DE L'@OCTET DE < LA LIGNE COURANTE. JDX E70 < SUIVANTE .... LAI M6-ZERO*2 STA DEMPRN+1 < MESSAGE DE LIBERATION DE LP1 < PUISQU'ON A TERMINE PAR UN < LF SEUL. LAD DEMPRN BSR ASVC < FERMETURE DE LP1. JANE E22 < ERREUR : RETOUR A CCI. BR AE23 < VERS LE RETOUR DES FONCTIONS. PAGE < < < P R O C E S S E U R D E S E R V I C E S I T E M : < < < FONCTION : < CE PROCESSEUR PERMET UN CERTAIN < NOMBRE DE FONCTIONS DE SERVICE SUR < LES ITEMS : < CARTE A ITEM (SOUS :SYS) : NVP=10 , < ITEM A CARTE : NVP=11 , < LISTE ITEM (SOUS :SYS) : NVP=11. < < < NOTA IMPORATNT : < IL S'AGIT D'ITEM DE TYPE 'TEXTE' .... < < < LISTE DES COMMANDES : < P PUNCH ITEM COURANT SUR NVP=11 , < S PUNCH UNE CARTE DU TYPE *+<NOM>; < PUIS FAIT UN 'IL'<NOM> AUTOMATIQUE < A L'AIDE DE 'GI'. < R READ ITEM COURANT SUR NVP=10 , < I IDEM A 'R' AVEC DE PLUS UN 'IS' < AUTOMATIQUE ET RETOUR A 'GE' , < L LISTE ITEM COURANT SUR NVP=11 , < W RETOUR A CCI , < F RETOUR A !GE. < < < FIN D'ITEM : < POUR LA PERFORATION , ET L'ENTREE < CARTES , ON PEUT INDIQUER LA FIN < DE L'ITEM COURANT PAR LES CARACTERES < '*/' EN DEBUT DE LA DERNIERE LIGNE .... < < < CREATION D'ITEM : < ON A LA POSSIBLITE DE CREER DES < NOMS D'ITEM , EN METTANT COMME 1ERE < CARTE , LA CARTE SUIVANTE : < *+...<INDIFFERENT>...; < LA CREATION DE L'ITEM DONT LE NOM < SUIT '*+' , SE FAIT EN TRANSLATANT < CETTE CARTE DANS L'ITEM2 , ET EN < APPELANT 'GI' , QUI LORSQU'IL AURA < TERMINE SON TRAVAIL FERA UN RETOUR < A 'KA' SI LE ';' ETAIT SUIVI DE 2 < 'SPACE' ; SINON RETOUR A ???? (SUIVANT < CE QUI SUIVAIT ';'...). < < < < < I N I T I A L I S A T I O N D U P R O C E S S E U R : < < < FONCTION : < CETTE ENTREE EST UTILSEE SUITE < A UN APPEL PAR !GE. < < WORD LOC+'80 < INITIALISATION DE LA BASE L. WORD BRANCH < INITIALISATION DE LA BASE W. CARTE: EQU $ LRP K ADRI -1,K PLR L,W < INITIALISATION DE L,W. LB APILE LR B,K < INITIALISATION DE K. < < I N I T I A L I S A T I O N D E ' C A ' : < < < RAZ DE L'EN-TETE DE L'ITEM2 : < (AINSI , IL N'Y A PLUS D'ITEM2 COURANT !!!) < LXI -LTN RZ2: EQU $ STZ &XAI2 < RAZ DE L'EN-TETE DE L'ITEM2. JIX RZ2 < < INITIALISATION DE 'KA' : < LAI 6 STBY DEMSGN < LA DEMANDE AU SGN EST MISE EN < MODE 'LOAD SOUS :SYS'. LA NGE STA 0,W < LE NOM DE LA BRANCHE D'OVERLAY < A APPELER EST 'GE '. < < I N T E R R O G A T I O N U T I L I S A T E U R : < E40: EQU $ LAD M2 BSR AMESS < ENVOI D'UN MESSAGE D'INVITATION. LAD DEMIN BSR ASVC < LECTURE DE LA REPONSE DE < L'UTILISATEUR SUR 1 CARACTERES. < < ANALYSE DES DESIRS (C'EST FREUDIEN...) : < LBY BUFFER < A=COMMANDE UTILISATEUR. CPI "P" JE PUNCH < DEMANDE DE PUNCH L'ITEM COURANT. CPI "S" JE SAVE < DEMANDE DE CREATION D'UNE < CARTE *+<NOM>;. CPI "L" JE LIST < DEMANDE DE LISTE ITEM COURANT. CPI "F" JE GOGE < DEMANDE RETOUR A !GE. CPI "W" JE GOCCI < DEMANDE DE RETOUR A CCI. STZ RI < RI=0 : COMMANDE 'R' A PRIORI. LXI 0 < INDEX D'ACCES AU 1ER CARACTERE. < (DE CARTR ET DE CARTI). CPBY &ACARTR JE READ < DEMANDE DE LECTURE DE L'ITEM < COURANT SUR CR1. < (NVP=10). CPBY &ACARTI JE ITEM < DEMANDE DE READ AVEC 'IS' < AUTOMATIQUE ET RETOUR A 'GE'. < < CAS DES COMMANDES NON RECONNUES. < E41: EQU $ LAD M3 BSR AMESS < ENVOI D'UN MESSAGE D'ERREUR. JMP E40 < VERS L'INTERROGATION. < < R E T O U R D E S E X E C U T I O N S : < E21: EQU $ E23: EQU $ LAD DERASE BSR ASVC < EFFACEMENT DE L'ECRAN. JMP E40 < VERS L'INTERROGATION UTILISATEUR. < < R E T O U R A ! G E : < GOGE: EQU $ LAD DEMSGN BSR AOVL < DEMANDE DE CHARGEMENT DE LA < BRANCHE D'OVERLAY 'GE ' AU SGN < < RETOUR EN ERREUR : SI ON ARRIVE ICI < C'EST QUE LE CHARGEMENT DE !GE N'A < PU SE FAIRE , ON VA DONC RENDRE < LA MAIN AU CCI : < < R E T O U R A U C C I : < GOCCI: EQU $ LAD DEMCCI BSR ASVC < RETOUR AU CCI. LA SAIC < RESTAURATION DE AIC A PRIORI AU STA AIC < RETOUR DU CCI PAR !GO , A CAUSE < DE LA COMMANDE 'S'. JMP E40 < VERS L'INTERROGATION DE < L'UTILISATEUR DANS LE CAS < D'UN !GO. < < E R R E U R S D ' A S S I G N A T I O N : < E22: EQU $ LAD M4 BSR AMESS < ENVOI D'UN MESSAGE D'ERREUR. JMP GOCCI < PUIS VERS UN RETOUR AU CCI , < AVEC PEUT-ETRE UN RETOUR PAR < !GO LORSQUE LES !ASSIGN AURONT < ETE FAITS. < < I T E M E N E R R E U R : < E20: EQU $ E24: EQU $ LAD M1 BSR AMESS < ENVOI D'UN MESSAGE D'ERREUR. JMP GOGE < VERS UN RETOUR A !GE. PAGE < < < P U N C H < N O M > D ' I T E M : < < < FONCTION : < CE MODULE PUNCHE UNE CARTE < *+<NOM>; , PUIS FAIT UN 'IL' < DU <NOM> AUTOMATIQUE A L'AIDE DE 'GI'. < < SAVE: EQU $ LAD MNOM BSR AMESS < ENVOI D'UN MESSAGE DEMANDANT < LE <NOM> DE L'ITEM. LAD DEMNOM BSR ASVC < ENTREE DU <NOM> DE L'ITEM. LAD MRET BSR AMESS < RETOUR A LA LIGNE DU CURSEUR. < < RECHERCHE DU DERNIER CARACTERE DE <NOM> : < LXI 0 < INDEX DU <NOM>. E500: EQU $ LBY &ANOM < ACCES A UN CARACTERE DU <NOM>. CPI '04 < EST-CE 'EOT' ??? JE E501 < OUI , ON A TROUVE LA FIN DE <NOM> CPI '0D < EST-CE R/C ??? JE E501 < OUI , ON A TROUVE LA FIN DE <NOM> ADRI 1,X < NON , PASSAGE CARACTERE SUIVANT. LR X,A < VALIDATION DE L'INDEX DE <NOM>. CPI LNOM-1 < EST-ON EN PRESENCE D'UN <NOM> < DE LONGUEUR MAX -1 (-1 POUR SE < SIMPLIFIER LA VIE...). JL E500 < NON , ON PEUT POURSUIVRE. < < MISE EN PLACE DE L'INDICATEUR DE FIN DE <NOM> : < E501: EQU $ LR X,Y < Y=INDEX+1 DU DERNIER CARACTERE < DE <NOM>. LXI 3 < 3 CARACTERES A RAJOUTER < DERRIERE <NOM>. E502: EQU $ LBY &APVKA < PARCOURS DE PVKA A REBROUSSE POIL XR X,Y < X=INDEX DE <NOM>. STBY &ANOM < MISE EN PLACE DE ';KA' DERRIERE < LE <NOM>. ADRI 1,X < PROGRESSION DE L'INDEX DE <NOM>. XR X,Y < X=INDEX DE PVKA. JDX E502 < AU SUIVANT ... LAD LCARTE STA ACARTE < ON N'EST JAMAIS ASSEZ PRUDENT !!! < < PREPARATION DU PUNCH DE CHACUNE DES 4 CARTES : < E801: EQU $ LA &ACARTE < RECUPERATION DE L'ADRESSE DE < LA CARTE A PUNCHER. JAE E800 < ON A FINI DE PUNCHER ... STA AIC < AINSI LE MODULE DE PUNCH < CROIRA QUE LA ZONE 'IPLUS' < EST L'ITEM COURANT (!!!!). LBI 0 < B=0 AFIN DE DISTINGUER 'PUNCH' < DE 'SAVE' ; EN FAIT , IL < N'Y A QU'UNE CARTE A PUNCHER. JMP E503 < VERS LE PUNCH.... PAGE < < < P U N C H I T E M C O U R A N T : < < < FONCTION : < CE MODULE PUNCHE L'ITEM COURANT < A RAISON D'UNE CARTE PAR LIGNE < DE VISU . LES 6 CARACTERES DE FIN DE < CARTE SONT MIS A 'SPACE' . ON PEUT < ARRETER LE PUNCH PAR UN CTRL-X-OFF , < CAR SIMULTANEMENT L'ITEM EST < VISUALISE. < < PUNCH: EQU $ < < VALIDATION DE L'ITEM : < BSR ACHKI < VALIDATION TYPE ITEM ('T'/'D'). JNE E24 < NON , ERREUR : RETOUR A !GE. < < PREPARATION DU PUNCH : < LAD DERASE BSR ASVC < EFFACEMENT DE L'ECRAN EN VUE < DE LA VISUALISATION DE L'ITEM. LBI NBLIG < B=NBRE DE CARTES A PUNCHER. E503: EQU $ < ENTRY 'SAVE' (AVEC B=0). LXI 0 < INDEX COURANT DE L'ITEM. LA AIC SLLS 1 < A=@OCTET DE L'ITEM. STA DEMOUT+1 < INITIALISATION DE L'@OCTET < DU BUFFER DE DEMOUT SUR LE < 1ER OCTET DE L'ITEM COURANT. LAI 1 STA DEMOUT+2 < LA LIGNE EST VISUALISEE < CARACTERE PAR CARACTERE ... < < ENVOI D'UNE LIGNE : < E10: EQU $ LA DEMOUT+1 < @OCTET DU DEBUT DE LIGNE. SLRS 1 < A=@MOT DU DEBUT DE LIGNE. STA DEBLIG < RELAI VERS LE DEBUT DE LA LIGNE. LYI NBCAR < Y=NBRE DE CARACTERES PAR LIGNE. < < ENVOI D'UN CARACTERE : < E11: EQU $ LBY &AIC < A=CARACTERE COURANT (X). ANDI '7F < LORS DU PUNCH ON IGNORE LES < MISES EN PAGE EVENTUELLES < DU TYPE UP/LINE (CF. EDIT2). CPI '20 < EST-CE UN CARACTERE ??? JL E20 < NON , ERREUR : L'ITEM N'EST PAS < UN TEXTE , OU BIEN EST COMPACTE. CPI '5F < EST-CE UN CODE MINUSCULE ??? JLE E12 < NON , OK. LAI "?" < DANS LE CAS OU LE CODE N'EST PAS < RECONNU , ON LE REMPLACE PAR '?'. E12: EQU $ PSR X < SAVE L'INDEX COURANT DE L'ITEM. LR A,X < X=CARACTERE A CODER. LA &ATCOD < A=VALEUR EN CODE CARTE DU < CODE ASCI (X). STA BUFFER < LE CODE CARTE EST MIS DANS < LE BUFFER DE PUNCH. PLR X < RESTAURE L'INDEX COURANT. LAD DEMPCH BSR ASVC < PUNCH 1 CARACTERE. JANE E22 < ERREUR D'ASSIGNATION , VERS < UN RETOUR AU CCI. < < VISUALISATION DU CARACTERE PUNCHE : < LAD DEMOUT BSR ASVC < VISUALISATION DU CARACTERE(X). JGE E21 < ABORT DU PUNCH LORSQU'UN < CTRL-X-OFF EST FRAPPE. < < PASSAGE AU CARACTERE SUIVANT : < IC DEMOUT+1 < PROGRESSION DE L'@OCTET < DU BUFFER DE VISUALISATION. ADRI 1,X < INDEX DU CARACTERE SUIVANT. ADRI -1,Y < DECOMPTE DES CARACTERES < SUR UNE LIGNE. CPZR Y JNE E11 < LA LIGNE COURANTE N'A PAS ENCORE < ETE PUNCHEE EN ENTIER. < < CAS OU UNE LIGNE ENTIERE A ETE ENVOYEE : < ON COMPLETE LA CARTE POUR FAIRE LES < 80 COLONNES ; LA COMPLETION SE < FAIT AVEC 6 CARACTERES 'SPACE' : < LYI 80-NBCAR < Y=NBRE DE 'SPACE' A ENVOYERR. STZ BUFFER < LE CODE CARTE DU 'SPACE' EST 0000 E13: EQU $ LAD DEMPCH BSR ASVC < PUNCH UN 'SPACE'. ADRI -1,Y < DECOMPTE DES 'SPACE' ENCORE < A PUNCHER. CPZR Y JNE E13 < IL RESTE ENCORE DES 'SPACE'. < < TEMPORISATION DE LA PERFORATION : < EN EFFET LE SYSTEME FONCTIONNANT < SANS INTERRUPTION , IL < FAUT FAIRE UNE TEMPORISATION < PROGRAMMEE : < LAD SLEEP BSR ASVC < L'UTILISATEUR EST MIS EN ATTENTE < POUR 4 SECONDES , TEMPS SUFFISANT < POUR UNE CARTE PLEINE. < < TEST DE L'INDICATEUR DE FIN : < LA &DEBLIG < RECUPERATION DES 2 PREMIERS < CARACTERES DE LA LIGNE. CP FINP < EST-CE L'INDICATEUR DE FIN ??? JE E100 < OUI , ON ARRETE ICI ..... < < PASSAGE A LA LIGNE SUIVANTE : < ADRI -1,B < DECOMPTE DES LIGNES RESTANT < A PUNCHER. CPZR B JG E10 < ALLONS PUNCHER LA CARTE SUIVANTE. JL E504 < DANS LE CAS OU B<0 , C'EST QU'ON < EST EN PRESENCE DE 'SAVE' ; < ALLONS DONC APPELER 'GI'. E100: EQU $ BR AE23 < VERS LE RETOUR DES FONCTIONS. < < F I N D E P U N C H 1 C A R T E S O U S ' S ' : < E504: EQU $ IC ACARTE < PASSAGE A LA CARTE SUIVANTE. JMP E801 < SI ELLE EXISTE. < < F I N D E ' S ' : < E800: EQU $ LAD IPLUS < A=EMETTEUR=@'*+<NOM>;KA'. LB AI2 < B=RECEPTEUR=@CORPS(ITEM2). LXI NBCAR/2 < X=NBRE DE MOTS A DEPLACER. MOVE < MISE EN PLACE DANS L'ITEM2 < D'1NE DEMANDE PORTANT SUR <NOM>. LA ILOAD STA &AI2 < LA DEMANDE ARGUMENT A 'GI' , < EST 'IL<NOM>;KA'. JMP E505 < VERS L'APPEL DE 'GI'. PAGE < < < C R E A T I O N D ' U N I T E M < A P A R T I R D ' U N D E C K D E C A R T E S : < < < FONCTION : < CE MODULE PERMET DE CREER UN ITEM < A PARTIR D'UN DECK DE CARTES. < POUR 'R' , LES CARTES SONT VISUALISEES < AU FUR ET A MESURE DE LEUR < LECTURE ; CE QUI PERMET D'ARRETER < CELLE-CI PAR UN CTRL-X-OFF ... < ON DISTINGUE 2 ENTREES : < 1- 'R' : READ : L'ITEM EST LU A < PARTIR DE NVP=10 ET C'EST TOUT (KA < GARDE LA MAIN) , < RI=0 < 2- 'I' : ITEM : L'ITEM EST LUU A PARTIR < DE NVP=10 , ET LE CONTROLE EST RENDU < IMMEDIATEMENT A 'GI' POUR FAIRE < UN 'IS' AUTOMATIQUE SUIVI D'UN RETOUR < A 'GE'. < RI=-1. < < ITEM: EQU $ DC RI < RI=-1 : COMMANDE 'I'. READ: EQU $ < < PREPARATION DE LA LECTURE : < LAD DERASE BSR ASVCI < EFFACEMENT DE L'ECRAN SI 'R'. LAI BCARTE-ZERO*2 STA DEMOUT+1 < @OCTET BUFFER DE VISUALISATION. LAI NBCAR < NBRE DE CARACTERES PAR LIGNE. STA DEMOUT+2 < MISE EN PLACE DU COMPTE OCTETS < DE VISUALISATION DES CARTES. LXI NBLIG < NBRE MAX DE CARTES A LIRE. LB AIC < B=@MOT DE LA LIGNE COURANTE. RBT 0+16 < RAZ DU BIT D'INDEX. < < LECTURE D'UNE CARTE : < E30: EQU $ LAD DEMCA BSR ASVC < LECTURE 1 CARTE. JANE E22 < ERREUR D'ASSIGNATION , VERS UN < RETOUR AU CCI. < < CREATION DE LA LIGNE COURANTE < A PARTIR DE LA CARTE LUE : < LAD BCARTE < A=@EMETTEUR=@BUFFER DE LECTURE < DES CARTES , < B=@RECEPTEUR=@LIGNE COURANTE. LR X,Y < SAVE X DANS Y. LXI NBCAR/2 < X=NBRE DE MOTS A DEPLACER. MOVE < CREATION DE LA LIGNE COURANTE. LR Y,X < RESTAURE X. < < VISUALISATION DE LA LIGNE COURANTE : < LAD DEMOUT BSR ASVCI < VISUALISATION CARTE LUE SI 'R'. JGE E105 < ARRET POUR CTRL-X-OFF : LA < DERNIERE CARTE LUE SERA REMISE < A 'SPACE'. < < PASSAGE A LA LIGNE SUIVANTE : < ADRI NBCAR/2,B < PROGRESSION DE L'@MOT DE LA < LIGNE COURANTE. < < TEST DE FIN D'ENTREE : < LA BCARTE < ACCES AUX 2 PREMIERS CARACTERES < DU BUFFER D'ENTREE. CP FINP < EST-CE L'INDICATEUR DE FIN ??? JE E101 < OUI , ON ARRETE LA .... CP IPLUS < EST-CE UNE DEMANDE CREATION ITEM??? JE E200 < PEUT-ETRE ... E201: EQU $ < RETOUR DES FAUSSES CREATION < D'ITEM. JDX E30 < PASSAGE A LA CARTE SUIVANTE. < < MISE A JOUR DE L'EN-TETE DE L'ITEM COURANT : < E102: EQU $ LXI IINDIC-LTN*2 LAI "T" STBY &AIC < L'ITEM COURANT RECOIT LE < TYPE 'TEXTE'. LXI LRITEM-LTN LA NCP STA &AIC < LA LONGUEUR REELLE DU CORPS < DE L'ITEM EST DE 35 LIGNES .... CPZ RI < DISCRIMINATION 'I'/'R' ??? JNE E206 < CAS DE LA COMMANDE 'I' (RI=-1). < < CAS DE LA COMMANDE 'R' : < BR AE23 < VERS LE RETOUR DES FONCTIONS. < < CAS DE LA COMMANDE 'I' : < E206: EQU $ LAD DERASE BSR ASVCI < EFFACEMENT DE L'ECRAN SI 'R'. LAD ISGE < A=@EMETTEUR D'UN MESSAGE DESTINE < A 'GI' POUR FAIRE UN 'IS' < AUTOMATIQUE ET RETOUR A 'GE'. LXI 4/2 < X=NBRE DE MOTS A DEPLACER. JMP E205 < VERS LA PREPARATION DU RETOUR < A'GI'. < < MISE A 'SPACE' DES DERNIERES LIGNES DE L'ITEM : < E101: EQU $ JDX E105 < SORTIE IMMEDIATE AU CAS OU < L'INDICATEUR DE FIN SE TROUVAIT < SUR LA DERNIERE LIGNE .... JMP E102 < OK , '*/' SUR LA DERNIERE LIGNE. E105: EQU $ < CAS OU IL Y A AU MOINS UNE < LIGNE A METTRE A 'SPACE'. LAI '20 SBT 2 < A='SPACE''SPACE'. ADRI -1,B < B=@DE LA 1ERE LIGNE A METTRE < A 'SPACE' -1 (POUR INDEXER < PAR RAPPORT A 1). < < BOUCLE DE MISE A 'SPACE' DES LIGNES : < E104: EQU $ SBT 0+16 < BIT D'INDEX. STB DEBLIG < DEBLIG=RELAI VERS LA < LIGNE COURANTE. LR X,Y < SAVE X DANS Y. LXI NBCAR/2 < X=NBRE DE MOTS A METRE A 'SPACE'. < < BOUCLE DE MISE A 'SPACE' D'UNE LIGNE : < E103: EQU $ STA &DEBLIG JDX E103 LR Y,X < RESTAURE X. ADRI NBCAR/2,B < PASSAGE A LA LIGNE SUIVANTE. JDX E104 < PASSAGE A LA LIGNE SUIVANTE. JMP E102 < C'EST FINI ... < < < C R E A T I O N N O M D ' I T E M : < < E200: EQU $ LR X,A CPI NBLIG < EST-CE LA 1ERE CARTE QUE < L'ON LIT ??? JNE E201 < NON , CE N'EST DONC PAS UNE C < CREATION DE NOM D'ITEM. < < CAS D'UNE 1ERE CARTE AVEC '*+' EN TETE : < LYI 2 < INDEX 1ER CARACTERE SUIVANT '*+'. LXI NBCAR-2-2 < NBRE DE CARACTERES A TESTER < SUR LA CRATE COURANTE. < < RECHERCHE D'UN ';' SUR LA CARTE : < E202: EQU $ XR X,Y < X=INDEX CARACTERE SUR LA CARTE. LBY &AIC < A=CARACTERE COURANT. ADRI 1,X < PASSAGE AU CARACTERE SUIVANT. CPI ";" < EST-CE ';' (CARACTERE UTILISE < COMME <EOT> PAR 'GI'. JE E203 < OUI , C'EST BON. XR X,Y < NON , POURSUIVONS LA RECHERCHE. JDX E202 < CARACTERE SUIVANT .... < < CAS OU L'ON N'A PAS TROUVE DE ';' SUR LES PREMIERS CARACTERES : < LXI NBLIG-1 < RE-INITIALISATION DE X AVEC < APSSAGE A LA CARTE SUIVANTE. JMP E30 < VERS LA LECTURE DE LA CARTE < SUIVANTE ('*+' IGNORE...). < < CAS OU ON A TROUVE UN ';' : < E203: EQU $ LBY &AIC < ACCES AU CARATERE SUIVANT. CPI " " < EST-CE UN 'SPACE' ??? JNE E204 < NON , ON NE FAIT RIEN. ADRI 1,X < OUI , PASSAGE AU CARACTERE < SUIVANT. LBY &AIC < ACCES CARACTERE SUIVANT. CPI " " < EST-CE UN 'SPACE' ??? JNE E204 < NON , ON NE FAIT RIEN. < < CAS OU ON A TROUVE '; ' : < LAI "A" STBY &AIC ADRI -1,X LAI "K" STBY &AIC < ON GENERE ';KA' A LA PLACE < DE '; ' RENCONTRE. < < GENERATION DE L'ITEM2 : < E204: EQU $ LR B,A ADRI -NBCAR/2,A < A=@CORPS DE L'ITEM1. LXI NBCAR/2 < X=NBRE DE MOTS A DEPLACER. E205: EQU $ < ENTRY POUR LA COMMANDE 'I'. LB AI2 < B=@CORPS DE L'ITEM2. MOVE < GENERATION ITEM2. < < PREPRARTION DE L'APPEL DE 'GI' : < LAI "I" STBY &AI2 < MISE DE 'I+' EN TETE DE L'ITEM2. < (A LA PLACE DE '*+'). < (DANS LE CAS DE 'ISGE' LE 'I' < RESTE UN 'I' ....). < < APPEL DE 'GI' : < E505: EQU $ < ENTRY POUR FIN DE 'SAVE'. < < MISE EN PLACE DU TYPE 'TEXTE' : < LXI IINDIC-LTN*2 LAI "T" STBY &XAI2 < LE TYPE 'T' EST MIS POUR 'GI' < QUI VALIDE L'ITEM2. LA NGI STA 0,W < LE NOM DE LA BRANCHE 'GI' EST < MIS EN TETE DE LA BRANCHE < DE L'OVERLAY. BR AGOGE < VERS LE CHARGEMENT (ID. A 'GE'). PAGE < < < V A L I D A T I O N I M P L A N T A T I O N : < < X12: EQU ZERO+PILE-LTNI-LTNI < @ITEM2. X10: VAL X12-$ ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI LE < PROCESSEUR RECOUVRE L'ITEM2. DZS X10+1 EOT #SIP GEN PROCESSEUR#