NMPROC: VAL "GC" < NOM DU PROCESSEUR.
IDP "GC - RELEASE 01/06/1979"
IDP "JOHN F. COLONNA"
EOT #SIP DEF PROCESSEUR#
PROG
WORD DUMP < ADRESSE DE LANCEMENT DU
< PROCESSEUR 'DU'.
WORD 0 < POUR FAIRE $=$+1.
PDUMP: EQU $ < A NOTER : P='12 !!!!
LRP L
BR -2,L < ENTREE DANS LE PROCESSEUR.
EOT #SIP DEFINITION ITEM#
PAGE
<
<
< L O C A L D U P R O C E S S E U R :
<
<
LOCAL
LOC: EQU $
<
< B U F F E R S E T M E S S A G E S :
<
BUFFER: WORD 0 < BUFFER D'ENTREE DES COMMANDES.
MCOM: BYTE '6D;">" < MESSAGE D'INVITATION A ENTER
< LA COMMANDE.
MERR: BYTE '6D;"?" < MESSAGE D'ERREUR.
<
< D E M A N D E S A C M S 4 :
<
DEMIN: WORD '0101 < DEMANDE D'ENTREE COMMANDE.
WORD BUFFER-ZERO*2
WORD 1
DEMOUT: WORD '0202 < DEMANDE DE SORTIE MESSAGE.
WORD MCOM-ZERO*2
WORD 2
DEMERR: WORD '0202 < DEMANDE DE SORTIE ERREUR.
WORD MERR-ZERO*2
WORD 2
DEMSGN: WORD '0402 < DEMANDE AU SGN INITIALISEE EN
< GENERATION DU PROCESSEUR GC.
WORD BRANCH-ZERO*2
WORD ZERO-BRANCH+PILE-LTNI-LTNI*2
WORD -1
DEMMEM: WORD '0004 < DEMANDE D'ALLOCATION 8K MEMOIRE.
WORD 0
WORD '4000 < PASSAGE A 8K MOTS.
DEMCCI: WORD '0001 < DEMANDE DE RETOUR AU CCI.
CCI: EQU DEMCCI
<
< A D R E S S E S D E T A B L E S :
<
APILE: WORD PILE-1 < POUR INITIALISER K.
AI11: WORD ZERO+PILE-LTNI+LTN-1,X
< RELAI D'ACCES A L'ITEM1 EN
< INDEXATION MOT PAR RAPPORT A 1.
AI1: WORD ZERO+PILE-LTNI+LTN,X
< RELAI D'ACCES A L'ITEM1 ,
< EN INDEXATION OCTET PAR
< RAPPORT A 0.
AI2: WORD ZERO+PILE-LTNI-LTNI
< @EN-TETE DE L'ITEM2.
<
< R E L A I S D E R O U T I N E S :
<
AOVL: WORD OVL < CHARGEMENT DES OVERLAYS.
ASTK: WORD STK < RANGEMENT D'UN CARACTERE
< DANS L'ITEM1.
<
< C O N S T A N T E S :
<
NGE: ASCI "GE" < NOM DE LA BRANCHE D'OVERLAY 'GE'.
NC8: WORD NBCAR*NBLIG/8 < NBRE DE MOTS DUMPABLES
< DANS L'ITEM1.
NC1: WORD NBCAR*NBLIG/8*8-1 < NBRE DE CARACTERES ASCI
< EQUIVALENTS APRES CONVERSION
< BINAIRE-->ASCI MOINS 1 (POUR
< INDEXER PAR RAPPORT A 0).
ALTNI: WORD LTNI < LONGUEUR TOTALE D'UN ITEM.
< (EN-TETE+CORPS).
PAGE
<
<
< D U M P E R D E P R O G R A M M E S
< G R A P H I Q U E S :
<
<
< FONCTION :
< LES PROGRAMMES GRAPHIQUES SOUMIS
< A '3D' SONT ECRIS EN LANGAGE MACHINE ;
< CE SYSTEME PERMET DE CONVERTIR LE
< LANGAGE MACHINE BINAIRE (1 MOT) ,
< UN LANGAGE MACHINE ASCI (1 MOT=8
< CARACTERES ASCI) EDTITABLES PAR 'ED'.
< LE FORMAT DE LA CONVERSION EST LE
< SUIVANT :
< <1 MOT BINAIRE>::=<4 CARACTERES ASCI HEXA-
< DECIMAUX><4 CARACTERES 'SPACE'>.
< DE PLUS CE SYSTEME PERMET LA CONVERSION
< INVERSE : DU LANGAGE ASCI , EN
< LANGAGE BINAIRE . LE PROGRAMME GRAPHIQUE
< EST LIMITE EN CONSEQUENCES A UN
< QUART DE L'ITEM1 (POUR PERMTTRE
< L'EXPANSION ASCI).
<
<
PROG
<
< E N T R Y P R O C E S S E U R :
<
WORD LOC+'80 < VALEUR INITIALE DE LA BASE L.
WORD BRANCH < VALEUR INITIALE DE LA BASE W.
DUMP: EQU $
LRP K
ADRI -1,K
PLR L,W < INITIALISATION DE L & W.
LB APILE
LR B,K < INITIALISATION DE K.
<
<
< I N T I A L I S A T I O N D U D U M P :
<
<
LAI 6
STBY DEMSGN < LA DEMANDE AU SGN EST MISE
< EN MODE 'LOAD SOUS :SYS'.
LA NGE
STA 0,W < PREPARATION DU NOM DE LA
< BRANCHE D'OVERLAY A APPELER
< A LA SORTIE.
<
<
< I N T E R R O G A T I O N
< L ' U T I L I S A T E U R :
<
<
E5: EQU $
LAD DEMOUT
SVC 0 < ENVOI D'UN MESSAGE D'2NVITATION.
LAD DEMIN
SVC 0 < ENTREE DE LA REPONSE.
<
< ANALYSE DE LA REPONSE (1 CARACTERE) :
<
LBY BUFFER
<
< LISTE DES REPONSES AUTORISEES :
< G : APPEL DU COMPILATEUR (' S' + ' L') ,
< D : CONVERSION BINAIRE-->ASCI ,
< U : CONVERSION ASCI-->BINAIRE (2NVERSE) ,
< C : RETOUR AU CCI ,
< F : RETOUR IMMEDIAT A 'GE'.
< EOT/RC : RETOUR IMMEDAIT A GE.
<
CPI "G" < EST-CE LE COMPILATEUR ???
JE COMPIL < OUI.
CPI "D" < EST-CE UN DUMP EN ASCI ????
JE ASCI < OUI.
CPI "U" < EST-CE LE DUMP BINAIRE (INVERSE) ???
JE BINARY < OUI.
CPI "C" < EST-CE UN RETOUR AU CCI ???
JE E50 < OUI.
CPI "F" < EST-CE UN RETOUR A 'GE' ???
JE E6 < OUI , RETOUR A 'G)' IMMEDIAT ...
CPI '04 < EST-CE 'EOT' ????
JE E6 < OUI , RETOUR A 'GE'.
CPI '0D < EST-CE LE R/C ????
JNE E5 < NON , ON RE-INTERROGE L'
< UTILISATEUR.
<
< R E T O U R A ' G E ' :
<
E6: EQU $
LAD DEMSGN < A=@DEMSGN ; W=@BRANCH.
BSR AOVL < TENTATIVE DE CHARGEMENT DE 'GE'.
<
< TRAITEMENT DES ERREURS DE CHARGEMENT :
<
WORD '1E16 < RETOUR DIRECT AU CCI.
JMP $-1 < ET DEFINITIF....
<
< TRAITEMENT DES ERREURS :
<
E31: EQU $
LAD DEMERR
SVC 0 < ENVOI D'UN MESSAGE D'ERREUR.
JMP E6 < VERS LE RETOUR A 'GE'.
<
< R E T O U R A U C C I :
<
E50: EQU $
LAD DEMCCI
SVC 0 < RETOUR AU CCI.
JMP E5 < RE-INTERROGATION DE L'UTILI-
< SATEUR AU CAS OU ON RECOIT !GO.
PAGE
<
<
< R A N G E M E N T C A R A C T E R E :
<
<
< FONCTION :
< CETTE ROUTINE RANGE UN CARACTERE
< ASCI DANS L'ITEM1.
<
<
< ARGUMENTS :
< A=CARACTERE ASCI ,
< Y=INDEX OU LE RANGER DANS ITEM1.
<
<
< RESULTAT :
< Y<--(Y)-1.
<
<
STK: EQU $
XR X,Y < SAVE X , ET X=INDEX DE
< RANGEMENT DU CARACTERE ARGUMENT.
STBY &AI1 < RANGEMENT DANS ITEM1.
ADRI -1,X < DECREMENTATION DU REGISTRE 'Y'
< ARGUMENT.
XR X,Y < RESTAURE X & Y.
RSR < ET C'EST TOUT ....
PAGE
<
< C O N V E R S I O N B I N A I R E ---> A S C I :
< D A N S I T E M 1
<
<
< FONCTION :
< CE MODULE CONVERTIT LE LANGAGE
< MACHINE BINAIRE EN LANGAGE MACHINE
< ASCI A RAISON DE 8 CARACTERES ASCI
< POUR UN MOT MACHINE (4 CHIFFRE
< HEXA+4 SPACE).
<
<
ASCI: EQU $
<
< CHECK TYPE DE L'ITEM :
<
LXI IINDIC-LTN*2
LBY &AI1 < A=TYPE DE L'ITEM1.
CPI "P" < EST-CE BIEN 'PROGRAMME' ???
JNE E31 < ERREUR , REFUS DE DUMP.
<
< BOUCLE DE CONVERSION DES MOTS MACHINE :
<
LY NC1 < Y=INDEX CARACTERE PAR RAPPORT
< A 0.
LX NC8 < X=INDEX MOT PAR RAPPORT A 1.
E10: EQU $
LB &AI11 < B=1 MOT A CONVERTIR EN ASCI.
PSR X < SAVE L'INDEX MOT.
<
< BOUCLE D'INSERTION DE 4 'SPACE' :
<
LXI 4 < NBRE DE 'SPACE' A INSERER.
LAI '20 < A='SPACE'.
E11: EQU $
BSR ASTK < INSERTION DES 4 'SPACE'.
JDX E11
<
< BOUCLE DE CONVERSION DU MOT (B) :
<
LXI 4 < NBRE DE CHIFFRES HEXA A GENERER.
E12: EQU $
LAI 0 < RAZ A A CHAQUE TOUR.
SCRD 4
SCLS 4 < RECUPERATION DANS A CADRE A
< DROITE D'UN CHIFFRE HEXA.
CPI 9 < DISCRIMINATION CHIFFRE/LETTRE ???
JLE E13 < CAS DES CHIFFRES (0-9).
ADRI '41-'39-1,A < CAS DES LETTRES (A-F).
E13: EQU $
ADRI '30,A < CONVERSION ASCI.
BSR ASTK < ET INSERTION DANS L'ITEM1.
JDX E12 < CHIFFRE SUIVANT DANS LE MOT
< COURANT.
E40: EQU $ < ENTRY POUR LANGAGE MACHINE
< ASCI ERRONE : ON ANNULE TOUTE
< LA CONVERSION DEJA OPEREE.
PLR X < RESTAURE L'INDEX MOT.
JDX E10 < ACCES AU MOT SUIVANT A CONVERTIR.
<
< MISE EN PLACE DU TYPE 'T' (TEXTE) :
<
LXI IINDIC-LTN*2 < INDEX OCTET DU TYPE DE L'ITEM.
LAI "T" < TYPE 'TEXTE' POUR ASSUER
< LA COMPATIBLITE AVEC 'ED'.
STBY &AI1
JMP E6 < RETOUR A 'GE' APRES LA
< CONVERSION.
PAGE
<
<
< C O N V E R S I O N A S C I ---> B I N A I R E :
< D A N S I T E M 1
<
<
< FONCTION :
< CE MODULE REGENERE LE LANGAGE
< MACHINE BINAIRE A PARTIR DU LANGAGE
< MACHINE ASCI.
<
<
BINARY: EQU $
<
< CHECK LE TYPE DE L'ITEM :
<
LXI IINDIC-LTN*2
LBY &AI1 < A=TYPE DE L'ITEM1.
CPI "T" < EST-CE BIEN LE TYPE 'TEXTE' ???
JNE E31 < NON ERREUR , LE DUMP INVERSE
< EST REFUSE.
<
< BOUCLE DE REGENERATION DES MOTS :
<
LXI 1 < INDEX MOT.
LYI 0 < INDEX CARACTERE.
E20: EQU $
PSR X < SAVE L'2NDEX MOT.
<
< BOUCLE DE RECUPERATION 1 MOT :
<
LXI 4 < NBRE DE CHIFFRES HEXA POUR
< RECONSTITUER UN MOT MACHINE.
E21: EQU $
XR X,Y
LBY &AI1 < ACCES AUN CHIFFRE HEXA DANS
< L'ITEM1.
ADRI 1,X < PROGRESSION DE L'INDEX
< CARACTERES.
XR X,Y
ADRI -'30,A < REGENERATION HEXADECIMALE.
JAL E30 < ERREUR : ITEM1 NE CONTIENT PAS
< PAS DE LANGAGE MACHINE ...
CPI 9 < EST-CE UN CHIFFRE ???
JLE E22 < OUI.
ADRI -'41+'39+1,A < CAS DES LETTRES PRESUMEES (A-F).
CPI 'A < VALIDATION ???
JL E30 < ERREUR : MAUVAIS LANGAGE ...
CPI 'F < VALIDATION ???
JG E30 < ERREUR : MAUVAIS LANAGE ....
E22: EQU $
SCRS 4
SCLD 4 < RECONSTITUTION DANS LE REGISTRE
< B DU MOT COURANT.
JDX E21 < CHIFFRE HEXA SUIVANT ....
PLR X < RESTAURE L'INDEX MOT.
STB &AI11 < RANGEMENT DU MOT QUE L'ON
< VIENT DE CONVERTIR.
ADRI 4,Y < ON DEPASSE LES '4 SPACE.
ADRI 1,X < PROGRESSION DE L'INDEX MOT.
LR X,A
CP NC8 < EST-ON AU BOUT DE L'ITEM1 ????
JLE E20 < NON , ALLONS RECONSTITUER
< LE MOT SUIVANT.
<
< RESTAURATION DU TYPE 'P' (PRPROGRAMME) :
<
LXI IINDIC-LTN*2
LAI "P" < TYPE 'PROGRAMME'.
STBY &AI1 < L'2TEM1 PREND LE TYPE 'P'.
JMP E6 < EN FIN DE CONVERSION , ON
< RETOURNE A 'GE'.
<
< TRAITEMENT DES LANGAGES MACINES ASCI
< ERRONES : IL FAUT ANNULER TOUTE LA CONVERSION
< ASCI-->BINAIRE DEJA OPEREE ; POUR CELA ,
< ON VA REUTILISER LE MODULE 'ASCI' :
<
E30: EQU $
LAI -8
ANDR A,Y < ON REMET Y A UNE FRONTIERE DE
< 'MOT ASCI' DU LANGAGE MACHINE.
ADRI -1,Y < PASSAGE SUR LE DERNIERE CARACTERE
< DU MOT PRECEDENT (EVENTUEL).
LAD DEMERR
SVC 0 < ENVOI D'UN MESSAGE D'ERREUR.
JMP E40 < VERS LA CONVERSION INVERSE.
PAGE
<
<
< C O M P I L A T E U R G :
<
<
< FONCTION :
< CE MODULE FAIT D'ABORD UNE DEMANDE
< D'ALLOCATION 8K MOTS MEMOIRE , PUIS
< SAUVEGARDE L'ITEM1 EN BOUT DES 8K ,
< ET ENFIN APPELLE LA 1ERE BRANCHE DE
< L'OVERLAY (' S').
< LE TEXTE SOURCE EST DANS L'ITEM1.
< ET L'EN-TETE DE L'ITEM2 DANS LES
< MOTS QUI PRECEDENT L'ITEM1 TRANSLATE.
<
<
COMPIL: EQU $
LAD DEMMEM
SVC 0 < PASSAGE DE 4K A 8K MOTS.
<
< SAUVEGADRE DE L'ITEM1 :
<
LA AI1
RBT 0 < A=@DU CORPS DE L'ITEM1.
ADRI -LTN,A < A=EMETTEUR=@EN-TETE ITEM1.
LR A,B
SBT 16+3 < B=RECEPTEUR=@EN-TETE DE L'ITEM1
< TRANSLATE DE 4K MOTS.
LX ALTNI < X=NBRE DE MOTS A DEPLACER.
MOVE < SAUVEGARDE DE L'ITEM1.
<
< SAUVEGARDE DE L'EN-TETE DE L'ITEM2 :
<
ADRI -LTN,B < B=RECEPTEUR ..
LA AI2 < A=EMETTEUR=@EN-TETE DE L'ITEM2.
LXI LTN < X=NBRE DE MOTS DE L'EN-TETE.
MOVE < SAUVEGARDE EN-TETE ITEM2.
<
< APPEL DE L'ASSEMBLEUR ' S' :
<
LAI "S"
SBT 2 < A=' S'=NOM DE LA BRANCHE.
STA 0,W < MISE EN PLACE DU NOM DE LA
< BRANCHE A APPELER.
LAD DEMSGN
BSR AOVL < ESSAI DE CHARGEMENT DE ' S' ,
< AVEC : A=@DEMSGN , W=@BRANCH.
<
< CAS DES RETOURS EN ERREUR DU SGN :
<
LAD CCI
SVC 0 < ON FAIT ALORS UN RETOUR
JMP $-1 < DEFINITIF AU CCI.
<
<
< V A L I D A T I O N 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
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.