DF'SIP DEFINITION CMS5'
ED'SIP DEFINITION CMS5'
IN0
         IDP         "SIP DEFINITION CMS5"
<
<
<        C O N S T A N T E S   L I E E S   A   C M S 5  :
<
<
LCCI:    VAL         80              < LONGUEUR MAX DES MESSAGES 'CCI'.
NBITMO:  VAL         16
IDESC:   MOT         '0C             < IDESC DANS DCTESC
DEMSWP:  MOT         '17             < NSPTYP DE DEMSWP DANS DCTESC
ATASGN:  MOT         '38             < RELAI VERS TASSGN
TASSGN:  MOT         '38+1           < DEPLACEMENT DE TASGN DANS DCTESC
ACADCT:  VAL         'FF80           < ACCES A LA ROUTINE CADCT DE CMS4
TETE:    MOT         '18             < DEPLACEMENT DE TETE DANS DCT
SIT:     MOT         '20             < DEPLACEMENT DE SIT DANS DCT
ETAT:    MOT         '2E             < DEPLACEMENT DE ETAT DANS DCT
FRETRY:  VAL         '32             < ROUTINE D'ITERATION DES TENTATIVES.
OPDEM:   MOT         1               < ACCES OPDEM DANS DEMANDE DE SERVICE
CODEM:   MOT         3               < ACCES CODEM DANS DEMANDE DE SERVICE
NVP:     VAL         '0B             < NVP DE LA VISU ASSIGNEE
NVPMAX:  VAL         '0C-1           < DERNIER NVP ACCESSIBLE
NESCLA:  VAL         8+1             < NOMBRE D'ESCLAVES +1
SECTSY:  VAL         '800            < ADRESSE SECTEUR DU SYSTEME
LBUFES:  VAL         '38             < LONGUEUR EN MOTS DE BUFESC
NSPTV:   VAL         '04             < NSP DU SYSTEME VIDEO
NSPNXS:  VAL         '18             < NSP DU HANDLER NEXT-SERIE
NSPDK1:  VAL         '23             < NSP DU 1ER DISQUE
NSPHOR:  VAL         '29             < NSP DE HDLHOR
NSPESC:  VAL         '57             < NSP D'ACCES A LA LISTE DES DCTESC
NSPUSE:  VAL         '61             < NSP D'ACCES A NUSERA
NSPDAT:  VAL         '6A             < NSP D'ACCES A LA DATE/HEURE
NSPSAV:  VAL         '6B             < NSP D'INTERFACE DU SYSTEME
                                     < DE SAVE/RECOVERY
XWOR%1:  VAL                     "@"
         IF          XWOR%1-"S",XWOR%,,XWOR%
ORDI:    VAL         "S"             < ASSEMBLAGE SOLAR-CMS5.
DADR:    VAL         -4              < CONVERSION ADRESSE 16-MOTS.
TZSWAP:  VAL         'A8             < NOMBRE DE SECTEURS D'UNE ZONE
                                     < DE SWAPPING ESCLAVE
NBCUS:   VAL         "3"             < NUMERO DU CU DE SORTIE SON.
WCUS:    VAL         '0818+'0005     < ARGUMENT DE SIO ECRITURE SUR CU SON.
NSPVI1:  VAL         '06             < NSP DE LA PREMIERE VISU
NSPVIN:  VAL         '0D             < NSP DE LA DERNIERE VISU
BOERA:   MOT         6               < DEPLACEMENT TEMPO ERASE DANS DCT.
ATABUL:  MOT         '0C             < ACCES TABLE DE TABULATION VISU.
NSPUPD:  VAL         '50             < NSP D'ACCES AU NUMERO DE RELEASE CMS5.
TVCTRL:  MOT         '1B             < ADRESSE EN MEMOIRE DEBANALISEE DU MOT
                                     < DE CONTROLE DU SYSTEME DE TELEVISION
                                     < NUMERIQUE.
TVIN:    VAL         '0040           < BIT DISCRIMINANT IN (1) ET OUT (0).
TVSIMU:  VAL         '0003           < MASQUE DES INDICATEURS DE
                                     < SELECTION DES COMPOSANTES.
TVMEM:   VAL         '1B             < ADRESSE-1 DES ADRESSES DES 3
                                     < COMPOSANTES R-V-B.
TVMEME:  MOT         '1F             < ADRESSE EN MEMOIRE DEBANALISEE DU MOT
                                     < DONNANT L'ADRESSE DE LA ZONE MEMOIRE
                                     < DONT ON SIMULE LA VISUALISATION
                                     < DYNAMIQUE.
TVNITE:  MOT         '0C             < MOT CONTENANT LE NBRE D'ITERATIONS.
TVPR:    VAL         1               < NUMERO DU PROCESSEUR ROUGE,
TVPV:    VAL         2               < NUMERO DU PROCESSEUR VERT,
TVPB:    VAL         3               < NUMERO DU PROCESSEUR BLEU.
NSPCOL:  VAL         '51             < NSP D'ACCES A LA MEMOIRE DES COULEURS.
XWOR%:   VAL         0
         IF          XWOR%1-"S",,XWOR%,
