PROG ZERO: EQU $ DZS '10 < INTERFACE AVEC 'CMS5'... WORD DEBUT WORD CAMT < POINT D'ENTREE... DEBUT: EQU $ LRP L BR -1,L < ET ON RENTRE DANS LE PROGRAMME... < < < C O N S T A N T E S : < < LCARTE:: VAL 80 < NOMBRE DE CARACTERES PAR CARTE. NOCMO:: VAL 2 < NOMBRE D'OCTETS PAR MOT. CCI:: VAL 1 < 'QUIT' DE RETOUR AU CCI... FCCI:: VAL '02 < APPEL DU CCI INTERPRETATIF. FWV:: VAL '02 < ECRITURE SUR LA VISU. FR:: VAL '00 < LECTURE ASCI SUR CR1, FW:: VAL '02 < ECRITURE SEQUENTIELLE SUR MT1, FTM:: VAL '04 < ECRITURE D'UN TAPE-MARK. VISU:: VAL '02 < NVP DE LA VISU. CR:: VAL '0A < NVP DU LECTEUR DE CARTES, MT:: VAL '0B < NVP DU DEROULEUR DE BANDES. FCBA:: VAL 'FA00 < CONVERSION BINAIRE --> ASCI. MOCD:: VAL '00FF < ACCES A L'OCTET DROIT. EOT:: VAL '04 < CARACTERE DE FIN DE MESSAGE. IJIJDX:: VAL 1 < < < L O C A L < < LOCAL LOC: EQU $ < < BUFFERS ET MESSAGES : < BUFC: DZS LCARTE/NOCMO < BUFFER CARTE COURANTE, BUFCF: DZS LCARTE/NOCMO < BUFFER DE LA CARTE FIN, QUI EST RENCONTRE < EN PREMIERE POSITION POUR IDENTIFICATION. M1: BYTE 19;'6D ASCI "ASSIGN IMPOSSIBLE!" ASSCR: ASCI "!ASSIGN " BYTE CR=FCBA(MOCD;"=";"C";"R";"1";EOT ASSMT: ASCI "!ASSIGN " BYTE MT=FCBA(MOCD;"=";"M";"T";"1";EOT ASSCL: ASCI "!CLOSE" BYTE EOT;0 < < DEMANDES A 'CMS5' : < DEMCF: BYTE CR;FR < LECTURE DE LA CARTE DE FIN. WORD BUFCF-ZERO*NOCMO WORD LCARTE DEMC: BYTE CR;FR < LECTURE DE LA CARTE COURANTE. WORD BUFC-ZERO*NOCMO WORD LCARTE DEMT: BYTE MT;FW < ECRITURE DE LA CARTE COURANTE. WORD BUFC-ZERO*NOCMO WORD LCARTE DEMTM: BYTE MT;FTM < ECRITURE D'UN TAPE-MARK. DEMASC: BYTE 0;FCCI < !ASSIGN A=CR1. WORD ASSCR-ZERO*NOCMO WORD LCARTE DEMAST: BYTE 0;FCCI < !ASSIGN B=MT1. WORD ASSMT-ZERO*NOCMO WORD LCARTE DEMCLO: BYTE 0;FCCI < !CLOSE WORD ASSCL-ZERO*NOCMO WORD LCARTE DEMOUT: BYTE VISU;FWV < ENVOI D'UN MESSAGE SUR LA VISU. WORD 0;0 < < RELAIS : < ABUFC: WORD BUFC-IJIJDX,X < RELAI VERS LE BUFFER COURANT, ABUFCF: WORD BUFCF-IJIJDX,X < RELAI VERS LE BUFFER DE FIN. < < SOUS-PROGRAMME : < APRINT: WORD PRINT < EDITION D'UN MESSAGE. < < CONSTANTES : < KIN: WORD -1 < COMPTEUR DES ENTRIES... BLANC: ASCI " " < < PILE : < PILE: DZS 20 PAGE PROG < < < C A R T E A B A N D E : < < CAMT: EQU $ LRM L,K WORD LOC+128 WORD PILE-1 IC KIN JE CAMT1 < PREMIERE FOIS... < < C'EST LA FIN : < CAMT2: EQU $ LAD DEMCLO SVC 0 QUIT CCI < ET RETOUR AU CCI... STZ KIN DC KIN JMP CAMT < CAS D'UN !GO... < < SORTIE EN ERREUR : < CAMT3: EQU $ LAD M1 BSR APRINT < EDITION D'UN MESSAGE... JMP CAMT2 < ET ABORT... < < CAS DE LA PREMIERE FOIS : < CAMT1: EQU $ LAD DEMASC SVC 0 < TENTATIVE DE !ASSIGN A=CR1... JNE CAMT3 < IMPOSSIBLE... LAD DEMAST SVC 0 < TENTATIVE DE !ASSIGN A=MT1... JNE CAMT3 < IMPOSSIBLE... < < LECTURE DE LA CARTE DE FIN : < LAD DEMCF SVC 0 < < LECTURE DES CARTES COURANTES : < CAMT4: EQU $ LA BLANC LXI LCARTE/NOCMO CAMT7: EQU $ STA &ABUFC < MISE A BLANC DU BUUFER CARTES AU < CAS OU IL Y AURAIT UN EOT... JDX CAMT7 LAD DEMC SVC 0 < LECTURE DE LA CARTE COURANTE... LXI LCARTE/NOCMO < EST-CE LA CARTE DE FIN ??? CAMT5: EQU $ LA &ABUFC CP &ABUFCF < EST-CE LA DERNIERE ??? JNE CAMT6 < NON, IL FAUT L'ENREGISTRER... JDX CAMT5 < OUI, PEUT-ETRE... LAD DEMTM < ET OUI, SVC 0 < ON ECRIT UN TAPE-MARK... JMP CAMT2 < ET ON ARRETE... CAMT6: EQU $ ACTD 3 < B=NOMBRE D'OCTETS LUS... LR B,A ADRI NOCMO-1,A SLRS NOCMO=0 SLLS NOCMO=0 STA DEMT+2 < AFIN DE N'ECRIRE QUE CE QUI A ETE < LU, MAIS SUR UNE LONGUEUR PAIRE... LAD DEMT SVC 0 < ENREGISTREMENT DES CARTES SUR BANDE... JMP CAMT4 < VERS LA CARTE SUIVANTE... PAGE < < < E D I T I O N M E S S A G E : < < < ARGUMENT : < A=ADRESSE DU MESSAGE. < < PRINT: EQU $ PSR A,X,C LR A,C < C=ADRESSE DU MESSAGE... SLLS NOCMO=0 ADRI NOCMO-1,A STA DEMOUT+1 < ADRESSE OCTET DU MESSAGE, LBY 0,C STA DEMOUT+2 < ET LONGUEUR... LAD DEMOUT SVC 0 < EDITION DU MESSAGE... PLR A,X,C RSR END