NMPROC: VAL "GE" < NOM DU PROCESSEUR. IDP "SODOME - RELEASE 01/06/1979" IDP "JOHN F. COLONNA" PAGE EOT #SIP DEFINITION CMS5# IF ORDI-"S",XWOR%,,XWOR% IDP "VERSION SOLAR SOUS CMS5" XWOR%: VAL 0 IF ORDI-"T",XWOR%,,XWOR% IDP "VERSION T1600 SOUS CMS4" XWOR%: VAL 0 EOT #SIP DEF PROCESSEUR# PROG WORD SODOME < @POINT D'ENTREE DE SODOME. WORD 0 GOMORE: EQU $ < P DE LANCEMENT DE SODOME LORS < DE SON APPEL PAR LE CCI DE CMS4. < A NOTER : P='12...) LRP L BR -2,L < ENTRY DANS SODEOME ... PAGE EOT #SIP DEFINITION ITEM# LNOM: VAL '26 < NBRE MAX DE CARACTERES D'UN NOM < DE BANDES MAGNETIQUES. ITEM1: EQU ZERO+PILE-LTNI < @ITEM1. ITEM2: EQU ITEM1-LTNI < @ITEM2. PAGE < < < C A R T E S P O U R L E C C I : < < TABLE MDATE: ASCI "!DAT" BYTE "E";'04 CASS: ASCI "!ASSIGN 2=" BYTE "S";'04 MSGN: ASCI "!SGN" BYTE '04;0 PAGE < < < A C C E S A L A L R U M A G : < < NMAG: VAL 9 < NBRE DE MAGNETOSCOPES DU < SYSTEME (NUMEROTES DE 0 A NMAG-1) < < E N - T E T E S O U S : S Y S : < LRUMAG: ASCI ":EAO" BYTE '04;":" ASCI "MA" BYTE "G";'1F BYTE '04;0 LLRU: VAL $-LRUMAG*2 < LONGUEUR DU NOM D'ACCES A LRU. < < P I L E L R U : < < FORMAT DE CHAQUE ENTREE : < BIT0=0 : MAGNETOSCOPE EN SERVICE , < =1 : MAGNETOSCOPE HS , < BITS1-7=NUMERO DU MAGNETO (DE 0 A NMAG-1) , < BIT8=1 : INUTILISE , < BITS9-15=ID DE L'UTILISATEUR POSSEDANT CE MAGNETO. < LRU: EQU $ DO NMAG BYTE $-LRU;'FF < MAGNETOSCOPE LIBRE INITIALEMENT. < < N O M S D E S B A N D E S M O N T E E S : < TAPES: EQU $ DO NMAG DZS LNOM/2 LMAG: VAL $-LRUMAG*2 < LONGUEUR TOTALE EN OCTETS. PAGE < < < L O C A L : < < CARTE: EQU ZERO+PILE-100 < BUFFER DE LECTURE DES CARTES < EN MODE BINAIRE (UNE COLONNE < DE LA CARTE PAR MOT). LOCAL LOC: EQU $ < < M E S S A G E S : < MWELC: BYTE 35;'6D ASCI " SMC VOUS SOUHAITE LA BIENVENUE!" BYTE "!";'6D MERR: BYTE 7;'6D ASCI "!!ERR." MESGN: BYTE 5;'6D ASCI "!SGN" MASSGN: BYTE 7;'6D ASCI "!ASSGN" MPAR: BYTE 7;'6D ASCI "!CARTE" MLRU: BYTE 18;'6D ASCI "OK DELETE LRU MAG " M1: BYTE 11;'6D ASCI "1 SECTEUR?" M16: BYTE 9;'6D ASCI "ALORS 16" MMG: BYTE 5;'6D ASCI "MGXY" MHS: BYTE 3;" " ASCI "HS" MES: BYTE 7;" " ASCI "IDXY" ASCI " =" MNOM: BYTE 5;'6D ASCI "NOM>" MDK: BYTE 3;'6D ASCI "DK" MAS: BYTE 3;'6D ASCI "AS" MQUOI: BYTE 2;'6D;">";0 MKM: BYTE 3;'6D ASCI "KM" MINC: BYTE 1;"?" MCOM: BYTE 2;'6D ASCI "* " BUFFER: DZS 2 < BUFFER D'ENTREE DES COMMANDES , < DE PUNCH DES C ARTES , ET < D'ENTREE DES NOMS DE PROCESSEURS. < < D E M A N D E S A C M S 4 : < DEMOUT: WORD '0202 < ENVOI D'UN MESSAGE SUR LA VISU. WORD 0 < @OCTET DU BUFFER. WORD 0 < NBRE DE CARACTERES DU MESSAGE. DEMIN: WORD '0101 < ENTRRE SUR VISU AVEC ECHO. WORD BUFFER-ZERO*2 WORD 1 < 1 CARACTERE A PRIORI. DEMPCH: WORD '0B02 < DEMANDE DE PUNCH SUR NVP=11. WORD BUFFER-ZERO*2 WORD 2 < 1 COLONNE=2 OCTETS. DEMCR: WORD '0A08 < DEMANDE DE LECTURE BINAIRE < SUR NVP=10. WORD CARTE-ZERO*2 WORD 2*80 < NBRE D'OCTETS POUR UNE CARTE < BINAIRE. DEMSGN: WORD '0602 < DEMANDE DE 'LOAD SOUS :SYS'. WORD BRANCH-ZERO*2 WORD ZERO-BRANCH+PILE-LTNI-LTNI*2 WORD -1 DEMLRU: WORD '000A < DEMANDE D'ACCES A LA LRU < SOUS L'ACN :EAO. WORD LRUMAG-ZERO*2 WORD LMAG WORD LLRU < DEPLACEMENT D'ACCES A LA LRU < PROPREMENT DITE ; EN EFFET < L'EN-TETE DE LA LRU SOUS :SYS < CONTIENT L'ACN :EAO ; IL Y A < DONC UN DECALALGE PAR RAPPORT < A LA LRU :EAO .... DEMCCI: WORD '0001 < DEMANDE DE RETOUR AU CCI. DEMINT: WORD '0002 < ACCES AU CCI NON INTERACTIF. WORD 0 < @OCTET DE LA CARTE A INTERPRETER. WORD 80 < LONGUEUR MAX D'UNE CARTE. SLEEP: WORD '0005 < DEMANDE DE MISE EN SOMMEIL. WORD 0 WORD 3 < POUR 3 SECONDES. CCINSP: WORD '0003 < DEMANDE D'ASSIGNATION DU < NVP=9 , A UN DISQUE. WORD '0900 < NVP=9 , NSP=NSPDK1/2/3. DEMDK: WORD '0900 < DEMANDE DE LECTURE SUR NVP=9. WORD ITEM2-ZERO*2 WORD 256 < 1 SECTEUR=256 OCTETS. WORD 0 < @SECTEUR COURANT. < < R E L A I D E T A B L E S : < ACOM: WORD TCOM,X < TABLE DES COMMANDES SOUS :SYS. AI2: WORD ITEM2-1,X < RELAI DESTINE A RAZER ITEM2 , < ET ITEM1 AVEC UN INDEX ALLANT < JUSQU'A 1 PAR JDX. ACARTE: WORD CARTE+80,X < RELAI VERS LA CARTE BINAIRE. ABUF: WORD BUFFER,X < RELAI BUFFER D'ENTREE. ACASS: WORD CASS+4 < POUR MISE A JOUR DU NVP DE CASS. ALRU: WORD LRU-1,X < POUR UN PARCOURS DE LA LRU < INDEXE DE NMAG A 1. AFLRU: WORD $+1,X;SERV;HS;DEMONT ATAPES: WORD TAPES < @LISTE DES NOMS DE BANDES. NOMTAP: WORD 0 < RELAI VERS LE NOM DE LA < BANDE COURANTE. IF ORDI-"T",XWOR%,,XWOR% ABOOT: WORD BOOT < ADRESSE DE LANCEMENT DU MODULE < STAND ALONE DE LECTURE CARTES. XWOR%: VAL 0 APILE: WORD PILE-1 < POUR INITIALISER K. < < R E L A I D E S R O U T I N E S : < AOVL: WORD OVL < CHARGEMENT DE L'OVERLAY 'GE '. APRINT: WORD PRINT < ENVOI D'UN MESSAGE. ASVC: WORD SVC < EXECUTION D'1N SVC ET SAVE (X). ANMP: WORD NMP < DEMANDE DU NOM D'UN PROCESSEUR. ACTTE: WORD CTTE < ENTREE D'UNE CONSTANTE HEXA. ACONV: WORD CONV < CONVERSION HEXA-DECIMALE. ACV10: WORD CV10 < CONVERSION DECIMALE 1 CHIFFRE. AFINDM: WORD FINDM < RECHERCHE D'UN MAGNETO DANS < LA PILE LRU. AMAGS: WORD MAGS < ACCES AU SGN POUR LA LRU. ADIV: WORD DIV < CONVERSION BASE 10. AADB: WORD ADB < GENERATION RELAI VERS LE < NOM D'1NE BANDE. APUNCH: WORD PUNCH < PUNCH N CARTES. APCH1: WORD PUNCH1 < PUNCH PREMIERES COLONNES CARTE. APCHK: WORD PUNCHK < PUNCH DERNIERE COLONNE ET TEMPO. APUNR: WORD PUNR < ROUTINE DE PUNCH CARTE 'R '. APUNRC: WORD PUNRC < ROUTINE DE PUNCH 'R/C '. ACOUNT: WORD COUNT < COMPTAGE MODULO 64 DES CARTES. ASODOM: WORD E40 < @DE RETOUR DES FONCTIONS DE < SAVE/RESTORE PROCESSEUR. ARETDK: WORD RETDK < RETOUR DES OPERATIONS SUR DK. AE25: WORD E25 < ACCES COMMANDE SUIVANTE (:SYS). AE27: WORD E27 < TRAITEMENT DES ERREURS. < < C O N S T A N T E S : < NMOTS: WORD 2*LTNI < NBRE DE MOTS OCCUPES PAR LES < ITEM1 ET ITEM2. ACNSYS: ASCI ":SYS" < ACN DU SYSTEME. NC: WORD ZERO-BRANCH+PILE-LTNI-LTNI*2+79/80*80 < NBRE DE CARACTERES (EN MULTIPLE < DE 80) OCCUPES PAR UNE BRANCHE < D'OVERLAY. IF ORDI-"T",XWOR%,,XWOR% T1: WORD $+1,X < POUR GENERER LES PROGRAMMES < CANAUX D'ACCES AUX DISQUES. BYTE 0;'58;'50;'5C T2: WORD $+1,X < POUR GENERER LES DEMANDES DE < DESOCCUPATION DES DISQUES. BYTE 0;6;4;7 XWOR%: VAL 0 NSECT: WORD 0 < NBRE COURANT DE SECTEURS < RESTANT A LIRE. MAXSEC: WORD '2000 < @SECTEUR MAX +1 SUR LES DK. NVPDK: WORD '0900 < LECTURE SUR LE NVP=9. COD1: WORD 256 < LONGUEUR OCTETS D'UN SECTEUR. COD16: WORD 256*16 < LONGUEUR OCTETS DE 16 SECTEURS. CODN: WORD 256*16 < LONGUEUR OCTETS DE 1/16 SECTEURS < INITIALISEE SUR 16. NCS: WORD 4*80 < NBRE DE CARACTERES CONTENUS < DANS 4 CARTES (1 SECTEUR). NUMK: WORD 0 < NUMERO DE CARTE MODULO 64. NUM: WORD 0 < POUR CALCULER LE NUMERO DE < COLONNE MODULO 4. CARTR: WORD '4011 < CODE CARTE DU CARACTERE 'R'. CARTRC: WORD '3021 < CODE CARTE DU RETOUR-CHARIOT. C10: WORD 10 < BASE DE CONVERSION DECIMALE. NUMAG: WORD 0 < NUMERO DU MAGNETO COURANT. FLRU: WORD 0 < MEMORISATION DE LA FONCTION < DEMANDEE SUR LA LRU : < 0 : MISE EN SERVICE MAGNETO , < 1 : MISE HS D'1N MAGNETO , < 2 : DEMONTAGE D'1NE BANDE. PAGE IF ORDI-"T",XWOR%,,XWOR% < < < C A R T E B O O T S T R A P : < < < FONCTION : < CETTE ZONE PERMET DE REGENERER LE DISQUE < A PARTIR DU DECK. < < RETOUR: WORD '1E02 < RSR DU MODULE STAND-ALONE. < < < C O M M O N : < < LBOOT: EQU $ WDK: VAL $-LBOOT < PROGRAMME CANAL ECRITURE DK. WORD '5003 < DK1 : '58 , DK2 : '50 , DK3 : '5C WORD 0 < ADRESSE MOT EN MEMOIRE. WORD 'BF80 < ECRITURE 128 MOTS (1 SECTEUR). WORD 0 < @SECTEUR COURANT. OCDK: VAL $-LBOOT < DESOCCUPATION DU NIVEAU DK. BYTE 0;0 < DK1 : 6 , DK2 : 4 , DK3 : 7. TDK: VAL $-LBOOT < ENTREE ETAT DU DK. WORD '5000 < DK1 : '58 , DK2 : '50 , DK3 : '5C. FCR: VAL $-LBOOT < FONCTION D'APPEL CARTE EN MODE < PROGRAMME SIMPLE SUR LE COUPLEUR 3. WORD 'D000 RCR: VAL $-LBOOT < OPERANDE D'UNE SIO DE LECTURE. WORD '020C < LECTURE , PERIPH 16 BITS. SFCR: VAL $-LBOOT < OPERANDE SIO SORTIE FONCTION. WORD '020E BBUF: VAL $-LBOOT < RELAI VERS LE BUFFER DE RECONSTITUTION < DU SECTEUR COURANT. < A T T E N T I O N : < LE RELAI EST IMPLANTE SUR < L'INSTRUCTION 'LRP C' !!! < < < B O O T S T R A P : < < PROG BOOT: EQU $ FDECK: BYTE '26;RETOUR-$ ACTD SIZE: VAL $-LBOOT < TAILLE DU BOOTSTRAP. XBUFDK: VAL $-BOOT XBUFDK: VAL 40-SIZE/2+XBUFDK < PAR PRUDENCE !!!!!! BUFDK: EQU ZERO+XBUFDK IF SIZE,,X100, DZS 40-SIZE < AFIN D'OCCUPER UNE CARTE ENTIERE. X100: VAL 0 XWOR%: VAL 0 DZS 128 < BUFFER CONTENANT UN SECTEUR DK < LORS DE LA RESTAURATION STAND- < ALONDE DES PROCESSEURS CMS4. DZS 80-1*4/2-128 < PARCEQU'ON LIT 4 CARTES ENTIERES < SUR 79 (80-1) COLONNES ... PAGE < < < C O M M A N D E S S O U S : S Y S : < < TCOM: EQU $-'41 WORD E27 < A. WORD E27 < B. WORD E27 < C. WORD E90 < D : ACCES AUX DK ABSOLUS. WORD E27 < E. WORD E26 < F : ACCES AU CCI. WORD E24 < G : APPEL DE 'GE'. WORD E27 < H. WORD E27 < I. WORD E27 < J. WORD E27 < K. WORD EDIT < L : EDITION DE LA LRU MAGNETO. WORD E420 < M : MODIFICATION PROCESSEUR. WORD E27 < N. WORD E27 < O. WORD PDK < P : REECRITURE PROCESSEUR SGN. WORD E27 < Q. WORD E23 < R : RESTAURATION PROCESSEUR. WORD E22 < S : SAVE PROCESSEUR. WORD SSIZE < T : TAILLE ENREGISTREMENT 1/16. WORD PRES < U : PROCESSEUR RESIDENT. WORD MAJLRU < V : MODIFICATION DE LA LRU. WORD E27 < W. WORD E27 < X. WORD E27 < Y. WORD DELETE < Z : DELETE LA LRU MAGNETO. PROG PAGE < < < A C C E S S G N P O U R L A L R U : < < < ARGUMENT : < A=NVP D'ACCES AU SGN. < < MAGS: EQU $ STBY DEMLRU < MISE EN PLACE DU NVP SGN. LAD DEMLRU SVC 0 < L'APPEL DU SGN SE FAIT AVEC < LA FONCTION 'A , AFIN DE < TRAVAILLER SOUS :EAO. RSR < LES CONDITIONS DE RETOUR < NE SONT APAS TESTEES. PAGE < < < R E C H E R C H E M A G N E T O D A N S L R U : < < < RESULTAT : < X=NUMERO DE L'ENTREE DANS LA QUELLE < ON TROUVE LE MAGNETO CHERCHE , < OCTET0(B)=OCTET1(ENTREE COURANTE DE LA LRU) , < OCTET1(A)=BITS1-7(ENTREE COURANTE LRU). < BIT8(A)=0 (EN-SERVICE A PRIORI). < < FINDM: EQU $ LXI NMAG < POUR UN PARCOURS PAR JDX < DE LA PILE LRU. < < BOUCLE DE RECHERCHE : < E1003: EQU $ LA &ALRU SLRD 8 < DECONCATENATION DE L'ENTREE < COURANTE DE LA LRU. ANDI '7F < RAZ A PRIORI DU BIT EN-SERVICE. CP NUMAG < EST-CE LE MAGNETO CHERCHE ??? JE E1004 < OUI , ON S'ARRETE ICI. JDX E1003 < NON AU SUIVANT ... JMP $ < E R R E U R N O N T R O U V E < < RETOUR OK : < E1004: EQU $ RSR PAGE < < < C O N V E R S I O N D E C I M A L E : < < < ARGUMENT : < X=INDEX COURANT DE 'BUFFER' , < Y=CUMUL COURANT , < < < RESULTAT : < Y=NOUVEAU CUMUL , APRES CONVERSION DU CARACTERE < COURANT DE 'BUFFER' , < X<--(X)+1. < < CV10: EQU $ LBY &ABUF < ACCES AU CARACTERE COURANT. ADRI -'30,A < DECONVERSION ASCI. JAL E1000 < ERREUR ... CPI 9 < VALIDATION DECIMALE. JG E1000 < ERREUR ... XR A,Y < A=CUMUL COURANT ; Y=CHIFFRE. MP C10 ADR B,Y < Y=NOUVEAU CUMUL. ADRI 1,X < PROGRESSION DE L'INDEX BUFFER. RSR < ET C'EST TOUT ... < < RETOUR EN ERREUR : < E1000: EQU $ ADRI -1,K < ANNULATION DU BSR. EE27: BR AE27 < RETOUR EN ERREUR SOUS :SYS. PAGE < < < R E L A I V E R S U N N O M D E B A N D E : < < < ARGUMENT : < NUMAG=NUMERO DE MAGNETOSCOPE , < < < RESULTAT : < NOMTAP=@NOM DE LA BANDE ATTACHEE A (NUMAG). < < ADB: EQU $ LAI LNOM/2 MP NUMAG LR B,A AD ATAPES STA NOMTAP < GENERATION D'UN RELAI D'ACCES < AUX 2 PREMIERS CARACTERES < DU NOM DE LA BANDE MONTEE SUR < LE MAGNETO (NUMAG). RSR PAGE < < < D I V I S I O N P A R 1 0 : < < < ARGUMENT : < A=NBRE A DIVISER PAR 10 (<100). < < < RESULTAT : < A=NBRE CODES EN ASCI SUR 2 CARACTERES. < < DIV: EQU $ DV C10 < A=NBRE DE DIZAINES ; B=UNITES. ADRI '30,A < CONVERSION ASCI. ADRI '30,B < CONVERSION ASCI. SWBR A,A < CADRAGE A DROITE DANS A. ORR B,A < CONCATENATION DE B AVEC A. RSR PAGE < < < D E L E T E L R U M A G : < < < FONCTION : < LA COMMANDE 'L' PERMET DE DELETER < LA TABLE LRU D'OCCUPATION DES < MAGNETOSCOPES RANGEE PAR LE SGN < SOUS LE NOM ':MAG''1F SOUS LE NUMERO < DE COMPTE ':EAO'. < CETTE COMMANDE N'EST EXECUTABLE < EVIDEMMENT QUE SOUS :SYS !!!! < < DELETE: EQU $ LAI 3 < A=NVP DELETE SOUS SGN. BSR AMAGS < OK , DELETE LA LRU .... LAD MLRU < MESSAGE OK A PRIORI. JE E913 < EFFECTIVEMENT , LA LRU A ETE < DELETEE. LAD MERR < SINON , ON VA ENVOYER UN < MESSAGE D'ERREUR. E913: EQU $ BSR APRINT < ENVOI D'UN MESSAGE INDIQUANT < LA NATURE DE LA FIN DU DELETE. < < REINITIALISATION DE LA LRU EN MEMOIRE : < LXI NMAG E1020: EQU $ LR X,A ADRI -1,A < A=NUMERO DE MAGNETOSCOPE. < (DE NMAG-1 A 0). SWBR A,A < OCTET0(A)=NUMERO MAGNETO. ORI 'FF < PAS D'ID ATTACHE A CE MAGNETO. STA &ALRU < REINIT L'ENTREE COURANTE LRU. JDX E1020 < VERS L'ENTREE PRECEDENTE. BR AE25 < VERS UNE NOUVELLE COMMANDE. PAGE < < < E D I T I O N D E L A L R U : < < < FONCTION : < PERMET DE VISUALISER SUR L'ECRAN < L'ETAT D'OCCUPATION DES MAGNETOSCOPES < DU SYSTEME. < MGXY HS MAGNETO HS. < MGXY MAGNETO EN SERVICE SANS ID ATTACHE, < MGXY IDXY MAGNETO EN SERVICE AVEC ID , < MAIS SANS BANDE MONTEE , < MGXY IDXY =... MAGNETO EN-SERVICE , AVEC ID , ET < BANDE MONTEE. < < EDIT: EQU $ LAI 5 BSR AMAGS < LECTURE DE LA LRU ; IL NE < S'AGIT PAS D'1NE PHASE CRITIQUE < PUISQU'ON NE LA MET PAS A JOUR. < < RECUPERATION DE CHAQUE MAGNETOSCOPE < EN COMMENCANT PAR LE MOINS UTILISE : < LXI NMAG E1010: EQU $ LA &ALRU < ACCES A L'ENTREE COURANTE LRU. LR A,Y < Y=ENTREE COURANTE DE LA LRU. PSR X < SAVE LE NUMERO DE L'ENTREE < COURANTE DE LA LRU. RBT 0 < RAZ DU BIT HS/EN-SERVICE. SLRD 8+16 < CADRAGE DU NUMERO DE MAGNETO < A DROITE DANS B. STB NUMAG < ET NUMAG RECOIT LE NUMERO < DE MAGNETO COURANT. BSR ADIV < ET CONVERSION ASCI. STA MMG+2 LAD MMG BSR APRINT < EDITION DU NUMERO DE MAGNETO. LR Y,A < RESTAURE A=ENTREE COURANTE LRU. JAGE E1011 < CAS D'UN MAGNETO EN-SERVICE. < < CAS D'UN MAGNETO HS : < LAD MHS BSR APRINT < ENVOI D'UN MESSAGE HS. < < PASSAGE A UNE ENTREE PLUS UTILISEE : < E1012: EQU $ PLR X < RESTAURE LE NUMERO D'ENTREE LRU. JDX E1010 < PASSAGE ENTREE PRECEDENTE. BR AE25 < VERS L'ACCES COMMANDE SUIVANTE. < < CAS D'UN MAGNETO EN-SERVICE : < E1011: EQU $ ANDI '7F < RECUPERATION DE L'ID DE < L'UTILISATEUR LE POSSEDANT. CPI '7F < LE MAGNETO EST-IL ATTACHE ??? JE E1012 < NON , RIEN A FAIRE D'AUTRE. < (ON A JUSTE EDITE SON NUMERO). SLRD 16 < SI OUI , CADRAGE DE L'ID A < DROITE DANS B. BSR ADIV < ET CONVERSION ASCI. STA MES+2 LAD MES BSR APRINT < EDITION DE L'ID DE L'UTILI- < SATEUR ASSOCIE A CE MAGNETO. BSR AADB < GENERATION D'UN RELAI VERS LE < NOM DE LA BANDE MONTEE. CPZ &NOMTAP < Y-A-T'IL BIEN UNE BANDE MONTEE ??? JE E1012 < NON , RIEN D'AUTRE A FAIRE. < (ON A EDITE LE NUMERO DU < MAGNETOSCOPE ET L'ID ASSOCIE). SLLS 1 < SI NOM , L'ADRRESE MOT DU NOM < DE BANDE EST CONVERTI EN OCTET. STA DEMOUT+1 < ET MAJ DE DEMOUT. LAI LNOM STA DEMOUT+2 < MISE EN PLACE DU COMPTE < D'OCTETS DE DEMOUT. LAD DEMOUT SVC 0 < EDITION DU NOM DE LA BANDE < MONTEE SUR LE MAGNETO. JMP E1012 < PASSAGE A L'ENTREE PRECEDENTE. PAGE < < < M O D I F I C A T I O N D E L A L R U : < < < FONCTION : < PERMET DE MODIFIER LA LRU DES < MAGNETOSCOPES EN METTANT HS OU EN < SERVICE DES MAGNETO , ET EN DEMONTANT DES < BANDES. < < MAJLRU: EQU $ LAD MQUOI BSR APRINT < ENVOI DU MESSAGE '>'. LAI 3 STA DEMIN+2 < MISE DE DEMIN EN LECTURE < DE 3 CARACTERES. LAD DEMIN SVC 0 < ENTREE DE LA COMMANDE LRU. < < ANALYSE DE LA COMMANDE : < LXI 0 < INITIALISATION INDEX BUFFER. LYI 0 < INITIALISATION DU CUMUL. BSR ACV10 < CONVERSION 1ER CHIFFRE. BSR ACV10 < CONVERSION 2EME CHIFFRE. LR Y,A < A=NUMERO DE MAGNETOSCOPE. CPI NMAG < VALIDATION DU NUMERO DE MAGNETO. JGE EE27 < ERREUR : IL N'EXISTE PAS. STA NUMAG < SI EXISTE , ON LE SAUVEGARDE. LBY &ABUF < A=COMMANDE SUR LA MAGNETO. STZ FLRU < FLRU=0 A PRIORI. CPI "+" < MISE EN SERVICE ??? JE E1001 < OUI , FLRU=0. CPI "-" < MISE HORS-SERVICE ??? JE E1002 < OUI , FLRU=1. CPI "D" < DEMONTAGE D'1NE BANDE ??? JNE EE27 < ERREUR DE COMMANDE. IC FLRU < OUI DEMONTAGE , FLRU=2. E1002: EQU $ IC FLRU < FLRU=1. < < A C C E S A L A L R U : < E1001: EQU $ LAI 5 < A=NVP DE LOAD DE LA LRU. < < P H A S E C R I T I Q U E S U R L A L R U : < WORD '1ED5 < TEST & SET 5. JC $-1 < ATTENTE DU PASSAGE LIBRE. BSR AMAGS < OK , LOAD LA LRU ...ET RETOUR < INDIFFERENT , CE QUI PERMET < D'INITIALISER LA LRU. LX FLRU < X=FONCTION DESIREE SUR LA LRU. BR &AFLRU < VERS L'EXECUTION SPECIFIQUE. < < M I S E H O R S - S E R V I C E M A G N E T O : < HS: EQU $ BSR AFINDM < ACCES AU MAGNETO (NUMAG). SBT 8 < POSITIONNEMENT DU FUTUR BIT HS. JMP E1005 < VERS LA MAJ DE LA LRU. < < M I S E E N - S E R V I C E M A G N E T O : < SERV: EQU $ BSR AFINDM < RECHERCHE DU MAGNETO (NUMAG). E1005: EQU $ < ENTRY 'HORS-SERVICE'. SLLD 8 < RECONCATENATION DE L'ENTREE < COURANTE DE LA LRU. STA &ALRU < MISE A JOUR DE LA LRU AVEC LE < BIT0 POSITIONNE CORRECTEMENT. JMP WLRU < VERS LA REECRITURE DE LA LRU. < < D E M O N T A G E D ' U N E B A N D E : < DEMONT: EQU $ BSR AADB < GENERATION DU RELAI VERS < LE NOM DE LA BANDE. STZ &NOMTAP < ARZ LES 2 PREMIERS CARACTERES !!! < < R E E C R I T U R E D E L A L R U : < WLRU: EQU $ LAI 3 BSR AMAGS < DELETE LA LRU A PRIORI. LAI 4 BSR AMAGS < REECRITURE (OU INITIALISATION < LA 1ERE FOIS) DE LA LRU. < < F I N D E P H A S E C R I T I Q U E S U R L R U : < WORD '1E55 < RESET 5. JC $ < E R R E U R ???? BR AE25 < VERS LA COMMANDE SUIVANTE. PAGE < < < E N V O I D ' U N M E S S A G E : < < < ARGUMENT : < A=@MOT DU MESSAGE , < OCTET0(MESSAGE)=NBRE DE CARACTERES DU MESSAGE. < < < DETRUIT C. < < PRINT: EQU $ LR A,C < C=@MOT DU MESSAGE. ADR A,A ADRI 1,A < A=@OCTET DU MESSAGE. STA DEMOUT+1 < L'@OCTET DU BUFFER EST MISE < DANS DEMOUT. LBY 0,C < A=LONGUEUR DU MESSAGE. STA DEMOUT+2 < MISE EN PLACE DU COMPTE D'OCTETS < DE DEMOUT. LAD DEMOUT SVC 0 < ENVOI DU MESSAGE. RSR PAGE < < < E X E C U T I O N D ' U N S V C : < < < ARGUMENT : < A=@DEMANDE. < < < RESULTAT : < INDICATEURS POSITIONNES OK OUI/NON. < < SVC: EQU $ PSR X < SAVE X. SVC 0 < ENVOI DE LA DEMANDE (A). PLR X < RESTAURE X. RSR < ET C'EST TOUT ... PAGE < < < N O M D ' U N P R O C E S S E U R : < < < FONCTION : < CETTE ROUTINE DEMANDE ET < RECUPERE AUPRES DU DEMANDEUR LE < NOM D'UN PROCESSEUR SOUS FORME < DE 2 CARACTERES DANS 'BUFFER'. < < < RESULTAT : < BUFFER=2 CARACTERES DU NOM. < < NMP: EQU $ LAD MNOM BSR APRINT < ENVOI DU MESSAGE 'NOM>'. CTTE: EQU $ < ENTRY ENTREE CTTE SEULE. IC DEMIN+2 < POUR LECTURE DE 2 CARACTERES. LAD DEMIN SVC 0 < LECTURE DU NOM DU PROCESSEUR. DC DEMIN+2 < RETOUR A 1 CARACTERE. RSR < ET C'EST TOUT. PAGE < < < C O N V E R S I O N H E X A D E C I M A L E : < < < ARGUMENT : < X=NBRE DE CARACTERES A CONVERTIR MOINS 1. < < < RESULTAT : < B=VALEUR BINAIRE CADREE A GAUCHE (!!!). < < CONV: EQU $ LBI 0 < CLEAR DU REGISTRE B. < < BOUCLE DE CONVERSION : < E93: EQU $ LBY &ABUF < RECUPERATION D'UN CARACTERE ; < LA RECUPERATION DANS BUFFER SE < FAIT A REBROUSE POIL. ADRI -'30,A JAL E91 < ERREUR. CPI 9 JLE E92 < C'EST UN CHIFFRE DECIMAL. ADRI -'41+'39+1,A CPI 'A JL E91 < ERREUR. CPI 'F JG E91 < ERREUR. E92: EQU $ SLRD 4 < CONCATENATION DU CHIFFRE AVEC < LE CONTENU DE B. ADRI -1,X < DECOMPTE DES CARACTERES. CPZR X JGE E93 < ACCES AU CARACTERE SUIVANT. RSR < < TRAITEMENT DES ERREURS : < E91: EQU $ ADRI -1,K < RATTRAPAGE DE LA PILE K. BR AE27 < RETOUR EN ERREUR. PAGE < < < P U N C H L E S C A R T E S ' R ' E T ' R / C ' : < < < FONCTION : < PERMET D'ENCADRER CHAQUE PROCESSEUR < DE SODOME QUE L'ON PUNCHE PAR UNE < CARTE 'R ' POUR LA RESTAURATION < ULTEIEURE , ET UNE CARTE 'R/C ' , < QUI TERMINE CETTE RESTAURATION PAR < UNE NON-MODIFICATION. < < PUNRC: EQU $ LA CARTRC < A=CODE CARTE DU R/C. JMP E900 PUNR: EQU $ LA CARTR < A=CODE CARTE DU 'R'. E900: EQU $ STA BUFFER < MISE DU 1ER CARACTERE DE LA < CARTE DANS LE BUFFER. LAD DEMPCH < A=@DEMPCH. BSR ASVC < PUNCH DU 1ER CARACTERE. JNE EE70 < PROBLABELEMENT UNE ERREUR ASSIGN... STZ BUFFER < ON MET DANS LE BUFFER LE 'SPACE'. LXI 80-1 < EN VUE DE COMPLETER LA CARTE < PAE DES 'SPACE'. E901: EQU $ BSR ASVC < MISE A 'SPACE' DE LA CARTE. JDX E901 LAD SLEEP BSR ASVC < TEMPORISATION INTER-CARTE. RSR < ET C'EST TOUT .... EE70: EQU $ JMP E70 < VERS LES MESSAGES D'ERREUR. PAGE < < < C O M P T A G E M O D U L O 6 4 D E S C A R T E S : < < COUNT: EQU $ LA NUMK < ACCES AU NUMERO COURANT. ANDI '3F < MODULO 64 AVANT LE +1 .... ADRI 1,A < COMPTAGE DE LA CARTE. STA NUMK < MISE A JOUR DU NUMERO DE CARTE. RSR PAGE < < < P U N C H C A R T E S : < < < NOTA : < EN GENERAL UNE COLONNE N'EST PAS < VIDE (LA SEULE EXCEPTION SERA < LA DERNIERE COLONNE DE LA DERNIERE < CARTE D'UN DECK DE SAUVEGARDE < ABSOLUE DES DK. < < < P U N C H N C O L O N N E S : < ( D E 1 A 7 9 ) < < < ARGUMENT : < Y=NBRE DE COLONNES A PUNCHER. < < PUNCH1: EQU $ BSR ACOUNT < COMPTAGE DE LA CARTE COURANTE. LR Y,A ANDI '3 < CALCUL DE (Y) MODULO 4. NGR A,A ADRI 4,A STA NUM < NUM EST UNE CONSTANTE DE < TRANSLATION POUR LES NUMEROS < DE COLONNE MODULO 4. < < PUNCH UN OCTET DU PROCESSEUR : < E31: EQU $ LBY &AI2 < A=OCTET COURANT DU PROCESSEUR. SWBR A,A ORR Y,A < CONCATENATION DE L'OCTET < AVEC SON NUMERO DE COLONNE. AD NUM < TRANSLATION DU NUMERO DE COLONNE. SCRS 2 < LE NUMERO DE COLONNE MODULO 4 < EST MIS DEVANT L'OCTET. < NOTA : < IL S'AGIT EN FAIT DE '80-NUMERO DE COLONE' !!! RBT 0 < RAZ BIT0 A PRIORI. PSR Y XR A,Y < SAVE A DANS Y. ADRI -81,A NGR A,A < A=NUMERO DE LA COLONNE COURANTE. CP NUMK < A-T'ON NUMERO DE COLONNE < =NUMERO CARTE COURANTE ???? LR Y,A < RESTAURE A. JNE E870 < NON , ON LAISSE BIT0=0. SBT 0 < OUI , ALORS : BIT0=1. E870: EQU $ PLR Y < RESTAURE Y. ANDI 'FFC0 < RAZ DES BITS 10-15. ORI '21 < MISE EN PLACE DU CODE NUMERIQUE , < ET DE L'INDICATEUR COLONNE 1 A 79 STA BUFFER < MISE DE L'OCTET ET DE SES BITS < DE VALIDATION DANS LE BUFFER < DE PUNCH. LAD DEMPCH BSR ASVC < ESSAI DE PUNCH 1 COLONNE. JNE E70 < LE CU N'EST CERTAINEMENT PAS < ASSIGNE : ERREUR. ADRI 1,X < INDEX DE L'OCTET SUIVANT. ADRI -1,B < DECOMPTE TOTAL DES OCTETS. ADRI -1,Y < DECOMPTE DES COLONNES D'UNE < CARTE. CPZR Y < LA CARTE EST-ELLE COMPLETE ???? JNE E31 < NON ,POURSUIVONS. RSR < < < P U N C H D E C K : < < < ARGUMENT : < B=NBRE DE CARACTERES A PUNCHER (MELTIPLE DE 80). < < < PUNCH: EQU $ STZ NUMK < RAZ DU NUMERO DE CARTE COURANTE. LXI 2 < INDEX INITIAL DE L'ITEM2 (ON < NOTERA QUE LE RELAI POINTE < SUR ITEM2-1 !!!!). < < PUNCH UNE CARTE : < E30: EQU $ LYI 80 < DECOMPTEUR DES COLONNES D'UNE < CARTE. BSR APCH1 < PUNCH LES COLONNES 1 A 80. < < FIN D'UNE CARTE : TEMPORISATION : < LAD SLEEP BSR ASVC < MISE EN SOMMEIL POUR 4 SECONDES. CPZR B < LA SAUVEGARDE EST-ELLE FINIE ??? JNE E30 < NON , PASSAGE CARTE SUIVANTE. RSR < < < P U N C H D E R N I E R E C O L O N N E < E T T E M P O R I S A T I O N : < < < ARGUMENT : < A=CONTENU DE LA DERNIERE COLONNE. < < PUNCHK: EQU $ STA BUFFER < MISE DE LA DERNIERE COLONNE DANS < LE BUFFER DE PUNCH. LAD DEMPCH BSR ASVC < PUNCH LA DERNIERE COLONNE. LAD SLEEP BSR ASVC < TEMPORISATION D'ATTENTE < DE FIN DE PUNCH DE LA CARTE < ENTIERE. RSR PAGE < < < P R O C E S S E U R S O D O M E : < < < FONCTION : < SODOME EST LE PROCESSEUR DE BASE < APPELE PAR !GE A L'AIDE DU CCI. < SON ROLE EST DE SOUHAITER LA < BIENVENUE , DE FAIRE L'ASSIGNATION < !SGN SI ELLE N'EST DEJA FAITE , < ET ENFIN DE PASSER LA MAIN AU < PROCESSEUR PRIMAIRE 'GE '. < DANS LE CAS OU LE DEMANDEUR < EST SOUS :SYS , LA FONCTION EST < PLUS COMPLEXE ; SODOME PERMET < LE PASSAGE A 'GE' , MAIS AUSSI < LA SAUVEGARDE/RESTAURATION DES < PROCESSEURS DU SYSTEME SOUS FORME < DE PAQUETS DE CARTES BINAIRES ; < LES COMMANDES UTILISEES SONT LES < SUIVANTES : < 1- G : APPEL DE 'GE' , < 2- S : SAUVEGARDE D'UN PROCESSEUR , < 3- R : RESTAURATION D'UN PROCESSEUR , AVEC < CHANGEMENT EVENTUEL DE SON NOM (LE NOM < NE CHANGE PAS SI LA REPONSE EST VIDE). < 3.1- <R/C> : NOM INCHANGE , < 3.2- <EOT> : PASSAGE PAR LE CCI , < 3.3- 'XY' : LE NOM DEVIENT 'XY'. < 4- D : SAUVEGARDE ABSOLUE DES DISQUES , < 4.1- P : PUNCH NK SUR CARTES , < 4.2- R : LECTURE 2K SUR DISQUE , < 4.3- W : ECRITURE 2K SUR DISQUE , < 4.4- S : RESTAURATION STAND-ALONE DES < PROCESSEURS DE BASE. < 5- F : RETOUR AU CCI. < 6- M : MODIFICATION D'UN PROCESSEUR (CF. 'R'). < 7- Z : DELETE LA LRU D'OCCUPATION < DES MAGNETOSCOPES (SOUS :EAO!!!). < 8- V : MODIFICATION DE LA LRU DES MAGNETO : < 8.1- XY+ : MISE EN SERVICE MAGNETO 'XY' , < 8.2- XY- : MISE HS DU MAGNETO 'XY' , < 8.3- XYD : DEMONTAGE BANDE SUR LE < MAGNETO 'XY'. < 9- L : LISTAGE DE LA LRU. < 10- U : REND UN PROCESSEUR RESIDENT , < 11- P : RESTORE LE PROCESSEUR RESIDENT. < 12- T : CHANGEMENT DE LA TAILLE D'UN < ENREGISTREMENT DISQUE LORS DES < COMMANDES 'R'/'W' : 1 OU 16 SECTEURS. < < WORD LOC+'80 < VALEUR INITIALE DE LA BASE L. WORD BRANCH < VALEUR INITIALE DE LA BASE W. SODOME: EQU $ LRP K ADRI -1,K PLR L,W < INITIALISATION DE L ET DE W. LB APILE LR B,K < INITIALISATION DU REGISTRE K. < < RAZ DES ITEM1 ET ITEM2 : < E40: EQU $ < RETOUR DES SAUVEGARDES ET < RESTAURATIONS DE PROCESSEUR. LX NMOTS < X=NBRE DE MOTS A RAZER. E10: EQU $ STZ &AI2 < ARZ PAR MOT. JDX E10 < < ENVOI DU MESSAGE DE BIENVENUE ET DE LA DATE : < LAD MWELC BSR APRINT < ENVOI DE 'BIENVENUE...'. LBI MDATE-ZERO*2 < B=@OCTET DE LA CARTE !DATE. STB DEMINT+1 < MAJ DE LA DEMANDE DU CCI NON < INTERACTIF. LAD DEMINT SVC 0 < APPEL DU CCI NON INTERACTIF. < < TENTATIVE D'ASSIGNATION !SGN : < LAI CASS-ZERO*2 STA DEMINT+1 < POUR EMISSION DE '!ASSIGN X=S'. LAI "2" STBY &ACASS < DEPART SUR LE NVP=2. LXI 9-3+1 < NVP DE 3 A 9 A DESASSIGNER. ASS: EQU $ LBY &ACASS < A=NVP COURANT, ADRI 1,A < ET PASSAGE AU NVP SUIVANT. STBY &ACASS PSR X LAD DEMINT SVC 0 < DESASSIGNATION DU NVP COURANT. PLR X JDX ASS LBI MSGN-ZERO*2 < B=@OCTET DE LA CARTE !SGN. STB DEMINT+1 E11: EQU $ < ON A ICI : < A=@DEMINT. SVC 0 < APPEL DU CCI NON INTERACTIF. < < RECUPERATION DE L'<ACN> DU DEMANDEUR : < WORD '1E25 < RENVOI : (A,B)=<ACN>. CP ACNSYS < EST-CE :SYS ??? JNE E20 < NON. LR B,A CP ACNSYS+1 < EST-CE :SYS ??? JE E21 < CAS D'UN DEMANDEUR SOUS :SYS. E20: EQU $ < < TENTATIVE DE CHARGEMENT DE 'GE ' : < LAD DEMSGN < A=@DEMSGN ET W=@BRANCH. BSR AOVL < TENTATIVE D'OVERLAY. < < RETOUR EN ERREUR : C'EST PROBABLEMENT < !SGN QUI A ECHOUE PRECEDEMMENT , < ON VA DONC RENDRE LA MAIN AU CCI : < LAD MERR BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR. LAD DEMCCI SVC 0 < RETOUR AU CCI. LAD DEMINT < A=@DEMANDE CCI NON INTERACTIF. JMP E11 < DANS LE CAS DU !GO , ON RETENTE < LE !SGN , PUIS LE CHARGEMENT < DU PROCESSEUR 'GE '. PAGE < < < C A S D E S D E M A N D E S S O U S : S Y S : < < < PHILOSOPHIE : < LA FONCTION DE SAUVEGARDE/RESTAURATION DES < PROCESSEURS EST IMPLANTEES SANS SODOME , ET < NON PAS DANS 'KA' , CAR 'KA' EST LUI-MEME < UN PROCESSEUR , ALORS QUE SODOME EST UN < PROCESSEUR DE BASE DE CMS4 (APPELE < DIRECTEMENT PAR CCI PAR !GE) ; DANS LE CSA < TRES EXCEPTIONNEL D'UN CRASH DU SYSTEME , < L'ESPACE DES NOMS EST PERDU , ET PAR VOIE DE < CONSEQUENCES LES PROCESSEURS , ET LES < FICHIERS SONT DETRUITS ; PAR CONTRE POUR < LES PROCESSEURS DE BASE DONT LES ADRESSES < DISQUES SONT DES CONSTANTES ABSOLUES DE < CMS4 , IL N'EN EST RIEN ; DONC EN CAS DE < CRASH , IL SUFFIT DE RAPPELER CMS4 DU < DISQUE , ET A L'AIDE DE SODOME (!GE) < RECONSTITUER LES PROCESSEURS (GE,ED,GR,...) < < < < FORMAT DES PAQUETS DE CARTES : < IL Y A 33 CARTES PAR PROCESSEUR ; < CHAQUE COLONNE CONTIENT UN OCTET DU < PROCESSEUR SOUS LE FORMAT SUIVANT : < BIT0=0 EN GENERAL , < =1 SI NUMERO-COLONNE=NUMERO-CARTE (MOD64) , < BIT1=NUMERO DE L'OCTET MODULO 2 , < BITS2-9 : OCTET , < BITS10-15=10 0001 (CODE NUMERIQUE). < < < SAUVEGARDE ABSOLUE D'UN PROCESSEUR SUR DK : < 1- U : REND LE PROCESSEUR RESIDENT , < 2- D : EN MODE 'W' PERMET D'ECRIRE EN < ABSOLU LE PROCESSEUR SUR DK. < < < RESTAURATION ABSOLUE D'UN PROCESSEUR : < 1- D : EN MODE 'R' PERMET DE LIRE EN < ABSOLU LE PROCESSEUR SUR DK , < 2- P : PERMET DE RESTORER LE PROCESSEUR < DANS LE SGN. < < < SAUVEGARDE ABSOLUE : < DE PLUS , ON PEUT SAUVEGARDER < EN ABSOLU LES DISQUES , A RAISON < DE 4 CARTES PAR SECTEUR. < < < FORMAT DES CARTES : < COLONNES 1-79 : < BIT0=0 EN GENERAL , < =1 SI NUMERO-COLONNE=NUMERO-CARTE (MOD.64) , < BIT1=NUMERO DE L'OCTET MODULO 2 , < BITS2-9 : OCTET , < BITS10-15=10 0001 , < COLONNE 80 : < FIN DES 3 PREMIERES CARTES : 01 00000000 01 0001 < FIN DE LA 4EME CARTE : 01 00000000 11 0001 < FIN DU DECK : 00 00000000 00 0001. < < E21: EQU $ < < MODIFICATION DE DEMSGN : < LAI 6 STBY DEMSGN < RESTAURATION DE DEMSGN SOUS < LE MODE 'LOAD SOUS :SYS'. LA AI2 ADRI 1,A < A=@MOT DE ITEM2. SLLS 1 < A=@OCTET DE ITEM2. STA DEMSGN+1 < DEMSGN TRAVAILLERA SUR ITEM2. < < ANALYSE FREUDIENNE DES DESIRS DE L'UTILISATEUR : < (TRES RECOMMANDE DANS SODOME...) < RETDK: EQU $ < RETOUR DES OPERATIONS SUR DK. E25: EQU $ LAD MCOM BSR APRINT < ENVOI DU MESSAGE D'INVITATION. LAI 1 STA DEMIN+2 < MISE DE DEMIN EN LECTURE 1 < CARACTERE A PRIORI. LAD DEMIN SVC 0 < ENTRE 1 CARACTERE DE COMMANDE. LBY BUFFER < A=CARACTERE FRAPPE. CPI "A" < VALIDATION COMMANDE. JL E27 < ERREUR : COMMANDE NON RECONNUE. CPI "Z" < VALIDATION COMMANDE. JG E27 < ERREUR COMMANDE NON RECONNUE. LR A,X < X=COMMANDE DE 'A' A 'Z'. BR &ACOM < VERS L'EXECUTION SPECIFIQUE .... < < TRAITEMENT DES ERREURS : < E27: EQU $ LAD MINC BSR APRINT < ENVOI D'UN MESSAGE D'ERREUR. JMP E21 < VERS LA REINITIALISATION DE < DEMSGN ET UNE INTERROGATION. < < ERREURS D'ASSIGNATION : < E70: EQU $ LAD MASSGN JMP E76 < VERS L'ENVOI DES MESSAGES ERREUR. < < ERREUR SGN : < E72: EQU $ LAD MESGN JMP E76 < VERS L'ENVOI MESSAGES ERREUR. < < ERREUR DANS LE PAQUET DE CARTES : < E74: EQU $ LAD MPAR < < ENVOI DES MESSAGES D'ERREUR : < E76: EQU $ LB APILE LR B,K < REINITIALISATION DU REGISTRE < K A PRIORI. BSR APRINT < ENVOI MESSAGE SPECIFIQUE. LAD MERR BSR APRINT < ENVOI MESSAGE GENERAL. JMP E21 < VERS LA REINITIALISATION DE < DEMSGN ET UNE INTERROGATION. < < < A P P E L D E ' G E ' : < < E24: EQU $ < < RAZ DES ITEM1 ET ITEM2 : < LX NMOTS < X=NBRE DE MOTS A METTRE A 0. E500: EQU $ STZ &AI2 < RAZ ITEM1 & 2. JDX E500 < < RESTAURATION DE DEMSGN : < LAI BRANCH-ZERO*2 STA DEMSGN+1 < AFIN DE POUVOIR CHARGER < CORRECTEMENT L'OVERLAY. JMP E20 < VERS L'APPEL DE 'GE '. < < < R E T O U R A U C C I : < < E26: EQU $ LAD DEMCCI SVC 0 < RETOUR AU CCI. JMP E25 < VERS L'INTERROGATION SI !GO. PAGE < < < P R O C E S S E U R R E S I D E N T : < < PRES: EQU $ LYI -1 < DEMANDE DE RESIDENCE SEULE. JMP E421 < VERS LE CHAGEMENT DU PROCESSEUR. < < < M O D I F Y P R O C E S S O R : < < E420: EQU $ LYI 0 < MEMORISATION D'UNE MODIFICATION < DE PROCESSEUR DEMANDEE. JMP E421 < VERS LE CHARGEMENT DU PROCESSEUR. < < < S A V E P R O C E S S O R : < < E22: EQU $ LYI 1 < MEMORISATION DU SAVE PROCESSEUR < DEMANDE. < < CHARGEMENT DU PROCESSEUR : < E421: EQU $ BSR ANMP < DEMANDE DU NOM DU PROCESSEUR < A SAUVEGARDER. LA BUFFER < A=NOM DEMANDE. LXI 1 < INDEX DU MOT0(ITEM2). STA &AI2 < MISE EN PLACE DES 2 PREMIERS < CARACTERES DU NOM DU PROCESSEUR. LB AI2 RBT 16 < RAZ DU BIT D'INDEX. ADRI 2,B < PASSAGE SUR LE MOT1(ITEM2). LAD 1,W < A=@MOT1(BRANCH). LXI 3 < 3 MOTS A DEPLACER. MOVE < GENERATION DU NOM DU PROCESSEUR, < EN COMPLETANT PAR 4'SPACE''EOT'. < < TENTATIVE DE CHARGEMENT : < LAD DEMSGN SVC 0 < ESSAI DE CHARGEMENT DANS ITEM2. JNE E72 < ERREUR DE CHARGEMENT : LE < PROCESSEUR DEMANDE N'EXISTE < SUREMENT PAS. < < QUE FAIRE DU PROCESSEUR ??? < CPZR Y < Y=-1,0,+1 SUIVANT LES CAS. JL E21 < Y=-1 : SEULE LA RESIDENCE ... JE E422 < Y=0 : MODIFICATION PROCESSEUR. < < P U N C H D U P R O C E S S E U R : < BSR APUNR < PUNCH LA CARTE 'R '. LB NC < B=NBRE DE CARACTERES A PUNVHER. BSR APUNCH < PUNCH LES 33 CARTES DU PROCESSEUR BSR APUNRC < PUNCH LA CARTE 'R/C '. BR ASODOM < OK , RETOUR SUR LE RAZ DES ITEMS. < < M O D I F Y P R O C E S S O R : < E422: EQU $ LAI 3 STBY DEMSGN < MISE EN PLACE D'UN NVP DE < DELETE NOM+VALEUR. LAD DEMSGN SVC 0 < DELETE LE PROCESSEUR AVANT < DE LE MODIFIER. JNE E72 < BIZARRE ???? JMP E423 < VERS LE TRAITEMENT DES RESTAU- < RATIONS DES PROCESSEURS. PAGE < < < R E S T A U R A T I O N P R O C E S S E U R : < < E23: EQU $ STZ NUMK < RAZ NUMERO DE CARTE COURANTE. LB NC < B=NBRE DE COLONNES A LIRE. LYI 2 < INITIALISATION DE L'INDEX < DE ITEM2 SUR OCTET0(ITEM2). < < LECTURE BINAIRE D'UNE CARTE : < E50: EQU $ LAD DEMCR SVC 0 < LECTURE BINAIRE 1 CARTE. JNE E70 < LE CR1 N'EST CERTAINEMENT PAS < ASSIGNE , ERREUR. BSR ACOUNT < COMPTAGE DE LA CARTE COURANTE. < < DECODAGE DE LA CARTE COURANTE : < LXI -80 < INDEX DES COLONNES. < < DECODAGE 1 OCTET : < E51: EQU $ LA &ACARTE < A=1 COLONNE. SLRS 6 < OCTET1(A)=OCTET COURANT. XR X,Y < X=INDEX COURANT DU PROCESSEUR < DANS ITEM2. STBY &AI2 < RANGEMENT DE L'OCTET COURANT. XR X,Y < RESTAURE X=INDEX COLONNE. ADRI 1,Y < PROGRESSION DE L'INDEX DE < RESTAURATION DU PROCESSEUR. SLRS 8 < A=2 BITS DE VALIDATION. < < VALIDATION DE L'INFORMATION : < PSR B < ON A ICI : < BIT14(A)=1 SI NUMERO-CARTE=NUMERO-COLONNE , < BIT15(A)=NUMERO-COLONNE (MOD. 2). LR X,B EORR A,B < EN EFFET SI LA CARTE EST BONNE , < X ET A DOIVENT AVOIR LA < MEME PARITE. TBT 15+16 < TEST DE LA PARITE. PLR B < RESTAURE B. JC E74 < ERREUR : A ET X SONT DE < PARITE OPPOSEE !!! ADRI 1,K < RE-EMPILEMENT DE B. SLRD 17 < B=1 SI COLONNE DE SEQUENCEMENT. LR X,A SB NUMK ADRI 81,A JAE E869 < A=0 : NUMERO-COLONNE=NUMERO CARTE LAI 1 < A=1 : NUMERO-COLONNE#NUMERO-CARTE E869: EQU $ EORR B,A < DE FACON A TESTER SIMULTANEMENT < LE NUMERO DE CARTE PAR RAPPORT < AU NUMERO DE COLONNE , ET LE < BIT DE SEQUENCEMENT. PLR B < RESTAURE B. JAE E74 < ERREUR : MAUVAIS SEQUENCEMENT ... JIX E51 < PASSAGE A LA COLONE SUIVANTE. ADRI -80,B < DECOMPTE DES OCTETS A RESTAURER. CPZR B < EST-CE FINI ??? JNE E50 < NON , LECTURE DE LA CARTE < SUIVANTE. < < R E S T A U R A T I O N D U P R O C E S S E U R : < PDK: EQU $ < < RESTAURATION DU PROCESSEUR : < E423: EQU $ < ENTRY 'MODIFY PROCESSOR'. LAD MNOM BSR APRINT < ENVOI DE 'NOM>'. LAI 2 STA DEMOUT+2 < ON VA ECRIRE 2 CARACTERES. LA DEMSGN+1 < RECUPERATION @OCTET DE ITEM2. STA DEMOUT+1 < ET MISE DANS DEMOUT. LAD DEMOUT SVC 0 < SORTIE DES 2 PREMIERS CARACTERES < DU NOM DU PROCESSEUR. < < M O D I F I C A T I O N D U P R O C E S S E U R ? ? ? < E411: EQU $ BSR ANMP < ON NE CHANGERA PAS LE NOM SI < LA REPONSE EST VIDE. LBY BUFFER < A=1CARACTERE DE LA REPONSE. < < COMMANDES RECONNUES : < <EOT> : FAIRE UN RETOUR AU CCI , PUIS RECOMMENCER , < <R/C> : NE PAS CHANGER LE NOM , < XY : DONNER LE NOM XY AU PROCESSEUR. < CPI '04 < EST-CE 'EOT' ??? JNE E410 < NON. < < RETOUR AU CCI : < LAD DEMCCI SVC 0 < OUI , RETOUR AU CCI. JMP E411 < ET NOUVELLE INTERROGATION < SI !GO. < < DEMANDE DE CHANGEMENT DE NOM ??? < E410: EQU $ CPI '0D < EST-CE R/C ??? JE E52 < OUI , NOM INCHANGE. LA BUFFER < SI LA REPONSE N'EST PAS VIDE , < ELLE CONSTITUE LE NOUVAEU < NOM DU PROCESSEUR. LXI 1 < INDEX DU MOT0(ITEM2). STA &AI2 < CHANGEMENT DU NOM. E52: EQU $ LAI 4 < NVP='STORE SOUS L'ACN'. STBY DEMSGN < MODIFICATION DU NVP DE DEMSGN. LAD DEMSGN SVC 0 < RESTAURATION DU PROCESSEUR. JNE E72 < RETOUR EN ERREUR : PEUT-ETRE < EXISTE-T'IL DEJA ??? BR ASODOM < OK , RETOUR SUR LE RAZ DES ITEMS. PAGE < < < S A U V E G A R D E A B S O L U E D E S D I S Q U E S : < < < < RETOURS EN ERREUR : < E94: EQU $ BR AE27 < VERS LA SORTIE EN ERREUR. < < E NTRY DE SAUVEGARDE : < E90: EQU $ < < DEMANDE DU NUMERO DE DISQUE DESIRE : < LAD MDK BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION. LAD DEMIN SVC 0 < ENTREE DU NUMERO DE DISQUE. LBY BUFFER < RECUPERATION DU CARACTERE ENTRE. ADRI -'30,A < CONVERSION. JALE E94 < ERREUR. CPI 3 < VALIDATION DU NUMERO DE DK. JG E94 < ERREUR. LR A,X < A=X=NUMERO DE DK (1/2/3). IF ORDI-"T",XWOR%,,XWOR% < < INITIALISATION DE LA CARTE BOOTSTRAP : < LBY &T1 < ACCES A L'ADRESSE DISQUE. STBY LBOOT+WDK < PROGRAMME CANAL D'ECRITURE DK. STBY LBOOT+TDK < PROGRAMME CANAL D'ETAT DK. LBY &T2 STBY LBOOT+OCDK < ADRESSE DU SOUS-NIVEAU DK. XWOR%: VAL 0 < < MAJ DES DEMANDES D'ACCES AU DK : < LR X,A < A=NUMERO DU DK. ADRI NSPDK1-1,A < A=NSP DU DK DEMANDE. OR NVPDK < GENERATION DE NVP=9. STA CCINSP+1 < MAJ DE LA DEMANDE D'ASSIGNATION < DU NVP=9 AU DK. < < ACCES A L'ADRESSE DU 1ER SECTEUR : < LAD MAS BSR APRINT < MESSAGE D'INVITATION. IC DEMIN+2 IC DEMIN+2 BSR ACTTE < LECTURE DE 4 OCTETS. DC DEMIN+2 DC DEMIN+2 < REMISE DE DEMIN A 1 OCTET. LBY BUFFER < TEST DU 1ER OCTET DE LA REPONSE. CPI '0D < EST-CE UN R/C ??? JE E400 < OUI , L'@SECTEUR RESTE INCHANGEE. CPI '04 < EST-CE UN 'EOT' ??? JE E400 < OUI , L'@SECTEUR RESTE INCHANGEE. CPI "+" < EST-CE UNE DEMANDE D'INCRE- < MENTATION AUTOMATIQUE ??? JNE E401 < NON , ON ADMET QUE C'EST UNE < CONSTANTE HEXADECIMALE. < < INCREMENTATION AUTOMATIQUE : < LA DEMDK+3 < ACCES A L'@SECTEUR COURANTE. ADRI 16,A < ON FAIT +16 SECTEURS , SOIT < +2 K MOTS. STA DEMDK+3 < MAJ DE L'@SECTEUR COURANTE. JMP E405 < VERS LA VALIDATION DE L'@SECTEUR < COURANTE. < < CAS DES ADRESSES PRECISEES : < E401: EQU $ LXI 3 < POUR CONVERTIR 3+1 OCTETS. BSR ACONV < CONVERSION DANS B DE L'@SECTEUR < PRESUMEE. STB DEMDK+3 < MAJ DE LA DEMANDE DE LECTURE DK. IF ORDI-"T",XWOR%,,XWOR% STB LBOOT+WDK+3 < MAJ DU PROGRAMME CANAL DK. XWOR%: VAL 0 < < VALIDATION DE L'@SECTEUR COURANT : < E400: EQU $ LA DEMDK+3 < A=@SECTEUR COURANT. E405: EQU $ < ENTRY 'INCREMENTATION AUTO'. IF ORDI-"T",XWOR%,,XWOR% JAL E94 < ERREUR. CP MAXSEC JGE E94 < ERREUR. XWOR%: VAL 0 < < CHOIX DE L'ACTION A ENTREPRENDRE : < LAD MQUOI BSR APRINT < ENVOI D'UN MESSAGE D'INVITATION < VERS L'UTILISATEUR '>'. LAD DEMIN SVC 0 < ENTREE DE LA REPONSE SUR 1 OCTET. LBY BUFFER < TEST DE LA REPONSE. < < LISTE DES COMMANDES RECONNUES : < < 1- P : PUNCH NK MOTS SUR CARTES , < 2- R : LECTURE DE 1/16 SECTEURS (CODN) SUR LE DISQUE , < 3- W : ECRITURE DE 1/1L SECTEURS (CODN) SUR LE DISUQE. < NOTA : LA COMMANDE 'T' PERMET DE CHANGER < CODN (NBRE DE SECTEURS ECHANGES) ; SA VALEUR < IMPLICITE EST DE 16 SECTEURS. IF ORDI-"T",XWOR%,,XWOR% < 4- S : RESTAURATION STAND-ALONE DES PROCESSEURS DE BASE. < CPI "S" < EST-CE UN APPEL STAND-ALONE ??? JE E800 < OUI - ALLONS Y ... XWOR%: VAL 0 CPI "P" < EST-CE UNE DEMANDE DE PUNCH ??? JNE E402 < NON ESSAYONS R/W. < < < D E M A N D E D E P U N C H : < < LA NVPDK STA DEMDK < REINITIALISATION DE DEMDK < AVEC UNE LECTURE SUR NVP=9. LA COD1 STA DEMDK+2 < REINITIALISATION DU COMPTE < D'OCTETS DE DEMDK SUR 1 SECTEUR. < < RECUPERATION DU NBRE DE K DEMANDE : < LAD MKM BSR APRINT < MESSAGE D'INVITATION. BSR ACTTE < LECTURE DE 2 OCTETS. LXI 1 < AFIN DE CONVERTIR 1+1 OCTETS. BSR ACONV < CONVERSION HEXADECIMALE. SWBR B,A < CADRAGE A DROITE DANS A DU < NBRE DE K A SAUVEGARDER. SLLS 3 < A=NBRE DE SECTEURS A SAUVEGARDER. STA NSECT < INITIALISATION DE NSECT. < < ASSIGNATION DU NVP=9 AU DK : < LAD CCINSP BSR ASVC < ENVOI DE LA DEMANDE DE CONNEXION < DIRECTE NVP-->NSP. < < SAUVEGARDE DES SECTEURS DEMANDES : < E103: EQU $ < < LECTURE 1 SECTEUR : < LAD DEMDK BSR ASVC < LECTURE 1 SECTEUR. JNE E406 < ARRET SI ERREUR (SUREMENT < UNE @SECTEUR INEXISTANTE). < < PUNCH 1 SECTEUR : < LB NCS < B=NBRE D'OCTETS SUR 4 CARTES. LXI 2 < INITIALISATION DE L'INDEX ITEM2. < < PUNCH 1 CARTE : < E100: EQU $ LYI 79 BSR APCH1 < PUNCH DES 79 PREMIERES COLONNES < D'UNE CARTE. LAI '11 < A PRIORI DERNIERE COLONNE. ADRI -1,B < DECOMPTE IMMEDIAT DE LA DERNIERE < COLONNE. CPZR B < EST-ON SUR UNE 4EME CARTE ???? JNE E101 < NON. LAI '31 < OUI : INDICATEUR FIN DE 4 CARTES. E101: EQU $ SBT 1 < BIT1=1 (NUMERO D'OCTET MODULO 4). BSR APCHK < PUNCH DE LA DERNIERE COLONNE < ET TEMPORISATION DE LA CARTE. CPZR B JNE E100 < VERS LE PUNCH DE LA CARTE < SUIVANTE D'UN PAQUET DE 4. < < PASSAGE AU SECTEUR SUIVANT : < IC DEMDK+3 < PROGRESSION DE L'ADRESSE < SECTEUR. DC NSECT < DECREMENTATION DU NBRE DE < SECTEURS RESTANT A LIRE. JNE E103 < VERS LA LECTURE SECTEUR SUIVANT. < < PUNCH DE LA DERNIERE CARTE D'UN DECK DE SAUVEGARDE : < E406: EQU $ < ARRET SUR ERREUR DK. LXI 79 E105: EQU $ STZ &AI2 < NETTOYAGE ITEM2. JDX E105 LYI 79 BSR APCH1 < PUNCH LES 79 PREMIERES < COLONNES DE LA DERNIERE CARTE. LAI 1 < LA DERNIERE COLONNE EST VIERGE. BSR APCHK < PUNCH DERNIERE COLONNE < ET TEMPORISATION DE LA CARTE. < < RESTAURATION DES ASSIGNATIONS : < E403: EQU $ < RETOUR DE L'OPTION R/W. LAI NSPNXS OR NVPDK < GENERATION DE NVP=9. STA CCINSP+1 LAD CCINSP BSR ASVC < REASSIGNATION DU NVP=9 AU HDLNXS. BR ARETDK < VERS LE RETOUR DES DK. < < < D E M A N D E R E A D / W R I T E : < < E402: EQU $ CPI "R" < EST-CE READ ??? JE E404 < OUI , OK. CPI "W" < EST-CE WRITE ??? JNE E94 < NON , ERREUR .... E404: EQU $ ANDI 1 < RECUPERATION DU BIT15 : < A=0 POUR READ ("R"='52) , < A=1 POUR WRITE ("W"='57). SLLS 1 < OCTET1(A)=0 POUR 'R' , < OCTET1(A)=2 POUR "W". OR NVPDK < GENERATION D'UNE DEMANDE DE < LECTURE(R)/ECRITURE(W). < SUR LE NVP=9. STA DEMDK < MAJ DE DEMDK. LA CODN STA DEMDK+2 < MAJ DE DEMDK POUR ACCES A < 1/16 SECTEURS (128/2K MOTS). < < ASSIGNATION AU NVP=9 : < LAD CCINSP SVC 0 < ENVOI DE LA DEMANDE DE CONNEXION < DIRECTE NVP-->NSP. < < LECTURE/ECRITURE DE 1/16 SECTEURS : < LAD DEMDK SVC 0 < ACCES AU DISUQUE. JMP E403 < VERS LA RESTAURATION DES < ASSIGNATIONS EN FIN D'OPERATION. < < < T A I L L E D ' U N E N R E G I S T R E M E N T : < < SSIZE: EQU $ LAD M1 BSR APRINT < DEMANDE '1 SECTEUR ???' LAD DEMIN SVC 0 < ENTREE D'1 CARACTERE REPONSE. LBY BUFFER < A=CARACTERE REPONSE. LB COD1 < B=1 SECTEUR A PRIORI. CPI "O" JE SSIZE1 < OUI , 1 SECTEUR .... CPI "N" JNE SSIZE < RIEN COMPRIS .... LAD M16 BSR APRINT < BON ALORS C'EST 1L SECTEURS ... LB COD16 < B=16 SECTEURS. SSIZE1: EQU $ STB CODN < MAJ DU CODN COURANT ... BR ARETDK < ET C'EST TOUT ... PAGE IF ORDI-"T",XWOR%,,XWOR% < < < R E S T A U R A T I O N S T A N D - A L O N E D E S < P R O C E S S E U R S D E B A S E D E C M S 4 : < < E800: EQU $ LB &ABOOT < SAVE LE 'LRP C' QUI EST ECRASE < LORS D'UN RUN DU BOOTSTRAP ... LA ABOOT < A=@TRANSLATABLE DU MODULE < DE RESTAURATION STAND-ALONE. WORD '1EC5 < VERS L'EXECUTION EN MODE MAITRE < DU BOOTSTRAP ... STB &ABOOT < RESTAURE LE 'LRP C' DU BOOT. BR ARETDK < APRES AVOIR BLOQUE LE SYSTEME, < ON FAIT UN RETOUR A L'ESCLAVE. XWOR%: VAL 0 PAGE < < < V A L I D A T I O N D E L ' 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. END GOMORE