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#
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.