NMPROC:  VAL         "SD"            < NOM DU PROCESSEUR.
         IDP         "SD - RELEASE 02.00 - 10/12/80"
         IDP         "GENERATEUR DE FILMS VIDEOS"
         IDP         "JOHN F. COLONNA"
XXXOUI:: VAL         1
XXXNON:: VAL         0
XXSGDK:: VAL         XXXNON          < L'OPTION 'SGN' <--> 'DKU' DISPARAIT, CAR
                                     < EN EFFET ELLE N'A PLUS DE RAISONS D'ETRE
                                     < PUISQUE 'CMS5' LE GERE...
ENDIF::  VAL         0
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP DEF PROCESSEUR#
         PROG
ENTRY:   WORD        SCENE           < @ENTRY POINT DU PROCESSEUR.
         WORD        0
PSCENE:  EQU         $               < P='12 !!!
         LRP         L
         BR          -2,L            < ENTREE DANS LE PROCESSEUR.
         PAGE
         EOT         #SIP DEFINITION ITEM#
ITEM1:   EQU         ZERO+PILE-LTNI  < @ITEM1.
ITEM2:   EQU         ITEM1-LTNI      < @ITEM2.
         EOT         #SIP IMAGE 256#
IMAG:    EQU         ZERO+PILE+5     < L'IMAGE VIDEO EST IMPLANTEE AU
                                     < BOUT DES 4 PREMIERS K-MOTS.
NOM:     EQU         ITEM1           < LE NOM DE L'IMAGE VIDEO EST MIS
                                     < DANS L'EN-TETE DE L'ITEM1.
EOT:     EQU         IMAG-2          < CONTIENT UN EOT MIS PAR 'TV'.
LONG:    EQU         IMAG-1          < CONTIENT UN NBRE NEGATIF S'IL S'
                                     < AGIT BIEN D'UNE IMAGE VIDEO.
                                     < (-3 , -2 , -1)
                                     < A T T E N T I O N  : EOT ET
                                     < LONG SONT EN RECOUVREMENT AVEC
                                     < LA PILE DE SODOME !!!!!
                                     < (DE MEME QUE LE 1ER MOT DE IMAG)
NCOOL:   VAL         3               < POUR IMAGE DE TYPE TW.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
<
<        T A B L E   D ' O C C U P A T I O N   ' T O '   P O U R   I M A G E S
<
<        D I T E S   D E   T Y P E   ' S D '   C ' E S T - A - D I R E   :
<
<        S G N / D K U.
<
<          CES IMAGES SONT COMPOSEES DE 2 PARTIES:
<        1- NOM ET VALEUR VVVV DANS LE SGN,
<        2- IMAGE PROPREMENT DITE DE 12 K MOTS SUR DKU.
<
<        NOTER QUE 'VVVV' EST L'ADRESSE SECTEUR SUR DKU DES 12K MOTS EN QUESTION
<
<          C'EST SD LUI-MEME QUI GERE CES IMAGES ET NOTAMMENT QUI TIENT A JOUR
<        EN 0000 DE DKU UNE TABLE D'OCCUPATION DONT CHAQUE BIT INDIQUE
<        L'EXISTENCE (BIT A 0) OU LA NON-EXISTENCE (BIT A 1) D'UNE IMAGE
<        DE RANG N SUR DKU, N ETANT LE RANG DU BIT DANS LA TABLE.
<
NSDKU:   VAL         'FA00           < NOMBRE DE Q-SECTEURS SUR DKU.
AIDKU:   VAL         '0800           < ADRESSE INITIALE DKU (1ER SECTEUR
                                     < UTILISABLE).
NSDKU:   VAL         NSDKU-AIDKU     < D'OU LE VRAI NB DE SECTEURS DKU.
XWORK:   VAL         -1              < VOIR PB : 'NSDKU' NEGATIF !
NSDKU2:  VAL         NSDKU>XWORK     < NOMBRE/2 DE Q-SECTEURS SUR DKU.
NSPI:    VAL         32+1            < NOMBRE DE SECTEURS PAR IMAGE
                                     < (+1 POUR OPTIMISER LES ACCES).
NIDKU2:  VAL         NSDKU2/NSPI
         IF          NSPI*NIDKU2-NSDKU2,XWOR%,,
NIDKU2:  VAL         NIDKU2-1
XWOR%:   VAL         0
XWORK:   VAL         -XWORK
NIDKU:   VAL         NIDKU2>XWORK    < NOMBRE D'IMAGES SUR DKU.
LTO:     VAL         NIDKU+15/16     < LONGUEUR DE TO EN NOMBRE DE MOTS.
         IF          LTO-128,XWOR%,XWOR%,
         IF          A T T E N T I O N ! ! !
XWOR%:   VAL         0
TO:      EQU         IMAG            < TO EST EN RECOUVREMENT AVEC LE DEBUT
                                     < DE L'IMAGE.
XOPT1:   VAL         ENDIF
<
<        P A R A M E T R E S   G E N E R A U X  :
<
NOCMO::  VAL         2               < NOMBRE D'OCTETS PAR MOT,
FGR::    VAL         0               < FONCTION DE LECTURE,
FGRE::   VAL         1               < FONCTION DE LECTURE AVEC ECHO,
FGW::    VAL         2               < FONCTION D'ECRITURE.
NVPCU::  VAL         '8B             < POUR ACCEDER AU 'CU3'...
<
<        F O R M A T   D E S   O R D R E S   ' C U 3 '  :
<                    ( M O T 2 )
<
MOT2::   VAL         1               < DEPLACEMENT D'ACCES AU MOT2...
CUCLIR:: VAL         '0001           < CLEAR LA CARTE 'TV'.
CUIN::   VAL         '0002           < MISE DE LA CARTE EN MODE IN/OUT.
CUINR::  VAL         '0004           < OUVERTURE DU ROBINET ROUGE,
CUINV::  VAL         '0008           < OUVERTURE DU ROBINET VERT,
CUINB::  VAL         '0010           < OUVERTURE DU ROBINET BLEU.
CUMODI:: VAL         '0060           < MODE D'ENTREE :
MODBI::  VAL         '0000           < BINAIRE INVERSE,
MODB::   VAL         '0060           < BINAIRE,
MODC2::  VAL         '0020           < COMPLEMENT A 2,
MODCI::  VAL         '0040           < COMPLEMENT INVERSE.
CUPROM:: VAL         '1F00           < NUMERO DE LA FONCTION DE TRANSFERT 'IN'.
         PAGE
<
<
<        P I L E   D E   R E C U R S I V I T E  :
<
<
<        FORMAT :
<                      LA PILE 'PIR' EST FAITE D'ENTREE DOUBLE-
<                    MOTS ASSURANT LA RECURSIVITE DU LANGAGE
<                    DE DESCRIPTION DES SCENARI.
<
<
IR:      VAL         0               < MOT0 : CAUSE DE L'EMPILEMENT :
                                     < BIT1=1 : PUSH POUR REPETITIONS ,
                                     < BIT2=1 : PUSH POUR APPEL PROG.,
                                     < BIT3=1 : PUSH POUR SAUT PROG.
CODREP:  VAL         '40             < PUSH POUR REPETITIONS.
BITREP:  VAL         1               < BIT DE REPETITIONS.
CODPRO:  VAL         '20             < PUSH POUR APPEL PROGRAMME.
BITPRO:  VAL         2               < BIT APPEL PROGRAMME.
                                     < A T T E N T I O N  : BITPRO
                                     < UTILISE AVEC BITDEF SIGINFIE
                                     < QU'ON APPELLE UN PROGRAMME
                                     < AVEC CHGT D'ITEM COURANT.
CODDEF:  VAL         '10             < PUSH POUR DEFINITION PROGRAMME.
BITDEF:  VAL         3               < BIT DE SAUT DEFINITION PROG.
CDCP:    VAL         1               < MOT1 : COMPTE DES 'DO' , ET
                                     < LE COMPTE ALGEBRIQUE DES
                                     < PARENTHESES.
CD:      VAL         2*CDCP+0        < OCTET0(MOT1)=NBRE DE REPETITIONS
                                     < RESTANT A FAIRE (INDEX DE TYPE
                                     < OCTET) ,
CP:      VAL         2*CDCP+1        < OCTET1(MOT1)=COMPTE ALGEBRIQUE
                                     < DES PARENTHESES RENCONTREES
                                     < SOUS CE NIVEAU :
                                     < '(' : +1 ,
                                     < ')' : -1.
LEPR:    VAL         2               < NBRE DE MOTS OCCUPES PAR UNE
                                     < ENTREE DE LA PILE PIR.
LPR:     VAL         8               < NBRE D'ENTREES DE PIR.
         PAGE
<
<
<        L O C A L  :
<
<
         LOCAL
LOC:     EQU         $
<
< DEMANDES A CMS4 :
<
DEMSGN:  WORD        '0402           < DEMANDE D'OVERLAY SGN.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DELSGN:  WORD        '0302           < DEMANDE DELETE SGN LORS DES
                                     < APPELS DE 'TI'.
         WORD        BRANCH-ZERO*2
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMBIB:  WORD        '0502           < CHARGEMENT DES BIBLIOTHEQUES.
         WORD        0               < @OCTET ITEM.
         WORD        2*LTNI
         WORD        -1
TYPIM:   WORD        0               < TYPE DE L'IMAGE A CHARGER:
                                     < = 0 : IMAGE 4K MOTS,
                                     < = 1 : IMAGE 12K MOTS SGN,
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
                                     < =-1 : IMAGE 12K MOTS DE TYPE SD (SGN/DKU)
XOPT1:   VAL         ENDIF
TYPOV:   EQU         TYPIM           < TYPE D'OVERLAY
                                     < = 0 : CHARGER DANS L'AUTRE ITEM;
                                     < = 1 : CHARGER DANS L'ITEM COURANT !
IDPM:    DZS         1               < OPERATION DEMANDEE SUR IMAGE DE TYPE SD:
                                     < = 0 : DISPLAY,
                                     < = 1 : CREATION,
                                     < =-1 : DELETE.
<        ATTENTION !!!
<
< R E C O U V R E M E N T   ' T Y P I M '   /   ' T Y P O V '   ! ! !
<
DEMTV:   WORD        '0502           < CHARGEMENTS DES IMAGES VIDEOS.
         WORD        NOM-ZERO*2
         WORD        IMAG-NOM+LIMAG*2
         WORD        EOT-NOM*2       < DEPLACEMENT D'ACCES A LA VALEUR.
DEMTV1:  WORD        '0502           < ACCES IMAGE 12K MOTS.
         WORD        NOM-ZERO*2
LIMAGW:  VAL         LIMAG*NCOOL     < LONGUEUR IMAGE TYPE TW.
         WORD        IMAG-NOM+LIMAGW*2
         WORD        IMAG-NOM*2
DEMOUT:  WORD        '0202           < DEMANDE ECRITURE SU OUT.
         WORD        0               < @OCTET DU MESSAGE.
         WORD        0               < LONGUEUR OCTET  DU MESSAGE.
COPY:    WORD        '0B07           < DEMANDE DE MAKE-COPY.
         BYTE        '1B;'17;'8D;'04 < ESC,CTRL-W,R/C,EOT.
DEM16K:  WORD        '0004           < DEMANDE DE 16K MOTS.
RELMEM:  WORD        '0004           < RETOUR A 4K MOTS.
         WORD        '8000
         WORD        '2000
ADEMTV:  WORD        DEMTV           < VALEUR A PRIORI DE L'ADRESSE DE LA
                                     < DEMANDE DE CHARGEMENT IMAGE.
SLEEP:   WORD        '0005           < DEMANDE DE TEMPORISATION DE
                                     < DUREE VARIABLE.
DEMCCI:  WORD        '0001           < RETOUR AU CCI.
SAVE:    WORD        0               < ZONE DE SAUVEGARDE TEMPORIARE.
< POUR ACCES AUX "ROBINETS" CAMERA SOLAR.
BUFCU:   DZS         MOT2+1          < POUR ENVOYER LES ORDRES 'CU3'.
DEMCU2:  BYTE        NVPCU;FGW       < ACCES AU MOT2 DE CU3.
         WORD        BUFCU-ZERO*2
         WORD        MOT2+1*2
<
< RELAIS DIVERS :
<
STDKU:   WORD        '8A01           < STABILISATION IMAGE,
         WORD        IMAG-ZERO*2
         WORD        LIMAG*2
VTVCTL:  WORD        0               < INDICATEURS DE COULEUR...
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
RWDKU:   WORD        '8A04           < ACCES DKU DIRECTS.
         WORD        0               < ADRESSE CDAI IMPLICITE.
         WORD        '6000           < LONGUEUR IMPLICITE (12 K MOTS).
         WORD        0               < ADRESSE SECTEUR IMPLICITE.
INCR:    WORD        '0020           < INCREMENT AUTOMATIQUE IMPLICITE.
XOPT1:   VAL         ENDIF
DMDIFF:  WORD        '8A01           < DIFFUSION IMAGE 12K.
         DZS         1               < ADRESSE MEMOIRE A ECHANGER.
         WORD        LIMAG*2         < LONGUEUR ECHANGE.
         DZS         1               < SENS ECHANGE ET NO DE COMPOSANTE.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
DEMDKS:  WORD        '0C00           < DEMANDE DISQUE SCRATCH.
         WORD        TO-ZERO*2
         WORD        LTO*2
         WORD        0
DEMDKU:  WORD        '8A00           < DEMANDE DKU (TABLE D'OCCUPATION).
         WORD        TO-ZERO*2
         WORD        LTO*2
         WORD        AIDKU
DSGNSD:  WORD        '0002           < DEMANDE SGN POUR IMAGES SGN/DKU.
         WORD        NOM-ZERO*2
         WORD        IMAG-NOM*2
         WORD        IMAG-NOM*2-2
DMRDKU:  WORD        '8A00           < READ IMAGE 12K SUR DKU.
         WORD        IMAG-ZERO*2
         WORD        LIMAG*NCOOL*2
         DZS         1
DMWDKU:  WORD        '8A02           < WRITE IMAGE 12K SUR DKU.
         WORD        IMAG-ZERO*2
         WORD        LIMAG*NCOOL*2
         DZS         1
< VALIDATION DEMANDE D'INITIALISATION DE TO.
REP:     BYTE        0;"O";"K";"?"
DEMOK:   WORD        '0202           < ENVOI MESSAGE "OK?".
         WORD        REP-ZERO*2+1
         WORD        3
DEMREP:  WORD        '0200           < DEMANDE REPONSE.
         WORD        REP-ZERO*2
         WORD        1
XOPT1:   VAL         ENDIF
AGOGE:   WORD        GOGE            < RELAI VERS LE MODULE D'APPEL GE.
AGOGER:  WORD        GOGER           < RETOUR A L'APPELANT AU CAS
                                     < OU UN ALT-MODE EST FRAPPE.
AGOCCI:  WORD        GOCCI           < RETOUR AU CCI.
ALOOPB:  WORD        LOOPB           < RETOUR DE L'INTERPRETEUR.
ALOOP:   WORD        LOOP            < BOUCLE DE L'INTERPRETEUR.
XOFF:    WORD        E962            < INTERPRETEUR SI CTRL-X-OFF.
ASVC:    WORD        RSVC            < EXECUTION D'UN SVC.
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
AGTK:    WORD        GTK             < ACCES AUN CARACTERE A CODER.
ACHGTI:  WORD        CHGTI           < CHANGEMENT D'ITEM COURANT.
AGTCAR:  WORD        GETCAR          < ACCES A UN CARACTERE POUR CAODER.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
AHEX:    WORD        HEX             < CONVERSION ASCI --> HEXA.
XOPT1:   VAL         ENDIF
APILE:   WORD        PILE-1          < POUR INITIALISER K.
AI1:     WORD        ZERO+PILE-LTNI+LTN,X
                                     < RELAI VERS L'ITEM1 A PRIORI.
AIC:     WORD        ZERO+PILE-LTNI+LTN,X
                                     < RELAI VERS L'ITEM COURANT.
AIR:     WORD        ZERO+PILE-LTNI+LTN,X
                                     < RELAI VERS L'ITEM DANS LEQUEL
                                     < ON FAIT LA RECHERCHE D'UN
                                     < PROGRAMME.
X1:      VAL         LEPR*LPR-LEPR   < NBRE DE MOTS OCCUPES PAR LA
                                     < PILE DE RECURSIVITE-LEPR.