ORDI:    VAL         "T"             < ASSEMBLAGE T1600-CMS4.
TZSWAP:  VAL         '80             < NOMBRE DE SECTEURS D'UNE ZONE
                                     < DE SWAPPING ESCLAVE
NBCUS:   VAL         "1"             < NUMERO DU CU DE SORTIE SON.
WCUS:    VAL         '0236           < ARGUMENT SIO ECRITURE SUR CU SON.
NSPVI1:  VAL         '07             < NSP DE LA PREMIERE VISU
NSPVIN:  VAL         '0E             < NSP DE LA DERNIERE VISU
BOERA:   MOT         5               < DEPLACEMENT TEMPO ERASE DANS DCT.
ATABUL:  MOT         '0B             < ACCES TABLE DE TABULATION VISU.
XWOR%:   VAL         0
         IF          ORDI-"T",XWOR%,,XWOR%
VAR:     MOT         '33             < ZONE VARIABLE DES 'DCT'.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
ASYSER:  VAL         'FFDF           < DEPLACEMENT D'ACCES AU S/P 'SYSER'.
VAR:     MOT         '37             < ZONE VARIABLE DES 'DCT'.
XWOR%:   VAL         0
ADM:     MOT         VAR+1           < ADRESSE MEMOIRE DE LA ZONE
                                     < VISUALISEE PAR LE SYSTEME VIDEO
COM:     MOT         VAR+2           < SENS DE L'OPERATION VIDEO
NSPUP:   MOT         VAR+0           < ACCES AU MOT DE DCTHOR PERMETTANT
                                     < DE REACTIVER UN HANDLER
:F
:F
< <<'SIP DEFINITION CMS5'
DF'SIP DEFINITION CMS5'
DF'SIP DEFINITION ITEM'
ED'SIP DEFINITION ITEM'
IN0
         IDP         "SIP DEFINITION ITEM"
         NLS
XXXXXX:  VAL         1               < ABSENCE DE PROCESSEUR CONCERNE.
XXXXXX:  VAL         "GE"-NMPROC='FF00(XXXXXX < EST-CE "GE" ???
XXXXXX:  VAL         "GI"-NMPROC='FF00(XXXXXX < OU "GI" ???
XXXXXX:  VAL         "GO"-NMPROC='FF00(XXXXXX < OU "GO" ???
XXXXXX:  VAL         "EI"-NMPROC='FF00(XXXXXX < OU "EI" ???
         IF          XXXXXX,XWOR%X,,XWOR%X
         LST
         PAGE
<
<
<        F O R M A T   D ' U N   N O E U D  :
<
<
         DSEC        FNOEUD
LNOEUD:  VAL         80              < NBRE DE MOTS OCCUPES PAR UN
                                     < NOEUD : ON SE LIMITE A 80 MOTS ,
                                     < AFIN QUE LE !SGN N'ALLOUE QU'UN
                                     < SECTEUR DISQUE A LA <VALEUR>.
NOEUD:   EQU         $
XXNOMC:  VAL         6               < NOMBRE DE CARACTERES DE <NOMC>.
XXNOCM:  VAL         2               < NOMBRE D'OCTETS PAR MOT.
NOMC:    DZS         XXNOMC/XXNOCM   < NOM CODE SUR 6 CARACTERES.
XXEOT:   VAL         '04             < CODE DE <EOT>.
XX80:    VAL         '80             < BIT DE PARITE.
         BYTE        XXEOT;"N"+XX80  < <EON> DE FIN DE <NOMC> ET
                                     < INDICAATEUR DE 'TYPE-NOEUD' ,
                                     < SOUS FORME 'N'+'80.
CONCOR:  DZS         XXNOMC/XXNOCM   < PERMET LA GESTION D'UNE CHAINE
                                     < DE CONCORDANCE RELIANT ENTRE
                                     < EUX TOUS LES NOEUDS REFERANCANT
                                     < LE MEME ITEM ; ON TROUVE ICI LE
                                     < <NOMC> DU NOEUD SUIVANT.
INDIC:   BYTE        XXEOT;0         < <EON> & INDICATEURS.
BITEM:   VAL         8               < BITEM=1 : UN ITEM EST ATTACHE
                                     <            A CE NOEUD.
ITEM:    DZS         XXNOMC/XXNOCM   < <NOMC> DE L'ITEM ATTACHE A
                                     < CE NOEUD.
         BYTE        XXEOT;0         < <EON>.
FAMILY:  BYTE        0;0             < OCTET0=OCCUPATION DES 8 PERES
                                     <        POSSIBLES DE CE NOEUD ,
                                     < OCTET1=OCCUPATION DES 8 FILS
                                     <        POSSIBLES DE CE NOEUD.
XXPF:    VAL         8               < NOMBRE DE PERES/FILS POSSIBLES.
XWOR%1:  VAL         XXNOMC/XXNOCM*XXPF
PERES:   DZS         XWOR%1          < LISTE DES 8 <NOMC> DES PERES
                                     < POSSIBLES DE CE NOEUD ;
                                     < ATTENTION : POUR CHAQUE <NOMC> ,
                                     < IL MANQUE L'<EON>.
