IDP "COMP - RELEASE 15/12/1978" ORDI: @ IF 4='F700,X100,,X100 ORDI: VAL "T" X100: VAL 0 IF ORDI-"S",,X100, ORDI: VAL "T" X100: VAL 0 IF ORDI-"T",X100,,X100 QUANTA: VAL 1 IDP "VERSION T1600" X100: VAL 0 IF ORDI-"S",X100,,X100 QUANTA: VAL 3 IDP "VERSION SOLAR" X100: VAL 0 IDP "SERGE SOUZEAU" PAGE < < < PROGRAMME POUR COMPARER DEUX FICHIERS < < TABLE ZERO: EQU $ DZS '10 WORD DEB < < ENTREE DANS LE PROCESSEUR < WORD DEBUT PROG DEB: EQU $ LRP L BR -1,L PAGE < < BUFFERS < BUF1: DZS 128*QUANTA BUF2: DZS 128*QUANTA < < ASSIGN < ASSF1: ASCI "!ASSIGN 3=O," NMF1: DZS 10 ASSF2: ASCI "!ASSIGN 4=O," NMF2: DZS 10 CLOS: ASCI "!CLOSE" BYTE '04;0 AROND:: VAL '40 DEBUG: ASCI "!M;!DEBUG;" BYTE AROND;"," DEBUG1: ASCI "XYZT;M;;" BYTE AROND;"," DEBUG2: ASCI "XYZT;M;;" BYTE '04;0 < < MESSAGES < NMFS: BYTE 15;'6D ASCI "NOM DU FICHIER" NMFS1: BYTE 3;"1" ASCI " =" NMFS2: BYTE 3;"2" ASCI " =" ETOI: BYTE 21;'6D ASCI "********************" ERR: BYTE 42;'6D ASCI "NOM DE FICHIER ERRONNE OU CLE INEXISTANTE" FICH: BYTE 18;'6D ASCI "LES FICHIERS SONT" IDEN: BYTE 11;" " ASCI "IDENTIQUES" DIFF: BYTE 11;" " ASCI "DIFFERENTS" MSIBO: BYTE 59;'6D ASCI "FICHIERS SOURCES,BINAIRES," ASCI "DUMP OU QUELCONQUES (S/B/D/Q) = " CLE1: BYTE 15;'6D ASCI "CLE ENTIERE = " CLE2: BYTE 16;'6D ASCI "CLE DECIMALE = " LGBL: BYTE 27;'6D ASCI "NOMBRE DE MOTS PAR BLOC = " NOSC: BYTE 26;'6D ASCI "NUMERO DU SECTEUR = " NSCT: DZS 3 ENER: BYTE 27;'6D ASCI "ERREUR EN '" ENR1: DZS 2 ASCI " ET '" ENR2: DZS 2 PAGE < < COMMON < COMMON CCI: WORD 1 OPEN1: WORD '0305 < OPEN FICHIERS DZS 2 OPEN2: WORD '0405 DZS 2 ABUF1: WORD BUF1,X < RELAIS BUFFERS FICHIER ABUF2: WORD BUF2,X ABUF10: WORD BUF1 ABUF20: WORD BUF2 READ1: WORD '0308 < LECTURE FICHIERS WORD BUF1-ZERO*2 WORD 256*QUANTA READ2: WORD '0408 WORD BUF2-ZERO*2 WORD 256*QUANTA ECR: WORD '0202 < ECRITURE MESSAGES DZS 2 LECT: WORD '0101 < LECTURE D'UNE REPONSE DZS 2 APCCI: WORD '0002 < APPEL CCI INTERPRETATIF DZS 1 WORD 80 DIX: WORD 10 < POUR CONVERSION DES CLES LGBLOC: WORD 128*QUANTA < LONGUEUR D'UN BLOC NMOTPB: DZS 1 < LONGUEUR UTILE DU BUFFER AASSF1: WORD ASSF1 < RELAIS MESSAGES ANMF1: WORD NMF1 AASSF2: WORD ASSF2 ANMF2: WORD NMF2 ACLOS: WORD CLOS ANMFS: WORD NMFS ANMFS1: WORD NMFS1 ANMFS2: WORD NMFS2 AETOI: WORD ETOI AERR: WORD ERR AFICH: WORD FICH AIDEN: WORD IDEN ADIFF: WORD DIFF AMSIBO: WORD MSIBO ACLE1: WORD CLE1 ACLE2: WORD CLE2 ALGBL: WORD LGBL ANOSC: WORD NOSC ANSCT: WORD NSCT-ZERO*2 AENER: WORD ENER AENR1: WORD ENR1-ZERO*2 AENR2: WORD ENR2-ZERO*2 SECR: WORD SPSECR < RELAIS SSP SLEC: WORD SPSLEC SNUM: WORD SPSNUM SCCI: WORD SPSCCI SERR: WORD SPSERR HEXA: WORD SPHEXA DECI: WORD SPDECI ENT: DZS 3 < BUFFER LECTURE AENT: WORD ENT+3,X < RELAI BUFFER DE LECTURE AZER: WORD ZERO,X < RELAI DEBUT INDEXE AD1: WORD DEBUG1-ZERO*2 AD2: WORD DEBUG2-ZERO*2 ADEBUG: WORD DEBUG < ADRESSE DE LA CARTE "!M...". SIBO: DZS 1 < INDICATEUR DE TYPE FICHIERS : < -1 : SOURCE, < 0 : BINAIRE, < +1 : DUMP/QUELCONQUES. AE100: WORD E100 < RELAI KSTORE: DZS 10 PAGE < < PROGRAMME < PROG WORD CCI+'80 DEBUT: EQU $ LRP C < INITIALISATION DES BASES LA -1,C LR A,C LAD KSTORE-1 LR A,K E100: EQU $ LA ACLOS < FERMER LES FICHIERS BSR SCCI EORR L < INITIALISATION DU NUMERO DE SECTEUR E101: EQU $ LA ANMFS < LIRE LE 1ER NOM BSR SECR LA ANMFS1 BSR SECR LA ANMF1 LBI 20 BSR SLEC LA AASSF1 < ESSAI D'ASSIGNATION BSR SCCI JE E102 BSR SERR < ERREUR JMP E101 E102: EQU $ LA ANMFS < LIRE LE 2EME NOM BSR SECR LA ANMFS2 BSR SECR LA ANMF2 LBI 20 BSR SLEC LA AASSF2 < ESSAI D'ASSIGNATION BSR SCCI JE E103 BSR SERR < ERREUR JMP E102 E103: EQU $ LA LGBLOC < INITIALISATION DE LA LONGUEUR STA NMOTPB < UTILE D'UN BLOC LAI -1 < DEMANDE DU TYPE STA SIBO LA AMSIBO BSR SECR LAD ENT LBI 1 BSR SLEC LBY ENT < ANALYSE DU TYPE CPI "S" JE E104 IC SIBO CPI "B" JE E104 IC SIBO CPI "D" JE E150 < TYPE "DUMP"... CPI "Q" JNE E103 E104: EQU $ CPZ SIBO JE E105 JG E106 LAI 2 < TYPE SOURCE - CLE = 2.0 LBI 0 JMP E107 E105: EQU $ LAI 1 < TYPE BINAIRE - CLE = 1.0 LBI 0 JMP E107 E150: EQU $ LAI 3 < TYPE DUMP - CLEF = 3.0 LBI 0 JMP E107 E106: EQU $ LA ALGBL < TYPE QUELCONQUE - LIRE LA BSR SNUM < LONGUEUR UTILE D'UN BLOC CPI 1 < SI ELLE EST <= 1, ON JLE E118 < PREND TOUT LE BLOC STA NMOTPB E118: EQU $ LA ACLE1 < LIRE LES CLES BSR SNUM LR A,B LA ACLE2 BSR SNUM XR A,B E107: EQU $ STA OPEN1+1 < POSITIONNER LES CLES STA OPEN2+1 STB OPEN1+2 STB OPEN2+2 LAD OPEN1 < ESSAI D'OPEN SVC 0 JNE E108 LAD OPEN2 SVC 0 JE E110 E108: EQU $ BSR SERR < ERREUR JMP E100 E110: EQU $ LAD READ1 < LIRE LES 2 FICHIERS SVC 0 JNE E114 CPZ &ABUF10 JL E114 LAD READ2 SVC 0 JNE E117 CPZ &ABUF20 JL E117 ADRI 1,L < COMPTER LE SECTEUR LXI 1 < INITIALISATION POINTEUR BUFFER E111: EQU $ CPZ SIBO < SOURCE? JGE E113 LA &ABUF1 < OUI - FIN SECTEUR(1ER CARAC)? SLRS 8 CPI 'FF JNE E112 LA &ABUF2 < OUI SLRS 8 CPI 'FF JNE E117 JMP E110 E112: EQU $ LA &ABUF1 < FIN SECTEUR(2EME CARAC)? ANDI 'FF CPI 'FF JNE E113 LA &ABUF1 < OUI CP &ABUF2 JNE E117 JMP E110 E113: EQU $ LA &ABUF1 < COMPARER LES DEUX BUFFERS CP &ABUF2 JNE E117 E116: EQU $ ADRI 1,X < MOT SUIVANT LR X,A < FIN DU BUFFER? CP NMOTPB JL E111 JMP E110 < OUI - SUIVANT E114: EQU $ LAD READ2 < FIN 1ER - VERIF. FIN 2EME SVC 0 JNE E115 CPZ &ABUF20 JGE E117 E115: EQU $ LA AFICH < FICHIERS IDENTIQUES BSR SECR LA AIDEN BSR SECR LA ACLOS < FERMER LES FICHIERS BSR SCCI LAD CCI SVC 0 BR AE100 E117: EQU $ LA AETOI < FICHIERS DIFFERENTS BSR SECR LA AFICH BSR SECR LA ADIFF BSR SECR LA AETOI BSR SECR LA ANSCT < SORTIE DU NUMERO DE SECTEUR LR L,B BSR DECI LA ANOSC BSR SECR LAD &ABUF1 LR A,B LA AENR1 BSR HEXA LAD &ABUF2 LR A,B LA AENR2 BSR HEXA LA AENER BSR SECR LAD &ABUF1 LR A,B LA AD1 BSR HEXA LAD &ABUF2 LR A,B LA AD2 BSR HEXA LA ADEBUG BSR SCCI < ENVOI DE "!M..." POUR APPEL DU DEBUG... WORD '1E16 < ARRET POUR DEBUG JMP E116 PAGE < < SOUS-PROGRAMME DE SORTIE DE MESSAGES < SPSECR: EQU $ PSR A,X,W LR A,W < SAUVER L'ADRESSE DU MESSAGE ADR A,A < CALCULER SON ADRESSE OCTET ADRI 1,A STA ECR+1 < LA PLACER DANS L'ECRITURE LBY 0,W < RELEVER SA LONGUEUR STA ECR+2 < LA PLACER LAD ECR < ET ECRIRE SVC 0 PLR A,X,W RSR < < SOUS-PROGRAMME DE LECTURE D'UNE REPONSE < SPSLEC: EQU $ PSR A,X ADR A,A < PLACER L'ADRESSE OCTET STA LECT+1 < DU BUFFER DE LECTURE STB LECT+2 < ET LA LONGUEUR DE LA LECTURE LAD LECT < ET LIRE SVC 0 PLR A,X RSR < < SOUS-PROGRAMME DE LECTURE D'UN NOMBRE DECIMAL < SPSNUM: EQU $ PSR B,W PSR A < SAUVER L'ADRESSE DU MESSAGE SNUM1: EQU $ PLR A < IMPRIMER LE MESSAGE PSR A BSR SECR LAD ENT < LIRE LE NOMBRE LBI 6 BSR SLEC EORR W < RESULTAT = 0 LXI -6 < ANALYSE DE 6 CHIFFRES SNUM2: EQU $ LBY &AENT < RELEVER UN CARACTERE CPI '0D < SI C'EST RETURN OU EOT JE SNUM3 < C'EST LA FIN DU NOMBRE CPI '04 JE SNUM3 ADRI -'30,A < SINON, CE DOIT ETRE UN CHIFFRE JAL SNUM1 CPI 9 JG SNUM1 XR A,W < L'INCORPORER AU RESULTAT MP DIX JANE SNUM1 < ON DOIT RESTER < 32768 CPZR B JL SNUM1 ADR B,W JV SNUM1 JIX SNUM2 < ET CHIFFRE SUIVANT SNUM3: EQU $ PLR A < NOMBRE FINI,LE RENDRE DANS A LR W,A PLR B,W RSR < < SOUS-PROGRAMME D'APPEL AU CCI INTREPRETATIF < SPSCCI: EQU $ PSR A,X ADR A,A < PLACER L'ADRESSE OCTET DU MESSAGE STA APCCI+1 LAD APCCI < ET DEMANDER SON INTERPRETATION PAR LE CCI SVC 0 PLR A,X RSR < < SOUS-PROGRAMME DE SORTIE DU MESSAGE D'ERREUR < SPSERR: EQU $ PSR A LA AETOI < SORTIR UNE LIGNE D'ETOILE BSR SECR LA AERR < LE MESSAGE D'ERREUR BSR SECR LA AETOI < ET UNE AUTRE LIGNE D'ETOILES BSR SECR PLR A RSR < < SOUS-PROGRAMME D'EDITION D'UN NOMBRE EN HEXADECIMAL < A=ADRESSE OCTET DE LA ZONE RECEPTRICE < B=NOMBRE < SPHEXA: EQU $ PSR A,B,X,Y LR A,X LYI 4 HEXA2: EQU $ LAI 0 SLLD 4 CPI 9 JLE HEXA1 ADRI 7,A HEXA1: EQU $ ADRI '30,A STBY &AZER ADRI 1,X ADRI -1,Y CPZR Y JG HEXA2 PLR A,B,X,Y RSR < < SOUS-PROGRAMME D'EDITION D'UN NOMBRE EN DECIMAL < A=ADRESSE OCTET DE LA ZONE RECEPTRICE < B=NOMBRE < SPDECI: EQU $ PSR A,B,X,Y LR A,X ADRI 4,X LYI 5 DECI1: EQU $ LAI 0 DV DIX XR A,B ADRI '30,A STBY &AZER ADRI -1,X ADRI -1,Y CPZR Y JG DECI1 PLR A,B,X,Y RSR END