NMPROC: VAL "EX" < NOM DU PROCESSEUR.
IDP "EX - RELEASE 21/03/1980"
IDP "EDITEUR EXAUSTIF CATALOGUE"
IDP "JOHN F. COLONNA"
PROG
PAGE
EOT #SIP DEFINITION CMS5#
EOT #SIP DEF PROCESSEUR#
PROG
WORD CATAL < ENTRY POINT DU PROCESSEUR.
WORD 0
PCATAL: EQU $ < P='12 !!!
LRP L
BR -2,L < ENTRY DANS LE PROCESSEUR.
PAGE
EOT #SIP DEFINITION ITEM#
NOMI:: VAL '3D < EMPLACEMENT DU <NOM> D'UN ITEM DANS
< L'EN-TETE.
ITEM1: EQU ZERO+PILE-LTNI < ADRESSE DE L'EN-TETE DE L'ITEM1.
LNOM: VAL 20 < NBRE DE MOTS MAX OCCUPES PAR
< UN NOM SOUS SGN.
<
< V A L E U R D ' U N N O M :
<
VALEUR: EQU ZERO+PILE+6 < LA VALEUR EST IMPLANTEE DANS
< LES 4 DERNIERS K.
IMAG: EQU VALEUR+LNOM+2 < ADRESSE DE L'IMAGE EVENTUELLE.
IF ORDI-"S",XWOR%1,,XWOR%1
<
< A U T O R I S A T I O N / I N T E R D I C T I O N D E S
<
< D E L E T E.
<
< ( OPTTION D'ASSEMBLAGE SOLAR ! )
<
IDELA: VAL 0 < 'IDELA' = 0 : DELETE INTERDITS;
< 'IDELA' = 1 : DELETE AUTORISES.
XWOR%1: VAL 0
PAGE
<
<
< L O C A L :
<
<
LOCAL
LOC: EQU $
<
< BUFFERS ET MESSAGES :
<
REP: DZS 2 < REPONSE 1 CARACTERE UTILISATEUR.
AREP: WORD REP,X
HNOM1: BYTE 0;'6D
HNOM2: DZS LNOM+2*2
RCLF: BYTE 0;'6D
NOM: DZS LNOM+2 < PAR PRUDENCE.
BYTE '04;0 < POUR LA RECHERCHE DE L'EOT DE FIN
< DE RACINE DE RECERCHE.
MDEL: BYTE 3;" ";"?";"?"
MRAC: BYTE 8;'6D
ASCI "RACINE> "
MLMAX: BYTE 6;'6D
ASCI "LMAX= "
MPART: BYTE 13;'6D
ASCI "A PARTIR DE "
MACN: BYTE 5;'6D
ASCI "ACN?"
MPAS: BYTE 11;'6D
ASCI "PAS A PAS?"
MVIS: BYTE 15;'6D
ASCI "VISUALISATION?"
MHEXA: BYTE 13;'6D
ASCI "HEXADECIMAL?"
MRECH: BYTE 12;'6D
ASCI "RECHERCHE ?"
MCHAI: BYTE 8;'6D
ASCI "CHAINE="
MRCLF: BYTE 1;'6D
<
< RELAIS DIVERS :
<
IF ORDI-"T",XWOR%,,XWOR%
ASP3: WORD SP3 < ROUTINE MAITRE DE STABILISATION
< DE L'IMAGE VIDEO.
XWOR%: VAL 0
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
AGOSGN: WORD GOSGN < APPEL DU SGN POUR CATAL.
APRINT: WORD PRINT < EMISSION MESSAGE.
AHEXA: WORD HEXA < CONVERSION BINAIRE-->HEXADECIMAL.
AHEX: WORD HEX < ENTREE D'UNE CONSTANTE HEXA-DECIMALE...
AGOGE: WORD E50 < RETOUR A 'GE'.
ANOM: WORD NOM,X < RELAI D'ACCES AU NOM COURANT.
AHNOM: WORD HNOM2,X < RANGEMENT DU NOM EN HEXA.
AVAL: WORD VALEUR < @MOT DE LA VALEUR D'UN NOM.
ZAVAL: WORD VALEUR-1,X < RELAI DE RAZ D'UNE VALEUR.
LVAL: WORD '1000 < UNE VALEUR FAIT 4K MOTS MAX.
APILE: WORD PILE-1 < @PILE DE SODOME.
<
< CONSTANTES DIVERSES :
<
KIN: WORD -1 < COMPTEUR DES ENTRIES.
NGE: WORD "GE" < NOM DU PROCESSEUR GE.
XRAC: WORD 0 < MEMORISATION DE L'INDEX INITIAL.
SXRAC: WORD 0 < SAVE LE (X) INITIAL.
VISUAL: WORD 0 < INDICATEUR DE VISUALISATION :
< 0 : NE PAS VISUALISER VALEUR ,
< #0 : VISUALISER LA VALEUR(NOM).
DELET: WORD 0 < INDICATEUR DE DELETE :
< =0 : LISTAGE SEUL ,
< -1 : LIST & DELETE AUTOMATIQUE ,
< +1 : LIST & DELETE EVENTUEL.
XANOM: WORD 0 < INDEX DU NOM EN ALPHA.
XHNOM: WORD 0 < INDEX DU NOM EN HEXA.
INDH: WORD 0 < =0 : EDITION ALPHA DES NOMS ,
< #0 : EDITION ALPHA+HEXA NOMS.
KCONT: WORD 1 < CALCUL DE LA LA LONGUER DES
< MESSAGES LORS DE L'EDITION DES
< NOMS.
ACNSYS: ASCI ":SYS" < ACN DU SYSTEME.
LMAX: WORD LNOM*2+1 < NOMBRE MAX DE CARACTERES A EXPLORER.
<
< DONNEES DE RECHERCHE DANS UN ITEM :
<
IRECH: WORD 0 < INDICATEUR DE RECHERCHE :
< =0 : PAS DE RECHERCHE,
< #0 : RECHERCHE D'UNE CHAINE DONNEE DANS
< LES ITEMS DE TYPE "T"/"D"/"I".
LCHAIN:: VAL 20 < LONGUEUR MAX DE LA CHAINE.
CHAINE: DZS LCHAIN/2 < CHAINE A CHERCHER.
ACHAIN: WORD CHAINE,X < RELAI D'ACCES A LA CHAINE.
ALCHAI: WORD 0 < LONGUEUR DE LA CHAINE (NON COMPRIS LE
< LIMITEUR DE FIN.
ANOMC: WORD ITEM1,X < RELAI D'ACCES A L'EN-TETE DE L'ITEM1.
AITEM1: WORD ITEM1+LTN,X < RELAI D'ACCES AU CORPS DE L'ITEM1.
NCP: WORD NBCAR*NBLIG < LONGUEUR DES CORPS DES ITEMS CHERCHES.
ASPREC: WORD SPREC < MODUL DE RECHERCHE...
<
< DEMANDES A CMS4 :
<
DEMSGN: WORD '0402 < SGN OVERLAY.
WORD BRANCH-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
SCATAL: WORD '0002 < SGN CATALOGUE.
WORD NOM-ZERO*2
WORD 0 < LONGUEUR COURANTE DU NOM.
WORD -1
DEMLOD: WORD '0502 < DEMANDE DE LOAD SOUS ACN.
WORD VALEUR-ZERO*2
WORD '2000-1 < 4K MOTS-1 MAX.
WORD 2*LNOM < DEPLACEMENT DE LA VALEUR
< PAR RAPPORT AU NOM.
DEMDEL: WORD '0302 < DELETE NOM.
WORD NOM-ZERO*2
WORD LNOM+2*2
WORD -1
DEMREP: WORD '0101 < ENTREE REPONSES UTILISATEUR.
WORD REP-ZERO*2
WORD 1
DEMHEX: WORD '0101 < ENTREE D'UNE CONSTANTE HEXA-DECIMALE.
WORD REP-ZERO*2
WORD 4
DEMMES: WORD '0202 < EMISSION D'UN MESSAGE.
WORD 0 < @OCTET DU MESSAGE.
WORD 0 < LONGUEUR DU MESSAGE.
DEMIN: WORD '0101 < ENTREE DE LA RCINE DU CATALOGUE.
WORD NOM-ZERO*2
WORD 2*LNOM-1
DEMOUT: WORD '0202 < AFFICHAGE DU NOM COURANT.
WORD RCLF-ZERO*2+1
WORD 0 < LONGUEUR DU NOM COURANT.
DEMCCI: WORD '0001 < RETOUR AU CCI.
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K MOTS.
WORD 0
WORD '5000 < 10K MOTS.
RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS.
WORD 0
WORD '2000 < 4K MOTS.
IF ORDI-"S",XWOR%,,XWOR%
STABIL: WORD '8A01 < STABILISATION DE L'IMAGE VIDEO.
WORD IMAG-ZERO*2
WORD '2000
WORD 0
XWOR%: VAL 0
DEMCHA: WORD '0101 < ENTREE DE LA CHAINE CHERCHEE...
WORD CHAINE-ZERO*2
WORD LCHAIN
DEMNOM: WORD '0202 < EDITION DU NOM D'UN ITEM LORS D'UNE
< RECHERCHE POSITIVE...
WORD ITEM1+NOMI-ZERO*2
WORD 0
DEMITE: WORD '0502 < CHARGEMENT D'UN ITEM LORS D'UNE
< RECHERCHE POSITIVE...
WORD ITEM1-ZERO*2
WORD LTNI*2
WORD -1
PROG
PAGE
IF ORDI-"T",XWOR%,,XWOR%
TIMAG: WORD IMAG < @TRANSLATABLE DE L'IMAGE VIDEO.
EOT #SIP SP3#
XWOR%: VAL 0
PAGE
<
<
< A C C E S A U S G N :
<
<
< ARGUMENT :
< A=NVP D'ACCES AU SGN.
<
<
< RESULTAT :
< A=CONDITIONS DE RETOUR DU SGN ,
< INDICATEURS POSITIONNES SUR ERREUR.
<
<
GOSGN: EQU $
CPZR X
JGE GOSGN1 < OK...
PSR A
LXI 0 < ON REINITIALISE LE PARCOURS, IL
LAI '04 < S'AGIT SUREMENT D'UN DELETE DE
STBY &ANOM < TOUT UN CATALOGUE...
PLR A
GOSGN1: EQU $
PSR X < SAVE X COURANT.
STBY SCATAL < MISE EN PLACE DU NVP D'ACCES.
LR X,A
ADRI 1,A
STA SCATAL+2 < MISE EN PLACE DE LA LONGUEU
< COURANTE.
LAD SCATAL
SVC 0 < APPEL DU SGN.
LR X,A < A=CONDITIONS DE RETOUR.
PLR X < RESTAURE X COURANT.
RSR
PAGE
<
<
< C O N V E R S I O N B I N A I R E --> H E X A :
<
<
< ARGUMENT :
< A=1 CHIFFRE HEXA EN BINAIRE.
<
<
< RESULTAT :
< LE CHIFFRE HEXA EST CONVERTI EN HEXA (ASCI) ET MIS
< DANS LE BUFFER A L'INDEX (XHNOM) QUI ENSUITE
< PROGRESSE D'UNE UNITE.
<
<
HEXA: EQU $
CPI 9 < EST-CE UN CHIFFRE DECIMLA ???
JLE HEXA1 < OUI.
ADRI '41-'39-1,A < NON , TRANSLATION VERS LES LETTRES.
HEXA1: EQU $
ADRI '30,A < CONVERSION ASCI.
LX XHNOM < X=INDEX COURANT HEXA.
STBY &AHNOM < MISE DANS LE BUFFER HEXA.
IC XHNOM < ET PROGRESSION DE L'INDEX COURANT.
RSR < ET C'EST TOUT...
PAGE
<
<
< C O N V E R S I O N A S C I --> B I N A I R E :
<
<
< RESULTAT :
< A=VALEUR CONVERTIE S'IL N'Y A PAS
< D'ERREUR, LES CODES DE CONDITION
< L'INDIQUANT.
<
<
HEX: EQU $
PSR B,X
LXI 0 < X=INDEX DE 'REP'.
LBI 0 < B=CUMUL COURANT.
HEX1: EQU $
LBY &AREP < A=CARACTERE COURANT DE 'REP'.
CPI '04 < EST-CE 'EOT' ???
JE HEX5 < OUI, FIN DE CONVERSION.
CPI '0D < EST-CE 'R/C' ???
JE HEX5 < OUI, FIN DE CONVERSION.
ADRI -'30,A < CONVERSION BIANIRE.
JAL HEX2 < ERREUR.
CPI 9 < EST-CE UN CHIFFRE DECIMAL ???
JLE HEX3 < OUI.
ADRI -"A"+"9"+1,A < NON.
CPI 'A < VALIDATION HEXDECIMALE ???
JL HEX2 < ERREUR.
CPI 'F < VALIDATION HEXADECIMALE ???
JG HEX2 < ERREUR.
HEX3: EQU $
SCRS 4 < CUMUL PARTIEL DE LA
SCLD 4 < VALEUR A CONVERTIR.
ADRI 1,X < PASSAGE AU CARACTERE SUIVANT.
CPR X,Y < EST-CE FINI ???
JNE HEX1 < NON.
HEX5: EQU $
LR B,A < OUI, A=RESULTAT.
LBI 0 < B=0 : OK.
HEX4: EQU $
CPZR B < POSITIONNEMENT DES CODES
< DE CONDITION SUR ERREUR.
PLR B,X
RSR
HEX2: EQU $ < CAS DES ERREURS.
LBI 1 < B=1#0 : ERREUR.
JMP HEX4 < VERS LA SORTIE...
PAGE
<
<
< E M I S S I O N M E S S A G E :
<
<
< ARGUMENT :
< A=@MOT DU MESSAGE , DONT LE 1ER OCTET EST
< SA LONGUEUR.
<
<
< DETRUIT X ...
<
<
PRINT: EQU $
LR A,C < C=@MOT DU MESSAGE.
ADR A,A
ADRI 1,A < A=@OCTET DU MESSAGE.
STA DEMMES+1 < MAJ DE DEMMES.
LBY 0,C < A=LONGUEUR DU MESSAGE.
STA DEMMES+2 < MAJ DE DEMMES.
LAD DEMMES
SVC 0 < EMISSION DU MESSAGE.
RSR
PAGE
<
<
< R E C H E R C H E D E L A C H A I N E C O U R A N T E :
<
<
< FONCTION :
< CE MODULE EST MIS EN SOUS-
< PROGRAMME A CAUSE DES SAUTS
< SUPERIEURS A 128 MOTS ; IL
< RECHERCHE LA CHAINE COURANTE DANS
< L'ITEM COURANT, S'IL LA TROUVE,
< IL EDITE SON NOM NON COMPACTE...
<
<
< ARGUMENT :
< (A)=INDEX DU CARACTERE COURANT.
<
<
SPREC: EQU $
LR X,A < (A)=NOMBRE DE CARACTERES DU NOM :
CPI 6 < EST-CE LA LONGUEUR D'UN <NOMC> ???
JNE E2011 < NON, CET ITEM EST IGNORE...
PSR X,Y
LXI 0 < (X)=INDEX DE TRANSFERT,
E2040: EQU $
LBY &ANOM
STBY &ANOMC < TRANSFERT,
ADRI 1,X < AU SUIVANT...
CPI '04 < ET ON S'ARRETE SUR <EON>...
JNE E2040
LAD DEMITE
SVC 0 < OUI, CHARGEONS LE EN ITEM1...
JNE E2030 < ERREUR, IL A PEUT-ETRE ETE DETRUIT ENTRE
< TEMPS, ON L'IGNORE...
LXI 7
LBY &ANOMC < (A)=TYPE "I"/"N" :
CPI 'C9 < EST-CE BIEN UN ITEM ???
JNE E2030 < NON, ON L'IGNORE...
LXI IINDIC*2
LBY &ANOMC < (A)=TYPE DE L'ITEM :
CPI "T" < TEXTE ???
JE E2012 < OUI, ON VA LE TESTER...
CPI "D" < DESSIN ???
JE E2012 < OUI, ON VA LE TESTER...
CPI "I" < FILM DIGITAL ???
JNE E2030 < NI L'UN, NI L'AUTRE, ON L'IGNORE...
E2012: EQU $
CPZ ALCHAI < CHAINE VIDE ???
JE E2050 < OUI, ON EDITE...
LXI -1 < (X)=INDEX DE L'ITEM1,
E2020: EQU $
LYI 0 < (Y)=INDEX DE LA CHAINE.
E2021: EQU $
ADRI 1,X < AU CARACTERE SUIVANT DE L'ITEM1 :
LR X,A < S'IL EXISTE...
CP NCP < ???
JGE E2030 < NON, ON IGNORE CET ITEM...
LBY &AITEM1 < (A)=CARACTERE DE L'ITEM1,
XR X,Y
CPBY &ACHAIN < QUE L'ON COMPARE AU CARACTERE COURANT DE
< LA CHAINE :
XR X,Y
JNE E2020 < PAS TROUVE DE COINCIDENCE...
ADRI 1,Y < OUI, PASSONS AU CARACTERE SUIVANT DE
< LA CHAINE :
LR Y,A
CP ALCHAI < S'IL EXISTE ???
JL E2021 < OUI...
E2050: EQU $
LXI 3 < NON, ON A DONC TROUVE LA CHAINE,
LBY &ANOMC
ADRI -"0",A
STA DEMNOM+2 < ON CALCULE LA LONGUEUR DU NOM DE L'ITEM,
LAD MRCLF
BSR APRINT < EDITION D'UN RC/LF...
LAD DEMNOM
SVC 0 < ET ON L'EDITE...
E2030: EQU $
PLR X,Y
E2011: EQU $
RSR
PAGE
<
<
< P R O C E S S E U R D ' E D I T I O N
< E X A U S T I V E D E S C A T A L O G U E S :
<
<
< FONCTION :
< CE PROCESSEUR PERMET :
< 1- SOUS :SYS DE LISTER SELECTIVEMENT LES ACN ,
< 2- SOUS TOUS LES NUMEROS DE COMPTE :
< 2.1- DE LISTER SELECTIVEMENT LES NOMS ,
< 2.2- DE LISTER ET DELETER AUTOMATIQUEMENT ET
< SELECTIVEMENT LES NOMS ,
< 2.3- DE LISTER ET DELETER EN PAS A PAS AVEC
< VISUALISATION ET SELECTIVEMENT LES NOMS.
<
<
WORD LOC+'80
WORD BRANCH
CATAL: EQU $
LRP K
ADRI -1,K
PLR L,W < INITIALISATION DE L ET W.
LA APILE
LR A,K < INITIALOSATION DE K.
IC KIN < COMPTAGE DES ENTRIES DANS 'EX'.
JE E340 < CAS DE LA 1ERE ...
BR AGOGE < POUR LA SUIVANTE , ON VA A 'GE'.
E340: EQU $
<
< INITIALISATION DE L'EDITEUR :
<
LAI '02
STA SCATAL < MISE EN MODE NORMAL DE SCATAL ,
< AFIN DE COMMENCER A PRIORI LE
< PARCOURS DE L'ARBRE APRES
< LES ACN ...
STZ DELET < LISTAGE SEUL A PRIORI.
STZ VISUAL < PAS DE VISUALISATION A PRIORI.
<
< FAUT-IL LISTER EN HEXADECIMAL ???
<
E1000: EQU $
LAD MHEXA
BSR APRINT < ENVOI D'UN MESSAGE INTERROGATION.
LAD DEMREP
SVC 0 < ENTREE DE LA REPONSE.
LBY REP < A=CARACTERE REPONSE.
<
< REPONSES RECONNUES :
< N : LISTAGE ALPHA-NUMEROQUE SEUL ,
< O : LISTAGE ALPHA-NUMERIQUE+HEXADECIMAL.
<
CPI "N"
JE E1001 < LISTAGE ALPHANUMERIQUE SEUL.
CPI "O"
JNE E1000 < INCOMPREHENSIBLE ...
<
< LISTAGE ALPHA-NUMERIQUE+HEXADECIMAL :
<
LAI HNOM1-ZERO*2+1 < CHANGEMENT DE L'ADRESSE BUFFER.
STA DEMOUT+1
LAI LNOM+2*4+2+1
STA KCONT < CONSTANTE DE CALCUL DE LA
< LONGUEUR DES MESSAGES LORS DE
< L'EDITION DES NOMS.
LAI '20
SWBR A,A
ORI '20
STA RCLF < ON REMPLACE LE RC-LF DE DEBUT DU
< NOM ALPHA-NUMERIQUE PAR 2
< CARACTERES 'SPACE'.
STA INDH < DE PLUS , ON FAIT AINSI INDH#0.
E1001: EQU $
<
< PROPOSITION DE RECHERCHE :
<
E2000: EQU $
STZ IRECH < NON A PRIORI...
LAD MRECH
BSR APRINT < ENVOI D'UN MESSAGE,
LAD DEMREP
SVC 0 < ET LECTURE DE LA REPONSE,
LBY REP < (A)=REPONSE :
CPI "N"
JE E2001 < (IRECH)=0...
CPI "O"
JNE E2000 < ?!??!?!
IC IRECH < (IRECH)#0...
LAD MCHAI
BSR APRINT < ENVOI D'UN MESSAGE...
LAD DEMCHA
SVC 0 < ET ENTREE DE LA CHAINE :
ACTD 3 < (B)=LONGUEUR REELLE,
STB ALCHAI < QUE L'ON MEMORISE,
LR B,X
ADRI -1,X < (X)=INDEX DU DERNIER CARACTERE,
LBY &ACHAIN < (A)=DERNIER CARACTERE :
CPI '04 < EST-CE UN LIMITEUR ???
JE E2002 < OUI, ON L'EFFACE...
CPI '0D < EST-CE UN LIMITEUR ???
JNE E2003 < NON...
E2002: EQU $
DC ALCHAI < EFFACEMENT DES LIMITEURS DE FIN...
E2003: EQU $
JMP E400 < VERS L'ENTREE DE LA RACINE...
E2001: EQU $
<
< ENTREE DE LA LONGUEUR MAX :
<
E1001X: EQU $
LAD MLMAX
BSR APRINT < "LMAX="...
LAD DEMHEX
SVC 0 < ENTREE DE LA CHAINE HEXA,
LYI 4 < Y=4 CHIFFRES A CONVERTIR...
BSR AHEX < ET CONVERSION :
JNE E1001X < ERREUR...
CPI LNOM*2 < VALIDATION...
JG E1001X < ERREUR...
JAL E1001X < ERREUR...
JANE E1001Y < OK...
LAI LNOM*2+1 < SI NUL, ON PREND LE MAX...
E1001Y: EQU $
STA LMAX
<
< IDENTIFICATION DU DEMANDEUR :
<
WORD '1E25 < (A,B)=ACN DU DEMANDEUR.
CP ACNSYS < EST-CE :SYS ????
JNE E600 < NON.
LR B,A
CP ACNSYS+1 < EST-CE :SYS ???
JNE E600 < NON.
<
< CAS DE :SYS : DOIT-ON LISTER LES ACN ???
<
E301: EQU $
LAD MACN
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < ENTREE DE LA REPONSE.
LBY REP < A=REPONSE UTILISATEUR.
CPI "N"
JE E300 < LES ACN NE SONT PAS DEMANDES.
CPI "O"
JNE E301 < ERREUR DE REPONSE , ON RECOMMENCE
LAI '0A
STA SCATAL < SCATAL EST MISE EN MODE DE
< PARCOURS SUR LA RACINE DE L'
< ARBRE DU SYSTEME.
JMP E400 < ON SAUTE LES TESTS DE DELETE
< ET DE VISUALISATION.
<
< CAS OU L'ON N'EST PAS SOUS :SYS :
<
E600: EQU $
IF ORDI-"T",XWOR%,,XWOR%
STZ ASP3 < RAZ DU RELAI DE STABILISATION
< DE L'IMAGE VIDEO.
XWOR%: VAL 0
E300: EQU $
<
< DEMANDE DE VISUALISATION :
<
E310: EQU $
LA LMAX
CPI LNOM*2+1 < EST-CE LA LONGUEUR MAX ???
JNE E400 < NON, PAS DE VISUALISATION...
LAD MVIS
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < ENTREE DE LA REPONSE.
LBY REP < A=REPONSE UTILISATEUR.
CPI "N"
JE E400 < PAS DE VISUALISATION (VISUAL=0).
CPI "O"
JNE E310 < REPONSE INCOMPREHENSIBLE ...
IC VISUAL < VISUALISATION (VISUAL=1#0).
LAD DEMMEM
SVC 0 < IL FAUT DEMANDER ALORS 8K MOTS.
<
< ENTREE DE LA RACINE DE PARCOURS :
<
E400: EQU $
LAD MRAC
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMIN
SVC 0 < ENTREE DE LA RACINE.
LXI 0 < INITIALISATION DE L'INDEX.
E210: EQU $
LBY &ANOM < ACCES UN CARACTERE DE LA RACINE.
CPI '04 < EST-CE L'EOT ???
JE E211 < OUI.
ADRI 1,X < NON PROGRESSION INDEX.
JMP E210 < ACCES CARACTERE SUIVANT.
E211: EQU $
STX XRAC < SAVE L'INDEX INITIAL.
CPZR X < L'EOT EST-IL EN 1ER CARACTERE ???
JE E212 < OUI , (X) EST INCHANGE (=0).
ADRI -1,X < SI NON , ON REVIENT SUR LE
< CARACTERE PRECEDENT.
E212: EQU $
STX SXRAC < SAVE LA VALEUR DU X INITIAL.
CPZ DELET < NATURE DE L'OPERATION DEMANDEE ???
JL E93 < EN MODE DELETE AUTOMATIQUE ,
< ON NE FAIT PAS D' A PARTIR DE ...
<
< EST-CE UN 'A PARTIR DE' ???
<
E430: EQU $
LAD MPART
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < ENTREE DE LA REPONSE.
LBY REP < A=REPONSE UTILISATEUR.
<
< REPONSES RECONNUES :
< R/C , 'EOT' : SEULS SONT EDITES , LES NOMS
< COMMENCANT PAR LA RACINE ,
< 0,...,9 : ON EDITE TOUT LE CATALOGUE A
< PARTIR DES MOTS COMMENCANT PAR
< LA RACINE.
<
CPI '0D
JE E431 < ON RESTERA SUR LA RACINE.
CPI '04
JE E431 < ON RESTERA SUR LA RACINE.
ADRI -'30,A < CONVERSION BINAIRE.
JAL E430 < ERREUR : ON REINTERROGE.
CPI 9 < VALIDATION SUPERIEURE ...
JG E430 < ERREUR : ON REINTERROGE ...
STA XRAC < S'IL S'AGIT D'UN CHIFFRE
< DECIMAL , IL DEVIENT LA
< VALEUR DE TEST DE L'INDEX
< COURANT DE PARCOURS (X).
E431: EQU $
LX SXRAC < RESTAURE L'X INITIAL.
<
< B O U C L E D E R E C U P E R A T I O N :
<
E93: EQU $
LAI 9
BSR AGOSGN < DEMANDE DE NEXT-SERIE.
CPI 5 < TEST DU CODE D'ERREUR.
JE E94 < IL N'Y A PAS DE NEXT SERIE ...
JAE E500 < OK , LE NEXT-SERIE EXISTE.
LR X,A
CP XRAC < EST-ON DE RETOUR SUR LA RACINE ???
JL E50 < OUI , ON ARRETE LE LISTAGE.
ADRI -1,X < DANS LES AUTRES CAS D'ERREURS ,
< ON FAIT UN RETOUR ARRIERE , CAR
< EN EFFET ON NE DOIT PLUS SAVOIR
< OU L'ON EN EST SUITE A UN
< DELETE SIMULTANE ...
JMP E93 < N'ETANT PAS DE RETOUR SUR
< LA RACINE , ON CONTINUE.
<
< CAS OU IL Y A UN NEXT-SERIE :
<
E500: EQU $
LR X,A
CP LMAX < EST-CE LE MAX ???
JGE E500X1 < OUI, ON EDITE...
ADRI 1,X
LBY &ANOM < RECUPERATION DE CE NEXT-SERIE.
CPI '04 < EST-CE UNE FIN DE NOM ???
JNE E93 < NON , ON CONTINUE A RECUPERER.
<
< TRAITEMENT DU NOM COURANT :
<
E500X1: EQU $
PSR X < SAVE L'INDEX COURANT.
CPZ IRECH < FAIT-ON UNE RECHERCHE ???
JE E2010 < NON, TRAITEMENT NORMAL...
<
< CAS DES RECHERCHES SUR ITEM :
<
BSR ASPREC < RECHERCHE DE LA CHAINE COURANTE...
JMP E401A < ET ON VA PASSER AU NOM SUIVANT...
<
< MODE NON-RECHERCHE,
< EDITION DU NOM :
<
E2010: EQU $
LR X,A < A=NBRE DE CARACTERES DU NOM.
AD KCONT < CALCUL DE LA LONGUEUR DU
< MESSAGE A EDITER.
STA DEMOUT+2 < ET MAJ DE DEMOUT AVEC (A).
CPZ INDH < FAUT-IL DE PLUS CONVERTIR EN HEXA?
JE E1002 < NON , ON VA EDITER ....
<
< CONVERSION HEXA DES NOMS :
<
STZ XHNOM < RAZ DE L'INDEX DU NOM HEXA.
STZ XANOM < RAZ DE L'INDEX DU NOM ALPHA.
E1003: EQU $ < BOUCLE DE CONVERSION ALPHA-HEXA.
PSR X < SAVE LE NBRE DE CARACTERES A
< CONVERTIR.
LX XANOM < X=INDEX DU NOM ALPHA.
LBY &ANOM < A=1 CARACTERE ALPHA.
IC XANOM < PROGRESSION DE L'INDEX ALPHA.
SLRD 4 < A=1ER CHIFFRE HEXA , ET SAVE
< LE 2EME DANS B.
BSR AHEXA < CONVERSION HEXA ET MISE DANS
< LE BUFFER HEXA.
LAI 0 < CLEAR A ,
SLLD 4 < ET RECUPERATION DU 2EME CHIFFRE.
BSR AHEXA < CONVERSION HEXA DU 2EME
< CHIFFRE ,, ET MISE DANS LE BUFFER.
PLR X < RESTAURE LE COMPTE DE CARACTERES.
JDX E1003 < AU SUIVANT ...
LX XHNOM < X=INDEX COURANT BUFFER HEXA.
LAI '20 < A='SPACE'.
E1004: EQU $ < BOUCLE DE MISE A 'SPACE' DE
< LA FIN DU BUFFER ...
XR A,X
CPI LNOM+2*4 < EST-ON AU BOUT DU BUFFER ???
JE E1002X < OUI , ON ARRETE ...
XR A,X < NON ,
STBY &AHNOM < MISE A 'SPACE' DU CARACTERE
< COURANT.
ADRI 1,X < AU SUIVANT ,...
JMP E1004
E1002X: EQU $
LA DEMOUT+2 < A=CODEM,
LB DEMOUT+1 < B=AMDEM,
PSR A,B < ET SAVE...
SLRS 1 < POUR FAIRE 2 ECHANGES :
LR A,B < B=CODEM DU 2EME ECHANGE,
ADCR A < A=CODEM DU PREMIER...
STA DEMOUT+2
LAD DEMOUT
SVC 0 < PREMIERE PARTIE DE LA SORTIE...
JNE E50X < CTRL-X-OFF...
LA DEMOUT+1
AD DEMOUT+2 < TRANSLATION DE AMDEM,
STA DEMOUT+1
STB DEMOUT+2
LAD DEMOUT
SVC 0 < DEUXIEME PARTIE DE LA SORTIE...
E50X: EQU $
PLR A,B
STA DEMOUT+2 < RESTAURATION DE LA DEMANDE...
STB DEMOUT+1
JNE E50 < SORTIE ABORTEE PAR CTRL-X-OFF...
JMP E1002Y
E1002: EQU $ < EDITION DU BUFFER.
LAD DEMOUT
SVC 0 < EDITION DU NOM COURANT.
JNE E50 < ARRET SUR CTRL-X-OFF ...
E1002Y: EQU $
CPZ VISUAL < FAUT-IL VISUALISER ???
JE E401A < NON ...
<
< VISUALISATION DE LA VALEUR DU NOM :
<
LX LVAL
E361: EQU $
STZ &ZAVAL < RAZ DE LA VALEUR AU PREALABLE ,
< AFIN DE VOIR SUR LA TV , LA
< NATURE DE LA VALEUR.
JDX E361
LXI LNOM
LAD NOM
LB AVAL
MOVE < LE NOM DE LA VALEUR EST MIS EN
< TETE DE LA VALEUR.
LAD DEMLOD
SVC 0 < CHARGEMENT SOUS ACN DE LA
< VALEUR DU NOM COURANT.
<
< STABILISATION EVENTUELLE DE L'IMAGE VIDEO :
<
IF ORDI-"T",XWOR%,,XWOR%
LA ASP3 < ACCES AU RELAI DE LA ROUTINE.
JAE E401 < ON N'EST PAS SOUS :SYS.
WORD '1EC5 < STABILISATION MAITRE SOUS :SYS.
E401: EQU $
XWOR%: VAL 0
IF ORDI-"S",XWOR%,,XWOR%
LXI 3 < STABILISATION DE L'IMAGE VIDEO
E401: EQU $
STX STABIL+3 < SUR LES TROIS PROCESSEURS.
PSR X
LAD STABIL
SVC 0
PLR X
JDX E401
XWOR%: VAL 0
E401A: EQU $
PLR X < RESTAURE L'INDEX COURANT.
CPZ DELET < EST-ON EN MODE DELETE EVENTUEL ???
JE E322 < NON , PASSAGE AU NOM SUIVANT.
<
< DELETE EVENTUEL D'UN NOM :
<
PSR X < SAVE L'INDEX COURANT.
JL E360 < CAS D'UN DELETE AUTOMATIQUE.
E320: EQU $
LAD MDEL
BSR APRINT < ENVOI D'UNE INVITATION.
LAD DEMREP
SVC 0 < ENTREE REPONSE UTILISATEUR.
LBY REP < A=REPONSE UTILISATEUR.
<
< REPONSES RECONNUES :
< R/C , 'EOT' , + : LE NOM EST CONSERVE ,
< - : LE NOM EST DELETE.
<
CPI '0D
JE E321 < R/C : LE NOM EST CONSERVE.
CPI '04
JE E321 < 'EOT' : LE NOM EST CONSERVE.
CPI "+"
JE E321 < + : LE NOM EST CONSERVE.
CPI "-"
JNE E320 < REPONSE NON RECONNUE ...
E360: EQU $ < ENTRY 'DELETE AUTOMATIQUE'.
LAD DEMDEL
SVC 0 < - : LE NOM EST DELETE.
E321: EQU $
PLR X < RESTAURE L'INDEX COURANT.
E322: EQU $
LR X,A
CP LMAX < EST-ON SUR LE MAX ???
JL E322X < NON...
ADRI -1,X < OUI, ON RECULE...
E322X: EQU $
<
< RECHERCHE DU NEXT-PARALLELE :
<
E98: EQU $
E94: EQU E98 < ENTRY DE 1ERE RECHERCHE NEXT-
< SERIE (CF. RACINE D'UN CATALOGUE)
LAI 8
BSR AGOSGN < RECHERCHE NEXT-PARALLELE.
CPI 5 < TEST DU CODE D'ERREUR.
JE E97 < CAS DU NEXT-PARALLELE QUI
< N'EXISTE PAS ...
JANE E93 < AUTRES CAS DU SUREMENT A UN
< DELETE SIMULTANE QUI DESORIENTE!!!
<
< CAS OU IL Y A UN NEXT-PARALLELE :
<
E330: EQU $
ADRI 1,X
LBY &ANOM < RECUPERATION DE CELUI-CI.
ADRI -1,X
STBY &ANOM < ET ON LE MET A SA BONNE PLACE.
JMP E93 < ET RETOUR A LA BOUCLE DE
< RECUPERATION.
<
< CAS OU IL N'Y A PAS DE NEXT-PARALLELZE :
<
E97: EQU $
ADRI -1,X < RETOU ARRIERE DANS LE NOM.
LR X,A < POUR VALIDATION.
CP XRAC < EST-ON DE RETOUR SUR LA RACINE ???
JGE E98 < NON , ON CONTINUE ...
<
< R E T O U R A ' G E ' :
<
E50: EQU $
LA APILE
LR A,K < RESTAURE EVENTUELLEMENT LA
< PILE K PAR PURE PROPRETE (CF.
< PAR EXEMPLE LES CTRL-X-OFF...)
LAD RELMEM
SVC 0 < REYOUR A 4K MOTS A PRIORI.
LA NGE
STA 0,W < MISE EN PLACE DU NOM DE GE EN
< TETE DE LA BRANCHE D'OVERLAY.
LAI 6
STBY DEMSGN < MISE EN PLACE DU NVP DE LOAD
< SOUS :SYS.
E101: EQU $
LAD DEMSGN
BSR AOVL < TENTATIVE DE CHARGEMENT GE.
LAD DEMCCI
SVC 0 < RETOUR AU CCI SI ERREUR.
JMP E101 < ET NOUVELLE TENTATIVE SI !GO.
PAGE
<
<
< I M P L A N T A T I O N :
<
<
X12: EQU ZERO+PILE-LTNI-LTNI
X10: VAL X12-$
ZEROV: EQU ZERO+X10 < ERREUR D'ASSEMBLAGE SI MAUVAISE
< IMPLANTATION.
DZS X10+1
EOT #SIP GEN PROCESSEUR#
Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.