FILS:    DZS         XWOR%1          < LISTE DES 8 <NOMC> DES FILS
                                     < POSSIBLES DE CE NOEUD ;
                                     < ATTENTION : POUR CHAQUE <NOMC> ,
                                     < IL MANQUE L'<EON>.
LNOM:    VAL         NOEUD-$+LNOEUD*XXNOCM
                                     < NOMBRE MAX DE CARACTERES DE <NOM>.
NOM:     DZS         LNOM/XXNOCM     < <NOM> REEL DU NOEUD.
TOPN:    EQU         $-1             < SOMMET DU NOEUD.
<
<
<        R E L A I S   D ' A C C E S   A U   N O E U D  :
<
<
XNOMC:   VAL         NOMC-NOEUD      < DEPLACEMENT DE <NOMC> DANS NOEUD
XNOM:    VAL         NOM-NOEUD       < DEPLACEMENT DE <NOM> DANS NOEUD.
ANOMC:   WORD        NOMC,X          < RELAI D'ACCES A <NOMC>.
ANOM:    WORD        NOM,X           < RELAI D'ACCES A <NOM>.
LTN:     VAL         $-NOEUD         < LONGUEUR DE LA DSEC.
         PAGE
<
<
<        F O R M A T   D ' U N   I T E M  :
<
<
         DSEC        FITEM
<
<
<        E N - T E T E   D E   L ' I T E M  :
<
<
LHITEM:  VAL         LNOEUD          < NBRE DE MOTS OCCUPES PAR
                                     < L'EN-TETE D'UN ITEM.
HITEM:   EQU         $               < EN-TETE D'UN ITEM.
NOMCI:   DZS         XXNOMC/XXNOCM   < NOM CODE SUR 6 CARACTERES.
         BYTE        XXEOT;"I"+XX80  < <EON> DE FIN DE NOM , ET
                                     < INDICATEURS TYPE-ITEM : 'I'+'80.
LRITEM:  WORD        0               < LONGUEUR REELLE DE L'ITEM EN
                                     < OCTETS (0 INITIALEMENT).
IINDIC:  WORD        0               < INDICATEURS DIVERS ET VARIES.
                                     < OCTET0=NATURE DE L'ITEM (='00 ,
                                     < SI L'ITEM EST VIDE) :
                                     < OCTET0='T' POUR 'TYPE-TEXTE'.
XWOR%3:  MOT         FAMILY-NOEUD
FAMILI:  EQU         HITEM+XWOR%3    < OCCUPATION DES 16 PERES POSSIBLES
                                     < D'UN ITEM.
XWOR%3:  MOT         PERES-NOEUD
PERIS:   EQU         HITEM+XWOR%3    < LISTE DES 16 PERES POSSIBLES
                                     < D'UN ITEM.
NOMI:    EQU         HITEM+XNOM      < NOM DE L'ITEM.
XWOR%3:  MOT         TOPN-NOEUD
TOPI:    EQU         HITEM+XWOR%3    < TOP DE L'EN-TETE DE L'ITEM.
         DZS         TOPI-IINDIC     < $<--TOPI+1.
<
<
<        R E L A I S   D ' A C C E S  :
<
<
ANOMCI:  WORD        NOMCI,X
ANOMI:   WORD        NOMI,X
<
<
<        C O R P S   D E   L ' I T E M  :
<
<
NBCAR:   VAL         74              < NBRE DE CARACTERES/LIGNE.
NBLIG:   VAL         35              < NBRE DE LIGNES/PAGE.
LITEM:   VAL         NBCAR*NBLIG     < NBRE DE CARACTERES MAX OCCUPES
                                     < PAR LE CORPS DE L'ITEM.
CITEM:   DZS         LITEM/XXNOCM    < CORPS DE L'ITEM PROPREMENT DIT.
XWORK2:  VAL         CITEM-HITEM
LTNI:    VAL         $-HITEM         < LONGUEUR TOTALE MAXIMALE EN
                                     < MOTS DE L'ITEM (EN-TETE+CORPS).
         PROG
PILE:    MOT         'FF0-6          < ADRESSE DE LA PILE DE SMC
         IF          XXXXXX,,XWOR%,
