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