PAGE
         IDP         "HELP - RELEASE 31/01/1975"
         IDP         "JOHN F. COLONNA"
<
<
<        P R O C E S S E U R   H E L P  :
<
<
         PROG
ZERO:    EQU         $
         DZS         7               < ZONE DES ARGUMENTS CMS4 & SODOME.
OVL:     EQU         $
         SVC         0               < A=@DEMSGN ; W=@BRANCH.
         JNE         E1              < ERREUR DE CHARGEMENT.
         BR          5,W             < GOTO LA BRANCHE CHARGEE.
E1:      EQU         $
         RSR                         < RETOUR EN ERREUR.
<
<        E N - T E T E   D U   P R O C E S S E U R  :
<
         TABLE
BRANCH:  EQU         $
         ASCI        "??    "        < NOM DU PROCESSEUR.
         BYTE        '04;'D0
         WORD        '1F00
         WORD        HELP            < ADRESSE DE LANCEMENT DE HELP.
<
<        Z O N E   D E   R E S T A R T  :
<
         PROG
         WORD        0
PHELP:   EQU         $               < A NOTER : P='12 !!!!!
         LRP         L
         BR          -2,L            < RE-ENTRY DANS LE PROCESSEUR.
<
<        C O N S T A N T E S   D E   S O D O M E  :
<
LTN:     VAL         '52             < LONGUEUR MOT DE L'EN-TETE.
LTNI:    VAL         '561            < LONGUEUR TOTALE DE L'ITEM.
PILE:    VAL         'FF0-6
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
<        A D R E S S E S   D E S   R O U T I N E S  :
<
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
APRINT:  WORD        PRINT           < EMISSION DES MESSAGES.
<
<        R E L A I S   D E   T A B L E S  :
<
APILE:   WORD        PILE            < POUR INITIALISER K.
AMESS:   WORD        LMESS           < RELAI MESSAGE COURANT A EDITER.
LMESS:   EQU         $               < LISTE DES MESSAGES.
AM1:     WORD        M1
AM2:     WORD        M2
AM3:     WORD        M3
AM4:     WORD        M4
AM5:     WORD        M5
AM6:     WORD        M6
AM7:     WORD        M7
AM8:     WORD        M8
AM9:     WORD        M9
AM10:    WORD        M10
AM11:    WORD        M11
AM17:    WORD        M17
AM12:    WORD        M12
AM13:    WORD        M13
AM14:    WORD        M14
AM15:    WORD        M15
AM16:    WORD        M16
         WORD        0               < FIN DE LA LISTE DES MESSAGES.
<
<        D E M A N D E S   A   C M S 4  :
<
DEMSGN:  WORD        '0402           < ACCES AU SGN INITIALISE EN
                                     < STORE (GENERATION DE HELP).
         WORD        BRANCH-ZERO*2   < @OCTET DE LA BRANCHE.
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMCCI:  WORD        '0001
DERASE:  WORD        '0205           < EFFACEMENT DE L'ECRAN.
DEMOUT:  WORD        '0202           < DEMANDE DE SORTIE SUR LA VISU.
         WORD        0               < @OCTET DU MESSAGE.
         WORD        0               < LONGUEUR DU MESSAGE.
<
<        C O N S T A N T E S  :
<
NGE:     ASCI        "GE"            < NOM DE L'OVERLAY DE RETOUR.
<
<        M E S S A G E S  :
<
OM1:     BYTE        '6D;" "
         ASCI        " SMC EST LA !!!!"
         BYTE        '6D;'6D
M1:      WORD        $-OM1*2         < LONGUEUR OCTETS DU MESSAGE.
OM2:     BYTE        '6D;" "
         ASCI        "  UN CERTAIN NOMBRE DE MODES D'EMPLOI "
         ASCI        "SONT A VOTRE DISPOSITION ; "
M2:      WORD        $-OM2*2
OM3:     ASCI        "VOICI LA LISTE DES COMMANDES "
         ASCI        "NECESSAIRES POUR LES ATTEINDRE : "
M3:      WORD        $-OM3*2
OM4:     BYTE        '6D;'6D
         ASCI        "!IU<NOM><EOT>    APPEL DE <NOM> ,"
M4:      WORD        $-OM4*2
OM5:     BYTE        '6D;"!"
         ASCI        "ED              APPEL DE L'EDITEUR , "
M5:      WORD        $-OM5*2
OM6:     BYTE        '6D;"<"
         ASCI        "CTRL-E>         EDITION DU CONTENU DE <NOM> . "
M6:      WORD        $-OM6*2
OM7:     BYTE        '6D;'6D
         ASCI        "<EOT> REPRESENTE LE CARACTERE OBTENU PAR "
         ASCI        "L'ACTION CONJOINTE SUR 'CTRL' ET SUR 'D' . "
M7:      WORD        $-OM7*2
OM8:     BYTE        '6D;"<"
         ASCI        "NOM> DESIGNE LE NOM D'UN MODE "
         ASCI        "D'EMPLOI , DONT LA LISTE SUIT : "
         BYTE        '6D;0
M8:      WORD        $-OM8*2
OM9:     BYTE        '6D;"?"
         ASCI        "CMS4   INTRODUCTION AU MONITEUR CMS4 , "
M9:      WORD        $-OM9*2
OM10:    BYTE        '6D;"?"
         ASCI        "ED     UTILISATION DE L'EDITEUR DE TEXTES , "