IINDIC  @                            < ON REND 'IINDIC' ABSOLU ...
XWOR%9:  VAL         6='F700         < ACCES A L'ETAT DE 'IINDIC'...
XWOR%9:  VAL         XWOR%9?'0043='F500+'0040='F600(0+6='F701
LRITEM  @                            < AINSI QUE 'LRITEM'...
XWOR%9:  VAL         6='F700         < ACCES A L'ETAT DE 'LRITEM'...
XWOR%9:  VAL         XWOR%9?'0043='F500+'0040='F600(0+6='F701
XWOR%:   VAL         0
         NLS
XWOR%X:  VAL         0
         IF          XXXXXX,,XWOR%X,
         LST
<
<
<        C O N S T A N T E S   D E   L ' I T E M :
<
<
NBLIG:   VAL         35              < NOMBRE DE LIGNES/ECRAN
NBCAR:   VAL         74              < NOMBRE DE CARACTERES/LIGNES
LTN:     VAL         '52             < LONGUEUR MOT DE L'EN-TETE
LTNI:    VAL         NBCAR*NBLIG/2+LTN < LONGUEUR TOTALE DE L'ITEM
PILE:    VAL         'FF0-6          < ADRESSE DE LA PILE DE SMC
LRITEM:  VAL         4               < EMPLACEMENT DE LA LONGUEUR DU
                                     < CORPS DE L'ITEM
IINDIC:  VAL         5               < INDICATEUR DU TYPE DE L'ITEM
                                     < (LE TYPE ATTENDU EST 'T')
LNOM:    VAL         '26             < NOMBRE MAX DE CARACTERES D'UN NOM
                                     < D'ITEM.
         NLS
XWOR%X:  VAL         0
         LST
:F
:F
< <<'SIP DEFINITION ITEM'
DF'SIP CODAGE PUNCH'
ED'SIP CODAGE PUNCH'
IN0
         IDP         "SIP CODAGE PUNCH"
<
<
<        T A B L E   D E   P U N C H   A S C I  :
<
<
         WORD        '2121           < EOT             4(TRANSPOSE EN '1F)
         WORD        '0000           < SPACE           20
         WORD        '4821           < !               21
         WORD        '0061           < "               22
         WORD        '0421           < #               23
         WORD        '4421           < $               24
         WORD        '2222           < POUR-CENT       25
         WORD        '8001           < &               26
         WORD        '0121           < '               27
         WORD        '8121           < (               28
         WORD        '4121           < )               29
         WORD        '4222           < *               2A
         WORD        '80A1           < +               2B
         WORD        '2421           < ,               2C
         WORD        '4002           < -               2D
         WORD        '8421           < .               2E
         WORD        '3002           < /               2F
         WORD        '2001           < 0               30
         WORD        '1001           < 1               31
         WORD        '0801           < 2               32
         WORD        '0401           < 3               33
         WORD        '0201           < 4               34
         WORD        '0101           < 5               35
         WORD        '0081           < 6               36
         WORD        '0041           < 7               37
         WORD        '0021           < 8               38
         WORD        '0011           < 9               39
         WORD        '0821           < :               3A
         WORD        '40A1           < ;               3B
         WORD        '8222           < <               3C
         WORD        '00A1           < =               3D
         WORD        '20A1           < >               3E
         WORD        '2061           < ?               3F
         WORD        '0222           < @               40
         WORD        '9002           < A               41
         WORD        '8802           < B               42
         WORD        '8402           < C               43
         WORD        '8202           < D               44
         WORD        '8102           < E               45
         WORD        '8082           < F               46
         WORD        '8042           < G               47
         WORD        '8022           < H               48
         WORD        '8012           < I               49
         WORD        '5002           < J               4A
         WORD        '4802           < K               4B
         WORD        '4402           < L               4C
         WORD        '4202           < M               4D
         WORD        '4102           < N               4E
         WORD        '4082           < O               4F
         WORD        '4042           < P               50
         WORD        '4022           < Q               51
         WORD        '4012           < R               52
         WORD        '2802           < S               53
         WORD        '2402           < T               54
         WORD        '2202           < U               55
         WORD        '2102           < V               56
         WORD        '2082           < W               57
         WORD        '2042           < X               58
         WORD        '2022           < Y               59
         WORD        '2012           < Z               5A
         WORD        'C002           < CROC G          5B
         WORD        '6002           < ANTI /          5C
         WORD        'A002           < CROC D          5D
         WORD        '8062           < CHAPEAU         5E
         WORD        '4062           < SOULIGN         5F
:F
:F
< <<'SIP CODAGE PUNCH'
DF'SIP GEN PROCESSEUR'
ED'SIP GEN PROCESSEUR'
IN0
         PAGE
         IDP         "SIP GEN PROCESSEUR"
<
<
<        G E N E R A T I O N   D U   P R O C E S S E U R :
<
<
         LOCAL
XXXLOC:  EQU         $
XXXCCI:  WORD        1               < RETOUR AU CCI.
XXXMOK:  BYTE        '6D;"O"
         ASCI        "K!"            < MESSAGE 'OK!'.
XXXDOK:  WORD        '0202           < ENVOI DU MESSAGE 'OK'.
         WORD        XXXMOK-ZERO*2
         WORD        4
XXXSGN:  WORD        '8402           < DEMANDE DE GENERATION DU PROCESSEUR.
         WORD        BRANCH-ZERO*2   < @OCTET DE LA BRANCHE.
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
         NLS
NOMOV1: @
         IF          '0006='F700,,XWOR%,
         LST
XXXOV1:  WORD        DEBOV1          < ADRESSE DEBUT OVERLAY 1.
         NLS
XWOR%:   VAL         0
NOMOV2: @
         IF          '0006='F700,,XWOR%,
         LST
XXXOV2:  WORD        DEBOV2          < ADRESSE DEBUT OVERLAY 2.
         NLS
XWOR%:   VAL         0
         LST
XXXPIL:  DZS         2               < PILE DE GENERATION.
         PROG
         USE         L,XXXLOC+'80
         WORD        XXXLOC+'80      < VALEUR INITIALE DE LA BASE L.
XXXGEN:  EQU         $
         LRP         L               < INITIALISATION DE LA BASE L.
         LA          -1,L
         LR          A,L
         LAD         XXXPIL-1        < INITIALISATION DE L'ADRESSE DE PILE.
         LR          A,K
         NLS
NOMOV2: @
         IF          '0006='F700,,XWOR%,
         LST
<
<        TENTATIVE DE GENERATION DE L'OVERLAY 2.
<
XXXGN4:  EQU         $
         LB          XXXSGN+1
         LA          XXXOV2          < PLACER SON ADRESSE DE DEBUT.
         SLLS        1
         STA         XXXSGN+1
         LAD         XXXSGN          < GENERATION.
         SVC         0
         STB         XXXSGN+1
         JE          XXXGN5          < OK ...
<
<        ERREUR - L'OVERLAY EXISTE DEJA.
<
         LAD         XXXCCI          < RETOUR CCI.
         SVC         0
         JMP         XXXGN4          < ET REESSAI.
<
<        BONNE GENERATION.
<
XXXGN5:  EQU         $
         LAD         XXXDOK          < ENVOI MESSAGE OK.
         SVC         0
         LAD         XXXCCI          < ET RETOUR AU CCI.
         SVC         0
         NLS
XWOR%:   VAL         0
NOMOV1: @
         IF          '0006='F700,,XWOR%,
         LST
<
<        TENTATIVE DE GENERATION DE L'OVERLAY 1.
<
XXXGN7:  EQU         $
         LB          XXXSGN+1
         LA          XXXOV1          < PLACER SON ADRESSE DE DEBUT.
         SLLS        1
         STA         XXXSGN+1
         LAD         XXXSGN          < GENERATION.
         SVC         0
         STB         XXXSGN+1
         JE          XXXGN8          < OK ...
<
<        ERREUR - L'OVERLAY EXISTE DEJA.
<
         LAD         XXXCCI          < RETOUR CCI.
         SVC         0
         JMP         XXXGN7          < ET REESSAI.
<
<        BONNE GENERATION.
<
XXXGN8:  EQU         $
         LAD         XXXDOK          < ENVOI MESSAGE OK.
         SVC         0
         LAD         XXXCCI          < ET RETOUR AU CCI.
         SVC         0
         NLS
XWOR%:   VAL         0
         LST
<
< TENTATIVE DE GENERATION :
<
XXXGN1:  EQU         $
         LAD         XXXSGN
         SVC         0               < ENVOI DEMANDE DE GENERATION.
         JNE         XXXGN2          < ERREUR : IL EXISTE DEJA!!!
<
< OK , BONNE GENERATION :
<
         LAD         XXXDOK
         SVC         0               < ENVOI DU MESSAGE OK.
<
< RETOUR DEFINITIF AU CCI :
<
XXXGN3:  EQU         $
         LAD         XXXCCI
         SVC         0               < RETOUR AU CCI.
         JMP         XXXGN3          < CAS DES !GO.
<
< CAS DES ERREURS DE GENERATION :
< LE PROCESSEUR EXISTE DEJA:
<
XXXGN2:  EQU         $
         LAD         XXXCCI
         SVC         0               < RETOUR PROVISOIRE AU CCI.
         JMP         XXXGN1          < TRY AGAIN LA GENERATION.
         END         XXXGEN
:F
:F
< <<'SIP GEN PROCESSEUR'
DF'SIP IMAGE 256'
ED'SIP IMAGE 256'
IN0
         IDP         "SIP IMAGE 256"
<
<
<        I M A G E   V I D E O
<
<
LNOM:    VAL         10              < NBRE MAX DE MOTS DU NOM IMAGE
CNMPL:   VAL         16              < NBRE DE MOTS DE 16 BITS PAR LIGNE.
DY:      VAL         4               < REDUCTION SUR L'AXE DES Y
RDY:     VAL         DY              < REDUCTION SUR L'AXE DES Y
DEDY:    VAL         DY=0            < DECALAGE EQUIVALENT A DY
DX:      VAL         1024/CNMPL/16   < REDUCTION SUR L'AXE DES X
RDX:     VAL         DX              < REDUCTION SUR L'AXE DES X
DEDX:    VAL         DX=0            < DECALAGE EQUIVALENT A DX
LIMAG:   VAL         1024/DY*CNMPL   < LONGUEUR MOT DE L'IMAGE
         IF          ORDI-"S",XWOR%,,XWOR%
<
< EN-TETE DE L'IMAGE VIDEO. CET EN-TETE EST UN ARGUMENT  D'APPEL LORS
< DE L'UTILISATION DE LA FONCTION INTERPOLATION VIDEO DU SYSTEME CMS5 SOLAR.
<
DEPSPA:  VAL         0               < DEPLACEMENT "SPARE".
DEPMOD:  VAL         '0@@@@+1        < DEPLACEMENT MODE TRACE :
                                     < = 1 : MODE TRACE "BLANC" ('SBT'),
                                     < = 0 : MODE TRACE "NOIR"  ('RBT'),
                                     < =-1 : MODE TRACE INVERSION ('IBT').
DEPY1R:  VAL         '0@@@@+1        < DEPLACEMENT Y1 RESULTAT.
DEPX1R:  VAL         '0@@@@+1        < DEPLACEMENT X1 RESULTAT.
DEPY2R:  VAL         '0@@@@+1        < DEPLACEMENT Y2 RESULTAT.
DEPX2R:  VAL         '0@@@@+1        < DEPLACEMENT X2 RESULTAT.
DEPY1:   VAL         '0@@@@+1        < DEPLACEMENT Y1 ARGUMENT.
DEPX1:   VAL         '0@@@@+1        < DEPLACEMENT X1 ARGUMENT.
DEPY2:   VAL         '0@@@@+1        < DEPLACEMENT Y2 ARGUMENT.
DEPX2:   VAL         '0@@@@+1        < DEPLACEMENT X2 ARGUMENT.
DEPIMA:  VAL         '0@@@@+1        < DEPLACEMENT IMAGE.
LENTIM:  VAL         '0@@@@          < LONGUENR DE L'EN-TETE IMAGE.
XWOR%:   VAL         0
:F
:F
< <<'SIP IMAGE 256'
DF'SIP SP1'
ED'SIP SP1'
IN0
         IDP         "SIP SP1"
<
<
<        I N I T I A L I S A T I O N   E N R E G I S T R E M E N T
<        V I D E O   E X T E R N E  :
<
<
<        FONCTION :
<                    0- MASQUER LES IT DE NIVEAU 7 ,
<                    1- INHIBER LA FONCTION DU ALT-MODE POUR
<                       CET UTILISATEUR ,
<                    2- BLOQUER LE SWAPPING OUT , AFIN DE RENDRE
<                       SON ESPACE MEMOIRE RESIDENT ,
<                    3- METTRE LE SYSTEME VIDEO EN LECTURE.
<
<
<        ARGUMENT :
<                    W=@DCT-ESCLAVE ,
<                    C=@COMMON CMS4.
<
<
TIMAG:   WORD        IMAG            < ADRESSE RELATIVE DE L'IMAGE
                                     < PAR RAPPORT AU REGISTRE SLO.
SP1:     EQU         $
<
< MASCAGE DU NIVEAU 7 :
<
         LAI         1
         XIMR        A               < MASCAGE DES IT DE NIVEAU 7.
<
< INHIBITION DU ALT-MODE :
<
         LA          IDESC,W         < ACCES A L'IDESC ESCLAVE.
         SBT         2               < INHIBITION DU ALT-MODE.
         STA         IDESC,W         < MAJ DE L'IDESC.
<
< BLOCAGE DU SWAPPING POUR L'ESCLAVE :
<
         LA          DEMSWP,W
         SBT         0
         STA         DEMSWP,W        < LE NSPTYP DE DEMSWP A SON BIT0
                                     < A 1 ; LE SWAPPING EST DONC
                                     < BLOQUE.
<
< MISE EN PLACE DE L'@ DE IMAG :
<
         LRP         L
         LB          TIMAG-$+1,L     < B=@RELATIVE DE IMAG.
         LA          10,W            < A=SLO DE L'ESCLAVE.
         ADR         A,B             < B=@ ABSOLUE DE IMAG.
         LXI         NSPTV
         BSR         ACADCT,C        < L=@DCT-VIDEO.
         STB         ADM,L           < DEMANDE DE TRAVAIL SUR IMAG.
<
< MISE DE LA VIDEO EN ENREGISTREMENT :
<
         LAI         '30             < CODE DE LECTURE 4K MOTS.
         IF          LIMAG-'1000,,X100,
         IF          L'IMAGE NE FAIT PAS 4K MOTS.
X100:    VAL         0
         STBY        COM,L
         RSR
:F
:F
< <<'SIP SP1'
DF'SIP SP1'
DF'SIP SP2'
ED'SIP SP2'
IN0
         IDP         "SIP SP2"
<
<
<        F I N   D ' E N R E G I S T R E M E N T
<        D E   V I D E O   E X T E R N E  :
<
<
<        FONCTION :
<                    1- REMETTRE LA VIDEO EN ECRITURE (TV) ,
<                    2- DEBLOQUER LE SWAPPING ,
<                    3- REAUTORISER LE ALT-MODE.
<                    4- DEMASQUER LES IT DE NIVEAU 7.
<
<
<        ARGUMENT :
<                    W=@DCT-ESCLAVE ,
<                    C=@COMMON CMS4.
<
<
SP2:     EQU         $
<
< RETOUR AU MODE ECRITURE (TV) :
<
         LXI         NSPTV
         BSR         ACADCT,C        < L=@DCT-VIDEO.
         LAI         'B0             < CODE ECRITURE ADM 4K MOTS.
         STBY        COM,L
<
< DEBLOQUAGE DU SWAPPING OUT :
<
         LA          DEMSWP,W
         RBT         0               < RAZ DU BIT0(NSPTYP(DEMSWP)).
         STA         DEMSWP,W
<
< RE-AUTORISATION DU ALT-MODE :
<
         LA          IDESC,W
         RBT         2
         STA         IDESC,W
<
< DEMASCAGE DU NIVEAU 7 :
<
         LAI         0
         XIMR        A               < DEMASCAGE DES IT DE NIVEAU 7.
         RSR
:F
:F
< <<'SIP SP2'
DF'SIP SP2'
DF'SIP SP3'
ED'SIP SP3'
IN0
         IDP         "SIP SP3"
<
<
<        V I S U A L I S A T I O N   I M A G E  :
<
<
SP3:     EQU         $
         LRP         L
         LB          TIMAG-$+1,L     < B=@RELATIVE IMAGE.
         LA          10,W            < A=SLO(ESCLAVE).
         ADR         A,B             < B=@ABSOLUE IMAGE.
         LXI         NSPTV
         BSR         ACADCT,C        < L=@DCT-VIDEO.
         STB         ADM,L           < DEMANDE DE VISUALISATION IMAGE.
         RSR
:F
:F
< <<'SIP SP3'
DF'SIP SP3'
DF'SIP DEF PROCESSEUR'
ED'SIP DEF PROCESSEUR'
IN0
         IDP         "SIP DEF PROCESSEUR"
         PAGE
<
<
<        I N T E R F A C E   D ' O V E R L A Y  :
<
<
<        FONCTION :
<                      CETTE ROUTINE EST CHARGEE DE CHARGER
<                    LA BRANCHE DE L'OVERLAY 'GE'/'EI' ;
<                    SI LE CHARGEMENT EST REUSSI , ELLE
<                    LUI DONNE LA MAIN ,
<                    SINON , ELLE REVIENT EN ERREUR.
<
<
<        ARGUMENT :
<                    W=ADRESSE 'BRANCH',
<                    A=ADRESSE DE 'DEMSGN'.
<
<
<        RESULTAT :
<                    LE RETOUR N'EST FAIT QU'EN CAS D'ERREUR.
<
<
         PROG
ZERO:    EQU         $
<
<
<        T R A N S M I S S I O N   D E S   A R G U M E N T S  :
<
<
         DZS         7               < ZONE DE TRANSMISSION ARGUMENTS :
CDRET:   VAL         2               < MOT2=CONDITIONS DE RETOUR (0=OK).
NCEI:    VAL         3               < <NOMC> DU NOEUD COURANT SUR
                                     < 6 CARACTERES (MOT3,MOT4,MOT5).
MODCAL:  VAL         6               < IDENTIFICATION DE L'APPELANT :
                                     < 0 : APPEL PAR !GE ,
                                     < 1 : APPEL PAR 'EI'.
<
<
<        A P P E L   O V E R L A Y  :
<
<
OVL:     EQU         $               < ENTRY DE CHARGEMENT DE LA
                                     < BRANCHE D'OVERLAY.
<        ON A ICI :
<                    A=@DEMSGN ,
<                    W=@BRANCHE.
         SVC         0               < ENVOI DE LA DEMANDE AU SGN.
         JNE         XXXRLD          < RETOUR EN ERREUR DU SGN.
<
< CAS OU LE CHARGEMENT DE L'OVERLAY EST CORRECT :
<
         BR          5,W             < ON PASSE ALORS LA MAIN A LA
                                     < BRANCHE QUE L'ON VIENT DE
                                     < CHARGER.
<
< CAS DES RETOURS EN ERREUR :
<
XXXRLD:  EQU         $
         RSR                         < RETOUR AU PROCESSEUR.
<
<
<        E N - T E T E   D U   P R O C E S S E U R  :
<
<
         TABLE
BRANCH:  EQU         $
NCEI:    VAL         ZERO-BRANCH+NCEI
CDRET:   VAL         ZERO-BRANCH+CDRET
MODCAL:  VAL         ZERO-BRANCH+MODCAL
         WORD        NMPROC          < NOM DU PROCESSEUR
         ASCI        "    "          < DESTINE A LA GENERATION.
         BYTE        '04;'D0         < <EON>-'P'+'80.
         WORD        '1F00           < TAILLE EN OCTETS AU CAS D'UN
                                     < APPEL PAR !CALL.
:F
:F
< <<'SIP DEF PROCESSEUR'
DF'SIP PAGE'
ED'SIP PAGE'
IN0
         NLS
<
XLIST:   VAL         0               < A PRIORI.
SAVORD:  VAL         ORDI            < A PRIORI.
         IF          ORDI-"S",XWOR%2,,XWOR%2
XLIST:   VAL         '00000000000@   < NIVEAU D'IMBRICATION DES NLS.
         IF          XLIST-1,XWOR%3,XWOR%3,
SAVORD:  VAL         ORDI            < SAUVEGARDE DE 'ORDI'.
ORDI:    VAL         "T"             < ON FAIT COMME SI ON ETAIT EN T1600,
                                     < ET DONC ON NE FERA PAS DE SOMMAIRE...
XWOR%3:  VAL         0
XWOR%2:  VAL         0
<
         IF          ORDI-"T",XWOR%1,,XWOR%1
         LST
         PAGE
         NLS
XWOR%2:  VAL         '0050='F350     < SAUVEGARDE DE CD1 EN CD2;
                                     < C'EST TOUT CE QU'ON FAIT DANS
                                     < CET IF, CAR IL NE FAUT PAS
                                     < FAIRE DE A-RONDS MODIFIANT CD1,
                                     < AU CAS OU ON SERAIT EN 'SOLAR'.
XWOR%1:  VAL         0
         IF          ORDI-"S",XWOR%1,,XWOR%1
XYZ003:  VAL         4               < NOMBRE DE CHIFFRES TRAITES
                                     < LORS DE LA CONVERSION HEXADECIMAL-
                                     < DECIMAL (EN PARTANT DE LA DROITE)
XYZ001:  VAL         '0959='F347     < DEPLACER LE COMMANTAIRE EN 2EME
                                     < CARTE DYNAMIQUE
        @<
XYZ001:  VAL         '0950='F309     < COMPLETER CETTE CARTE AVEC '< ...' DEVANT
        @:F;:F;:F;
XYZ001:  VAL         '09A0='F309     < INITIALISATION DE LA 3EME CARTE
         LST
         PAGE
         NLS
XYZ001:  VAL         '0@@@@          < RELEVER LE NUMERO DE PAGE COURANT
         DO          XYZ003          < CONVERSION HEXADECIMAL-DECIMAL
XYZ001:  VAL         XYZ001/10(0='FD00='FE00(0+XYZ001/10
XYZ001:  VAL         0
         DO          XYZ003
XYZ001:  VAL         XYZ001*'10='FE01
                                     < L'AFFICHER SUR LE LISTING
<       @              @@@@                                  PAGE NUMERO  :
XWOR%2:  VAL         '174C='F304     < ON PLACE LE NUMERO DE PAGE
XWOR%2:  VAL         '0117='F304     < EFFACER LE NUMERO MAL PLACE
         LST
       @@
         NLS
        @EQU         $
XYZ004:  VAL         '5D00='F307     < ETIQUETTE DE L'ENTRY DU S/P
         LST
       @@
         NLS
XYZ001:  VAL         XYZ001          < POUR RECUPERER LE NO DE PAGE DECIMAL
                                     < QUE L'ON VA GENERER EN CARTE DYNAMIQUE
        @PAGE NUMERO : @@@@
XYZ001:  VAL         '09A9='F312     < LE PROTEGER EN 3EME CARTE DYNAMIQUE
XYZ001:  VAL         XYZ002          < CONVERSION HEXADECIMAL-DECIMAL
         DO          XYZ003          < DU NUMERO DE LIGNE POUR 'ED'
XYZ001:  VAL         XYZ001/10(0='FD00='FE00(0+XYZ001/10
XYZ001:  VAL         0
         DO          XYZ003
XYZ001:  VAL         XYZ001*'10='FE01
                                     < LE PLACER DANS LA 1ERE CARTE
                                     < DYNAMIQUE AVEC L'APPEL A 'ED'
;ED     @'SI DOC'   ;IN@@@@;<;<
XYZ002:  VAL         XYZ002+3        < ON L'INCREMENTE DE 3 CAR ON COMMENCE
                                     < PAR UNE CARTE VIDE
XYZ001:  VAL         'A927='F312     < RAMENER LE NUMERO DE PAGE DANS CETTE CART
XYZ001:  VAL         '004F='F23B     < LA COMPLETER PAR UN ';'
         EE
<
<        CECI EXECUTE LA SEQUENCE SUIVANTE :
<ED'SI DOC'
<IN0012                              PAR EXEMPLE
<
<PAGE NUMERO : 0004                  < PAR EXEMPLE
<SPLIST : SOUS-PROGRAMME DE LISTE D'UN MESSAGE
<:F
<:F
<:F
XWOR%1:  VAL         0
         IF          ORDI-"T",XWOR%1,,XWOR%1
                                     < ON PEUT Y ALLER....
        @EQU         $
                                     < POUR GENERER LE POINT D'ENTREE
XWOR%2:  VAL         '5D00='F307     < RECUPERATION DU NOM DU POINT
                                     < D'ENTREE.
         LST
       @@
         NLS
XWOR%1:  VAL         0
         IF          XLIST-1,XWOR%2,XWOR%2,
ORDI:    VAL         SAVORD          < RESTAURATION DE 'ORDI'.
XWOR%2:  VAL         0
         LST
:F
:F
< <<'SIP PAGE'
DF'SIP PAGE'



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.