BPR:     WORD        PIR             < BASE DE LA PILE DE RECURISIVITE.
TPR:     WORD        PIR+X1          < TOP DE LA PILE DE RECURSIVITE.
APRC:    WORD        PIR,X           < ENTREE COURANTE DE LA PILE
                                     < DE RECURSIVITE.
ASCENE:  WORD        SCENE           < @POINT D'ENTREE PRINCIPAL 'SC'.
ARET:    WORD        RETURN          < @POINT D'ENTREE UTILISE LORS
                                     < DES RETOURS A 'SC' FAITS PAR 'TI'
AENT:    WORD        ENTRY           < @ DE L'@ DU POINT D'ENTREE
                                     < DU PROCESSEUR 'SC'.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
ARTO:    WORD        RTO             < READ TABLE D'OCCUPATION.
AWTO:    WORD        WTO             < WRITE TABLE D'OCCUPATION.
AWDK:    WORD        WDK             < WRITE SUR DK SCRATH/DKU.
ASGNSD:  WORD        SGNSD           < ACCES SGN POUR IMAGE SGN/DKU.
XOPT1:   VAL         ENDIF
<
< CONSTANTES DIVERSES :
<
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
CNSPI:   WORD        NSPI            < NOMBRE DE Q-SECTEURS PAR IMAGE DKU.
CNIDKU:  WORD        NIDKU           < NOMBRE D'IMAGES SUR DKU.
CAPSU:   WORD        AIDKU+1         < ADRESSE DU 1ER SECTEUR UTILISABLE
                                     < POUR LE STOCKAGE DES IMAGES SUR DKU
                                     < (+1 PARCE QU'IL EN FAUT UN POUR LA
                                     < TABLE D'OCCUPATION DKU).
XOPT1:   VAL         ENDIF
C100:    WORD        '100            < CONSTANTE D'INTERPRETATION.
CFFF:    WORD        '0FFF           < RAZ DES BITS 0,1,2,3.
RETSVC:  WORD        0               < CONDITIONS DE RETOUR D'UN SVC.
CTTE:    WORD        1
ARGF:    WORD        -1              < INDEX DE LA 1ERE PRIMITIVE
                                     < DE L'ARGUMENT FORMEL COURANT.
IEG:     WORD        0               < INDEX COURANT DU SCENARIO ;
                                     < IL DONNE L'INSTRUCTION COURANTE.
NOMARG:  WORD        -1              < SAUVEGARDE DE L'INDEX INITIAL
                                     < D'UN NOM D'IMAGE, LORSQUE CELUI-
                                     < CI EXISTE (POUR LES APPELS 'TI').
ACCEB:   WORD        LTNI            < CONSTANTE DE CHANGEMENT D'ITEM
                                     < COURANT :
                                     < ACCEB>0 : ITEM COURANT=ITEM1 ,
                                     < ACCEB<0 : ITEM COURANT=ITEM2.
ALTNI2:  WORD        2*LTNI          < LONGUEUR MAX TOTALE D'UN
                                     < ITEM (EN-TETE+CORPS).
NCP:     WORD        NBCAR*NBLIG     < NBRE DE CARACTERES D'UN ITEM.
AGON1:   WORD        N1              < NOEUD D'ACCES A LA PRIMITIVE
                                     < SUIVANTE LORS DE L'ANALYSE
                                     < SYNTAXIQUE DU LANGAGE.
AGON22:  WORD        N22             < NOEUD DE BRANCHEMENT LORS
                                     < DE LA RENCONTRE DE CARACTERES
                                     < HORS-LA PAGE (GET CARACTER).
F3:      WORD        0               < VARIABLE DE CODAGE DES <NOM>.
WHOCAL:  WORD        0               < CONTIENT LE MODCAL EN COURS
                                     < LORS DE L'APPEL DE SC.
NCALL:   WORD        $+1,X;"GE";"EI"
ANPROC:  WORD        NPROC,X         < ACCES AUX OVERLAYS :
NPROC:   EQU         $               < LISTE DES OVERLAYS :
NSC:     WORD        "SC"            < NOM DU PROCESSEUR 'SC'.
NTI:     WORD        "TI"            < NOM DE L'OVERLAY 'TI'.
NTW:     WORD        " M"            < NOM DE L'OVERLAY 'TW'.
XXTW::   VAL         $-1-NPROC
NTX:     WORD        " N"            < NOM DE L'OVERLAY 'TX'.
XXTX::   VAL         $-1-NPROC
NTY:     WORD        " O"            < NOM DE L'OVERLAY 'TY'.
XXTY::   VAL         $-1-NPROC
NTZ:     WORD        " P"            < NOM DE L'OVERLAY 'TZ'.
XXTZ::   VAL         $-1-NPROC
NTC:     WORD        " Q"            < NOM DE L'OVERLAY 'TC'.
XXTC::   VAL         $-1-NPROC
NTD:     WORD        " G"            < NOM DE L'OVERLAY 'TD'.
XXTD::   VAL         $-1-NPROC
NT3:     WORD        " 3"            < NOM DE L'OVERLAY 'T3'.
XXT3::   VAL         $-1-NPROC
NT2:     WORD        " 2"            < NOM DE L'OVERLAY 'T2'.
XXT2::   VAL         $-1-NPROC
NT4:     WORD        " 1"            < NOM DE L'OVERLAY 'T4'.
XXT4::   VAL         $-1-NPROC
NT5:     WORD        " H"            < NOM DE L'OVERLAY 'T5'.
XXT5::   VAL         $-1-NPROC
NOV:     DZS         1               < NOM DE L'OVERLAY A CHARGER.
KIN:     WORD        -1              < COMPTEUR DES ENTREES DANS 'SC' :
                                     < -1 : 1ERE ENTREE ,
                                     < 0 : LORS D'UN ALT-MODE.
<
< CONSTANTES VIDEOS :
<
I1:      WORD        ITEM1           < @ITEM1.
XI1:     WORD        ITEM1,X         < RELAI D'ACCES A L'EN-TETE ITEM1.
ASI1:    WORD        SI1             < @ZONE DE SAVE EN-TETE ITEM1.
SI1:     DZS         LNOM+2          < ZONE DE SAVE EN-TETE ITEM1.
ALONG:   WORD        LONG            < RELAI D'ACCES A LA VALIDATION
                                     < DE L'IMAGE VIDEO.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
ARA1TO:  WORD        TO-1,X          < RELAI DE MISE A 'FFFF DE TO.
AXTO:    WORD        TO,X            < RELAI D'ACCES A TO.
XOPT1:   VAL         ENDIF
<
< DIVERS :
<
AIMAG:   WORD        IMAG            < @IMAGE VIDEO.
OENTRY:  WORD        0               < 0 : FAIRE LE JEU DE LA VIE.
                                     < #0 : APPEL DES OVERLAYS EN
                                     < BIBLIOTHEQUES ($).
STACK:   DZS         10              < PILE DE GENERATIUON DES SOCIETES.
         DZS         3               < ET BIN OUI CA SUFFISAIT PAS ..!!?
         PROG
         PAGE
         PAGE
<
<
<        E X E C U T I O N   D ' U N   S V C  :
<
<
<        ARGUMENT :
<                    A=@DEMANDE A CMS4.
<
<
<        RESULTATS :
<                    RETSVC=CONDITION S DE RETOUR DE CMS4 ,
<                    INDICATEURS POSITIONNES.
<
<
RSVC:    EQU         $
         PSR         X
         SVC         0               < APPEL DE CMS4.
         STX         RETSVC          < RENVOI DES CONDITIONS DE
                                     < RETOUR DE CMS4.
         PLR         X
         RSR
         PAGE
<
<
<        R E T O U R   A U   C C I  :
<
<
GOCCI:   EQU         $
E10:     EQU         $
         LAD         DEMCCI
E11:     EQU         $
         BSR         ASVC            < EXECUTION D'UN SVC.
         RSR                         < RETOUR LORS D'UN !GO.
         PAGE
<
<
<        R E T O U R   E N   E R R E U R  :
<
<
<        CONDITIONS DE RETOUR :
<                    CDRET=0 : RETOUR OK ,
<                    CDRET=2 : RETOUR SUITE A UN ALT-MODE.
<                              (OU BIEN CTRL-X-OFF LORS D'1N FLOPPY)
<
<
GOGER:   EQU         $
         LAI         2               < A=CONDITION D'ERREUR (2).
         JMP         GOBAC           < VERS LE RETOUR ...
<
<
<        R E T O U R   G E  :
<
<
GOGE:    EQU         $
         LAI         "I"             < TYPE 'FILM DIGITAL'.
         STBY        SI1+IINDIC      < L'ITEM COURANT RECOIT LE TYPE
                                     < FILM DIGITAL LORSQUE L'ON
                                     < SORT DE SC SANS ERREUR ...
                                     < (CECI EST FAIT DANS LA ZONE DE
                                     < SAUVEGARDE DE L'EN-TETE DE
                                     < L'ITEM , AVANT QUE CELLE-CI NE
                                     < SOIT RESTAUREE !!!)
         LAI         0               < A=CONDITION DE RETOUR OK (0).
GOBAC:   EQU         $
         STA         CDRET,W         < RANGEMENT DES CONDITIONS
                                     < DE RETOUR DE SC.
         STZ         MODCAL,W        < RAZ DU MODCAL A PRIORI.
<
< RESTAURATION DE L'EN-TETE DE L'ITEM1 :
< (AU CAS PAR EXEMPLE D'UN ALT-MODE MAL
< PLACE PENDANT LE CHARGEMENT D'1NE
< IMAGE VIDEO...)
<
         LA          ASI1
         LB          I1
         LXI         LNOM+1
         MOVE                        < RESTAURATION DE (I1) PAR (SI1).
<
< RETOUR A 4K MOTS :
<
         LAD         RELMEM
         SVC         0               < DEMANDE DE RETOUR A 4K MOTS.
<
< DELETE A PRIORI DE LA BRANCHE DE SAUVEGARDE :
<
         WORD        '1E45           < RENVOIE : A=<IDESC>.
         ADRI        '30,A           < CONVERSION ASCI DE L'<IDESC>.
         STBY        2,W             < ET MISE EN TETE DE LA BRANCHE.
         LAD         DELSGN
         SVC         0               < DELETE DE LA BRANCHE DE SAU-
                                     < VEGARDE ; LE RETOUR EST
                                     < INDIFFERENT !!!
         LAI         '20
         STBY        2,W             < SUPPRESION DE L'IDESC>.
<
< RETOUR A L'APPELANT (GE/EI) :
<
         LX          WHOCAL          < X=NUMERO DE LA BRANCHE DE
                                     < RETOUR DE SC.
         LA          &NCALL          < RECUPERATION DU NOM DE LA
                                     < BRANCHE DE RETOUR DE SC.
         STA         0,W             < LE NOM DE 'GE' EST MIS EN TETE
                                     < DE LA BRANCHE D'OVERLAY.
         LAI         '06             < NVP DE 6OAD SOUS :SYS.
         STBY        DEMSGN          < MISE DE DEMSGN EN MODE DE
                                     < LOAD SOUS :SYS.
         LAD         DEMSGN
         BSR         AOVL            < TENTATIVE DE CHARGEMENT DE 'GE'.
         JMP         E10             < ET VERS LE CCI SI ERREUR.
<
<
<        E R R E U R  :
<
<
ERREUR:  EQU         GOCCI
<
<
<        D E M A N D E   D E   P A U S E  :
<
<
<        ARGUMENT :
<                    SAVE EST LE CODEM DE LA DEMANDE 'SLEEP'.
<
<
PAUSE:   EQU         $
         LAD         SLEEP
         BSR         ASVC            < MISE EN ATTENTE.
         RSR                         < ET C'EST TOUT ...
         PAGE
<
<
<        A P P E L   E T   R E T O U R   D E   ' T I '   O U
<
<        D E   ' T W '   O U   D E   ' T X '   O U   D E   ' T Y '.
<
<
<        FONCTION :
<                      CE MODULE ASSURE L'APPEL ET LE
<                    RETOUR DU PROCESSEUR 'TI' ; ON PEUT
<                    AINSI , DANS 'SC' EFFECTUER TOUTES
<                    LES OPERATION S SUR IMAGE DE 'TV'.
<                      DANS CE CAS ON SAUVEGARDE POUR
<                    CHAQUE UTILISATEUR UNE COPIE DE
<                    'SC' (A CAUSE DES PPILES ET DES
<                    CONSTANTES DE TRAVAIL) , DONT LE
<                    NOM EST :
<                                    'SC<SPACE><SPACE><IDESC><SPACE>'.
<
<
<        A P P E L   ' T I '  :
<
<        TRANSMISSION DES ARGUMENTS :
<                    MODCAL=INDEX CARACTERE COURANT ,
<                           BIT0=0 : L'APPEL DE SC A EU LIEU PAR GE ,
<                           BIT0=1 : L'APPEL DE SC A EU LIEU PAR EI ,
<                    CDRET=RELAI VERS L'ITEM COURANT.
<
CALLTI:  EQU         $
         LA          NTI             < NOM DE L'OVERLAY = TI.
         STA         NOV
CALLOV:  EQU         $
         WORD        '1E45           < RENVOIE : A=<IDESC>.
         ADRI        '30,A           < CONVERSION ASCI DE L'IDESC.
         STBY        2,W             < MISE DE L'IDESC EN TETE
                                     < DE LA BRANCHE D'OVERLAY.
                                     < LE NOM DE LA BRANCHE EST DONC :
                                     < 'SC<SPACE><SPACE><IDESC><SPACE>'.
<
<        A T T E N T I O N  :
<                      ON FAIT CDRET#0 AVANT DE CHANGER
<                    LA VALEUR DE L'ENTRY POINT DE SC ;
<                    EN EFFET , TI RENVOIE UN CDRET=0 ;
<                    AINSI SI UN ALT-MODE EST FRAPPE PENDANT
<                    CALLTI , ON FERA UN ENTRY VERS 'RETURN'
<                    QUE L'3N POURRA DISTINGUER D'UN RETOUR
<                    DE TI PAR LA VALEUR DE CDRET !!!
<
         LA          AIC
         STA         CDRET,W         < TRANSMISSION DU RELAI VERS
                                     < L'ITEM COURANT PAR CDRET.
         LA          ARET
         STA         &AENT           < MISE EN PLACE DU POINT D'ENTREE
                                     < SECONDIARE A UTILISER LORS
                                     < LORS DU RETOUR DE 'TI'.
CALL1:   EQU         $
         LAD         DELSGN
         SVC         0               < DELETE PRELIMINAIRE DE LA
                                     < BRANCHE DE SAUVEGADRE.
         STZ         OENTRY          < SUPPRESSION A PRIORI DES SOUS-
                                     < PROGRAMMES EN OVERLAY ; EN EFFET
                                     < IL Y A DE GRANDES CHANCES QUE
                                     < 'TI' ECRASE L'ITEM1 !!!
         LAI         '04
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE STORE.
         LAD         DEMSGN
         SVC         0               < SAUVEGARDE DE L'OVERLAY COU-
                                     < RANT DE SC , SOUS L'IDESC ...
         LA          WHOCAL          < RECUPERATION DE LA NATURE DE
                                     < L'APPELANT DE SC.
         SCRS        1               < ON MET L'APPELANT DE SC EN BIT0
                                     < DU REGISTRE A.
         OR          IEG             < ET ON CONCATENE L'INDEX COURANT.
         STA         MODCAL,W        < TRANSMISSION DE L'INDEX
                                     < CARACTERE COURANT A 'TI'.
         LA          NOV             < NOM DE L'OVERLAY.
         STA         0,W             < MISE EN PLACE NOM DE L'OVERLAY.
         LAI         '20
         STBY        2,W             < SUPPRESSION DE L'IDESC.
         LAI         '06             < DEMSGN EST MISE EN MODE
         STBY        DEMSGN          < LOAD SOUS :SYS.
         LB          NOMARG          < TRANSMISSION PAR LE REGISTRE B
                                     < DE L'EVENTUEL NOMARG A 'TI'.
         LAD         DEMSGN
         BSR         AOVL            < TENTATIVE DE CHARGEMENT DE 'TI'.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI SI L'APPEL
                                     < DE 'TI' EST IMPOSSIBLE.
         LA          NSC
         STA         0,W             < RESTAURE L'EN-TETE DE L'OVERLAY
         JMP         CALLOV          < AVANT D'ITERER L'APPEL OVERLAY.
<
<
<        A P P E L   D E S   O V E R L A Y S
<        T W   T X   T Y   T Z   T C   T D
<        T 2   T 3   T 4   T 5  :
<
<
CALLTW:  EQU         $
CALLTX:  EQU         $
CALLTY:  EQU         $
CALLTZ:  EQU         $
CALLTC:  EQU         $
CALLTD:  EQU         $
CALLT2:  EQU         $
CALLT3:  EQU         $
CALLT4:  EQU         $
CALLT5:  EQU         $
         LR          B,X             < X=INDEX DE L'OVERLAY,
         LA          &ANPROC         < A=NOM DE L'OVERLAY A APPELER...
         JMP         CALLF
<
<
<        A P P E L   O V E R L A Y   Q U E L C O N Q U E  :
<
<
CALLPR:  EQU         $
         LAI         " "
         SWBR        A,A
         ORR         Y,A             < A=NOM DE L'OVERLAY A APPELER...
<
<
<        A P P E L   D E S   O V E R L A Y S  :
<
<
CALLF:   EQU         $
         STA         NOV             < NOM DE L'OVERLAY A APPELER.
         JMP         CALLOV          < CALL OVERLAY.
<
<        R E T O U R   D E   L ' O V E R L A Y.
<
         WORD        N1              < VALEUR DE LA BASE C.
         WORD        LOC+'80         < VALEUR DE LA BASE L.
         WORD        BRANCH          < VALEUR DE LA BASE W.
RETURN:  EQU         $
         LRP         K
         ADRI        -1,K
         PLR         C,L,W           < INITIALISATION DES 3 BASES.
         LA          APILE
         LR          A,K             < INITIALISATION DU REGISTRE
                                     < K SUR LA PILE DE SODOME.
         LA          MODCAL,W
         STA         IEG             < MISE A JOUR DE L'INDEX DE
                                     < RECUPERATION DES CARACTERES.
         STZ         MODCAL,W        < REINITIALISATION DE MODCAL.
         LAI         '20
         STBY        2,W             < SUPPRESSION DE L'IDESC EN TETE.
         LA          ASCENE
         STA         &AENT           < RESTAURATION DU POINT D'ENTREE
                                     < PRINCIPAL DE 'SC'.
         CPZ         CDRET,W         < EST-CE UN VRAI RETOUR DE L'OVERLAY?
         JNE         GOGER           < NON , ILS'AGIT D'UN
                                     < ALT-MODE RECU PENDANT CALLTI ;
                                     < ON RETOURNE DONC A GE ....
         BR          ALOOP           < VERS LA BOUCLE DE L'INTERPRETEUR.
         PAGE
<
<
<        E R E U R S   D ' E X E C U T I O N  :
<
<
<        FONCTION :
<                      METTRE EN EXPOSANT SI CELA EST
<                    POSSIBLE LE CARACTERE AYANY ETE
<                    RECONNU COMME EN ERREUR.
<
<
<        RETOUR TOUJOURS EN ERREUR (X#0).
<
<
CARUP:   EQU         $
         LA          IEG             < A=INDEX D'EXECUTION.
         LR          A,X             < A NOTER : X=(IEG)#0 !!!
         CP          NCP             < EST-CE UN HORS LA PAGE ???
         JGE         E510            < OUI , RIEN A FAIRE ...
         ADRI        -1,X            < NON , RETOUR SUR LE CARACTERE
                                     < PRECEDENT.
         LBY         &AIC            < A=CARACTERE ERRONE.
         ORI         '80             < POSITIONNEMENT DU BIT0.
         STBY        &AIC            < ET MAJ DE CE CARACTERE.
E510:    EQU         $
         RSR                         < RETOUR AVEC (X)#0 9
         PAGE
<
<
<        R E C U P E R A T I O N   D ' U N E   C O N S T A N T E  :
<
<
<        ARGUMENT :
<                    Y=CARACTERE COURANT ; SI Y='@' , LA
<                      CONSTANTE CALCULEE SERA (CTTE).
<
<
<        RESULTAT :
<                    X=0 : SAVE=CONSTNATE CHERCHEE ,
<                    X#0 : ERREUR.
<
<
REPET1:  EQU         $
         LXI         1               < ERREUR A PRIORI.
         LR          Y,A             < A=CARACTERE COURANT.
         ADRI        -'30,A          < CONVERSION BINAIRE
         JALE        E17             < ERREUR : NON RECONNU.
         CPI         9               < EST-CE UN CHIFFRE DE 1 A 9 ???
         JLE         E18             < OUI , OK ....
         ADRI        -'41+'39+1,A    < TRANSLATION PAR RAPPORT A 'A'.
         CPI         9               < VALIDATION.
         JL          E17             < ERREUR , NON RECONNU.
         JG          E308            < OK.
<
< CAS DU CARACTERE '@' :
<
         LA          CTTE            < LA CONSTANTE CHERCHEE EST (CTTE).
E308:    EQU         $
E18:     EQU         $
         STA         SAVE            < OK , LA CONSTANTE CHERCHEE
                                     < EST CORRECTE.
         LXI         0               < DONC RETOUR OK.
E17:     EQU         $               < SORTIE DE LA ROUTINE.
         RSR
<
<
<        T R A N S M I S S I O N   C O N S T A N T E  :
<
<
<        ARGUMENT :
<                    SAVE=CONSTANTE.
<
<
<        RESULTAT :
<                    Y=CONSTANTE CHERCHEE.
<
<
REPET2:  EQU         $
         LY          SAVE
         RSR                         < ON SE MOQUE DE (X) ....
         PAGE
<
<
<        M O D I F I C A T I O N   C T T E  :
<
<
SCTTE:   EQU         $
         LA          SAVE
         STA         CTTE
         RSR                         < RETOUR INDIFFERENT.
         PAGE
<
<
<        E D I T I O N   D ' U N   M E S S A G E  :
<
<
<        FONCTION :
<                      EDITER UN MESSAGE DONT LE 1ER
<                    CARACTERE EST A L'INDEX (SAVE) , ET
<                    LE DERNIER A L'INDEX (IEG)-1.
<                      MAIS ATTENTION, SI LE PREMIER
<                    CARACTERE DU MESSAGE EST "!", ALORS
<                    IL S'AGIT D'UNE CARTE ENVOYEE AU
<                    'CCI'...
<
<
TEXTE:   EQU         $
         LA          IEG
         ADRI        -1,A            < RETOUR SUR LE '!'.
         SB          SAVE            < A=LONGUEUR DU MESSAGE.
         STA         DEMOUT+2        < MAJ DE DEMOUT.
         LA          AIC
         SLLS        1
         AD          SAVE            < A=@OCTET DU MESSAGE.
         STA         DEMOUT+1        < MAJ DE DEMOUT.
         LA          DEMOUT
         PSR         A,X             < SAUVEGARDE DE 'DEMOUT' ET (X)...
         LX          SAVE
         LBY         &AIC            < (A)=PREMIER CARACTERE...
         CPI         "!"             < EST-CE UNE CARTE AU 'CCI' ???
         JNE         TEXTE1          < NON, UN MESSAGE A EDITER...
         LAI         2
         STA         DEMOUT          < OUI, ON REMPLACE L'ACCES A LA VISU PAR
                                     < UN ACCES AU 'CCI'...
TEXTE1:  EQU         $
         LAD         DEMOUT
         BSR         ASVC            < EDITION DU MESSAGE OU ACCES AU 'CCI'...
         PLR         A,X             < RESTAURATION DE (X),
         STA         DEMOUT          <                      ET DE 'DEMOUT'...
         JNE         E21             < CAS DES CTRL-X-OFF.
         RSR                         < OK , RETOUR.
<
<        S O R T I E S   E N   C T R L - X - O F F  :
<
E21:     EQU         $
         ADRI        -1,K            < ANNULATION DU BSR D'APPEL.
         LA          AGON22          < A=@NOEUD DES CTRL-X-OFF.
         BR          XOFF            < VERS UN RETOUR DIRECT A
                                     < LA BOUCLE DE L'INTERPRETEUR.
         PAGE
<
<
<        M A K E - C O P Y  :
<
<
<        FONCTION :
<                      FAIRE UN HARD-COPY SUR LA
<                    VISU D'EMISSION.
<
<
<        A T T E N T I O N  :
<                      LA TEMPORISATION EST A LA CHARGE DU
<                    PROGRAMME (PRIMITIVE '!'), AFIN DE
<                    PERMETTRE DES HARD-COPIES DE L'ECRAN,
<                    AINSI QUE DES TELECOMMANDES DE CAMERAS...
<
<
<        RETOUR EN ERREUR SI LA VISU D'EMISSION N'EST
<        PAS ASSIGNEE !!!
<
<
MCOPY:   EQU         $
         LAD         COPY
         SVC         0               < ENVOI DE LA DEMANDE DE HARD-COPY.
MCOPY1:  EQU         $
         RSR                         < RETOUR AVEC (X).
         PAGE
<
<
<        S A V E   N O M   C H E R C H E  :
<
<
<        RESULTAT :
<                    SAVE=INDEX DU 1ER CARACTERE DU NOM CHERCHE ,
<                    X EST INDIFFERENT.
<                    'TYPIM' / 'TYPOV' RAZE...
<
<
SAVNOM:  EQU         $
         LAI         0               < RAZ SYSTEMATIQUE 'TYPIM' / 'TYPOV' !
SAVNO1:  EQU         $
         STA         TYPIM           < SET 'TYPIM' / 'TYPOV'.
         LA          IEG             < A=INDEX COURANT.
         STA         SAVE            < QUE L'ON TRANSMET PAR SAVE.
         RSR                         < QUELQUE SOIT (X).
<
<        S A V E   N O M - I M A G E - 1 2 K   C H E R C H E.
<
<        RESULTAT:
<                    IDEM A 'SAVNOM' CI-DESSUS, MAIS DE PLUS 'TYPIM'
<                    (TYPE IMAGE) RECOIT 1.
<
SAVN12:  EQU         $
         LAI         1               < 'TYPIM' = IMAGE 12K SGN.
         JMP         SAVNO1
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
<
<        S A V E   N O M - I M A G E - 1 2 K - S G N / D K U.
<
SAVNIS:  EQU         $
         LAI         -1              < 'TYPIM' = IMAGE 12K SGN/DKU.
         JMP         SAVNO1
XOPT1:   VAL         ENDIF
<
<        S A V E   N O M   O V E R L A Y    A   C H A R G E R   S U R
<
<        L ' I T E M   C O U R A N T.
<
<        RESULTAT:
<                    IDEM A SAVN12 L'INDICATEUR 'TYPOV' / 'TYPIM' RECOIT 1.
<
SAVNOV:  EQU         SAVN12
<
<
<        L A N C E M E N T   P R O G R A M M E  :
<
<
<        ARGUMENT :
<                    SAVE=INDEX DE LA 1ERE COMMANDE DU
<                         PROGRAMME APPELE (SUIVANT '(' ).
<
<
<        RESULTAT :
<                    X#0 TOUJOURS.
<
<
START:   EQU         $
         LX          SAVE            < A NOTER (X)#0 !!!
         STX         IEG             < CHANGEMENT DE L'INDEX COURANT ...
         RSR
<
<
<        A C C E S   A   U N   C A R A C T E R E  :
<
<
<        FONCTION :
<                      RECUPERER LES NOMS DE PROGRAMME
<                    APPELE PAR CARACTERE.
<
<
<        ARGUMENT :
<                    X=INDEX DU CARACTERE DEMANDE.
<
<
<        RESULTAT :
<                    A=CARACTERE SI OK ,
<                    X<--(X)+1 SI OK ,
<                    RETOUR DIRECT EN 'E81' SI LE CARACTERE
<                    DEMANDE EST HORS-LA PAGE.
<
<
GETCAR:  EQU         $
         LR          X,A
         CP          NCP             < VALIDATION DE L'INDEX ARGUMENT.
         JE          E80             < ERREUR : HORS LA PAGE ; A NOTER
                                     < QUE (X)>NCP N'EST APS UNE
                                     < ERREUR , C'EST UN SAUT D'UN
                                     < ITEM A L'AUTRE !!!
         LBY         &AIR            < A=CARACTERE COURANT LORSQUE
                                     < L'INDEX EST VALIDE.
         ADRI        1,X             < PROGRESSION DE L'INDEX.
         RSR
<
< CAS DES SORTIES EN ERREUR :
<
E80:     EQU         $
         ADRI        -1,K            < ANNULATION DU BSR D'APPEL.
         JMP         E81             < RETOUR DIRECT A L'APPELANT.
<
<
<        R E C H E R C H E   D ' U N   P R O G R A M M E  :
<
<
<        FONCTION :
<                      RECHERCHER LA DEFINITION D'UN
<                    PROGRAMME DONT ON SE DONNE LE NOM.
<
<
<        ARGUMENT :
<                    SAVE=INDEX DU 1ER CARACTERE DU NOM
<                         CHERCHE , C'EST-A-DIRE LE 1ER
<                         QUI SUIT LE '&' D'APPEL.
<
<
<        RESULTAT :
<                    X#0 : LE PROGRAMME CHERCHE N'EXISTE PAS.
<                    X=0 : LE PROGRAMME CHERCHE EXISTE , ET ALORS :
<                    SAVE=INDEX DE LA 1ERE COMMANDE DU
<                    PROGRAMME , SOIT LA 1ERE SUIVANT '('.
<
<
<        R E C H E R C H E   E N   B I B L I O T H E Q U E  :
<
<
LOOKPB:  EQU         $
         LX          OENTRY          < LA BIBLI COURANTE EST-ELLE 'P' ???
         CPZR        X
         JNE         E81             < TYPE 'P' : RECHERCHE PROGRAMME
                                     < REFUSEE; DE PLUS (X)#0...
         LA          SAVE
         AD          ACCEB           < L'INDEX D'ACCES AU NOM CHERCHE
                                     < EST TRANSLATE DE FACON A ETRE
                                     < ACCESSIBLE DE L'AUTRE ITEM.
         AD          ACCEB           < (TRANSLATION OCTET).
         STA         SAVE
         LA          AIC
         SB          ACCEB           < L'ITEM DE RECHERCHE N'EST
                                     < PAS L'ITEM COURANT.
         JMP         E200            < VERS LA RECHERCHE.
<
<
<        R E C H E R C H E   D A N S   L ' I T E M   C O U R A N T  :
<
<
LOOKP:   EQU         $
         LA          AIC             < LA RECHERCHE SE FAIT DANS L'ITEM
                                     < COURANT.
E200:    EQU         $
         STA         AIR             < MISE EN PLACE DU RELAI DE
                                     < RECHERCHE COURANT.
         RBT         0               < RAZ DU BIT INDEX.
         STA         F3              < SAVE TEMPORAIRE DE L'@ITEM
                                     < DE RECHERCHE DANS F3.
         LXI         0               < INITIALISATION DE L'INDEX DE
                                     < RECHERCHE.
<
< BOUCLE DE RECHERCHE :
<
E71:     EQU         $
         LAI         ">"             < A=OCTET DE DEBUT DE DEVINITION
                                     < D'UN NOM DE PROGRAMME.
         LB          F3              < B=@ZONE DE RECHERCHE.
         LY          NCP             < Y=NBRE D'OCTETS DANS LA ZONE.
         SBS                         < RECHERCHE DE '>' ???
         JC          E81             < '>' NON TROUVE.
         ADRI        1,X             < OK , ON A TROUVE '>' , ET ON
                                     < LE DEPASSE.
E422:    EQU         $
<
< CAS OU ON A TROUVE LA DEFINITION D'UN PROGRAMME :
<
         LY          SAVE            < ^INDEX NOM CHERCHE ,
                                     < X=INDEX NOM TROUVE.
<
< COMPRARAISON DU NOM CHERCHE Y) ET DU
< NOM DEFINI (X) :
<
E72:     EQU         $
         BSR         AGTCAR          < ACCES A UN CARACTERE DE L'ITEM.
         LR          A,B             < B=CARACTERE COURANT DE LA
                                     < DEFINITION.
         XR          X,Y
         BSR         AGTCAR          < A=CARACTERE COURANT DU NOM
                                     < CHERCHE.
         XR          X,Y
         CPR         A,B             < TEST DE COINCIDENCE ???
         JE          E72             < OK , ON CONTINUE A COMPARER.
<
< CAS D'UNE NON-COINCIDENCE :
<
         CPI         ";"             < EST-CE LA FIN DU NOM CHERCHE ???
         JNE         E71             < NON.
<
< CAS DE LA FIN DU NOM CHERCHE :
<
         LR          B,A
         CPI         "("             < EST-CE AUSSI LA FIN DU NOM
                                     < DEFINI ???
         JNE         E71             < NON.
<
< CAS OU ON A TROUVE LA BONNE DEFINITION :
<
E987:    EQU         $               < ENTRY APPEL DE L'ARGUMENT
                                     < FORMEL COURANT.
         STX         SAVE            < TRANSMISSION DE L'INDEX DU 1ER
                                     < CARACTERE DE LA DEFINITION.
         LXI         0               < RETOUR OK.
<
< SORTIE DE LA ROUTINE :
<
E81:     EQU         $               < ENTRY HORS-LA PAGE.
         RSR                         < RETOUR AVEC (X).
<
<
<        A P P E L   A R G U M E N T   F O R M E L   C O U R A N T  :
<
<
CARGF:   EQU         $
         LX          ARGF            < X=INDEX PRESUME DE LA 1ERE
                                     < PRIMITIVE DE L'ARGUMENT
                                     < FORMEL.
         CPZR        X               < EXISTE-T'IL ???
         JL          E81             < NON , ERREUR ....
         JMP         E987            < OUI , C'EST BON ...
<
<
<        R E N C O N T R E   A R G U M E N T
<        F O R M E L   C O U R A N T  :
<
<
DARGF:   EQU         $
         LX          IEG             < X=INDEX DE LA 1ERE PRIMITIVE
                                     < DE L'ARGUMENT FORMEL RECONTRE.
         STX         ARGF            < ET TRANSMISSION PAR ARGF.
         RSR                         < RETOUR AVEC (X)#0.
<
<
<        I N I T I A L I S A T I O N   D E   Y  :
<
<
<        ARGUMENT :
<                    B=VALEUR A DONNER A Y.
<
<
<        RESULTAT :
<                    Y=QUELQUE CHOSE.
<
<
SETY:    EQU         $
         LR          B,Y             < INITIALUSATION DE (Y).
         RSR
         PAGE
<
<
<        V A L I D A T I O N   B I B L I O T H E Q U E  :
<
<
<        ARGUMENT :
<                    Y=0 : BIBLI DE NOM VIDE ($;),
<                     =1 : BIBLI DE NOM NON VIDE.
<
<
CHECKB:  EQU         $
         LX          ACCEB
         NGR         X,X
         ADRI        IINDIC-LTN,X    < X=INDEX MOT DU TYPE.
         ADR         X,X             < X=INDEX-OCTET DU TYPE.
         STZ         OENTRY          < TYPE 'T' OU 'I' A PRIORI ...
         LBY         &AIC            < A=TYPE DE L'ITEM.
         LXI         0               < OK A PRIORI ...
         CPI         "P"             < EST-CE EN FAIT UN PROGRAMME ???
         JNE         CHECK2          < NON...
<
< ACS DES PROGRAMMES :
<
         LA          AIR             < ACCES A SON ADRESSE EN-TETE.
         RBT         0               < RAZ DU BIT INDEX.
         ADRI        LTN,A           < ON DEPASSE SON EN-TETE.
         STA         OENTRY          < OENTRY RECOIT LE POINT D'ENTREE
                                     < DE L'OVERLAY DE TRAITEMENT
                                     < DE L'IMAGE COURANTE.
                                     < DE PLUS : ENTRY#0.
         CPZR        Y               < $; OU PAS ???
         JNE         CHECK1          < APPEL BIBLI NORMAL...
<
< ACS DES APPELS OVERLAYS IMPLICITES :
<
         LAD         STACK-1
         XR          A,K             < SAVE A=@PILE, ET INITIALISE
                                     < K SUR UNE GROSSE PILE...
         PSR         A,W             < SAVE (K) ET @BRANCH...
         PSR         X,Y,C,L         < SAVE C, L AINSI QUE X ET Y PAR
                                     < COMPATIBILITE AVEC 'LIFE'.
         LA          AIMAG
         LR          A,C             < A=C=@IMAG.
         BSR         &OENTRY         < APPEL DE L'OVERLAY.
         PLR         X,Y,C,L
         PLR         A,W
         LR          A,K             < RESTAURE LE REGISTRE K.
         JMP         CHECK1          < ET C'EST FINI...
<
<
<        V A L I D A T I O N   P R O G R A M M E   I N I T I A L  :
<
<
CHECKT:  EQU         $
         LXI         IINDIC-LTN*2    < INDEX OCTET.
E205:    EQU         $
         LBY         &AIC            < A=TYPE DE L'ITEM COURANT.
         LXI         0               < TYPE RECONNU A PRIORI.
CHECK2:  EQU         $
         CPI         "T"             < EST-CE UN TEXTE ???
         JE          CHECK1          < OUI , OK.
         CPI         "I"             < EST-CE UN FILM DIGITAL ???
         JE          CHECK1          < OUI , OK.
         LXI         1               < ERREUR : TYPE NON RECONNU.
CHECK1:  EQU         $
         RSR                         < RETOUR AVEC (X).
         PAGE
<
<
<        C H A R G E M E N T   D E S   B I B L I O T H E Q U E S  :
<
<
<        ROLE DES BIBLIS $; :
<                      L'APPEL PAR $;, PROVOQUE UN APPEL
<                    IMPLICITE DU PROGRAMME EN OVERLAY
<                    S'IL EXISTE, C'EST-A-DIRE S'IL A
<                    ETE CHARGE PRECEDEMMENT...
<
<
<        ARGUMENTS :
<                    B=0 ,
<                    IEG=INDEX 1ER CARACTERE <NOM-BIBLIOTHEQUE>.
<                    TYPOV=0 APPEL PAR $
<                    					=1 APPEL PAR :
<
<
<        RESULTAT :
<                    Y=0 : APPEL PAR $; OU :;,
<                     =1 : APPEL DIFFERENT DE $; ET :;.
<                    IEG RECOIT 0 SI :<NOM BIBLIOTHEQUE>;
<
<
LOADB:   EQU         $
<
<        C O D A G E   D E   < N O M >  :
<
         LA          AIC             < A=@MOT ITEM COURANT.
         CPZ         TYPOV           < TEST TYPE D'OVERLAY.
         JNE         LOADB1          < OVERLAY SUR L'ITEM COURANT LUI-MEME.
         SB          ACCEB           < CHANGEMENT D'ITEM.
LOADB1:  EQU         $
         ADRI        -LTN,A          < A=@EN-TETE DE L'AUTRE ITEM.
         STA         AIR             < AIR=RELAI EN-TETE AUTRE ITEM.
         SLLS        1               < A=@OCTET EN-TETE AUTRE ITEM.
         STA         DEMBIB+1        < MISE EN PLACE @OCTET DU BUFFER.
<
< INITIALISATION DU CODEUR :
<
         STZ         F3              < F3=0.
         LYI         3               < 3 MOTS A METTRE A 'SPACE'.
         LXI         0               < INDEX DE MISE A 'SPACE'.
         LAI         '20
         SBT         2               < A='SPACE''SPACE'.
E211:    EQU         $
         STA         &AIR
         ADRI        1,X
         CPR         X,Y
         JNE         E211
         LYI         -1              < Y=INDEX DE <NOMC>.
<        ON A ICI :
<                    B=0 (ARG1).
E500:    EQU         $
         BSR         AGTK            < A=K(SAV)).
         JE          E212            < RENCONTRE DU ';' DE FIN DE <NOM>.
         STBY        &AIR            < C(X)=K(SAVE).
         LR          Y,A
         CPI         2
         JL          E500            < RECUPERATION DE C(1) , C(2) , C(3).
<
< CODAGE DES CARACTERES K(4),...,K(L) :
<
E213:    EQU         $
         BSR         AGTK            < A=K(I) , I=4,...,L.
         JE          E214            < ARRET SUR ';' DE FIN DE <NOM>.
         ADR         Y,A             < PONDERATION DU CARACTERE (A) PAR
                                     < SA POSITION (Y).
         EORR        A,B             < CALCUL DE F2.
         ADR         A,B             < CALCUL DE F2.
         EOR         F3              < CALCUL DE F3.
         SCLS        1
         STA         F3              < CALCUL DE F3.
         JMP         E213            < PASSAGE AU CARACTERE SUIVANT.
<
< FIN DE CODAGE :
<
E214:    EQU         $
         LBY         F3
         AD          F3
         ANDI        '7F             < MISE DE F3 SUR 7 BITS.
         CPI         "Z"
         JLE         E215
         ADRI        -'30,A
E215:    EQU         $
         CPI         " "
         JG          E216
         ADRI        '30,A
E216:    EQU         $
         XR          A,B             < B=F3 ; A=F2.
         ANDI        '7F             < MISE DE F2 SUR 7 BITS.
         CPI         "Z"
         JLE         E217
         ADRI        -'30,A
E217:    EQU         $
         CPI         "0"
         JGE         E218
         ADRI        '20,A
         JMP         E217
E218:    EQU         $
         SWBR        A,A
         ORR         B,A
         LXI         2
         STA         &AIR            < STORE : C(5)=F2 ET C(6)=F3.
E212:    EQU         $
         LR          Y,A             < A=LONGUEUR DE <NOM>.
         JAE         NOMVID          < Y=0 : APPEL PAR $;.
         ADRI        '30,A           < CONVERSION ASCI.
         LXI         3
         STBY        &AIR            < STORE : C(4)=F1=LONGUEUR(<NOM>).
         LXI         6
         LAI         '04
         STBY        &AIR            < MISE EN PLACE D'UN EOT DE
                                     < FIN DE <NOMC>.
<
<        C H A R G E M E N T   D E   L A   B I B L I O T H E Q U E  :
<
         LYI         1               < Y=DECOMPTEUR DE TENTATIVES.
         LAI         5               < A=NVP DE LOAD SOUS <ACN>.
<
< BOUCLE DES TENTATIVES :
<
E206:    EQU         $
<        ON A ICI :
<                    A=NVP D'ACCES AU SGN ,
<                    Y=DECOMPTEUR DE TENTATIVES.
         STBY        DEMBIB          < MISE EN PLACE DU NVP D'ACCES.
         LAD         DEMBIB
         SVC         0               < ACCES AU SGN.
         JE          E220            < OK , LOAD SUCCESSFUL ...
<
< ACS DES RETOURS EN ERREUR :
<
         ADRI        -1,Y            < DECOMPTE DES TENTATIVES.
         CPZR        Y
         JL          E207            < C'ETAIT LA 2EME TENTATIVE ...
         LAI         6               < C'ETAIT LA 1ERE ; A=NVP
                                     < DE LOAD SOUS :SYS.
         JMP         E206            < VERS LA 2EME TENTATIVE.
<
< VALIDATION DU TYPE D'1NE BIBLIOTHEQUE :
<
E220:    EQU         $
         LXI         7
         LBY         &AIR            < A=TYPE DE L'ITEM CHARGE.
         LXI         'C9             < X='I'+'80 (ITEM).
         SBR         A,X             < X=0 SI TYPE ITEM.
         CPZ         TYPOV
         JE          E207
         STZ         IEG             < OVERLAY SUR ITEM COURANT LUI-MEME,
                                     < REPARTIR AU CARACTERE 0.
         STZ         TYPOV           < PLUS RIGOUREUX...
<
< SORTIE DE LA ROUTINE :
<
E207:    EQU         $
         LYI         1               < Y=1 : APPEL DIFFERENT DE $;.
NOMVID:  EQU         $               < Y=0 : APPEL $;.
         RSR
<
<
<        A C C E S   C A R A C T E R E   A   C O D E R  :
<
<
<        ARGUMENT :
<                    Y=LONGUEUR COURANTE DE <NOM> ,
<                    SAVE=INDEX DU CARACTERE COURANT.
<
<
<        RESULTAT :
<                    SAVE<--(SAVE)+1 ,
<                    A=CARACTERE COURANT ,
<                    Y<--(Y)+1 ,
<                    X<--(Y) ,
<                    ET LES INDICATEURS SUR LA PRESENCE DE ';'.
<
<
GTK:     EQU         $
         ADRI        1,Y             < PROGRESSION LONGUEUR <NOM>.
         LX          SAVE            < X=INDEX COURANT CARACTERE.
         IC          SAVE            < SAVE=INDEX CARACTERE SUIVANT.
         LBY         &AIC            < A=CARACTERE COURANT DE <NOM>.
         CPI         ";"             < TEST DE FIN DE <NOM>.
         LR          Y,X             < X=INDEX DE RANGEMENT DES 3
                                     < PREMIERS CARACTERES.
         RSR
         PAGE
<
<        D I F F U S I O N   V I D E O   E T   A C C E S   D K U.
<
PLUS1:   EQU         $
<
<        D I F F U S I O N   V I D E O   4 K   S U R   R O U G E.
<
         LAI         1
         JMP         PLUSSR
PLUS2:   EQU         $
<
<        D I F F U S I O N   V I D E O   4 K   S U R   V E R T.
<
         LAI         2
         JMP         PLUSSR
PLUS3:   EQU         $
<
<        D I F F U S I O N   V I D E O   4 K   S U R   B L E U.
<
         LAI         3
         JMP         PLUSSR
PLUSS:   EQU         $
<
<        I N H I B E R   D I F F U S S I O N   V I D E O   4 K.
<
         LAI         0
PLUSSR:  EQU         $
         STA         VTVCTL          < 'STDKU' + 3.
         LAD         STDKU           < DIFFUSION VIDEO 4K.
         SVC         0
         RSR
PLUS0:   EQU         $
<
<        D I F F U S I O N   I M A G E   ( 1 2 K ).
<
         LYI         0               < OUT.
PLUS40:  EQU         $
         LRM         A
         WORD        IMAG+LIMAG+LIMAG-ZERO*2
         LXI         3               < 3 COMPOSANTES.
PLUS41:  EQU         $
         STA         DMDIFF+1        < ADRESSE MEMOIRE A ECHANGER.
         LR          Y,A             < SENS DE L'ECHANGE.
         ADR         X,A             < NUMERO DE COMPOSANTE.
         STA         DMDIFF+3        < SENS ET COMPOSANTE.
         LAD         DMDIFF
         PSR         X
         SVC         0
         PLR         X
         LA          DMDIFF+1
         SB          DMDIFF+2
         STA         DMDIFF+1        < NOUVELLE ADRESSE MEMOIRE.
         JDX         PLUS41          < SUIVANTE...
         RSR
PLUS4:   EQU         $
<
<        R E C U P E R A T I O N   I M A G E   ( 1 2 K ).
<
         LYI         TVIN            < SENS = INPUT.
         JMP         PLUS40
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
PLUSB:   EQU         $
<
<        D E F I N I T I O N   L O N G U E U R   E C H A N G E   A V E C   D K U
<
<        +BXXXX      XXXX = LONGUEUR OCTETS (PAIRE SVP!).
<
         BSR         AHEX
         JG          PLUSBR
         JAL         PLUSBR
         TBT         15
         JNC         PLUSB1
         LXI         1               < ERREUR, NOMBRE IMPAIR.
         JMP         PLUSBR
PLUSB1:  EQU         $
         STA         RWDKU+2         < DEMANDE DKU.
PLUSBR:  EQU         $
         RSR
PLUSA:   EQU         $
<
<        D E F I N I T I O N   A D R E S S E   C D A I   P O U R
<
<        E C H A N G E S   D K U.
<
<        +@XXXX      XXXX = ADRESSE OCTETS (PAIRE SVP!).
<
         BSR         AHEX
         JG          PLUSAR
         TBT         15
         JNC         PLUSA1
         LXI         1               < ERREUR, NOMBRE IMPAIR.
         JMP         PLUSAR
PLUSA1:  EQU         $
         STA         RWDKU+1         < DEMANDE DKU.
PLUSAR:  EQU         $
         RSR
PLUSK:   EQU         $
<
<        D E F I N I T I O N   I N C R E M E N T   A U T O M A T I Q U E
<
<        P O U R   A C C E S   D K U.
<
<        KXXXX       XXXX = NOMBRE DE SECTEURS QUECONQUE.
<
         BSR         AHEX
         JNE         $+2
         STA         INCR            < VALEUR DE L'INCREMENT AUTOMATIQUE.
         RSR
PLUSE:   EQU         $
<
<        E C R I T U R E   D I R E C  E   S U R   D K U.
<
<        +EXXXX      ECRIRE A L'ADRESSE SECTEUR XXXX.
<        +E;         ECRIRE A L'ADRESSE SECTEUR SUIVANTE (COURANTE + 'INCR').
<
         LA          RWDKU
         SBT         14              < SET BIT ECRITURE.
         JMP         PLUSEF
PLUSF:   EQU         $
<
<        L E C T U R E     D I R E C  E   S U R   D K U.
<
<        +FXXXX      LIRE   A L'ADRESSE SECTEUR XXXX.
<        +F;         LIRE   A L'ADRESSE SECTEUR SUIVANTE (COURANTE + 'INCR').
<
         LA          RWDKU
         RBT         14              < RAZ BIT ECRITURE.
<
PLUSEF:  EQU         $
         STA         RWDKU
         BSR         AHEX            < ADRESSE SECTEUR EVENTUELLE.
         JG          PLUSER          < ADRESSE INCORRECTE.
         JE          PLDKU           < ADRESSE EXPLICITE.
         LA          RWDKU+3         < INCREMENTATION AUTOMATIQUE.
         AD          INCR
PLDKU:   EQU         $
         STA         RWDKU+3
         LAD         RWDKU
         SVC         0
PLUSER:  EQU         $
         RSR
<
<        O P E R A T I O N S   D E M A N D E E S   S U R
<
<        I M A G E S   1 2 K   S G N / D K U.
<
PLUSD:   EQU         $               < DISPLAY DEMANDE.
         STZ         IDPM
         RSR
PLUSP:   EQU         $               < CREATION ("PLUS").
         LAI         1
         JMP         PLPM
PLUSM:   EQU         $               < DELETE ("MOINS").
         LAI         -1
PLPM:    EQU         $
         STA         IDPM            < SET INDICATEUR OPERATION DEMANDEE.
         BSR         ARTO            < SYSTEMATIQUEMENT ON LIT TO POUR LA
                                     < REECRIRE (CF: COMMENTAIRES CI-DESSOUS).
         JMP         PLPMI
PLUSI:   EQU         $               < INITIALISATION DEMANDEE.
< QUE CE NE SOIT PAS INVOLONTAIRE...
         LAD         DEMOK           < OK?
         SVC         0
         LAD         DEMREP          < REPONSE...
         SVC         0
         LBY         REP
         CPI         '1F             < CARACTERE "OK" = CTRL-SHIFT-O.
         JNE         PLPMI1          < C'ETAIT UNE ERREUR!
         BSR         ARTO            < UNIQUEMENT POUR QUE SOIT SAUVE LE DEBUT
                                     < DE L'IMAGE (RECOUVREMENT).
         LXI         LTO             < LONGUEUR TABLE D'OCCUPATION.
         LAI         -1              < QU'ON VA METTRE A 'FFFF (LIBRE).
         STA         &ARA1TO
         JDX         $-1
PLPMI:   EQU         $
<
< ICI, ON REECRIT LA TABLE D'OCCUPATION. SOIT PARCE QU'ON VIENT DE LA REINITIALI
< SER, SOIT PARCE QU'UNE CREATION OU ON DELETE ON ETE DEMANDES (CF: CI-DESSUS)
< CES OPERATIONS NECESSITANT UNE MISE A JOUR DE TO.
< CETTE ECRITURE DE TO SUR DKU SERA SUIVIE D'UN ACTD SI ELLE SE PASSE MAL,
< AINSI, IL N'Y AURA PAS DE SURPRISE PAR LA SUITE, L'UTILISATEUR SERA FIXE.
<
         BSR         AWTO            < WRITE TABLE D'OCCUPATION.
         CPZR        B               < CODE RETOUR DU WRITE TO.
         JE          PLPMI1
         ACTD                        < ET VOILA...
PLPMI1:  EQU         $
         RSR                         < QUEL QUE SOIT 'X'.
         PAGE
HEX:     EQU         $
<
<        C O N V E R S I O N   A S C I   - - >   H E X A.
<
<        RESULTAT:
<                    - 'A' = NOMBRE APRES CONVERSION.
<                    - 'X' = CODE RETOUR (0/1/-1).
<                    - AU RETOUR FAIRE:
<                                    JE     OK
<                                    JG     ERREUR
<                                    JL     NOMBRE VIDE ( ";" RENCONTRE)
<                                           (ALORS 'A' A RECU 0).
<
         PSR         B
         LXI         4               < NOMBRE DE CHIFFRES HEXA.
HEXL:    EQU         $
         PSR         X               < SAVE COUNT.
         LX          IEG             < INDEX CARACTERE COURANT.
         IC          IEG             < C'EST FAIT.
         LBY         &AIC            < CARACTERE COURANT.
         CPI         "0"
         JL          HEXERR
         CPI         "9"
         JLE         HEXN
         CPI         "A"
         JL          HEXERR
         CPI         "F"
         JG          HEXERR
         ADRI        -7,A
HEXN:    EQU         $
         ADRI        -"0",A          < CONVERSION.
         SLLS        12
         SCLD        4
         PLR         X               < RECUPERATION COUNT.
         JDX         HEXL
< CONVERSION OK.
         LXI         0
         LR          B,A
         JMP         HEXR
HEXERR:  EQU         $               < ERREUR EVENTUELLE.
         CPI         ";"             < EST-CE UN NOMBRE VIDE (0 "ASSUMED")?
         PLR         A               < RECUPERATION COUNT.
         JNE         HEXER1          < ERREUR.
         CPI         4               < EST-CE ";" EN PREMIERE POSITION?
         JE          HEXPV           < OUI, NOMBRE NUL.
HEXER1:  EQU         $               < ERREUR INDUBITABLE.
         LXI         1
         JMP         HEXR
HEXPV:   EQU         $               < ;" RENCONTRE.
         LAI         0
         LXI         -1
HEXR:    EQU         $
         CPZR        X               < POUR TEST EN RETOUR.
         PLR         B
         RSR
XOPT1:   VAL         ENDIF
         PAGE
<
< E N T R E E   D ' U N E   I M A G E   C A M E R A.
<
INRVB:   EQU         $
PROMN::  VAL         '0000           < ADRESSE DE PROM STANDARD,
MODEN::  VAL         '0003           < MODE D'ENTREE STANDARD...
XWOR%2:  VAL         CUIN?CUINR?CUINV?CUINB
XWOR%1:  VAL         CUMODI=0
XWOR%2:  VAL         MODEN>XWOR%1?XWOR%2
XWOR%1:  VAL         CUPROM=0
XWOR%2:  VAL         PROMN>XWOR%1?XWOR%2
         LRM         A
         WORD        XWOR%2          < ENTREE SUR TOUTES LES COULEURS,
         STA         BUFCU+MOT2      < EN MODE STANDARD...
         LAD         DEMCU2
         SVC         0               < ENTREE,
         STZ         BUFCU+MOT2      < ET STOP IMMEDIAT AFIN DE
         JMP         INSTOP          < N'ENTRER QU'UNE TRAME...
<
<        E N T R E E   C A M E R A   R O U G E   S E U L.
<
INR:     EQU         $
XWOR%1:  VAL         CUINR=0
         LXI         NBITMO-1-XWOR%1 < ROBINET ROUGE.
         JMP         INCOUL
<
<        E N T R E E   C A M E R A   V E R T  S E U L.
<
INV:     EQU         $
XWOR%1:  VAL         CUINV=0
         LXI         NBITMO-1-XWOR%1 < ROBINET VERT.
         JMP         INCOUL
<
<        E N T R E E   C A M E R A   B L E U   S E U L.
<
INB:     EQU         $
XWOR%1:  VAL         CUINB=0
         LXI         NBITMO-1-XWOR%1 < ROBINET BLEU.
INCOUL:  EQU         $
         LAI         0
         SBT         0,X             < SET BIT ROBINET.
XWOR%1:  VAL         CUIN=0
         LXI         NBITMO-1-XWOR%1 < MODE INPUT.
         SBT         0,X
         STA         BUFCU+MOT2
XWOR%1:  VAL         CUMODI=0
         LAI         MODEN           < MODE D'ENTREE STANDARD.
         SLLS        XWOR%1
         OR          BUFCU+MOT2
         STA         BUFCU+MOT2
< ENVOI ORDRE CAMERA.
         LAD         DEMCU2
         SVC         0
INSTOP:  EQU         $
< STOPPER L'ENTREE LANCEE.
         STZ         BUFCU+MOT2
         LAD         DEMCU2
         SVC         0
         RSR
         PAGE
<
<
<        N O M   I M A G E   V I D E O  :
<
<
<        RESULTAT :
<                    SAVE=INDEX 1ER CARACTERE DU NOM PRESUME.
<
<
SNIMAG:  EQU         $
         LA          IEG
         ADRI        -1,A            < RETOUR SUR LA PRIMITIVE
                                     < NON RECONNUE.
         STA         SAVE            < AND SAVE ....
         RSR                         < RETOUR INDIFFERENT.
<
<
<        T E N T A T I V E   L O A D   I M A G E   O U   T R A I T E M E N T
<
<        I M A G E   1 2 K   S G N / D K U.
<
<
LOADI:   EQU         $
<
< VALIDATION LONGUEUR DU NOM :
<
         LA          IEG             < A=INDEX DE ';'+1.
         SB          SAVE
         ADRI        -1,A            < A=LONGUEUR DU NOM IMAGE.
         CPI         LNOM*2          < VALIDATION DE LA LONGUEUR ???
         JG          E1305           < ERREUR.
<
< SAVE EN-TETE ITEM1 :
<
         LB          ASI1            < B=@ZONE DE SAVE.
         LA          I1              < A=@EN-TETE ITEM1.
         LXI         LNOM+1          < X=NBRE DE MOTS A SAUVER.
         MOVE                        < ET SAUVEGARDE.
<
< MISE EN PLACE DU NOM DE L'IMAGE PRESUMEE :
<
         LX          SAVE            < X=INDEX DU NOM DANS L'ITEM
                                     < COURANT.
         STX         NOMARG          < POUR UN EVENTUEL APPEL DE 'TI'.
         LYI         0               < Y=INDEX DE TRANSFERT.
E1301:   EQU         $
         LBY         &AIC            < A=CARACTERE COURANT DU NOM.
         ADRI        1,X             < PROGRESSION INDEX.
         XR          X,Y
         CPI         ";"             < EST-CE LA FIN DU NOM ???
         JE          E1302           < OUI.
         STBY        &XI1            < ET NON , ON DEPLACE DONC LE
                                     < CARACTERE COURANT.
         ADRI        1,X             < PROGRESSION INDEX.
         XR          X,Y
         JMP         E1301           < AU CARACTERE SUIVANT.
E1302:   EQU         $
         LAI         '04             < ';' EST REMPLACE PAR UN 'EOT'.
         STBY        &XI1            < FIN DU NOM.
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
<
< ICI, ON REGARDE SI L'ON A AFFAIRE A UNE IMAGE 12K-SGN/DKU.
<
         CPZ         TYPIM
         JL          ISD             < OUI.
XOPT1:   VAL         ENDIF
<
< TENTATIVE DE CHARGEMENT DE L'IMAGE :
<
         LAD         DEMTV           < IMAGE 4K A PRIORI.
         CPZ         TYPIM           < TEST TYPE IMAGE (4K / 12K).
         JE          E1303
         LAD         DEMTV1          < ADRESSE DE LA DEMANDE DE CHARGEMENT...
E1303:   EQU         $
         STA         ADEMTV          < ADRESSE DE LA DEMANDE DE CHARGEMENT
                                     < IMAGE.
         LAI         '05
         STBY        &ADEMTV         < NVP DE LOAD SOUS <ACN>.
         LA          ADEMTV
         SVC         0               < ACCES AU SGN.
         JE          E1306           < OK , IMAGE TROUVEE.
         LAI         '06
         STBY        &ADEMTV         < NVP DE LOAD SOUS :SYS.
         LA          ADEMTV
         SVC         0               < 2EME APPEL DU SGN.
E1306:   EQU         $
         PSR         X               < SAVE LES CONDITIONS DE RETOUR.
<
< RESTAURATION EN-TETE DE L'ITEM1 :
<
         LA          ASI1            < A=#ZONE DE SAVE.
         LB          I1              < B=@EN-TETE ITEM1.
         LXI         LNOM+1          < X=NBRE DE MOTS A RESTAURER.
         MOVE                        < RESTAURATION.
<
< TEST DES CONDITIONS D'EXECUTION :
<
         PLR         X               < RESTAURE LES CONDITIONS DU SGN.
< SI IMAGE 12K, ON SORT TOUT DE SUITE, 'X' CONTENANT LE CODE RETOUR.
         CPZ         TYPIM
         JNE         E1300
         CPZR        X               < COMMENT CELA S'EST-IL PASSE ???
         JNE         E1300           < ERREUR : X#0.
<
<        C A S   D ' U N E   I M A G E   V I D E O  :
<
         LAD         STDKU
         SVC         0               < STABILISATION IMAGE...
         JMP         E1300           < ET C'EST TOUT ....
<
< RETOUR DE LA ROUTINE :
<
E1305:   EQU         $               < SORTIES EN ERREUR.
         LXI         1               < ON RENVOIE X#0.
E1300:   EQU         $
<
< ICI, ON RAZE SYTEMATIQUEMENT 'TYPIM', CAR LA PROCHAINE IMAGE EST
< A PRIORI UNE IMAGE 4K.
<
         STZ         TYPIM
         RSR
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
ISD:     EQU         $
<
<        I M A G E   D E   T Y P E   S D   ( S G N / D K U ).
<
         CPZ         IDPM            < TEST FONCTION A REALISER.
         JL          ISDM            < DELETE.
         JG          ISDP            < CREATION.
<
<        D I S P L A Y.
<
         LAI         '05             < LON.
         BSR         ASGNSD
         JE          ISDD1
         LAI         '06             < LNS.
         BSR         ASGNSD
         JNE         ISDERR          < IMAGE INEXISTANTE.
ISDD1:   EQU         $
         LA          &ALONG          < ADRESSE SECTEUR SUR DKU.
         STA         DMRDKU+3
         LAD         DMRDKU          < DEMANDE DE LECTURE SUR DKU.
         JMP         ISDOK1
<
<        D E L E T E.
<
ISDM:    EQU         $
         BSR         ARTO            < READ TABLE D'OCCUPATION.
         LAI         '03             < DLN.
         BSR         ASGNSD
         JNE         ISDER2          < N'EXISTE PAS !
         LA          &ALONG          < ADRESSE SECTEUR DKU.
         SB          CAPSU           < A CAUSE DES SECTEURS INUTILISES.
         SLRD        16
         DV          CNSPI           < / NOMBRE DE Q-SECTEURS PAR IMAGE.
         SLRD        4               < 'A' = RANG MOT DANS TO,
                                     < 'B' (0-3) = RANG BIT DANS LE MOT.
         LR          A,X             < 'X' = RANG DU MOT DANS TO.
         SLLD        16
         SLRD        16+12           < 'B' = RANG DU BIT.
         LA          &AXTO           < ACCES AU MOT ADEQUAT DE TO.
         XR          B,X             < 'X' = RANG DU BIT,
                                     < 'B' = RANG DU MOT.
         TBT         0,X             < TEST BIT DE TO.
         SBT         0,X             < DEVIENT LIBRE.
         JC          ISDER2          < L'ETAIT DEJA !!!
         XR          B,X             < 'X' = RANG DU MOT.
         STA         &AXTO           < TO A JOUR EN MEMOIRE.
         BSR         AWTO            < WRITE TABLE D' OCCUPATION SUR DISQUE.
         JMP         ISDOK
<
<        C R E A T I O N.
<
ISDP:    EQU         $
         BSR         ARTO            < READ TABLE D'OCCUPATION.
         LAI         '05             < LON.
         BSR         ASGNSD
         JE          ISDER2          < EXISTE DEJA !!!
         LXI         0               < RANG BIT INITIAL POUR DRBM.
         LA          AIMAG           < ADRESSE 1ER MOT DE TO.
         LY          CNIDKU          < NOMBRE D'IMAGES (=NB DE BITS).
         DRBM
                                     < RECHERCHE 1ER BIT A 1.
         JC          ISDER2          < PLUS DE PLACE !!!
         RBTM        0,X             < BIT DEVIENT OCCUPE.
         LR          X,A             < RANG DE L'IMAGE.
         MP          CNSPI           < * NOMBRE DE SECTEURS PAR IMAGE.
         LR          B,A
         AD          CAPSU           < + NB DE SECTEURS INUTILISES.
         STA         &ALONG          < ADRESSE SECTEUR DANS VALEUR.
         STA         DMWDKU+3        < ET DANS LA DEMANDE DKU.
         LAI         '04             < STN.
         BSR         ASGNSD
         BSR         AWTO            < WRITE TABLE D'OCCUPATION.
         LAD         DMWDKU          < DEMANDE D'ECRITURE DKU.
ISDOK1:  EQU         $
         SVC         0
ISDOK:   JMP         E1306           < VERS RESTAURATION EN-TETE ITEM1.
ISDER2:  EQU         $
         BSR         AWTO            < WRITE TABLE D'OCCUPATION.
ISDERR:  EQU         $
         LXI         1               < CODE RETOUR : ERREUR.
         JMP         ISDOK
         PAGE
<
<        R E A D   /   W R I T E   T A B L E   D ' O C C U P A T I O   D K U.
<
<        ATTENTION:  DETRUIT A,B,X.
<
<        R E A D :
<                    DEBUT IMAGE   -->   SCRATCH
<                    TO            -->   DEBUT IMAGE.
<
<        W R I T E :
<                    DEBUT IMAGE   -->   TO (SUR DKU)
<                    SCRATCH       -->   DEBUT IMAGE
<                    'B' RECOIT LE CODE RETOUR DU WRITE TO SUR DKU.
<
RTO:     EQU         $               < READ TO.
         LAD         DEMDKS
         BSR         AWDK            < WRITE DK SCRATCH.
         LAD         DEMDKU
         JMP         RDK             < READ DKU.
WTO:     EQU         $               < WRITE TO.
         LAD         DEMDKU
         BSR         AWDK            < WRITE DKU.
         LR          X,B             < 'B' = CODE RETOUR DU WRITE DKU.
         LAD         DEMDKS
         JMP         RDK             < READ DK SCRATCH.
WDK:     EQU         $
                                     < SET BIT POUR WRITE.
         SBTM        14
         JMP         RWDK
RDK:     EQU         $
                                     < RESET BIT POUR READ.
         RBTM        14
RWDK:    EQU         $
         SVC         0
         RSR
<
<
<
<
<
SGNSD:   EQU         $
<
<        A C C E S   S G N   P O U R   I M A G E   D E   T Y P E   S D
<
<        ( C ' E S T - A - D I R E   S G N / D K U ).
<
<        ARGUMENT:
<                    - 'A' = FONCTION DEMANDEE.
<
<        RESULTAT:
<                    - 'A' DETRUIT,
<                    - 'X' = CODE RETOUR,
<                    - AU RETOUR ON PEUT FAIRE   JE / JNE.
<
         STBY        DSGNSD          < STORE FONCTION DEMANDEE.
         LAD         DSGNSD          < DEMANDE SGN.
         SVC         0
         RSR
XOPT1:   VAL         ENDIF
         PAGE
<
<
<        G E S T I O N   D E S   E N C H A I N E M E N T S
<        D ' I M A G E S   V I D E O S  :
<
<
<        PHILOSOPHIE :
<                      CE PROCESSEUR PERMET D'ENCHAINER
<                    LES IMAGES VIDEOS SYNTHETIQUES
<                    GENEREES PAR 'TV' EN DES SEQUENCES
<                    DE FILM ; DE PLUS UN LANGAGE ALGO-
<                    RITHMIQUE DU TYPE G2/G3 PERMET DE
<                    DEFINIR DES BOUCLES ITERATIVES D'IMAGES ,
<                    DES SOUS-FILMS , DES BIBLIOTHEQUES
<                    DE SEQUENCES (CINEMATHEQUES)...
<
<
<        SYNTAXE :
<
<        <K>::=<CARACTERE NON RESERVE>
<        <N>::=<CHIFFRE BASE 36>
<        <N>::=@
<        <IMAGE>::=<K>...<K>;
<        <IMAGE>::=-<K>...<K>;
<        <IMAGE>::=,<K>...<K>;       ( IMAGE 12K  TW ! )
<        <PAUSE>::=!<N>
<        <POINT D'ARRET>::=.
<        <APPEL BIBLIOTHEQUE>::=$<NOM BIBLIOTHEQUE>;
<        <APPEL BIBLIOTHEQUE>::=:<NOM BIBLIOTHEQUE>;
<        <APPEL FILM>::=&<NOM FILM>;
<        <FIXATION COMPOSANTE DIFFUSION VIDEO 4K>::=+1/+2/+3
<        <STOP DIFFUSION VIDEO 4K>::=+S
<        <DIFFUSION IMAGE 12K>::=+0  (CF: TW...)
<        <RAPPEL IMAGE 12K>::=+4     (CF: TW...)
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
<        <ECRITURE SUR DKU ADRESSE XXXX>::=+EXXXX
<        <LECTURE SUR DKU ADRESSE XXXX>::=+FXXXX
<        <ECRITURE SUR DKU ADRESSE SUIVANTE>::=+E;
<        <LECTURE SUR DKU ADRESSE SUIVANTE>::=+F;
<        <DEFINITION VALEUR INCREMENT AUTOMATIQUE>::=+KXXXX
<        <DEFINITION ADRESSE OCTETS CDAI POUR ECHANGES DKU>::=+@XXXX
<        <DEFINITION LONGUEUR OCTETS POUR ECHANGES DKU>::=+BXXXX
XOPT1:   VAL         ENDIF
<        <APPEL ARGUMENT FORMEL>::='
<        <FIN DE FILM>::=/
<        <APPEL 'TI'>::=*
<        <APPEL 'TI'>::="I
<        <APPET 'TI'>::="V
<        <APPEL 'TC'>::="C
<        <APPEL 'TD'>::="D
<        <APPEL 'TW'>::="W
<        <APPEL 'TX'>::="X
<        <APPEL 'TY'>::="Y
<        <APPEL 'TZ'>::="Z
<        <APPEL 'T2'>::="2
<        <APPEL 'T3'>::="3
<        <APPEL 'T4'>::="4
<        <APPEL 'T5'>::="5
<        <APPEL OVERLAY QUELCONQUE ' ?'>::="?
<        <RETOUR A L'ESPACE SOCIAL INITIAL>::=1
<        <PASSAGE SUR LE QUADRILLAGE 2>::=2
<        <PAS DE BASCULE SUR LE QUADRILLAGE>::=3
<        <APPEL OVERLAY>::=4
<        <APPEL OVERLAY>::=$;   <APPEL OVERLAY>::=:;
<                    (LA BIBLI COURANTE EST ALORS DE TYPE 'P')
<        <ENTREE CAMERA STACKS RVB>::=4
<        <ENTREE CAMERA STACK R>::=5
<        <ENTREE CAMERA STACK V>::=6
<        <ENTREE CAMERA STACK B>::=7
<        <ELEMENT NEUTRE>::=;
<        <ELEMENT NEUTRE>::=<SPACE>
<        <COMMENTAIRE>::=<<TEXTE>;
<        <MESSAGE>::=<<TEXTE>!
<        <MAKE COPY>::=9
<        <DEFINITION ARGUMENT FORMEL>::==(<SEQUENCE>)
<        <DEFINITION NOM FILM>::=>(<SEQUENCE>)
<        <ITERATION>::=%<N>(<SEQUENCE>)
<        <APPEL FILM EN BIBLIOTHEQUE>::=?<NOM FILM>;
<        <MODIFICATION CTTE>::=@<N>
<        <SEQUENCE>::=<ELEMENT NEUTRE>
<        <SEQUENCE>::=<IMAGE>
<        <SEQUENCE>::=<SEQUENCE><IMAGE>
<        <SEQUENCE>::=<ARRET/MARCHE VIDEO>
<        <SEQUENCE>::=<DEFINITION NOM FILM>
<        <SEQUENCE>::=<DEFINITION ARGUMENT FORMEL>
<        <SEQUENCE>::=<APPEL 'TI'><COMMANDES 'TI'>
<        <SEQUENCE>::=<COMMENTAIRE>
<        <SEQUENCE>::=<MESSAGE>
<        <SEQUENCE>::=<SON>
<        <SEQUENCE>::=<OCTAVE>
<        <SEQUENCE>::=<COMMANDE VISU>
<        <SEQUENCE>::=<EFFACEMENT ECRAN VISU>
<        <SEQUENCE>::=<MAKE COPY>
<        <SEQUENCE>::=<MODIFICATION CTTE>
<        <SEQUENCE>::=<APPEL FILM EN BIBLIOTHEQUE>
<        <SEQUENCE>::=<POINT D'ARRET>
<        <SEQUENCE>::=<PAUSE>
<        <SEQUENCE>::=<APPEL BIBLIOTHEQUE>
<        <SEQUENCE>::=<APPEL FILM>
<        <SEQUENCE>::=<APPEL ARGUMENT FORMEL>
<        <SEQUENCE>::=<ITERATION>
<        <SEQUENCE>::=<SEQUENCE>...<SEQUENCE>
<        <SEQUENCE>::=(<SEQUENCE>)
<        <SEQUENCE>::=<FIN DE FILM>
<        <FILM>::=<SEQUENCE>
<        <FILM>::=<FILM><SEQUENCE>
<        <FILM>::=<FILM><FIN DE FILM>
<
<
         WORD        COM0            < INITIALISATION INTERPRETEUR.
         WORD        LOC+'80
         WORD        BRANCH
SCENE:   EQU         $
         LRP         K
         ADRI        -1,K
         PLR         C,L,W           < INITIALISATION DES 3 BASES.
         LA          APILE           < A=@PILE DE SODOME.
         LR          A,K             < INITIALISATION DE K.
         IC          KIN             < COMPTAGE DES ENTREES.
         JE          E1310           < CAS DE LA 1ERE ENTREE.
         BR          AGOGER          < CAS DE L'ENTREE SUIVANTE SUITE
                                     < A UN ALT-MODE : ON RETOURNE A GE.
<
< DEMANDE D'ALLOCATION 16 K MOTS.
<
E1310:   EQU         $               < 1ERE ENTREE.
         LA          MODCAL,W        < RECUPERATION DU MODCAL D'APPEL ,
         STA         WHOCAL          < QUE L'ON SAVE DANS WHOCAL.
         LAD         DEM16K
         SVC         0
<
< SAVE L'EN-TETE DE L'ITEM1 :
< (POUR SE PREMUNIR CONTRE LES ALT-MODES
< MAL PLACES LORS DES CHARGEMENTS
< DES IMAGES VIDEOS...)
<
         LB          ASI1
         LA          I1
         LXI         LNOM+1
         MOVE                        < SAVE (I1) DANS (SI1).
         JMP         LOOP            < ET C'EST PARTI ....
         PAGE
<
<
<        P R I M I T I V E   G E T   C A R A C T E R E  :
<
<
<        RESULTAT :
<                    Y=CARACTERE COURANT (IEG) DE L'ITEM
<                      COURANT ; RETOUR DIRECT PAR 'N22'
<                      SI CE CARACTERE EST HORS-LA PAGE.
<
<
PRIMG:   EQU         $
         LX          IEG             < X=INDEX COURANT D'EXECUTION.
<
< VALIDATION DE IEG :
<
         LR          X,A
         CP          NCP             < VALIDATION.
         LA          AGON22          < A=@NOEUD D'ERREUR A PRIORI ...
         JGE         E962            < EFFECTIVEMENT , HORS-LA PAGE ...
<
< ACCES AU CARACTERE COURANT :
<
         LBY         &AIC
         LR          A,Y             < Y=CARACTERE COURANT.
         IC          IEG             < PREPARATION DE L'ACES AU
                                     < CARACTERE SUIVANT.
         JMP         PRIMA           < VERS UN RETOUR OK.
         PAGE
<
<
<        I N T E R P R E T E U R   D E S   P R O G R A M M E S
<        D E   S E Q U E N C E S   V I D E O S  :
<
<
<        F O R M A T   D E S   P R I M I T I V E S  :
<
<                    OCTET0=FONCTION (NOM DE LA PRIMITIVE) ,
<                           BIT0=1 (TOUJOURS) ,
<                           BIT1=0 : MOT2 (ET EVENTUELLEMENT MOT3)
<                                    PRESENT(S).
<                               =1 : L'EXECUTION EST SEQUENTIELLE
<                                    (ON PASSE A LA PRIMITIVE SUIVANTE
<                                    EN FAISANT +2 SUR LA BASE C).
<                           BIT2=1 : ARG2 EST ABSENT.
<                           BIT3=1 : LE NOEUD SUIVANT EST N1 (QUELQUE
<                                    SOIENT LES CONDITIONS DE RETOUR).
<                    OCTET1=ARG1 ,
<                    MOT1=ARG2 ,
<                    MOT2=@PRIMITIVE SUIVANTE EN CAS D'ERREUR (A
<                         CONDITION QUE BIT1(MOT0)=0) ,
<                    MOT3=@PRIMITIVE SUIVANTE SI OK (A CONDITION
<                         QUE BIT1(MOT0)=0).
<
<
PR:      VAL         0               < NOM DE LA PRIMITIVE + ARG1.
BSEQ:    VAL         1               < BIT INDICATEUR DE PRIMITIVE
                                     < SEQUENTIELLE SI =1.
PBSEQ:   VAL         '40             < POUR POSITIONNER LE BIT 'BSEQ'.
LPRIM:   VAL         2               < LPRIM=1 : ARG2 EST ABSENT.
PLPRIM:  VAL         '20             < POUR POSITIONNER LE BIT 'LPRIM'.
GON1:    VAL         3               < BIT INDIQUANT QUE LE NOEUD
                                     < SUIVANT EST N1 (SI =1).
PGON1:   VAL         '10             < POUR POSITIONNER LE BIT 'GON1'.
ARG2:    VAL         1               < ARGUMENT2.
ADER:    VAL         2               < @PRIMITIVE SUIVANTE SI ERREUR.
ADOK:    VAL         3               < @PRIMITIVE SUIVANTE SI OK.
<
<
<        FONCTION    ARG1            ARG2
<
<        PC                          @ROUTINE    CALL.
<-------------------------------------------------------------------------------
<        PCI                         @NOEUD      CALL ROUTINE RELAYEE
<                                                PAR LE NOEUD D'@ (ARG2)
<-------------------------------------------------------------------------------
<        PT          CODE-ASCI                   TEST CARACTERE.
<-------------------------------------------------------------------------------
<        PUSH                                    EMPILEMENT DANS PIR.
<-------------------------------------------------------------------------------
<        PULL                                    DEPILEMENT DE PIR.
<-------------------------------------------------------------------------------
<        PG                                      ACCES AU CARACTERE
<                                                COURANT DE L'ITEM.
<-------------------------------------------------------------------------------
<        PTD                                     TEST DIRECT DES
<                                                CARACTERES DE 'SPACE'
<                                                A 'Z'.
<
<
<        UTILISATION DES REGISTRES :
<                    B=ARG1 ,
<                    X=NOM PRIMITIVE , PUIS CONDITIONS DE
<                      RETOUR DE CELLE-CI (0 SI OK).
<                    Y=CARACTERE COURANT (IEG) EN GENERAL.
<                    C=@PRIMITIVE COURANTE.
<                    W=@BRANCH.
<
<
<        P R I M I T I V E S   A   A D R E S S E ( S )  :
<
PC:      VAL         1+'80           < CALL.
PCI:     VAL         2+'80           < CALL INDIRECT.
PUSH:    VAL         3+'80+PLPRIM    < EMPILEMENT DANS PIR SANS ARG2.
PULL:    VAL         4+'80+PLPRIM    < DEPILEMENT DE PIR SANS ARG2.
PG:      VAL         5+'80+PLPRIM    < GET CARACTERE SANS ARG2.
PTD:     VAL         6+'80+PLPRIM    < TEST DIRECT DE CARACTERE.
PT:      VAL         7+'80           < TEST CARACTERE.
<
<        A T T E N T I O N  :
<                      'PTM' DOIT ETRE LA DERNIERE PRIMITIVE
<                    A CAUSE DE LA TABLE DE L'INTERPRETEUR.
<
PTM:     VAL         PT+PLPRIM       < TEST SANS ARG2.
<
<        P R I M I T I V E S   S E Q U E N T I E L L E S  :
<
PCS:     VAL         PC+PBSEQ        < CALL SEQUENTIEL.
PUSHS:   VAL         PUSH+PBSEQ      < PUSH SEQUENTIEL.
PULLS:   VAL         PULL+PBSEQ      < PULL SEQUENTIEL.
PGS:     VAL         PG+PBSEQ        < GET CARACT. SEQUENTIEL.
<
<
<        P R I M I T I V E   C A L L  :
<
<
PRIMCI:  EQU         $
         LA          ARG2,C          < A=@NOEUD RELAI DE LA ROUTINE.
         LR          A,C             < C=@NOUVEAU NOEUD.
PRIMC:   EQU         $
         BSR         ARG2,C          < APPEL DE LA ROUTINE ARGUMENT.
         JMP         LOOPB           < VERS LA BOUCLE DE L'INTERPRETEUR.
<
<
<        T E S T   D I R E C T   C A R A C T E R E  :
<
<
PRIMTD:  EQU         $
         LR          Y,A             < A=Y=CARACTERE COURANT A TESTER.
E979:    EQU         $
         LXI         1               < RETOUR EN ERREUR A PRIORI.
         CPI         "Z"             < VALIDATION SUPERIEURE.
         JG          LOOPB           < ERREUR.
         CPI         "A"             < EST-CE UNE LETTRE 'A' A 'Z' ???
         JL          INFA            < NON, INFERIEUR A 'A'.
         LAI         "A"             < OUI, TOUTES LES LETTRES SONT
                                     < RENDUES EQUIVALENTES A 'A' ...
INFA:    EQU         $
         ADRI        -'20,A          < TRANSLATION PAR RAPPORT A 'SPACE'
         JAL         LOOPB           < ERREUR.
         LXI         0               < RETOUR OK.
         ADR         A,C             < TRANSLATION DE LA BASE C POUR
                                     < ATTEINDRE LE RELAI DU NOUVEAU
                                     < NOEUD.
         LA          ADER,C          < ACCES A L'@PRIMITIVE DE (Y).
         JMP         E962            < VERS LA BOUCLE DE L'INTERPORETEUR
<
<
<        P R I M I T I V E   G O T O  :
<
<
PRIMA:   EQU         $
         LXI         0               < UN RETOUR OK SUFFIT.
<
<
<        R E T O U R   D E S   P R I T I V E S  :
<
<
LOOPB:   EQU         $
         LA          PR,C            < POUR TESTER LES INDICATEURS.
         TBT         GON1            < DOIT-ON ALLER EN N1 ???
         JNC         E961            < NON.
         LA          AGON1           < OUI : A=@NOEUD N1.
         JMP         E962            < VERS LE SAUT EN N1.
E961:    EQU         $
         TBT         LPRIM           < ARG2 EST-IL ABSENT ???
         SBCR        C               < SI OUI ON REMONTE D'UNE UNITE.
         ADRI        ADER-PR,C       < PRIMITIVE SEQUENTIELLE A PRIORI.
         TBT         BSEQ            < EST-CE SEQUENTIEL ???
         JC          LOOP            < OUI , PRIMITIVE SEQUENTIELLE.
<
< CAS DES PRIMITIVES A ADRESSE : TEST
< DES CONDITIONS DE RETOUR (X) :
<
         CPZR        X               < COMMENT CELA S'EST-IL PASSE ???
         JNE         E2              < MAL : RETOUR PAR ADER.
         ADRI        ADOK-ADER,C     < BIEN , RETOUR PAR ADOK.
E2:      EQU         $
         LA          0,C             < ACCES A L'@PRIMITIVE SUIVANTE.
         JAL         LOOP            < EN FAIT ON VIENT DE RECUPERER
                                     < LA PRIMITIVE SUIVANTE , ET
                                     < NON PAS SON ADRESSE ...
E962:    EQU         $
         LR          A,C             < C POINTE LA PRIMITIVE SUIVANTE.
<
<
<        B O U C L E   D E   L ' I N T E R P R E T E U R  :
<
<
LOOP:    EQU         $
         LAI         0               < NETTOYAGE DE A.
         LB          PR,C            < ACCES A LA PRIMITIVE COURANTE.
         DV          C100            < DECONCATENATION :
                                     < B=ARG1 ,
                                     < A=NOM DE LA PRIMITIVE (C).
         ANDI        'F              < ON SUPPRIME LES INDICATEURS.
         ADRP        A               < VERS LE TRAITEMENT DE (A).
<
<        T A B L E   D ' A I G U I L L A G E  :
<
         JMP         PRIMC           < PRIMITIVE CALL.
         JMP         PRIMCI          < PRIMITIVE CALL INDIRECT.
         JMP         PRIMPS          < PRIMITIVE PUSH.
         JMP         PRIMPL          < PRIMITIVE PULL.
         JMP         PRIMG           < PRIMITIVE GET CARACTERE.
         JMP         PRIMTD          < PRIMITIVE TEST DIRECT CARACTERE.
<
<
<        P R I M I T I V E   T E S T   C A R A C T E R E  :
<
<
<        ARGUMENT :
<                    Y=CARACTERE COURANT ,
<                    B=ARG1=CARACTERE ATTENDU.
<
<
PRIMT:   EQU         $
         LXI         1               < NON RECONNAISSANCE A PRIORI.
         CPR         Y,B             < TEST CARACTERE ???
         JNE         LOOPB           < NON RECONNAISSANCE : X#0 9
         JMP         PRIMA           < RECONNAISSANCE : RETOUR OK.
<
<
<         P U S H   R E C U R S I V I T E  :
<
<
<        ARGUMENTS :
<                    B=0 : COMPTER UNIQUEMENT LES '(' ,
<                    B#0=CAUSE DU PUSH : EMPILEMENT REEL DANS PIR ;
<                     ='40 : PUSH POUR REPEAT ,
<                     ='20 : PUSH POUR APPEL PROGRAMME ,
<                     ='10 : PUSH POUR SAUT DEFINITION PROGRAMME ,
<                     ='20+'10 : PUSH POUR APPEL PROGRAMME , AVEC
<                                CHANGEMENT D'ITEM COURANT.
<                    Y=NBRE DE REPETITIONS A FAIRE SOUS CE NIVEAU (SI
<                      B#0).
<
<
PRIMPS:  EQU         $
         CPZR        B               < EST-CE UN VRAI PUSH ???
         JE          E15             < NON SEULEMENT COMPTER '('.
<
< CAS DES PUSH VERITABLES :
<
         LA          APRC            < ACCES AU RELAI COURANT DE PIR.
         RBT         0               < RAZ DU BIT INDEX.
         LXI         CDCP            < RETOUR EN ERREUR A PRIORI.
         CP          TPR             < EST-ON AU SOMMET DE PIR ???
         JGE         LOOPB           < OUI , RETOUR EN ERREUR.
         LA          APRC
         ADRI        LEPR,A          < NON CALCUL @ENTREE SUIVANTE.
         STA         APRC            < MAJ DU RELAI COURANT DE PIR.
<
< INITIALISATION DE LA NOUVELLE ENTREE DE PIR :
<
         SWBR        Y,A             < Y=COMPTE DE REPETITIONS.
         ORI         1               < CP=1 : COMPTE PARENTHESES.
         STA         &APRC           < RANGEMENT DE CD ET CP.
         LXI         IR              < RETOUR OK.
         SWBR        B,A             < OCTET0(A)=CAUSE DU PUSH.
         AD          IEG             < ET CONCATENATION INDEX COURANT.
         TBT         BITREP          < EST-CE UN PUSH POUR REPEAT ???
         SBCR        A               < SI OUI , RETOUR SUR '('.
         STA         &APRC
<
< TEST D'UN CHANGEMENT D'ITEM :
<
         TBT         BITPRO
         JNC         PRIMA           < CE N'EST PAS UN APPEL PROGRAMME.
         TBT         BITDEF          < CAS D'UN APPEL PROG. Y-A-T'IL
                                     < DE PLUS CHANGEMENT D'ITEM ???
         JNC         PRIMA           < NON , RETOUR OK.
         BSR         ACHGTI          < SI OUI , CHANGEMENT D'ITEM.
E201:    EQU         $
         JMP         PRIMA           < VERS UN RETOUR OK A LOOPB.
<
<        C O M P T E   D E S   ' ( '  :
<
E15:     EQU         $
         LXI         CP
         LBY         &APRC           < ACCES AU COMPTE ALGEBRIQUE.
         ADRI        1,A             < ET UNE DE PLUS.
         TBT         7               < OVERFLOW DANS L'OCTET ???
         JC          LOOPB           < OUI , RETOUR EN ERREUR ...
         STBY        &APRC           < NON , OK.
         JMP         PRIMA           < VERS UN RETOUR OK.
<
<
<        P U L L   R E C U R S I V I T E  :
<
<
<        ARGUMENT :
<                    B#0 : PULL VERITABLE ,
<                     =0 : DECOMPTER UNIQUEMENT LES ')'.
<
<
PRIMPL:  EQU         $
<
< DECOMPTE DES PARENTHESES :
<
         LXI         CP
         LBY         &APRC           < A=CP COURANT SOUS CE NIVEAU.
         JAE         LOOPB           < TROP DE ')' : RETOUR EN ERREUR.
         ADRI        -1,A
         STBY        &APRC           < MAJ DU CP COURANT.
         JANE        PRIMA           < RETOUR OK SANS PULL.
<
< CAS OU CP=0 :
<
         CPZR        B               < TEST DU MODE D'APPEL.
         JE          LOOPB           < RETOUR EN ERREUR.
E101:    EQU         $
         LXI         CD
         LBY         &APRC           < A=CD COURANT.
         JAE         PRIMA           < CAS DE LA 1ERE ENTREE DANS PIR ,
                                     < IL NE FAUT PAS DEPILER ...
         ADRI        -1,A            < DECOMPTE DES REPETITIONS.
         JANE        E14             < IL RESTE AU MOINS UNE REPETITION.
<
< CAS CD=0 : PULL VERITABLE :
<
         LA          APRC
         RBT         0               < ACCES A L'@ENTREE COURANTE.
         LXI         1               < RETOUR EN ERREUR A PRIORI.
         CP          BPR             < EST-ON AU BAS DE LA PILE ???
         JLE         LOOPB           < OUI , RETOUR EN ERREUR.
E90:     EQU         $
         LA          APRC
         ADRI        -LEPR,A         < NON , RETOUR SUR L'ENTREE
                                     < PRECEDENTE.
         STA         APRC            < ET MAJ DU RELAI COURANT.
         JMP         PRIMA           < VERS UN RETOUR OK.
<
< ACS OU CD#0 : 2L RESTE AU MOINS UNE REPETITION :
<
E14:     EQU         $
         STBY        &APRC           < MAJ DU CD COURANT.
         LXI         IR
         LA          &APRC
         LR          A,B             < B=ENTREE IR DE PIR.
         TBT         BITPRO          < EST-CE UN RETOUR PROGRAMME ???
         AND         CFFF            < RAZ DES BITS 0,1,2,3.
         STA         IEG             < A=INDEX DE DEBUT DE REPETITION.
         JNC         LOOPB           < CE N'EST PAS UN RETOUR PROGRAMME
                                     < ON FAIT UN RETOUR OK.
<
< CAS D'UN RETOUR DE PROGRAMME :
<
         TBT         16+BITDEF       < CHANGEMENT D'ITEM COURANT ???
         JNC         E90             < NON , JUSTE UN PULL RECURSIVITE.
         BSR         ACHGTI          < ET OUI , CHGT D'ITEM COURANT.
         JMP         E90             < VERS LE PULL RECURSIVITE.
<
<
<        C H A N G E M E N T   D ' I T E M   C O U R A N T  :
<
<
CHGTI:   EQU         $
         LA          ACCEB
         NGR         A,A             < INVERSION DE LA CONSTANTE
                                     < DE TRANSLATION.
         STA         ACCEB           < ET MAJ.
         AD          AIC
         STA         AIC             < TRANSLATION DU RELAI D'ACCES
                                     < A L'ITEM COURANT.
         RSR
         PAGE
<
<
<        P R O G R A M M E   I N T E R P R E T A T I F
<        D E   G E S T I O N   D E S   S E Q U E N C E S
<                    V I D E O S  :
<
<
COM0:    EQU         $
         BYTE        PC;0
         WORD        CHECKT          < VALIDATION TYPE ITEM COURANT.
         WORD        N700            < ERREUR : PAS TYPE 'T' ...
<
<        A C C E S   C O M M A N D E   C O U R A N T E  :
<
N1:      BYTE        PGS;0           < ACCES CARACTERE COURANT.
<
<        A N A L Y S E   D E   L A   C O M M A N D E  :
<
         BYTE        PTD;0           < TEST DIRECT CARACTERE.
         WORD        N22             < CAS DES CARACTERES HORS 'SPACE'-Z
         WORD        N1              < 'SPACE' EST NEUTRE.
         WORD        N750            < ! PAUSE DE N SECONDES.
         WORD        N3201           < "W  APPEL DE 'TW',
                                     < "X  APPEL DE 'TX',
                                     < "Y  APPEL DE 'TY',
                                     < "I  APPEL DE 'TI',
                                     < "V  APPEL DE 'TI',
                                     < "C  APPEL DE 'TC'.
                                     < "D  APPEL DE 'TD'.
                                     < "2  APPEL DE 'T2',
                                     < "3  APPEL DE 'T3',
                                     < "4  APPEL DE 'T4'.
         WORD        N610            < #
                                     < # : A NA PAS UTILSER COMME
                                     < NOM DE PRIMITIVE CAR IL EST
                                     < SOUVANT LE 1ER CARACTERE DU
                                     < NOM D'UNE IMAGE.
         WORD        N302            < $ APPEL BIBLIOTHEQUE
         WORD        N8              < % BOUCLE D'ITERATION
         WORD        N7              < & APPEL GLOBAL PROGRAMME
         WORD        N941            < ' APPEL ARGUMENT FORMEL
         WORD        N14             < ( OPEN RECURSIVITE
         WORD        N15             < ) CLOSE RECURSIVITE
         WORD        N3200           < * APPEL 'TI'
         WORD        N5000           < + DIFFUSION VIDEO ET ACCES DKU.
         WORD        N4012           < , APPEL NOM IMAGE 12K.
         WORD        N4010           < - APPEL NOM IMAGE VIDEO/FLOPPY
         WORD        N23             < . POINT D'ARRET (RETOUR CCI)
         WORD        N22             < / RETOUR A L'APPELANT (GE)
         WORD        N27             < 0 N'EST PLUS UTILISE.
         WORD        N27             < 1 N'EST PLUS UTILISE.
         WORD        N27             < 2 N'EST PLUS UTILISE.
         WORD        N27             < 3 N'EST PLUS UTILISE.
         WORD        N5104           < 4 ENTREE CAMERA RVB.
         WORD        N5105           < 5 ENTREE CAMERA ROUGE SEUL.
         WORD        N5106           < 6 ENTREE CAMERA VERT SEUL.
         WORD        N5107           < 7 ENTREE CAMERA BLEU SEUL.
         WORD        N27             < 8 N'EST PLUS UTILISE.
         WORD        N4000           < 9 MAKE COPY VISU EMISSION.
         WORD        N2001           < : CHARGEMENT BIBLIOTHEQUE SUR L'ITEM
                                     < COURANT.
         WORD        N1              < ; ELEMENT NEUTRE
         WORD        N340            < < COMMENTAIRE OU TEXTE A EDITER
         WORD        N1001           < = DEFINITION ARGUMENT FORMEL
         WORD        N16             < > DEFINITION DE PROGRAMME
         WORD        N860            < ? APPEL DIRECT PROG EN BIBLI
         WORD        N31             < @ MODIFICATION DE CTTE
         WORD        N610            < A B ... X Y Z
<
<        R E T O U R   A U   C C I  :
<
N23:     BYTE        PC+PGON1;0
         WORD        GOCCI           < RETOUR CCI PUIS VERS N1 SI !GO.
<
<        E R R E U R S   D ' E X E C U T I O N  :
<
N24:     EQU         $
N25:     EQU         $
N27:     EQU         $
         BYTE        PC+PGON1;0
         WORD        CARUP           < MISE EN EXPOSANT DU CARACTERE
                                     < EN ERREUR.
<
<        R E T O U R   A   ' G E '  :
<
N22:     BYTE        PCS;0
         WORD        GOGE            < RETOUR A GE , ET VERS N1
                                     < SI ERREUR DE CHARGEMENT.
N700:    EQU         N22
<
<        A P P E L   ' T I '   PAR   *.
<
N3200:   BYTE        PC+PGON1;0
         WORD        CALLTI          < VERS L'APPEL DE L'OVERLAY 'TI'.
<
<        A P P E L   ' T W '   O U   ' T X '   O U   ' T Y '   O U   ' T I '
<        O U   ' T C '   O U   ' T D '   . . . E T C . ..
<        P A R   L A   P R I M I T I V E   ".
<
N3201:   BYTE        PGS;0           < ACCES AU CARACTERE COURANT.
         BYTE        PTM;"W"         < TEST APPEL TW.
         WORD        N32011
         BYTE        PC+PGON1;XXTW
         WORD        CALLTW
N32011:  BYTE        PTM;"X"         < TEST APPEL TX.
         WORD        N32012
         BYTE        PC+PGON1;XXTX
         WORD        CALLTX
N32012:  BYTE        PTM;"Y"         < TEST APPEL TY.
         WORD        N32013
         BYTE        PC+PGON1;XXTY
         WORD        CALLTY
N32013:  BYTE        PTM;"Z"         < TEST APPEL TZ.
         WORD        N32014
         BYTE        PC+PGON1;XXTZ
         WORD        CALLTZ
N32014:  BYTE        PTM;"C"         < TEST APPEL TC.
         WORD        N32015
         BYTE        PC+PGON1;XXTC
         WORD        CALLTC
N32015:  BYTE        PTM;"V"         < TEST APPEL TI.
         WORD        N32016
         BYTE        PC+PGON1;0
         WORD        CALLTI
N32016:  BYTE        PTM;"D"         < TEST APPEL TD.
         WORD        N32017
         BYTE        PC+PGON1;XXTD
         WORD        CALLTD
N32017:  BYTE        PTM;"I"         < TEST APPEL TI.
         WORD        N32018
         BYTE        PC+PGON1;0
         WORD        CALLTI
N32018:  BYTE        PTM;"2"         < TEST APPEL T2.
         WORD        N32019
         BYTE        PC+PGON1;XXT2
         WORD        CALLT2
N32019:  BYTE        PTM;"3"         < TEST APPEL T3.
         WORD        N32020
         BYTE        PC+PGON1;XXT3
         WORD        CALLT3
N32020:  BYTE        PTM;"4"         < TEST APPEL T4.
         WORD        N32021          < ERREUR...
         BYTE        PC+PGON1;XXT4
         WORD        CALLT4
N32021:  BYTE        PTM;"5"         < TEST APPEL T5.
         WORD        N32030          < NON...
         BYTE        PC+PGON1;XXT5
         WORD        CALLT5
N32030:  BYTE        PC+PGON1;0      < APPEL D'UN OVERLAY QUELCONQUE,
         WORD        CALLPR          < DONT LE NOM EST DANS 'Y'...
<
<        M A K E   C O P Y  :
<
N4000:   EQU         $
         BYTE        PC;0
         WORD        MCOPY
         WORD        N27             < ERREUR D'ASSIGNATION.
         WORD        N1              < OK , VERS LA COMMANDE SUIVANTE.
<
<        D I F F U S I O N   V I D E O   E T   A C C E S   D K U.
<
N5000:   BYTE        PGS;0           < ACCES AU CARACTERE COURANT.
         BYTE        PTM;"1"
         WORD        N5001
         BYTE        PC+PGON1;0
         WORD        PLUS1
N5001:   BYTE        PTM;"2"
         WORD        N5002
         BYTE        PC+PGON1;0
         WORD        PLUS2
N5002:   BYTE        PTM;"3"
         WORD        N5003
         BYTE        PC+PGON1;0
         WORD        PLUS3
N5003:   BYTE        PTM;"S"
         WORD        N5004
         BYTE        PC+PGON1;0
         WORD        PLUSS
N5004:   BYTE        PTM;"0"
         WORD        N5010
         BYTE        PC+PGON1;0
         WORD        PLUS0
N5010:   BYTE        PTM;"4"
         WORD        N5020
         BYTE        PC+PGON1;0
         WORD        PLUS4
         IF          XXSGDK-XXXOUI,XOPT1,,XOPT1
N5020:   BYTE        PTM;"B"
         WORD        N5030
         BYTE        PC;0
         WORD        PLUSB
         WORD        N25
         WORD        N1
N5030:   BYTE        PTM;"K"
         WORD        N5040
         BYTE        PC;0
         WORD        PLUSK
         WORD        N25
         WORD        N1
N5040:   BYTE        PTM;'40         < '40 = A-ROND !
         WORD        N5050
         BYTE        PC;0
         WORD        PLUSA
         WORD        N25
         WORD        N1
N5050:   BYTE        PTM;"E"
         WORD        N5060
         BYTE        PC;0
         WORD        PLUSE
         WORD        N25
         WORD        N1
N5060:   BYTE        PTM;"F"
         WORD        N5070
         BYTE        PC;0
         WORD        PLUSF
         WORD        N25
         WORD        N1
<
< +I   +D<NOM-IMAGE>;   ++<NOM-IMAGE>;   +-<NOM-IMAGE>;
<
N5070:   BYTE        PTM;"I"         < INITIALISATION TABLE D'OCCUPATION DKU.
         WORD        N5080
         BYTE        PC+PGON1;0      < CAR SI CA SE PASSE MAL, ON AURA TRAPPE!
         WORD        PLUSI
N5080:   BYTE        PTM;"D"         < DISPLAY.
         WORD        N5090
         BYTE        PC;0
         WORD        PLUSD
         WORD        N5110
         WORD        N5110
N5090:   BYTE        PTM;"+"         < CREATION.
         WORD        N5100
         BYTE        PC;0
         WORD        PLUSP
         WORD        N5110
         WORD        N5110
N5100:   BYTE        PTM;"-"         < DELETE.
         WORD        N25
         BYTE        PC;0
         WORD        PLUSM
         WORD        N5110
N5110:   BYTE        PC;0
         WORD        SAVNIS          < SAVE NOM (INDEX 1ER CARACTERE...).
         WORD        N1500
         WORD        N1500
XOPT1:   VAL         ENDIF
         IF          XXSGDK-XXXNON,XOPT1,,XOPT1
N5020:   EQU         N25             < ERREUR...
XOPT1:   VAL         ENDIF
<
<        T R A I T E M E N T   D E S   ' ( '   S I M P L E S  :
<
N14:     BYTE        PUSH;0          < POUR FAIRE UNIQUEMENT +1 SUR CP.
         WORD        N27             < TROP DE '(' : ABORT ...
         WORD        N1              < OK.
<
<        T R A I T E M E N T   D E S   ' ) '  :
<
N15:     BYTE        PULL;1          < PULL VERITABLE.
         WORD        N27             < ERREUR : TROP DE ')' 9..
         WORD        N1
<
<        C O M M E N T A I R E   O U   T E X T E   A   E D I T E R  :
<
N340:    BYTE        PCS;0
         WORD        SAVNOM          < SAVE INDEX 1ER CARACTERE.
         BYTE        PGS;0           < ON SAUTE LE PREMIER CARACTERE (CF. LES
                                     < ACCES AU 'CCI'...).
N800:    BYTE        PGS;0           < ACCES CARACTERE COURANT (Y).
         BYTE        PTM;";"         < FIN DE COMMENTAIRE ???
         BYTE        PT;"!"          < FIN DE MESSAGE ???
         WORD        N1              < FIN DE COMMENTAIRE , VERS N1.
         WORD        N800            < NI L'UN , NI L'AUTRE , AU SUIVANT
         BYTE        PC+PGON1;0      < EDITION DU TEXTE.
         WORD        TEXTE           < VERS N22 SI CTRL-X-OFF ...
<
<        D E F I N I T I O N   A R G U M E N T   F O R M E L
<                    C O U R A N T  :
<
N1001:   EQU         $
         BYTE        PGS;0           < ACCES AU CARACTERE COURANT (Y).
         BYTE        PTM;"("         < EST-CE UNE '(' ???
         WORD        N27             < NON , ERREUR ...
         BYTE        PC;0            < OUI , OK.
         WORD        DARGF           < SAVE L'INDEX DU 1ER CARACTERE
                                     < DE L'ARGUMENT FORMEL.
         WORD        N1000           < VERS LE SAUT DEFINITION PROG.
<
<        A P P E L   A R G U M E N T   F O R M E L  :
<
N941:    EQU         $
         BYTE        PC;0
         WORD        CARGF
         WORD        N27             < ERREUR : PAS D'ARG. FORMEL.
         WORD        N942            < OK.
<
<        D E M A N D E   D E   R E P E T I T I O N S  :
<
N8:      EQU         $
         BYTE        PGS;0
         BYTE        PC;0
         WORD        REPET1          < RECUPERATION NBRE ITERATIONS.
         WORD        N27             < ERREUR : NBRE ERRONE.
N30:     BYTE        PGS;0
         BYTE        PTM;"("         < EST-CE UNE '(' ???
         WORD        N27             < NON , ERREUR ...
         BYTE        PCS;0
         WORD        REPET2          < Y=NBRE REPETITIONS.
         BYTE        PUSH;CODREP     < PUSH RECURSIVITE.
         WORD        N27             < ERREUR : OVERSTACK ...
         WORD        N1              < OK , ET C'EST PARTI ...
<
<        M O D I F I C A T I O N   C O N S T A N T E  :
<
N31:     EQU         $
         BYTE        PGS;0
         BYTE        PC;0
         WORD        REPET1          < RECUPERATION CONSTANTE.
         WORD        N27             < ERREUR DE CONSTANTE.
         BYTE        PC+PGON1;0
         WORD        SCTTE           < OK , MAJ CONSTANTE ...
<
<        S A U T   D E F I N I T I O N   P R O G R A M M E  :
<
N16:     EQU         $
         BYTE        PGS;0
         BYTE        PTM;"("         < EST-CE UNE '(' ???
         WORD        N16             < BOUCLAGE JUSQU'A TROUVER '('.
N1000:   EQU         $               < ENTRY ARGUMENT FORMEL COURANT.
         BYTE        PCS;1           < A NOTER : B=1 !!!
         WORD        SETY            < POUR FAIRE CD=1.
         BYTE        PUSH;CODDEF     < EMPILEMENT LORS DE '('.
         WORD        N27             < ERREUR D'OVERSTACK.
N63:     BYTE        PGS;0
         BYTE        PTM;"("         < EST-CE UNE '(' ???
         BYTE        PT;")"          < EST-CE UNE ')' ???
         WORD        N64             < CAS DES '('.
         WORD        N63             < ON BOUCLE SUR LES UATRES
                                     < CARACTERES (# DE '(' ET ')').
         BYTE        PULL;0          < -1 SUR CP POUR ')'.
         WORD        N65             < ARRET SUR CP=0.
         WORD        N63             < BOUCLAGE SI CP#0.
N64:     BYTE        PUSH;0          < +1 SUR CP POUR '('.
         WORD        N25             < ERREUR : OVERSTACK.
         WORD        N63             < OK , BOUCALGE.
N65:     BYTE        PUSHS;0         < POUR FAIRE CP=1 A LA FIN DE
                                     < LA DEFINITION.
         BYTE        PULL;1          < PULL VERITABLE DE FIN DE
                                     < RECURSIVITE.
         WORD        N25             < ERREUR : OVERSTACK.
         WORD        N1              < OK , COMMANDE SUIVANTE.
<
<        A P P E L   P R O G R A M M E  :
<
N7:      EQU         $
N411:    EQU         $
         BYTE        PCS;0
         WORD        SAVNOM          < SAVE=INDEX 1ER CARACTERE NOM.
N80:     BYTE        PGS;0
         BYTE        PTM;";"         < EST-CE LA FIN DU NOM ???
         WORD        N80             < NON , BOUCLAGE JUSQU'A ';' 9
         BYTE        PC;0
         WORD        LOOKP           < RECHERCHE DEFINITION PROGRAMME.
         WORD        N300            < LE PROGRAMME N'EXISTE PAS DANS
                                     < L'ITEM COURANT.
N942:    EQU         $
         BYTE        PCS;2           < A NOTER : B=2 !!!
         WORD        SETY            < POUR FAIRE : Y=2.
         BYTE        PUSH;CODPRO     < PUSH RECURSIVITE.
                                     < (AVEC CD=2).
         WORD        N27             < ERREUR : OVERSTACK.
N301:    BYTE        PC+PGON1;0
         WORD        START           < LANCEMENT DU PROGRAMME TROUVE.
<
<        A P P E L   D I R E C T   P R O G R A M M E
<        E N   B I B L I O T H E Q U E  :
<
N860:    EQU         $
         BYTE        PCS;0
         WORD        SAVNOM          < SAV)=INDEX 1ER CARACTERE NOM.
N861:    BYTE        PGS;0
         BYTE        PTM;";"         < EST-CE LA FIN DE NOM ???
         WORD        N861            < NON , ON BOUCLE JUSQU'A ';'.
<
<        R E C H E R C H E   E N   B I B L I O T H E Q U E  :
<
N300:    BYTE        PC;0
         WORD        CHECKB          < VALIDATION BIBLIOTHEQUE.
         WORD        N25             < ERREUR DE TYPE ...
         BYTE        PC;0
         WORD        LOOKPB          < OK , RECHERCHE EN BIBLIOTHEQUE.
         WORD        N25             < ERREUR : PROGRAMME INEXISTANT ...
         BYTE        PCS;2
         WORD        SETY            < Y=2.
         BYTE        PUSH;CODPRO+CODDEF
                                     < PUSH RECURISIVITE AVEC
                                     < CHANGEMENT ITEM COURANT.
         WORD        N27             < ERREUR : OVERSTACK.
         WORD        N301            < OK , START DANS LE PROGRAMME.
<
<        C H A R G E M E N T   B I B L I O T H E Q U E  :
<
N302:    EQU         $
         BYTE        PCS;0
         WORD        SAVNOM          < SAVE=INDEX 1ER CARACTERE NOM.
N303:    BYTE        PGS;0
         BYTE        PTM;";"         < EST-CE LA FIN DE NOM ???
         WORD        N303            < ON BOUCLE JUSQU'A ';' ...
         BYTE        PC;0
         WORD        LOADB           < TENTATIVE DE CHARGEMENT DE
                                     < LA BIBLIOTHEQUE.
         WORD        N25             < ERREUR DE BIBLIOTHEQUE.
         BYTE        PC;0
         WORD        CHECKB          < VALIDATION BIBLIOTHEQUE.
         WORD        N25             < ERREUR DE TYPE.
         WORD        N1              < OK.
<
<        C H A R G E M E N T   B I B L I O T H E Q U E   S U R
<
<        L ' I T E M   C O U R A N T   L U I - M E M E.
<
N2001:   BYTE        PC;0
         WORD        SAVNOV          < SAVE=INDEX 1ER CARACTERE DU NOM ET
                                     < POSITIONNEMENT INDICATEUR 'TYPOV'.
         WORD        N303
         WORD        N303
<
<        D E M A N D E   D E   P A U S E  :
<
N750:    EQU         $
         BYTE        PGS;0
         BYTE        PC;0
         WORD        REPET1          < SAVE=DUREE DE LA PAUSE EN
                                     < SECONDES.
         WORD        N27             < ERREUR DE DUREE.
         BYTE        PC+PGON1;0
         WORD        PAUSE           < PAUSE DE (SAVE) SECONDES.
<
<        A P P E L   N O M   I M A G E
<        V I D E O / F L O P P Y  :
<
N4010:   BYTE        PC;0
         WORD        SAVNOM          < SAVE LE 1ER CARACTERE DU NOM.
         WORD        N1500           < VERS LA RECUPERATION DU NOM.
         WORD        N1500           < VERS LA RECUPERATION DU NOM.
N4012:   BYTE        PC;0
         WORD        SAVN12          < SAVE LE 1ER CARACTERE DU NOM
                                     < DE L'IMAGE 12K ET POSITIONNEMENT
                                     < INDICATEUR 'TYPIM'.
         WORD        N1500
         WORD        N1500
<
<
<        P R I M I T I V E S   N O N   R E C O N N U E S  :
<        E S S A I   I M A G E   V I D E O  :
<
<
N610:    EQU         $
         BYTE        PCS;0
         WORD        SNIMAG          < SAVE 1ER CARACTERE NOM IMAGE.
N1500:   BYTE        PGS;0
         BYTE        PTM;";"         < EST-CE ';' DE FIN DE NOM ???
         WORD        N1500           < BOUCLAGE JUSQU'A ';'.
         BYTE        PC;0
         WORD        LOADI           < TENTATIVE DE LOAD IMAGE VIDEO.
         WORD        N25             < ERREUR D'IMAGE (N'EXISTE PAS ,
                                     < OU MAUVAIS TYPE...)
         WORD        N1              < OK , COMMANDE SUIVANTE.
<
<        E N T R E E   C A M E R A   S O L A R.
<
N5104:   BYTE        PC+PGON1;0
         WORD        INRVB
N5105:   BYTE        PC+PGON1;0
         WORD        INR
N5106:   BYTE        PC+PGON1;0
         WORD        INV
N5107:   BYTE        PC+PGON1;0
         WORD        INB
         PAGE
<
<
<        P I L E   D E   R E C U R S I V I T E  :
<
<
PIR:     EQU         $
         WORD        0;0             < 1ERE ENTREE DE PIR.
         DZS         X1              < PILE DE RECURSIVITE.
         PAGE
<
<
<        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 VOLONTAIRE D'ASSEMBLAGE
                                     < SI MAUVAISE IMPLANTATION.
         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.