M10:     WORD        $-OM10*2
OM11:    BYTE        '6D;"?"
         ASCI        "G3     UTILISATION DU SYSTEME GRAPHIQUE G3 , "
M11:     WORD        $-OM11*2
OM17:    BYTE        '6D;"?"
         ASCI        "VIDEO  UTILISATION DU SYSTEME VIDEO , "
M17:     WORD        $-OM17*2
OM12:    BYTE        '6D;"?"
         ASCI        "KA     SAUVEGARDE ET RESTAURATION DES ITEMS , "
M12:     WORD        $-OM12*2
OM13:    BYTE        '6D;"?"
         ASCI        "SE     CREATION DES ITEMS SPECIAUX , "
M13:     WORD        $-OM13*2
OM14:    BYTE        '6D;"?"
         ASCI        "GE     GESTION DES ITEMS ET DES GRAPHES , "
M14:     WORD        $-OM14*2
OM15:    BYTE        '6D;"?"
         ASCI        "TYPE   LISTE DES TYPES POSSIBLES D'ITEMS , "
M15:     WORD        $-OM15*2
OM16:    BYTE        '6D;"?"
         ASCI        "DEF    DEFINITIONS DIVERSES ET VARIEES , "
M16:     WORD        $-OM16*2
         PAGE
<
<
<        E M I S S I O N   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MOT D'UN MOT CONTENANT LA LONGUEUR
<                      OCTETS DU MESSAGE ET SUIVANT CELUI-CI.
<
<
         PROG
PRINT:   EQU         $
         PSR         C               < SAVE LA BASE C.
         LR          A,C             < C=@MOT DE LA LONGUEUR.
         LA          0,C             < A=LONGUEUR DU MESSAGE ,
         STA         DEMOUT+2        < QUE L'ON MET DANS DEMOUT.
         XR          A,C             < C=LONGUEUR ; A=@LONGUEUR.
         ADR         A,A             < A=@OCTET DE LA LONGUEUR.
         SBR         C,A             < A=@OCTET DU MESSAGE ,
         STA         DEMOUT+1        < QUE L'ON MET DANS DEMOUT.
         LAD         DEMOUT
         SVC         0               < EMISSION DU MESSAGE.
         PLR         C
         RSR
         PAGE
<
<
<        P R O C E S S E U R   H E L P  :
<
<
         WORD        LOC+'80         < POUR INITIALISER L.
         WORD        BRANCH          < POUR INITIALISER W.
HELP:    EQU         $
         LRP         K
         ADRI        -1,K
         PLR         L,W             < INITIALISATION DE L & W.
         LA          APILE
         LR          A,K             < INITIALISATION DE K.
         LA          NGE
         STA         0,W             < MISE EN PLACE DU NOM DE L'3VERLAY
                                     < DE RETOUR.
         LAI         6
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE 'LOAD
                                     < SOUS :SYS'.
<
<
<        H E L P   D E   L ' U T I L I S A T E U R  :
<
<
         LAD         DERASE
         SVC         0               < EFFACEMENT DE L'ECRAN.
E3:      EQU         $
         LA          &AMESS          < RECUPERATION DE L'ADRESSE
                                     < DU MESSAGE COURANT.
         JAE         E2              < FIN DE LISTE.
         BSR         APRINT          < EDITION DU MESSAGE COURANT.
         JNE         E2              < ABORT SI CTRL-X-OFF ...
         IC          AMESS           < SINON , PASSAGE MESSAGE SUIVANT.
         JMP         E3
<
<
<        R E T O U R   O V E R L A Y   S U I V A N T  :
<
<
E2:      EQU         $
         LAD         DEMSGN          < A=@DEMSGN ; W=@BRANCH.
         BSR         AOVL            < TENTATIVE DE CHARGEMENT.
         LAD         DEMCCI          < CAS DES ERREURS : RETOUR
         SVC         0               < AU CCI.
         JMP         E2              < CAS DES !GO.
         PAGE
<
<
<        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        < ERREUR D'ASSEMBLAGE SI ...
         DZS         X10+1           < PROPRETE ...
         PAGE
<
<
<        G E N E R A T I O N   D E   H E L P  :
<
<
         COMMON
COM:     EQU         $
MOK:     BYTE        '6D;"O"
         ASCI        "K!"
DEMOK:   WORD        '0202
         WORD        MOK-ZERO*2
         WORD        4
         PROG
         WORD        COM+'80
         WORD        LOC+'80
GENERE:  EQU         $
         LRP         K
         ADRI        -1,K
         PLR         C,L             < INITIALISATION DE C & L.
         LA          APILE
         LR          A,K             < INITIALISATION DE K.
<
< TENTATIVE DE GENERATION :
<
HE1:     EQU         $
         LAD         DEMSGN
         SVC         0
         JNE         HE2             < ERREUR DE GENERATION ...
<
< OK , BONNE GENERATION :
<
         LAD         DEMOK
         SVC         0               < ENVOI DU MESSAGE OK.
HE3:     EQU         $
         LAD         DEMCCI
         SVC         0               < ET RETOUR DEFINITIF AU CCI.
         JMP         HE3             < MEME SI !GO.
<
< ERREURS DE GENERATION :
<
HE2:     EQU         $
         LAD         DEMCCI
         SVC         0               < RETOUR PROVISOIRE AU CCI.
         JMP         HE1             < NOUVELLE TENTATIVE SI !GO.
         END         GENERE



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.