NMPROC: VAL "EY" < NOM DU PROCESSEUR. IDP "EY - RELEASE 02 - 28/11/80" IDP "EDITEUR EXAUSTIF DES IMAGES DU 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# EOT #SIP IMAGE 256# 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 : < NOMIM: EQU ZERO+PILE+5-LNOM-2 < NOM IMAGE. IMAG: EQU NOMIM+LNOM < IMAGE: ATTENTION!!! SI IMAGE 4K, < ALORS L'IMAGE PROPREMENT DITE NE COMMENCE < QU'EN IMAG + 2 MOTS. PAGE < < < L O C A L : < < TABLE MSTD: BYTE 10;'6D ASCI "STANDARD?" MSAV: BYTE 13;'6D ASCI "SAVE SUR 0B?" MDKV: BYTE 14;'6D ASCI "DISQUE VIDEO?" MEOR: BYTE 23;'6D ASCI "I(N)=I(N-1).EOR.I(N) ?" CDAI: ASCI "!CDA" BYTE "I";'04 LOCAL LOC: EQU $ < < BUFFERS ET MESSAGES : < REP: WORD 0 < REPONSE 1 CARACTERE UTILISATEUR. $EQU REP REP3: DZS 2 < REPONSE SUR 3 OU 4 CARACTERES. HNOM1: BYTE 0;'6D HNOM2: DZS LNOM+2*2 RCLF: BYTE 0;'6D NOM: ASCI "NOIR" < PAR PRUDENCE. BYTE '04;0 LNOIR:: VAL $-NOM DZS LNOM+2-LNOIR BYTE '04;0 < POUR LA RECHERCHE DE L'EOT DE FIN < DE RACINE DE RECERCHE. FNOM: EQU $ MINT: BYTE 3;" ";"?";"?" MRAC: BYTE 8;'6D ASCI "RACINE> " MPART: BYTE 13;'6D ASCI "A PARTIR DE " MOK: BYTE 4;" ";"O";"K";"?" MIMSD: BYTE 16;'6D ASCI "IMAGES SGN/DKU?" MVOL: BYTE 19;'6D ASCI "IMAGES SUR VOLUME?" MLISTD: BYTE 8;'6D ASCI "DELETE? " MPAS: BYTE 11;'6D ASCI "PAS A PAS?" MHEXA: BYTE 13;'6D ASCI "HEXADECIMAL?" < < RELAIS DIVERS : < AOVL: WORD OVL < CHARGEMENT DES OVERLAYS. AGOSGN: WORD GOSGN < APPEL DU SGN POUR CATAL. ATEST: WORD TEST < TEST NOM COURANT (IMAGE OU PAS...). ALVIS: WORD LVIS < LOAD ET VISUALISATION IMAGE. AVISU: WORD VISU < VISUALISATION SEULE... APRINT: WORD PRINT < EMISSION MESSAGE. AHEXA: WORD HEXA < CONVERSION BINAIRE-->HEXADECIMAL. ACCI: WORD CCI < APPEL CCI INTERPRETATIF. AIHEX: WORD HEX < CONVERSION : ASCI --> BIANIRE. AGOGE: WORD E50 < RETOUR A 'GE'. AE351: WORD E351 < RELAI DU MODE STANDARD... AREPX: WORD REP,X < RELAI INDEXE VERS LA REPONSE... ANOM: WORD NOM,X < RELAI D'ACCES AU NOM COURANT. AHNOM: WORD HNOM2,X < RANGEMENT DU NOM EN HEXA. AIMAG: WORD IMAG,X < POUR ATTEINDRE L'IMAGE ET FAIRE 'EOR'... ASTACK: WORD STACK-1 < PILE DU PROCESSEUR. 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). ISAVE: WORD 0 < 0=PAS DE SAUVEGARDE, < 1=SAUVEGARDE DES IMAGES EN MEMOIRE < D'IMAGE SUR BANDE MAGNETIQUE. IDKV: WORD 0 < INDICATEUR D'ENVOI SUR LE DISQUE VIDEO : < 0 : NON, < 1 : OUI. WDKV: BYTE "I";'0D < COMMANDE D'ECRITURE INCREMENTALE. LWDKV:: VAL $-WDKV < LONGUEUR DE 'WDKV'. IDEL: DZS 1 < INDICATEUR MODE DELETE: < = 0 : NON, < = 1 : OUI. IPAS: DZS 1 < INDICATEUR MODE PAS A PAS: < = 0 : OUI, < = 1 : NON. ITYPIM: WORD 1 < INDICATEUR TYPE D'IMAGE: < = 0 : IMAGE 4K, < = 1 : IMAGE 12 K NOUVEAU MODELE, < =-1 : IMAGE 12K ANCIEN MODELE, < = 2 : IMAGES 12K SGN/DKU. < (INITIALISE POUR "NOIR"...) IIMSD: DZS 1 < INDICATEUR DE PRISE EN COMPTE DES IMAGES < SGN/DKU: < = 0 : LES IGNORER, < = 1 : LES PRENDRE EN COMPTE. CLI4K: WORD LIMAG+2*2 < LONGUEUR OCTETS IMAGE 4K. CLI12K: WORD LIMAG*3*2 < LONGUEUR IMAGE 12 K NOUVEAU MODELE. 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. < < POUR FAIRE I(N-1).EOR.I(N) : < IEOR: WORD 0 < =0 : NE RIEN FAIRE, < #0 : FAIRE I(N)=I(N-1).EOR.I(N), SACHANT < QUE I(0)="NOIR"... < =+1 : SAVE (COMPACTAGE), < =-1 : RESTAURE (DECOMPACTAGE). XEOR: WORD 0 < MOT COURANT DE LA "CDAI"... XLIMAG: WORD LIMAG*3 < LONGUEUR EN MOT D'UNE IMAGE 12K... < < 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 NOMIM-ZERO*2 WORD LIMAG*3+LNOM*2 < (INITIALISE DELTA: WORD LNOM*2 < POUR "NOIR") DEMDEL: WORD '0302 < DELETE NOM. WORD NOM-ZERO*2 WORD LNOM+2*2 WORD LNOM*2 DMRDKU: WORD '8A00 < LECTURE IMAGE 12K SGN/DKU SUR DKU. WORD IMAG-ZERO*2 WORD LIMAG*3*2 ASDKU: DZS 1 < ADRESSE SECTEUR DKU. DMLISD: WORD '0502 < LOAD IMAGE SGN/DKU. WORD NOM-ZERO*2 WORD ASDKU-NOM*2+2 WORD ASDKU-NOM*2 DEMREP: WORD '0101 < ENTREE REPONSES UTILISATEUR. WORD REP-ZERO*2 WORD 1 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. OUI: ASCI "OUI" DMREP3: WORD '0101 < DEMANDE REPONSE DE 3 CARACTERES. WORD REP3-ZERO*2 WORD 3 DEMM16: WORD '0004 < DEMANDE MEMOIRE DE 16 K MOTS. WORD 0 WORD '8000 DEMTST: WORD '8502 < LOAD SGN POUR TESTER NOM COURANT. WORD NOM-ZERO*2 WORD FNOM-NOM*2 WORD -1 RELMEM: WORD '0004 < DEMANDE DE RETOUR A 4K MOTS. WORD 0 WORD '2000 < 4K MOTS. STABIL: WORD '8A01 < STABILISATION DE L'IMAGE VIDEO. DZS 1 WORD '2000 WORD 0 DWDKV: WORD '8C02 < ECRITURE SUR LE DISQUE VIDEO. WORD WDKV-ZERO*2 WORD LWDKV*2 < < SAUVEGARDE SUR L'UNITE '0B : < NVPSAV:: VAL '0B SAVB: BYTE NVPSAV;'0B < FONCTION DE PASSAGE A 'MEMTV'... WORD 0 < SAUVEGARDE A PARTIR DU PREMIER MOT, WORD LIMAG*3*2 < DE TOUS LES MOTS... WORD 0 < < ACCES AU VOLUME EXTENSION : < AASDKU: ASCI "!ASSIGN A=DK" BYTE "U";'04 MVDKU: ASCI "!DKU M A" NAVOL: BYTE "=";"X";"Y";"Z";"T";'04 ANAVOL: WORD NAVOL,X < POUR GENERER LE NUMERO DE VOLUME. MCLOSE: ASCI "!ASSIGN A=" BYTE "S";'04 VOLNUM: WORD 0 < NUMERO DU VOLUME COURANT (0=ABSENT)... DEMCC: WORD 2 < ACCES AU CCI INTERPRETATIF. WORD 0 < ADRESSE DE LA CARTE. WORD 80 NBRHEX: VAL 4 < NOMBRE DE CHIFFRES HEXA-DECIMAUX... DEMHEX: WORD '0101 WORD REP-ZERO*2 WORD NBRHEX MVOLNU: BYTE 8;'6D ASCI "VOLUME=" LIMVO:: VAL 2 < LONGUEUR MOT DE L'EXTENSION. IVALEX:: VAL 0 < BIT DE DISCRIMINATION EXTENSION 'BOX'. PROG PAGE 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 CH)ST TOUT ... 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 < < < E N V O I D ' U N E C A R T E A U C C I : < < < ARGUMENT : < A=ADRESSE MOT DE LA CARTE. < < CCI: EQU $ ADR A,A < CONVERSION EN UNE ADRESSE OCTET. STA DEMCC+1 LAD DEMCC SVC 0 < ET ENVOI DE LA CARTE... RSR PAGE < < < C O N V E R S I O N H E X A --> B I N A I R E : < < < ARGUMENT : < LE BUFFER 'REP'. < < < RESULTAT : < B=0 : (A)=VALEUR BINAIRE, < B#0 : ERREUR DE SYNTAXE HEXA-DECIMALE. < LES INDICATEURS POSITIONNES SUR (B). < < HEX: EQU $ BASE10: VAL 10 BASE16: VAL 16 NBRHEX: VAL 4 PSR X,Y LYI NBRHEX LXI 0 < INDEX DU BUFFER DE REPONSE. LBI 0 < CLEAR LE REGISTRE B. HEX1: EQU $ LBY &AREPX < A=CARACTERE COURANT DU BUFFER. ADRI -"0",A JAL HEX4 < ERREUR : CARACTERE NON RECONNU. CPI BASE10 < EST-CE UN CHIFFRE ??? JL HEX2 < OUI , C'EST UN CHIFFRE. ADRI -"A"+"9"+1,A < NON. CPI BASE10 < VALIDATION. JL HEX4 < ERREUR : CARACTERE NON RECONNU. CPI BASE16 < VALIDATION. JGE HEX4 < ERREUR : CARACTERE NON RECONNU. HEX2: EQU $ SCRS NBITMO/NBRHEX < MISE DES 4 BITS EN TETE DE A. SCLD NBITMO/NBRHEX < ET CONCATENATION A B. ADRI 1,X < PROGRESSION DE L'INDEX. CPR X,Y < EST-CE FINI ??? JNE HEX1 < NON , ON CONTINUE. LR B,A < A=VALEUR BINAIRE DE (REP). LBI 0 < B=0 : RETOUR OK. HEX3: EQU $ PLR X,Y CPZR B < POSITIONNEMENT DES INDICATEURS. RSR < < RETOURS EN ERREUR : < HEX4: EQU $ LR B,A < A=VALEUR COURANTE... LBI 1 < B#0. JMP HEX3 < VERS LA SORTIE ... 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 D'EXPLORER LE CATALOGUE DES NOMS < EN N'EN RETENANT QUE LES IMAGES QUI SONT SYSTEMATIQUE- < MENT VISUALISEES. < ON PEUT TRAVAILLER EN PAS A PAS OU AUTOMATIQUEMENT, < ET L'ON PEUT DELETER OU NON LES IMAGES. < IL EXISTE 4 TYPES D'IMAGES: < - IMAGE 4K, < - IMAGE 12 K ANCIEN MODELE, < - IMAGE 12 K NOUVEAU MODELE, < - IMAGE 12 K SGN/DKU, CES IMAGES N'ETANT PAS "DELETABLES" < - IMAGE 12K D'EXTENSION SUR VOLUME. < < WORD LOC+'80 WORD BRANCH CATAL: EQU $ LRP K ADRI -1,K PLR L,W < INITIALISATION DE L ET W. LA ASTACK 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 : < STZ IDEL < MODE DELETE = NON A PRIORI. STZ IPAS < MODE PAS A PAS = OUI A PRIORI. STZ IIMSD < A PRIORI ON IGNORE LES IMAGES SGN/DKU. STZ ISAVE < PAS DE SAUVEGARDE SUR '0B A PRIORI... STZ VOLNUM < PAS DE VOLUME... < < ALLOCATION MEMOIRE : < LAD DEMM16 SVC 0 < 16K... < < MODE STANDARD OU PAS ??? < LAI MSTD-ZERO BSR APRINT LAD DEMREP SVC 0 LBY REP < (A)=REPONSE, CPI "O" JNE E351Y1 < NON... BR AE351 < MODE STANDARD : PAS DE VOLUME, PAS DE < DELETE, PAS DE SAUVEGARDE ET PAS A PAS... E351Y1: EQU $ CPI "N" JNE E340 < ?!?!???! < < CAS DU MODE NON STANDARD, < FAUT-IL SAUVEGARDER ??? < E340X1: EQU $ LAI MSAV-ZERO BSR APRINT LAD DEMREP SVC 0 LBY REP < (A)=REPONSE, CPI "N" JE E340X2 < PAS DE SAUVEGARDE... CPI "O" JNE E340X1 < ??!??!??! IC ISAVE < ISAVE=1... E340X3: EQU $ LAD SAVB SVC 0 < ON ESSAIE DE COMMUTER LE DEROULEUR DE < BANDES SUR LA MEMOIRE D'IMAGE... JE E340X4 < OK... QUIT 1 < ERREUR, !ASSIGN ??? JMP E340X3 < ON RE-TENTE... E340X4: EQU $ LAI '02 STA SAVB < ON MET 'SAVB' EN LAI NVPSAV STBY SAVB < MODE ECRITURE... E340X2: EQU $ < < I(N)=I(N-1).EOR.I(N) ??? < E340Z1: EQU $ STZ IEOR LAI MEOR-ZERO BSR APRINT < ENVOI D'UN MESSAGE... LAD DEMREP SVC 0 < LECTURE DE LA REPONSE : LBY REP CPI "N" JE E340Z2 < NON, PAR DE "EOR"... STZ IEOR DC IEOR < IEOR=-1 A PRIORI (RESTAURATION)... CPI "R" JE E340Z3 STZ IEOR IC IEOR < IEOR=+1 A PRIORI (SAUVEGARDE)... CPI "S" JNE E340Z1 < ?!?!??!?! E340Z3: EQU $ LXI FNOM-NOM LAD NOM LRM B WORD NOMIM MOVE < MISE EN PLACE DU NOM "NOIR", LAI 6 STBY DEMLOD < POUR ACCEDER A ":SYS"... LAD DEMLOD SVC 0 < INITIALISATION : I(0)="NOIR"... BSR AVISU < AFFICHAGE DE "NOIR"... LAI 5 STBY DEMLOD < POUR ACCEDER A <ACN>... LAI CDAI-ZERO BSR ACCI < ET ON VA ACCEDER A "CDAI"... E340Z2: EQU $ < < ECRITURE SUR LE DISQUE VIDEO ??? < E340Y1: EQU $ LAI MDKV-ZERO BSR APRINT < ENVOI D'UN MESSAGE, LAD DEMREP SVC 0 < LECTURE D LA REPONSE : LBY REP < (A)=REPONSE : CPI "N" JE E340Y2 < "N" : IDKV=0, CPI "O" JNE E340Y1 < ?!??!??! IC IDKV < "O" : IDKV=1. E340Y2: EQU $ < < 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 $ < < < D E F I N I T I O N D U V O L U M E C O U R A N T : < < LAI MVOL-ZERO BSR APRINT LAD DEMREP SVC 0 < FAUT-IL ATTEINDRE UN VOLUME ??? LBY REP CPI "O" JE VOL3 < OUI... CPI "N" JNE E1001 < ?!?!!!?! JMP VOL4 VOL3: EQU $ VOLUME: EQU $ LAD MCLOSE BSR ACCI < LIBERATION PREVENTIVE DE 'A, STZ VOLNUM < ET PAS DE VOLUME A PRIORI... LAD MVOLNU BSR APRINT < DEMANDE DU NUMERO DE VOLUME : LAD DEMHEX SVC 0 BSR AIHEX < ET CONVERSION BINAIRE : JNE VOLUME < BERK... < < MONTAGE DU VOLUME DEMANDE : < JAE VOLUM1 < EN FAIT, IL S'AGIT D'UN DEMONTAGE, OK... STA VOLNUM < ET NON, MONTAGE : MEMORISATION DU NUMERO < DE VOLUME, LAD AASDKU BSR ACCI < ON TENTE DE S'APPROPRIER 'DKU' : JNE VOL2 < IMPOSSIBLE, ERRORV, ON DEMONTE... LXI 4 < OK, ON A 'DKU', VOL1: EQU $ ADRI -1,X LBY &AREPX < TRANSFERT DU NOM ADRI 1,X STBY &ANAVOL < DU VOLUME EN ASCI... JDX VOL1 LAD MVDKU BSR ACCI < ET TENTATIVE DE MONTAGE... JE VOLUM1 < OK, ON VA ACCEDER A DES IMAGES DE TYPE < EXTENSION SUR VOLUME... LAD MCLOSE BSR ACCI < ERREUR DE VOLUME... VOL2: EQU $ STZ VOLNUM < ET ON DEMONTE SI ERREUR... JMP VOLUME < ET ON REDEMANDE... VOLUM1: EQU $ JMP E300 < ON SAUTE SGN/DKU... < < FAUT-IL AUSSI LISTER LES IMAGES SGN/DKU ? < VOL4: EQU $ LAD MIMSD BSR APRINT LAD DEMREP SVC 0 LBY REP CPI "N" JE E300 CPI "O" JNE E1001 IC IIMSD < OUI, DONC PAS DE DELETE POSSIBLE... JMP E350 < < EST-CE UN LISTAGE AVEC DELETE EVENTUEL ??? < E300: EQU $ LAD MLISTD BSR APRINT < ENVOI D'UNE INVITATION. LAD DEMREP SVC 0 < ENTREE DE LA REPONSE. LBY REP < A=REPONSE UTILISATEUR. CPI "N" JE E350 < LISTAGE - VISUALISATION UNIQUEMENT. CPI "O" JNE E300 < REPONSE INCORECTE. < DELETE DEMANDE, CONFIRMER EN REPONDANT "OUI". LAD MOK BSR APRINT LAD DMREP3 SVC 0 LA REP3 CP OUI JNE E300 LBY REP3+1 CPI "I" JNE E300 IC IDEL < MODE DELETE = OUI. E350: EQU $ LAD MPAS BSR APRINT < ENVOI DE L'INVITATION DE DELETE < EN PAS A PAS ... LAD DEMREP SVC 0 < LECTURE DE LA REPONSE. LBY REP < A=REPONSE UTILISATEUR. CPI "N" JE E351 < DEMANDE D'AUTOMATIQUE. CPI "O" JNE E350 < ERREUR DE REPONSE ... IC IPAS < MODE AUTOMATIQUE. E351: EQU $ < < 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. < < 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 $ 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. BSR ATEST < TEST DU NOM (IMAGE OU PAS ET 'ITYPIM'). JNE E98 < CE N'EST PAS UNE IMAGE. < < EDITION DU NOM COURANT : < PSR X < SAVE L'INDEX COURANT. 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 ... < < VISUALISATION DE L'IMAGE. < E1002Y: EQU $ LXI FNOM-NOM LAD NOM LRM B WORD NOMIM MOVE < MOVE NOM IMAGE EN TETE DE LA FUTURE < ZONE A VISUALISER. BSR ALVIS < LOAD ET VISUALISATION. CPZ ISAVE < FAUT-IL SAUVEGARDER ??? JE E320Y1 < NON... E320Y2: EQU $ LAD SAVB SVC 0 < OUI, ON ESSAYE... JE E320Y1 < OK... QUIT 1 < ERREUR ???!?! JMP E320Y2 < ON RE-TENTE... E320Y1: EQU $ CPZ IDKV < SAUVEGARDE-T'ON SUR LE DISQUE VIDEO ??? JE E320Z1 < NON.... LAD DWDKV SVC 0 < OUI, EN INCREMENTAL ("I")... E320Z1: EQU $ < < PAS A PAS EVENTUEL, DELETE EVENTUEL SUR IMAGE COURANTE. < LAI "-" < POUR EVENTUEL DELETE AUTOMATIQUE. CPZ IDEL JNE E320Y LAI '0D < POUR VISUALISATION AUTOMATIQUE EVENTUELLE E320Y: EQU $ CPZ IPAS < PAS A PAS ? JE E320 < MODE AUTOMATIQUE. E320X: EQU $ < MODE PAS A PAS. LAD MINT < INTERROGATION. BSR APRINT LAD DEMREP SVC 0 LBY REP < 'A' = REPONSE. CPZ IDEL < SI MODE DELETE = NON, JE E321 < ALORS C'EST FINI POUR CETTE IMAGE. E320: EQU $ < EXAMEN DE LA REPONSE. CPI '0D JE E321 CPI '04 JE E321 CPI "+" JE E321 CPI "-" JNE E320X < REPONSE INCORRECTE. < < DELETE DE L'IMAGE. < NSPDKU:: VAL 'A3 < DISCRIMINATEUR D'EXTENSION... CPZ VOLNUM < Y-A-T'IL UN VOLUME DE MONTE ??? LAI 0 JE E321X < NON... LAI NSPDKU < OUI, E321X: EQU $ STBY DEMDEL+3 < ON MET EN PLACE LE DISCRIMINATEUR... LAD DEMDEL SVC 0 < ENVOI DE LA DEMANDE DE DELETE. JE $+2 ACTD E321: EQU $ PLR X < RESTAURE L'INDEX COURANT. E322: 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. CPZ VOLNUM < VOLUME MONTE ??? JE E50X1 < NON... LAD MCLOSE < OUI, BSR ACCI < ON LIBERE 'A... E50X1: EQU $ 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 TEST: EQU $ < < T E S T N O M C O U R A N T. < < - ARGUMENT: < 'NOM' DU LOCAL. < < - RESULTAT: < AU RETOUR FAIRE: < JE IMAGE < C'EST UNE IMAGE. < JNE PASIMAGE < ... < < 'ITYPIM': EST SIGNIFICATIF SI C'EST UNE IMAGE, < = 0 : IMAGE 4 K, < = 1 : IMAGE 12 K NOUVEAU MODELE, < =-1 : IMAGE 12 K ANCIEN MODELE, < = 2 : IMAGE 12K SGN/DKU. < = 3 : IMAGE SUR VOLUME. < PSR A,B,X,Y < SAUVEGARDES. STZ ITYPIM < A PRIORI. LAD DEMTST < LOAD POUR AVOIR LA BOX. SVC 0 JE $+2 ACTD WORD '1E35 < 'B' = (BOX). LR B,A JAGE TEST6 < CE NE PEUT ETRE UNE EXTENSION VOLUME... RBT IVALEX CPI LIMVO*2 < VALIDATION ??? JE TEST10 < OK... ACTD < E R R E U R ... TEST10: EQU $ CPZ VOLNUM < C'EST UNE EXTENSION, MAIS Y-A-T'IL UN < VOLUME DE MONTE ??? JE TEST2 < NON, ON IGNORE CETTE IMAGE... LAI 3 < OUI, JMP TEST7 < ON VA LA VISUALISER... TEST6: EQU $ CP CLI4K JE TEST1 < IMAGE 4K. CPI 2 JE TEST5 < IMAGE SGN/DKU. CP CLI12K JL TEST2 < CE N'EST PAS UNE IMAGE. JE TEST3 < IMAGE 12K NOUVEAU MODELE. DC ITYPIM < IMAGE 12K ANCIEN MODELE. JMP TEST1 TEST3: EQU $ IC ITYPIM < IMAGE 4K NOUVEAU MODELE. TEST1: EQU $ LYI 0 < C'EST UNE IMAGE. JMP TEST4 TEST5: EQU $ < IMAGE 12K SGN/DKU. CPZ IIMSD < LA PRENDRE EN COMPTE ? JE TEST2 < NON. LAI 2 < OUI, TEST7: EQU $ STA ITYPIM < TYPE IMAGE = 12K SGN/DKU. JMP TEST1 TEST2: EQU $ LYI 1 < CE N'EST PAS UNE IMAGE. TEST4: EQU $ CPZR Y < POUR TEST AU RETOUR. PLR A,B,X,Y < RESTAURATIONS. RSR PAGE LVIS: EQU $ < < L O A D E T V I S U A L I S T I O N I M A G E. < < ARGUMENT: < - 'ITYPIM': INDICATEUR TYPE IMAGE. < < L'IMAGE 12 K EST VISUALISEE PAR TRANSFERT DANS LES STACKS RVB, < L'IMAGE 4K EST VISUALISEE PAR DUPLICATION DANS CHACUN DE CES TROIS < STACKS. < PSR A,B,X < SAUVEGARDES. LA ITYPIM JAE LVIS2 < IMAGE 4K. CPI 2 JE LVIS7 < IMAGE 12K SGN/DKU. JL LVIS9 < CE N'EST PAS UNE EXTENSION... LRM A,B < C'EST UNE EXTENSION SUR VOLUME : WORD LNOM+LIMVO*2 BYTE NSPDKU;LNOM*2 JMP LVIS1 < VERS LA VISULISATION... LVIS9: EQU $ LRM A,B < LONGUEUR ET DELTA A PRIORI. WORD LIMAG*3+LNOM*2 WORD -1 CPZ ITYPIM JL LVIS1 < IMAGE 12K ANCIEN MODELE. LBI LNOM*2 < CHANGER DELTA POUR NOUVEAU MODELE. LVIS1: EQU $ STA DEMLOD+2 < LONGUEUR. STB DEMLOD+3 < DELTA. JMP LVIS3 LVIS2: EQU $ < IMAGE 4K. LRM A,B < LONGUEUR ET DELTA. WORD LIMAG+LNOM+2*2 WORD LNOM*2 JMP LVIS1 < VERS STA STB ET LOAD. LVIS3: EQU $ LAD DEMLOD < LOAD IMAGE. SVC 0 JE LVIS8 ACTD LVIS7: EQU $ < IMAGE 12K SGN/DKU. LAD DMLISD < LOAD SGN (VALEUR = ADRESSE SECTEUR DKU). SVC 0 LAD DMRDKU < READ DKU DAND 'IMAG'. SVC 0 JE LVIS8 ACTD LVIS8: EQU $ LBY DEMLOD+3 CPI NSPDKU < ETAIT-CE UNE EXTENSION VOLUME ??? JE LVISB < OUI, PAS DE VISUALISATION... < < I(N)=I(N-1).EOR.I(N) ??? < (AVEC : I(N-1)=ECRAN, < I(N)=RESIDENT ET I(0)="NOIR") < LA ITYPIM CPI 1 < EST-CE UNE IMAGE 12K ??? JNE EOR1 < NON... CPZ IEOR < OUI, FAUT-IL FAIRE "EOR" ??? JE EOR1 < NON... PSR A,B,X,Y < OUI : JL EOR3 < IEOR=-1 : RESTAURATION... LRM A,B,X < SAUVEGARDE DE L'IMAGE I(N), SIMAG:: VAL 'D000 < ZONE DE SAUVEGARDE EN "CDAI" COMPATI- < BLE AVEC LE MODE ENTRELACAGE DE CMS5. WORD SIMAG WORD IMAG WORD LIMAG*3 WCDA EOR3: EQU $ LYI 0 < (Y)=INDEX COURANT DU "EOR", EOR2: EQU $ LAD XEOR LR A,B < (B)=ADRESSE DU RECEPTEUR RESIDENT, LR Y,A < (A)=ADRESSE DE L'EMETTEUR EN "CDAI", LXI 1 < (X)=1 MOT A TRANSFERER, RCDA < ACCES AU MOT COURANT DE I(N-1), LR Y,X < (X)=INDEX COURANT DE I(N), LA &AIMAG < I(N), EOR XEOR < I(N).EOR.I(N-1), STA &AIMAG < I(N)=I(N).EOR.I(N-1). ADRI 1,Y < PASSAGE AU MOT SUIVANT, LR Y,A CP XLIMAG < SI EXISTE... JL EOR2 < ET OUI... LBY DEMLOD PSR A < SAUVEGARDE DE NVP(DEMLOD), LAI 3 STBY DEMLOD LAD DEMLOD SVC 0 < DESTRUCTION DE L'IMAGE COURANTE, LAI 4 STBY DEMLOD LAD DEMLOD SVC 0 < ET RECREATION APRES "EOR"... PLR A STBY DEMLOD < ET RESTAURATION DE NVP(DEMLOD). CPZ IEOR JL EOR4 < IEOR=-1 : RESTAURATION... LRM A,B,X < RESTAURATION DE I(N) AVANT "EOR" < POUR LA VISUALISATION... WORD SIMAG WORD IMAG WORD LIMAG*3 RCDA EOR4: EQU $ PLR A,B,X,Y EOR1: EQU $ < < VISUALISATION. < LVIS10: EQU $ LRM A < ADRESSE OCTET DEBUT IMAGE. WORD IMAG-ZERO*2 CPZ ITYPIM JNE LVIS6 ADRI 4,A < IMAGE 4K: L'IMAGE PROPREMENT DITE NE < COMMENCE QU'AU 3EME MOT DE LA VALEUR. LVIS6: EQU $ STA STABIL+1 LXI 3 < 3 STACKS. LRM B < INCREMENT EVENTUEL ADRESSE A VISUALISER. WORD LIMAG*2 LVIS4: EQU $ < BOUCLE DE VISUALISATION, PSR X LAI 4 SBR X,A STA STABIL+3 < NUMERO STACK COURANT. LAD STABIL SVC 0 JE $+2 ACTD CPZ ITYPIM JE LVIS5 < INCREMENTER L'ADRESSE A VISUALISER. LA STABIL+1 ADR B,A STA STABIL+1 LVIS5: EQU $ PLR X JDX LVIS4 LVISB: EQU $ < PLR A,B,X < RESTAURATIONS. RSR < < < E N T R Y V I S U A L I S A T I O N S E U L E : < < VISU: EQU $ PSR A,B,X JMP LVIS10 PAGE < < < I M P L A N T A T I O N : < < STACK: DZS 20 < PILE DU PROCESSEUR. 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#