NMPROC:  VAL         "TA"            < NOM DU PROCESSEUR.
ZDC:     VAL         0               < ASSEMBLAGE SGN : X469,,X469
ZDC:     VAL         1               < ASSEMBLAGE ZDC : ,,X469,
         IDP         "INTERPOLATEUR D'IMAGES - RELEASE 22/02/1980"
         IDP         "JOHN F. COLONNA"
         EOT         #SIP DEFINITION CMS5#
         EOT         #SIP DEF PROCESSEUR#
         PROG
         WORD        IMAGE           < ENTRY POINT DU PROCESSEUR.
         WORD        0
PIMAGE:  EQU         $
         LRP         L               < A NOTER : P='12 !!!
         BR          -2,L            < ENTRE DANS LE PROCESSEUR 'TN'.
         PAGE
         EOT         #SIP DEFINITION ITEM#
ITEM1:   EQU         ZERO+PILE-LTNI  < ADRESSE ITEM1
ITEM2:   EQU         ZERO+PILE-LTNI-LTNI < ADRESSE ITEM2
         PAGE
         EOT         #SIP IMAGE 256#
NOM:     EQU         ZERO+PILE+5-LNOM-2 < NOM DE L'IMAGE VIDEO
IMAG:    EQU         NOM+LNOM+2      < IMAGE VIDEO PROPREMENT DITE
         IF          ORDI-"S",XWOR%,,XWOR%
ENTIM:   EQU         IMAG-LENTIM     < EN-TETE IMAGE (TRACE VIDEO SOLAR).
XWOR%:   VAL         0
<
< VALIDATION DU FORMAT DE L'IMAGE (CARREE) :
<
X20:     VAL         1024/DY         < NBRE DE LIGNES/IMAGE.
X21:     VAL         CNMPL*16        < NBRE DE POINTS/LIGNE.
         IF          X20-X21,,X100,
         IF          ATTENTION : L'IMAGE N'EST PAS CARREE !!!
X100:    VAL         0
<
<        D E F I N I T I O N   D E S   C O U P L E S  :
<
         DSEC        XY
XD:      WORD        0               < X POINT DE DEPART.
YD:      WORD        0               < Y POINT DE DEPART.
XA:      WORD        0               < X POINT D'ARRIVEE.
YA:      WORD        0               < Y POINT D'ARRIVEE.
X100:    VAL         0
         PAGE
<
<
<        L O C A L  :
<
<
<
< BUFFERS DE GRANDE TAILLE :
<
         TABLE
BUF:     DZS         128             < BUFFER SGF.
SECTOR:  EQU         BUF
MND:     BYTE        16;'6D
         ASCI        "#POINTS DEPART= "
MNA:     BYTE        17;'6D
         ASCI        "#POINTS ARRIVEE="
MTRAJ:   BYTE        8;'6D
         ASCI        "TRAJET? "
MAR:     BYTE        9;'6D
         ASCI        "ARRIVEE>"
MDE:     BYTE        8;'6D
         ASCI        "DEPART> "
MCON:    BYTE        13;'6D
         ASCI        "NBRE DE PAS="
MPAS:    BYTE        11;'6D
         ASCI        "PAS A PAS?"
MCONV:   BYTE        18;'6D
         ASCI        "CONVERSION VIDEO? "
MSCRA:   BYTE        16;'6D
         ASCI        "DEPART SCRATCH? "
MRES:    BYTE        19;'6D
         ASCI        "ARRIVEE RESIDENTE?"
MNT:     BYTE        27;'6D
         ASCI        "NBRE COPIES/TEMPORISATION="
MPAUS:   BYTE        7;'6D
         BYTE        '07;'07;'07;'07;'07;'07
MTR:     BYTE        16;'6D
         ASCI        "TRANSFORMATION? "
MERA:    BYTE        12;'6D
         ASCI        "EFFACEMENT? "
X100:    VAL         0
         LOCAL
LOC:     EQU         $
<
< RELAIS A METTRE IMPERATIVEMENT EN TETE DU LOCAL :
< (AFIN D'ETRE AISEMENT APPELABLE PAR LES ROUTINES
< DE TRANSFORMATIONS CONTENUES DANS L'ITEM2)
<
<        RESET       '80 (00)
ARESET:  WORD        RESET           < MISE D'UN POINT A 0.
<        SET         '81 (01)
ASET:    WORD        SET             < MISE D'UN POINT A 1.
<        INVER       '82 (10)
AINVER:  WORD        INVER           < INVERSION D'UN POINT.
<        TEST        '83 (11)
ATEST:   WORD        TEST            < TEST D'UN POINT.
<
< MESSAGES ET BUFFERS :
<
REP:     WORD        0
MINT:    BYTE        2;'6D
         ASCI        "> "
BDISP:   BYTE        4;0
         ASCI        "1234"
MERR:    BYTE        3;'6D
         ASCI        "??"
MVID:    BYTE        7;'6D
         ASCI        "VIDEO?"
MDEL:    BYTE        8;'6D
         ASCI        "DELETE? "
MCOP:    BYTE        6;'6D
         ASCI        "COPY? "
MSAVE:   BYTE        6;'6D
         ASCI        "SAVE? "
MNOM:    BYTE        5;'6D
         ASCI        "NOM>"
MAN:     ASCI        "!ASSIGN A=N,"
FA:      ASCI        "FA"
IDAN:    BYTE        0;'04           < IDESC DANS L'OCTET0.
MBN:     ASCI        "!ASSIGN B=N,"
FB:      ASCI        "FB"
IDBN:    BYTE        0;'04           < IDESC DANS L'OCTET0.
MAO:     ASCI        "!ASSIGN A=O,FA"
IDAO:    BYTE        0;'04           < IDESC DANS L'OCTET0.
MBO:     ASCI        "!ASSIGN B=O,FB"
IDBO:    BYTE        0;'04           < IDESC DANS L'OCTET0.
MAC:     ASCI        "!ASSIGN A="
         BYTE        "R";'04
MBC:     ASCI        "!ASSIGN B="
         BYTE        "R";'04
<
< INTERFACE SEGMENT GRAPHIQUE :
<
Y:       VAL         0               < COORDONNEE Y.
X:       VAL         1               < COORDONNEE X.
         IF          ZDC,X469,,X469
NSEG:    ASCI        ":G"
         BYTE        "S";'04
X469:    VAL         0
         IF          ZDC,,X469,
NSEG:    WORD        0               < SEGMENT INVALIDE INITIALEMENT.
X469:    VAL         0
SEG:     DZS         4               < SEGMENT GRAPHIQUE.
LSEG:    VAL         $-NSEG*2
SEGORG:  EQU         SEG             < POINT ORIGINE.
SEGEXT:  EQU         SEG+2           < POINT EXTREMITE.
TRAJ:    DZS         4               < POUR EDITER LES TRAJECTOIRES
                                     < DES POINTS EN GRAPHIQUE.
<
< DEMANDES A CMS4 :
<
DEMMEM:  WORD        '0004           < DEMANDE D'ALOCATION 8K MOTS.
RELMEM:  WORD        '0004           < DEMANDE DE RETOUR A 4K MOTS.
         WORD        '4000           < ALLOCATION 8K MOTS.
         WORD        '2000
DEMCCI:  WORD        '0001           < APPEL DU CCI.
DEMSGN:  WORD        '0402           < DEMANDE D'ACCES AU SGN OVERLAY.
         WORD        BRANCH-ZERO*2   < @OCTET DE LA BRANCHE.
         WORD        ZERO-BRANCH+PILE-LTNI-LTNI*2
         WORD        -1
DEMOUT:  WORD        '0202           < SORTIE D'UN MESSAGE.
         WORD        MINT-ZERO*2
         WORD        2
DEMIN:   WORD        '0101           < ENTREE SUR LE TERMINAL.
         WORD        REP-ZERO*2
         WORD        1
DEMCON:  WORD        '0101           < ENTREE DU NBRE DE PAS.
         WORD        REP-ZERO*2
         WORD        2               < 2 CHIFFRES HEXAS.
RDK:     WORD        '0C00           < LECTURE SECTEUR SCRATCH.
         WORD        SECTOR-ZERO*2
         WORD        256
         WORD        0               < NUMERO SECTEUR SCRATCH.
SGFW:    WORD        '0B02           < ECRITURE SGF UN ENREGISTREMENT.
         WORD        BUF-ZERO*2
         WORD        256
         WORD        0
SGFR:    WORD        '0B09           < LECTURE DELETE SGF SUR '0B.
         WORD        BUF-ZERO*2
         WORD        256
         WORD        0
SGFO1:   WORD        '0B04           < OUVERTURE CLEF '1.0' NEW (4) ,
                                     < (5 POUR OLD).
         WORD        1
         WORD        0
SGFC:    WORD        '0B07           < FERMETURE CLEF '1.0' SAVE (7) ,
                                     < (6 SI RELEASE).
DEMDA:   WORD        '0302           < DELETE NOM DU FICHIER FA.
         WORD        FA-ZERO*2
         WORD        4
         WORD        -1
DEMDB:   WORD        '0302           < DELETE LE NOM DU FICHIER FB.
         WORD        FB-ZERO*2
         WORD        4
         WORD        -1
CCII:    WORD        '0002           < ACCES CCI INTERPRETATIF.
         WORD        0               < @OCTET DE LA CARTE CONTROLE.
         WORD        80              < LONGUEUR MAX.
DEMNOM:  WORD        '0101           < ENTREE D'UN NOM D'IMAGE.
         WORD        NOM-ZERO*2
         WORD        LNOM*2
SGN:     WORD        '0502           < LECTURE PUIS ECRITURE D'UNE
                                     < IMAGE VIDEO.
         WORD        NOM-ZERO*2
         WORD        LIMAG+LNOM+2*2
         WORD        2*LNOM
SLEEP:   WORD        '0005           < DEMANDE DE TEMPORISATION.
         WORD        0
         WORD        15              < 15 SECONDES DE TEMPO.
ERASE:   WORD        '0205           < EFFACEMENT DE L'ECRAN.
CG:      WORD        '0204           < CLOSE GRAPHIQUE.
OG:      WORD        '0203           < OPEN GRAPHIQUE.
WG:      WORD        '020A           < ECRITURE D'1N SEGMENT.
         WORD        SEG-ZERO*2
         WORD        8
COPY:    WORD        '0207           < DEMANDE DE HARD-COPY.
         BYTE        '1B;'17;'8D;'1D
POINTI:  WORD        '0207           < MISE EN MODE POINTILLE SUR 4014.
         BYTE        '1B;'61;'04;0
CONTI:   WORD        '0207           < MISE EN MODE CONTINU SI 4014.
         BYTE        '1B;'60;'04;0
DTRAJ:   WORD        '020A           < AFFICHAGE DE LA TRAJECTOIRE.
         WORD        TRAJ-ZERO*2
         WORD        8
         IF          ZDC,X469,,X469
DEMSEG:  WORD        '0502           < GET SEGMENT GRAPHIQUE.
         WORD        NSEG-ZERO*2
         WORD        LSEG
         WORD        -1
DELSEG:  WORD        '0302           < DELETE SEGMENT GRAPHIQUE.
         WORD        NSEG-ZERO*2
         WORD        LSEG
         WORD        -1
X469:    VAL         0
         IF          ZDC,,X469,
DEMSEG:  WORD        '0008           < LECTURE DE LA ZDC DU SYSTEME.
         WORD        NSEG-ZERO*2
         WORD        LSEG
         WORD        'FFC0           < VALIDATION DES OCTETS.
DELSEG:  WORD        '000A           < ECRITURE EN ZDC DU SYSTEME.
         WORD        NSEG-ZERO*2
         WORD        SEG-NSEG*2
         WORD        'C000           < VALIDATION DES OCTETS.
X469:    VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
STABIL:  WORD        '8A01           < DEMANDE DE STABILISATION VIDEO.
         WORD        IMAG-ZERO*2
         WORD        LIMAG*2
         WORD        TVPV            < SUR LE PROCESSEUR VERT.
XWOR%:   VAL         0
<
< CONSTANTES :
<
         IF          ORDI-"T",XWOR%,,XWOR%
ACNSYS:  ASCI        ":SYS"
XWOR%:   VAL         0
NGE:     WORD        "GE"            < NOM DU PROCESSEUR 'GE'.
KIN:     WORD        -1              < COMPTAGE DES ENTRIES.
VIDEO:   WORD        0               < 0=VIDEO ; 1=GRAPHIQUE.
                                     < -1=GRAPHIQUE AVEC CONVERSION
                                     < VIDEO.
FOIS:    WORD        -1              < COMPTE LE NBRE D'EXPLORATION
                                     < DE L'IMAGE DE DEPART MOINS 1.
EFFAC:   WORD        1               < 0=ERASE SYSTEMATIQUE ECRAN,
                                     < 1=NON (IMPLICITE EN VIDEO).
ITRAJ:   WORD        0               < =0 : TRACE DES TRAJECTOIRES DES
                                     < POINTS EN MODE GRAPHIQUE.
ICOP:    WORD        1               < 0=HARD-COPY, 1=NON.
NCOPY:   WORD        1               < NBRE DE COPIES IMPLICITE.
DELTA:   WORD        0               < INDEX ZONE DE RANGEMENT D'UN
                                     < SEGMENT GRAPHIQUE A TRACER.
IBUF:    WORD        0               < INDEX BUFFER SGF.
NAR:     WORD        0               < NBRE DE POINTS IMAGE ARRIVEE.
NDE:     WORD        0               < NBRE DE POINTS IMAGE DEPART.
SNDE:    WORD        0               < NBRE DE POINTS REEL DE DEPART.
                                     < (AU CAS OU ELLE SERAIT REEXPLOREE)
ND:      WORD        0               < VALEUR TEMPORAIRE DE NDE POUR
                                     < RATTRAPAGE EVENTUEL DE NAR.
NC:      WORD        0               < DECOMPTEUR DES POINTS LORS D'UNE
                                     < INTERPOLATION.
NMOTS:   WORD        LTNI            < NBRE DE MOTS A RAZER DANS ITEM1.
IRAZ:    WORD        1               < 1=INUTILE DE RAZER ITEM1 ,
                                     < 0 : IL FAUT RAZER L'ITEM1 CAR IL
                                     < A ETE ALTERE...
IMAG2:   WORD        IMAG-ZERO*2     < @OCTET IMAGE VIDEO.
ALIMAG:  WORD        LIMAG           < LONGUEUR IMAGE VIDEO.
NMPL:    WORD        CNMPL           < NBRE DE MOTS DE 16 BITS/LIGNE.
NLIG:    WORD        1024/RDY-1      < NBRE DE LIGNES-1 D'UNE IMAGE.
DICOX:   WORD        0               < X DU POINT VIDEO COURANT M.
DICOY:   WORD        0               < Y DU POINT VIDEO COURANT M.
DICOX1:  WORD        0               < X DE L'ORIGINE VIDEO COURANTE M1.
DICOY1:  WORD        0               < Y DE L'ORIGINE VIDEO COURANTE M1.
DICOX2:  WORD        0               < X EXTREMITE VIDEO COURANTE M2.
DICOY2:  WORD        0               < Y EXTREMITE VIDEO COURANTE M2.
NVP1:    WORD        '0A             < POUR LA GESTION DES NVP DU
                                     < SGF EN BASCULE.
PAS:     WORD        0               < 0 : INTERPOLATION EN PAS A PAS,
                                     < 1 SINON (MODE CONTINU.
CONS:    WORD        16              < PAS D'INTERPOLATION.
                                     < (AUSSI DECOMPTEUR DES TOURS
                                     < A EFFECTUER).
<
< RELAIS DIVERS :
<
         IF          ORDI-"T",XWOR%,,XWOR%
ASP3:    WORD        SP3             < STABILISATION IMAGE VIDEO.
XWOR%:   VAL         0
AVIS:    WORD        VIS             < STABILISATION IMAGE VIDEO.
AENTER:  WORD        ENTER           < ENVOI MESSAGE, PUIS LECTURE
                                     < REPONSE O/N, ET ITERATION...
AHEX:    WORD        HEX             < CONVERSION HEXA-->BINAIRE.
ADISP:   WORD        DISP            < CONVERSION BINAIRE-->ASCI.
APRINT:  WORD        PRINT           < EMISSION D'UN MESSAGE.
AGOSGN:  WORD        GOSGN           < ACCES AU SGN POUR LECTURE/
                                     < ECRITURE D'UNE IMAGE VIDEO.
ACCI:    WORD        CCI             < ACCES AU CCI INTERPRETATIF.
ADF:     WORD        DF              < TENTATIVE DELETE FICHIERS FA & FB
AWR:     WORD        WR              < ECRITURE/LECTURE SGF.
ASTBUF:  WORD        STBUF           < RANGEMENT DOUBLET DANS LE
                                     < BUFFER SGF ET ECRITURE
                                     < EVENTUELLE.
AMAJL:   WORD        MAJL            < INSERTION DE L'IMAGE DEPART DANS
                                     < LA LISTE D'ARRIVEE.
AGET:    WORD        GET             < RECUPERATION SEGMENT GRAPHIQUE.
AITEM2:  WORD        ITEM2+LTN       < ENTRY POINT DU MODULE EVENTUEL
                                     < DE TRANSFORMATION.
ATRANS:  WORD        TRANS           < ROUTINE INTERFACE DE TRANSFO.
APAUS:   WORD        PAUS            < ROUTINE DE PAUSE.
AOVL:    WORD        OVL             < CHARGEMENT DES OVERLAYS.
AGOGE:   WORD        GOGE            < RETOUR A 'GE'.
AE30:    WORD        E30             < BOUCLE D'INTERPOLATION.
ADRAW:   WORD        DRAW            < TRACE D'UN SEGMENT GRAPHIQUE.
AMCOPY:  WORD        MCOPY           < HARD-COPY + TEMPORISATION.
         IF          ORDI-"T",XWOR%,,XWOR%
ADICO:   WORD        DICO            < PARCOURS DICHOTOMIQUE D'UN
                                     < SEGMENT VIDEO.
XWOR%:   VAL         0
AREP:    WORD        REP,X           < RELAI VERS LE BUFFER REP.
ATYP:    WORD        ITEM2+IINDIC    < ACCES AU TYPE DE L'ITEM2.
ABDISP:  WORD        BDISP,X         < RELAI BUFFER DE CONVERSION HEXA.
ABUF:    WORD        BUF+1,X         < REALI DU BUFFER SGF.
AI1:     WORD        ITEM1-1,X       < RELAI DE RAZ DE L'ITEM1.
AIMAG:   WORD        IMAG-1,X        < RELAI IMAGE VIDEO POUR JDX.
AEOT:    WORD        NOM+LNOM
ALONG:   WORD        NOM+LNOM+1      < POUR L'INDICATEUR TYPE 'VIDEO'.
AMND:    WORD        MND
AMNA:    WORD        MNA
AMSCRA:  WORD        MSCRA
AMAR:    WORD        MAR
AMDE:    WORD        MDE
AMPAS:   WORD        MPAS
AMCON:   WORD        MCON
AMTRAJ:  WORD        MTRAJ
AMRES:   WORD        MRES
AMCONV:  WORD        MCONV
AMNT:    WORD        MNT
AMTR:    WORD        MTR
AMPAUS:  WORD        MPAUS
AMERA:   WORD        MERA
<
< PILES DE TRAVAIL :
<
APILE:   WORD        PILE-1          < PILE DE SMC (RETOUR A 'GE').
STACK:   DZS         10              < PILE TEMPORAIRE DE TRAVAIL.
         DZS         20              < PILE PLUS GRANDE POUR 'TA'.
         PROG
         PAGE
         IF          ORDI-"T",XWOR%,,XWOR%
TIMAG:   WORD        IMAG            < @RELATIVE DE L'IMAGE VIDEO.
         EOT         #SIP SP3#
XWOR%:   VAL         0
VIS:     EQU         $               < ENTRY ESCLAVE.
         CPZ         VIDEO           < QUEL LE MODE DE SORTIE ???
         JG          VIS1            < GRAPHIQUE PUR : RIEN A FAIRE ...
         IF          ORDI-"T",XWOR%,,XWOR%
         LA          ASP3            < ACCES A L'ADRESSE DE LA
                                     < ROUTINE MAITRE.
         JAE         VIS1            < ON N'EST PAS SOUS :SYS.
         WORD        '1EC5           < OK , ON EST SOUS :SYS.
XWOR%:   VAL         0
         IF          ORDI-"S",XWOR%,,XWOR%
         PSR         X
         LAD         STABIL          < STABILISATION IMAGE VIDEO.
         SVC         0
         PLR         X
XWOR%:   VAL         0
VIS1:    EQU         $
         RSR
         PAGE
<
<
<        C O N V E R S I O N   H E X A ---> B I N A I R E  :
<
<
<        ARGUMENT :
<                    Y=NBRE DE CARACTERES A DECODER ,
<                    REP=CHAINE DE CARACTERES.
<
<
<        RESULTATS :
<                    B=0 : OK ET (A)=VALEUR BINAIRE DECODEE ,
<                    B=1#0 : LA CHAINE D'ENTREE EST ERRONNEE.
<                    LES INDICATEURS SONT POSITIONNES SUR (B).
<
<
HEX:     EQU         $
         LXI         0               < INDEX DU BUFFER DE REPONSE.
         LBI         0               < INITIALISATION DE B.
E55:     EQU         $
         LBY         &AREP           < A=CARACTERE COURANT DU BUFFER.
         CPI         '0D             < FIN DE MESSAGE ???
         JE          HEX1            < OUI , OK.
         CPI         '04             < FIN DE MESSAGE ???
         JE          HEX1            < OUI , OK.
         ADRI        -'30,A
         JAL         E472            < ERREUR CARACTERE NON RECONNU.
         CPI         9               < EST-CE UN CHIFFRE ???
         JLE         E51             < OUI , C'EST UN CHIFFRE.
         ADRI        -'41+'39+1,A    < NON.
         CPI         'A              < VALIDATION.
         JL          E472            < ERREUR : CARACTERE NON RECONNU.
         CPI         'F              < VALIDATION.
         JG          E472            < ERREUR : CARACTERE NON RECONNU.
E51:     EQU         $
         SCRS        4               < MISE DES 4 BITS EN TETE DE A.
         SCLD        4               < ET CONCATENATION A B.
         ADRI        1,X             < PROGRESSION DE L'INDEX.
         CPR         X,Y             < EST-CE FINI ???
         JNE         E55             < NON , ON CONTINUE.
HEX1:    EQU         $
         LR          B,A             < A=VALEUR BINAIRE DE (REP).
         LBI         0               < B=0 : RETOUR OK.
E473:    EQU         $
         CPZR        B               < POSITIONNEMENT DES INDICATEURS.
         RSR
<
< RETOURS EN ERREUR :
<
E472:    EQU         $
         LBI         1               < B#0.
         JMP         E473            < PAR ICI LA SORTIE ...
         PAGE
<
<
<        C O N V E R S I O N   B I N A I R E  ---->  A S C I   H E X A :
<
<
<        ARGUMENT :
<                    B=VALEUR A CONVERTIR DANS BDISP.
<
<
DISP:    EQU         $
         LXI         1               < INDEX DE RANGEMENT DANS BISP.
         LYI         1+4             < BORNE SUPERIEURE DE (X).
DISP1:   EQU         $
         LAI         0               < CLEAR A.
         SLLD        4               < DECONCATENATION D'UN CHIFFRE.
         CPI         9               < EST-CE UN CHIFFRE ???
         JLE         DISP2           < OUI, CHIFFRE DECIMAL.
         ADRI        '41-'39-1,A     < CAS DES LETTRES A,B,C,D,E,F.
DISP2:   EQU         $
         ADRI        '30,A           < CONVERSION ASCI.
         STBY        &ABDISP         < ET MISE DANS LE BUFFER BDISP.
         ADRI        1,X             < AU SUIVANT.
         CPR         X,Y             < EST-CE FINI ???
         JNE         DISP1           < ET NON ....
         RSR                         < ET OUI ...
         PAGE
<
<
<        E M I S S I O N   D ' U N   M E S S A G E  :
<
<
<        ARGUMENT :
<                    A=@MESSAGE EN MOT.
<
<
PRINT:   EQU         $
         PSR         C,X
         LR          A,C             < C=@MOT DU MESSAGE.
         ADR         A,A             < CONVERSION OCTET.
         ADRI        1,A             < ADRESSE OCTET DU MESSAGE.
         STA         DEMOUT+1        < MAJ AMDEM.
         LBY         0,C             < RECUPERATION LONGUER MESSAGE.
         STA         DEMOUT+2        < MAJ CODEM.
         LAD         DEMOUT
         SVC         0               < EMISSION DU MESSAGE.
         PLR         C,X
         RSR
         PAGE
<
<
<        H A R D - C O P Y   E T   T E M P O R I S A T I O N  :
<
<
MCOPY:   EQU         $
         CPZ         ICOP            < FAUT-IL HARD-COPIER ???
         JNE         MCOPY2          < NON.
         LX          NCOPY           < OUI , (X)=NBRE DE COPIES.
MCOPY1:  EQU         $
         PSR         X               < SAVE LE DECOMPTE DES COPIES.
         LAD         COPY
         SVC         0               < HARD-COPY.
         LAD         SLEEP
         SVC         0               < TEMPORISATION.
         PLR         X               < RESTAURE LE DECOMPTE DES COPIES.
         JDX         MCOPY1          < A LA SUIVANTE.
MCOPY2:  EQU         $
         RSR
         PAGE
<
<
<        P A U S E  :
<
<
<        FONCTION :
<                      BLOQUER LE PROGRAMME JUSQU'A LA
<                    RECEPTION D'UN 'N'.
<
<
PAUS:    EQU         $
         LAD         CG
         SVC         0               < REMISE EVENTUELLE EN ALPHA.
PAUS1:   EQU         $
         LA          AMPAUS
         BSR         AENTER          < ENVOI MESSAGE ET LECTURE DE
                                     < LA REPONSE.
         JE          PAUS1           < ON BOUCLE SI OUI 'O'.
         RSR                         < SINON 'N' ON ARRETE...
         PAGE
<
<
<        L E C T U R E / E C R I T U R E   I M A G E  :
<
<
<        ARGUMENT :
<                    A=@MESSAGE A EMETTRE.
<
<
GOSGN2:  EQU         $
         LR          Y,A             < RESTAURE A=@MESSAGE.
GOSGN:   EQU         $
         STZ         IRAZ            < IRAZ=0 : IL FAUDRA RAZER ITEM1.
         LR          A,Y             < SAVE Y=@MESSAGE.
         BSR         APRINT          < EMISSION DU MESSAGE ARGUMENT.
         LAD         DEMNOM
         SVC         0               < ENTREE DU NOM DEMANDE.
         LAI         '04
         STBY        &AEOT           < INSERTION D'UN EOT A PRIORI.
         LAD         SGN
         SVC         0               < LECTURE/ECRITURE DE L'IMAGE
                                     < DEMANDEE.
         JNE         GOSGN2          < ERREUR SGN.
         LBY         SGN             < ACCES AU NVP D'ACCES SGN.
         CPI         '05             < EST-CE UN LOAD ???
         JNE         GOSGN1          < NON.
         LA          &ALONG          < OUI , ACCES AU TYPE.
         JAGE        GOSGN2          < ERREUR : CE N'EST PAS UNE
                                     < IMAGE VIDEO.
         CPI         -3              < SUITE DE LA VALIDATION.
         JL          GOSGN2          < CE N'EST PAS UNE IMAGE VIDEO ...
GOSGN1:  EQU         $
         LR          Y,A             < RESTAURE A=@MESSAGE.
         RSR
         PAGE
<
<
<        A C C E S   A U   C C I   I N T E R P R E T A T I F  :
<
<
<        ARGUMENT :
<                    A=@MOT DE LA CARTE CONTROLE.
<
<
CCI:     EQU         $
         SLLS        1               < CONVERSION EN UNE ADRESSE OCTET.
         STA         CCII+1          < MAJ DE L'AMDEM.
         LAD         CCII
         SVC         0               < ENVOI DE LA CARTE CONTROLE.
         RSR
<
<
<        T E N T A T I V E   D E   D E L E T E
<        D E S   F I C H I E R S   F A   &   F B  :
<
<
DF:      EQU         $
         LAD         MAO
         BSR         ACCI            < !ASSIGN A=O,FA.
         LAD         MAC
         BSR         ACCI            < !ASSIGN A=R.
         LAD         DEMDA
         SVC         0               < DESTRUCTION DU NOM FA.
         LAD         MBO
         BSR         ACCI            < !ASSIGN B=O,FB.
         LAD         MBC
         BSR         ACCI            < !ASSIGN B=R.
         LAD         DEMDB
         SVC         0               < DESTRUCTION DU NOM FB.
         RSR
         PAGE
<
<
<        I N T E R F A C E   D E   T R A N S F O R M A T I O N  :
<
<
<        FONCTION :
<                      IL EST POSSIBLE DE PROGRAMMER A L'AIDE
<                    DE 'GC' UN MODULE DE TRANSFORMATION
<                    EN ASSEMBLEUR (ITEM1) ; LE BINAIRE
<                    RESULTANT EST DANS L'ITEM2 : L'ADRESSE
<                    DE SON POINT D'ENTREE EST DANS SON
<                    MOT0.
<
<
<        ARGUMENT :
<                    B=1 : IMAGE D'ARRIVEE,
<                     =2 : IMAGE DE DEPART,
<                    B=-1 : AVANT IMAGE D'ARRIVEE SI VIDEO,
<                     =-2 : AVANT IMAGE DE DEPART SI VIDEO,
<                    X,Y=CORRDONNEES D'UN POINT BLANC SI VIDEO,
<                    A=@DEMSEG SI VIDEO ET SI B<0.
<                    A=@SEGMENT COURANT SI GRAPHIQUE.
<
<
TRANS:   EQU         $
         CPZ         AITEM2          < Y-A-T'IL UNE TRANSFORMATION
                                     < A OPERER ???
         JE          NTRANS          < NON.
         PSR         C,L             < PRUDENCE ...!!!
         BSR         &AITEM2         < ET OUI, A LA GRACE DE DIEU !!!
         PLR         C,L
NTRANS:  EQU         $
         RSR
         PAGE
<
<
<        R E C U P E R A T I O N   D ' U N   S E G M E N T
<                    G R A P H I Q U E  :
<
<
<        FONCTION :
<                      MET DANS 'SEG' LES COORDONEES D'1N
<                    SEGMENT GRAPHIQUE, ET DE PLUS INDIQUE
<                    PAR (A)=0 , SI LE SEGMENT DONNE EST
<                    EN FAIT REDUIT A UN POINT DOUBLE A
<                    L'ORIGINE (FIN DE TRACE).
<
<
<        ARGUMENT :
<                    B=1 : IMAGE D'ARRIVEE,
<                     =2 : IMAGE DE DEPART.
<
<
GET:     EQU         $
         LAD         DEMSEG
         SVC         0               < ACCES AU SEGMENT COURANT.
         IF          ZDC,X469,,X469
         JNE         GET             < IL N'EXISTE PAS , ON ATTEND.
X469:    VAL         0
         IF          ZDC,,X469,
         CPZ         NSEG            < TEST DE VALIDATION DU SEGMENT.
         JE          GET             < INVALIDE : ON REBOUCLE LE TEST.
         STZ         NSEG            < OK, ON INDIQUE QU'ON L'A PRIS
                                     < EN COMPTE.
X469:    VAL         0
         LAD         DELSEG
         SVC         0               < LORSQU'ON L' , ON LE DELETE ...
         LA          SEGORG+X
         OR          SEGORG+Y
         OR          SEGEXT+X
         OR          SEGEXT+Y        < (A)=0 SI ORG=EXT=O.
         PSR         A               < SAVE LE RESULTAT DU TEST DE
                                     < FIN DE DESSIN ('OAB').
         LAD         SEG             < A=@SEGMENT COURANT.
         BSR         ATRANS          < TRANSFORMATION EVENTUELLE.
         PLR         A               < RESTAURE (A)=TEST DE FIN DE DESSIN
         RSR
         PAGE
<
<
<        T R A C E   D ' U N   S E G M E N T  :
<
<
DRAW:    EQU         $
         LAD         OG              < LORSQU'ON VIENT DE TRAITER
         SVC         0               < UNE EXTREMITE, ON TRACE LE
         LAD         WG              < SEGMENT CORRESPONDANT.
         SVC         0
         RSR
         PAGE
         IF          ORDI-"T",XWOR%,,XWOR%
<
<
<        T R A C E   D I C H O T O M I Q U E   D ' U N   S E G M E N T  :
<
<
DICO:    EQU         $
         LA          DICOX1          < A=X1.
         AD          DICOX2          < A=X1+X2.
         SLRS        1               < A=(X1+X2)/2.
         STA         DICOX           < X DU MILIEU DE M1M2.
         LA          DICOY1          < A=Y1.
         AD          DICOY2          < A=Y1+Y2.
         SLRS        1               < A=(Y1+Y2)/2.
         STA         DICOY           < Y DU MILIEU DE M1M2.
<
< POSITION DE M PAR RAPPORT A M1 :
<
         SB          DICOY1          < A=Y-Y1.
         JANE        DICO31          < M#M1.
         LA          DICOX           < A=X.
         SB          DICOX1          < A=X-X1.
         JAE         DICO32          < M=M1.
<
< POSITION DE M PAR RAPPORT A M2 :
<
DICO31:  EQU         $
         LA          DICOY           < A=Y.
         SB          DICOY2          < A=Y-Y2.
         JANE        DICO30          < M#M2 ET M#M1.
         LA          DICOX           < A=X.
         SB          DICOX2          < A=X-X2.
         JANE        DICO30          < M#M2 ET M#M1.
<
< CAS OU M=M1 OU M=M2 :
<
DICO32:  EQU         $
         LX          DICOX
         LY          DICOY
         BSR         ASET            < AFFICHAGE DU POINT M=(M1+M2)/2.
         RSR                         < ARRET PROVISOIRE DE LA DICHOTOMIE
                                     < DESCENDANTE.
<
< CAS OU M#M1 ET M#M2 :
<
DICO30:  EQU         $
         LA          DICOX2          < A=X2.
         LB          DICOY2          < B=Y2.
         PSR         A,B             < SAVE LE POINT M2 COURANT.
         LA          DICOX           < A=X.
         STA         DICOX2          < X2<--X.
         LA          DICOY           < A=Y.
         STA         DICOY2          < Y2<--Y.
         BSR         ADICO           < DICHOTOMIE SUR LE SEGMENT M1M.
         LX          DICOX2          < X=X2.
         LY          DICOY2          < Y=Y2.
         BSR         ASET            < AFFICHAGE DU POINT M2
         STX         DICOX1          < X1<--X2.
         STY         DICOY1          < Y1<--Y2.
         PLR         A,B             < RESTAURATION DU POINT M2 APRES
                                     < LE CHANGEMENT DU POINT M1.
         STA         DICOX2          < RESTAURE X2.
         STB         DICOY2          < RESTUARE Y2.
         JMP         DICO            < VERS LA POURSUITE DE LA DICHOTOMIE.
XWOR%:   VAL         0
         PAGE
<
<
<        M I S E   D ' U N   P O I N T   A   1  :
<
<
<        ARGUMENTS :
<                    X ET Y CONTIENNENT L'X ET L'Y DU POINT.
<                    C=@IMAG.
<
<
SET:     EQU         $
         PSR         B,X,C
         LR          Y,A
         MP          NMPL            < CONVERSION DE L'Y DU POINT EN
                                     < NUMERO DE MOT.
         ADR         B,C
         LR          X,A
         SLRS        4
         ADR         A,C             < C=@MOT CONTENANT LE POINT (X,Y).
         LAI         'F
         ANDR        A,X             < CALCUL DE X MODULO 16.
                                     < X=NUMERO DU BIT DANS LE MOT.
         LA          0,C             < A=MOT CONTENANT LE POINT (X,Y).
         SBT         0,X             < MISE DU POINT A 1.
         STA         0,C             < MISE A JOUR DE CE MOT.
         PLR         B,X,C
         RSR
<
<
<        E F F A C E M E N T   D ' U N   P O I N T  :
<
<
<        ARGUMENTS : VOIR 'SET'.
<
<
RESET:   EQU         $
         PSR         B,X,C
         LR          Y,A
         MP          NMPL
         ADR         B,C
         LR          X,A
         SLRS        4
         ADR         A,C             < C=@MOT CONTENANT LE POINT (X,Y).
         LAI         'F
         ANDR        A,X             < X=NUMERO DU BIT REPRESENTANT
                                     < LE POINT DANS LE MOT ((C)).
         LA          0,C
         RBT         0,X             < EFFACEMENT DU POINT (X,Y).
         STA         0,C             < MISE A JOUR DE L'IMAGE.
         PLR         B,X,C
         RSR
<
<
<        I N V E R S I O N   V I D E O   D ' U N   P O I N T  :
<
<
<        ARGUMENTS : VOIR 'SET'.
<
<
INVER:   EQU         $
         PSR         B,X,C
         LR          Y,A
         MP          NMPL
         ADR         B,C
         LR          X,A
         SLRS        4
         ADR         A,C
         LAI         'F
         ANDR        A,X
         LA          0,C
         IBT         0,X             < INVERSION VIDEO DU POINT (X,Y).
         STA         0,C
         PLR         B,X,C
         RSR
<
<
<        T E S T   D ' U N   P O I N T  :
<
<
<        ARGUMENTS : VOIR 'SET'.
<
<
<        RESULTAT :
<                    CARRY POSITIONNE PAR LE POINT (0/1).
<
<
TEST:    EQU         $
         PSR         B,X,C
         LR          Y,A
         MP          NMPL
         ADR         B,C
         LR          X,A
         SLRS        4
         ADR         A,C
         LAI         'F
         ANDR        A,X
         LA          0,C
         TBT         0,X             < TEST DU POINT (X,Y).
         PLR         B,X,C
         RSR
         PAGE
<
<
<        I N S E R T I O N   D ' U N   P O I N T   D E   D E P A R T
<        D A N S   L A   L I S T E   D ' A R R I V E E  :
<
<
<        ARGUMENT :
<                    X ET Y CONTIENNENT LE POINT DE DEPART A INSERER.
<
<
MAJL:    EQU         $
         LR          X,B             < B=X DU POINT BLANC.
         LX          IBUF            < X=INDEX COURANT BUFFER SGF.
         STB         &ABUF           < SAVE LA COORDONNEE X DU POINT.
         ADRI        1,X             < PROGRESSION INDEX BUFFER.
         STY         &ABUF           < SAVE LA COORDONNEE Y DU POINT.
         ADRI        3,X             < PROGRESSION INDEX BUFFER.
         IC          NDE             < COMPTAGE DES POINTS BLANCS.
         LA          NDE
         CP          NAR
         JLE         E17             < L'IMAGE DE DEPART A POUR LE
                                     < MOMENT, MOINS DE POINTS QUE
                                     < L'IMAGE D'ARRIVEE.
<
< CAS OU L'IMAGE DE DEPART A PLUS DE POINTS QUE L'IMAGE D'ARRIVEE :
<
         ADRI        -2,X            < RETOUR SUR LE COUPLE (X,Y)
                                     < DE L'IMAGE D'ARRIVEE.
         STZ         &ABUF           < ON LE PLACE A L'ORIGINE.
         ADRI        1,X             < PROGRESSION INDEX BUFFER.
         STZ         &ABUF           < MISE DE L'Y A L'ORIGINE.
         ADRI        1,X             < PROGRESSION INDEX BUFFER.
E17:     EQU         $
         BSR         AWR             < LECTURE/ECRITURE SGF.
         LR          B,X             < PUIS RESTAURE COORDONNEE X.
         RSR
         PAGE
<
<
<        R A N G E M E N T   D A N S   L E   B U F F E R   S G F  :
<
<
<        FONCTION :
<                      CETTE ROUTINE RANGE LE COUPLE (X,Y) DANS
<                    LE BUFFER SGF SUIVANT L'INDEX 'IBUF' ;
<                    LORSQUE LE BUFFER EST PLEIN, UNE ECRITURE
<                    DE L'ENREGISTREMENT SGF EST FAITE.
<
<
STBUF:   EQU         $
         PSR         A,X             < SAVE.
         LR          X,A             < MISE DE LA COORDONEE X DANS A.
         LX          IBUF            < X=INDEX COURANT DE BUFSGF.
         STA         &ABUF           < RANGEMENT DE LA COORDONNEE X.
         ADRI        1,X
         STY         &ABUF           < RANGEMENT DE LA COORDONNEE Y.
         ADRI        1,X
         LR          X,A             < ACCES A L'INDEX COURANT.
         CPI         4*31            < EST-ON AU BOUT DU BUFFER ???
         JL          STBUF1          < NON , RIEN A FAIRE ....
<
< ECRITURE DE L'ENREGISTREMENT COURANT :
<
         LAD         SGFW
         SVC         0
         LAI         0               < AFIN DE REINITIALISER L'INDEX
                                     < COURANT DU BUFFER SGF.
STBUF1:  EQU         $
         STA         IBUF            < MISE A JOUR DE 'IBUF'.
         PLR         A,X             < RESTAURE.
         RSR                         < RETOUR ....
         PAGE
<
<
<        L E C T U R E / E C R I T U R E   S G F  :
<
<
WR:      EQU         $
         LR          X,A
         CPI         4*31            < VALIDATION INDEX BUFFER.
         JL          E18             < OK , IL TIENT ENCORE.
         LAD         SGFW
         SVC         0               < ECRITURE DE L'ENREGISTREMENT
                                     < COURANT DE '0A.
         LAD         SGFR
         SVC         0               < PUIS LECTURE-DELETE DE L'ENREGIS-
                                     < TREMENT COURANT DE '0B.
         LAI         0               < REINITIALISATION DE L'INDEX.
E18:     EQU         $
         STA         IBUF            < MISE A JOUR DE L'INDEX BUFFER.
         RSR
         PAGE
<
<
<        E N T R E E   D ' U N E   R E P O N S E  :
<
<
<        REPONSES RECONNUES :
<                    O : B=0,
<                    N : B=1,
<                    W : RETOUR TEMPORAIRE AU CCI,
<                    F : ABORTE DE TA.
<
<
<        ARGUMENT :
<                    A=@MOT DU MESSAGE A EMETTRE AU PREALABLE.
<
<
<        RESULTAT :
<                    B=0 : OUI ,
<                     =1 : NON.
<                    INDICATEURS POSITIONNES SUR (B).
<
<
ENTER:   EQU         $
         LR          A,Y             < Y=SAVE @MESSAGE.
         BSR         APRINT          < EMISSION DU MESSAGE PREALABLE.
         LAD         DEMIN
         SVC         0               < ENTREE D'UN CARACTERE REPONSE.
         LBY         REP             < ACCES A LA REPONSE.
         CPI         "W"             < DEMANDE DE PASSAGE AU CCI ???
         JNE         ENTER2          < NON.
<
< RETOUR TEMPORIARE AU CCI :
<
         LAD         DEMCCI
         SVC         0               < APPEL DU CCI.
         LR          Y,A             < AU RETOUR PAR !GO, ON RESTAURE
                                     < A=@MESSAGE A EMETTRE.
         JMP         ENTER           < ET ON RECOMMENCE.
<
< AUTRES COMMANDES :
<
ENTER2:  EQU         $
         CPI         "F"             < EST-CE UNE DEMANDE D'ABORT ???
         JE          ALTMOD          < ET OUI, COMME UN ALT-MODE ....
         LBI         0               < 0=OUI A PRIORI.
         CPI         "O"             < EST-CE OUI ???
         JE          ENTER1          < OK , FIN...
         LBI         1               < 1=(ON A PRIORI.
         CPI         "N"             < EST-CE NON ???
         LR          Y,A             < RESTAURE A=@MESSAGE.
         JNE         ENTER           < RIEN COMPRIS, ON RECOMMENCE.
ENTER1:  EQU         $
         CPZR        B               < POSITIONNEMENT DES INDICATEURS.
         RSR
         PAGE
<
< ERREURS LORS DU CCI INTERPRETATIF :
<
CCIER:   EQU         $
         LAD         MERR
         BSR         APRINT          < ENVOI MESSAGE D'ERREUR.
<
<
<        R E T O U R   A   ' G E '  :
<
<
GOGE:    EQU         $
         CPZ         PAS
         JE          ALTMOD          < DANS LE CAS DU MODE PAS-A-PAS,
                                     < SI LE HARD-COPY EST DEMANDE,
                                     < IL A DEJA ETE FAIT LORS DE
                                     < LA DERNIERE ITERATION...
         BSR         AMCOPY          < HARD-COPY EVENTUELLE+TEMPO.
ALTMOD:  EQU         $
         LAD         CG
         SVC         0               < REMISE EN ALPHA-NUMERIQUE, AU
                                     < CAS OU L'ON AURAIT FAIT DU
                                     < GRAPHIQUE ...
         LAI         BRANCH-ZERO
         LR          A,W             < REINITIALISE W=@BRANCH.
<
< PREPARATION DE L'3VERLAY :
<
         LAI         '06
         STBY        DEMSGN          < DEMSGN EST MISE EN MODE 'LOAD
                                     < SOUS :SYS '.
         LA          NGE
         STA         0,W             < LE NOM DE 'GE' EST MIS EN TETE DE
                                     < LA BRANCHE D'OVERLAY.
         LA          APILE
         LR          A,K             < REINITIALISATION DE K SUR LA
                                     < PILE DE SMC.
         LAD         RELMEM
         SVC         0               < RETOUR A 4K MOTS.
         BSR         ADF             < DELETE FICHIERS FA ET FB.
         LAD         DELSEG
         SVC         0               < TENTATIVE SYSTEMATIQUE DE
                                     < DELETE DU SEGMENT ':GS'.
<
< RAZ EVENTUEL DE L'ITEM1 :
<
         CPZ         IRAZ            < L'ITEM1 A-T'IL ETE ALTERE ???
         JNE         NRAZ            < NON, RIEN A FAIRE...
         LX          NMOTS           < OUI, X=NBRE DE MOTS A RAZER.
RAZ:     EQU         $
         STZ         &AI1            < RAZ MOT A MOT.
         JDX         RAZ
NRAZ:    EQU         $
<
< TENTATIVE(S) DE CHARGEMENT DE 'GE' :
<
GOGE2:   EQU         $
         LAD         DEMSGN          < A=@DEMSGN , W=@BRANCH.
         BSR         AOVL            < TENTATIVE DE LOAD 'GE'.
         LAD         DEMCCI
         SVC         0               < RETOUR AU CCI SI ERREUR ,
         JMP         GOGE2           < ET NOUVELLE TENTATIVE SI !GO.
<
<
<        P R O C E S S E U R   D ' I N T E R P O L A T I O N
<                    D ' I M A G E S   V I D E O S  :
<
<
<        1- INTERPOLATION VIDEO : ON PEUT DESIGNER 2
<        IMAGES PAR LEUR NOM OU/ET
<          L'IMAGE D'ARRIVEE EST L'IMAGE RESIDENTE EN MEMOIRE ,
<        ALORS QUE L'IMAGE DE DEPART EST EN ZONE SCRATCH.
<        * NOMBRE DE POINTS :
<                    DEPART>ARRIVEE : ON RAJOUTE A L'IMAGE D'ARRIVEE
<                    AUTANT DE POINTS (0,0) QU'IL LE FAUT POUR ARRIVER
<                    AU MEME NOMBRE,
<                    DEPART<ARRIVEE : ON REEXPLORE L'IMAGE DE DEPART
<                    AUTANT DE FOIS QU'IL LE FAUT POUR OBTENIR LE
<                    MEME NOMRE DE POINTS.
<
<        2 - INTERPOLATION GRAPHIQUE : LES DESSINS D'ARRIVEE
<        ET DE DEPART SONT TRANSMIS PAR UN PROCESSUS
<        DU TYPE PRODUCTEUR/CONSOMMATEUR A L'AIDE
<        D'UN SEGMENT COURANT SGN ':GS' . LA FIN
<        D'UN DESSIN EST INDIQUEE A L'AIDE D'UN SEGMENT
<        LOCALISE A L'ORIGINE (SOIT 'OAB'.
<
<
<          DANS LES 2 CAS UNE TRANSFORMATION PORTANT
<        SOIT SUR LES COORDONNEES D'1N POINT BLANC (VIDEO),
<        SOIT SUR L'ORIGINE ET L'EXTREMITE D'UN
<        SEGMENT (GRAPHIUE) PEUT ETRE STOCKEE EN BINAIRE PAR
<        'GC' DANS L'ITEM2.
<
<
         WORD        IMAG
         WORD        LOC+'80
         WORD        BRANCH
IMAGE:   EQU         $
         LRP         K
         ADRI        -1,K
         PLR         C,L,W           < INITIALISATIONS DES 3 BASES.
         LAD         STACK-1
         LR          A,K             < INITIALISATION DE K SUR LA PILE
                                     < DE TRAVAIL DE 'TN'.
         IC          KIN             < DECOMPTE DES ENTRIES.
         JG          ALTMOD          < RETOUR A GE SI ALT-MODE ...
         IF          ORDI-"T",XWOR%,,XWOR%
<
< TEST DU NUMERO DE COMPTE D'APPEL :
<
         WORD        '1E25           < (A,B)=<ACN>.
         CP          ACNSYS          < EST-CE :SYS ???
         JNE         E4000           < NON.
         LR          B,A             < PEUT-ETRE ...
         CP          ACNSYS+1        < EST-CE :SYS ???
         JE          E4001           < ET OUI , ON POURRA STABILISER ...
E4000:   EQU         $
         STZ         ASP3            < NON , PSA DE STABILISATION...
E4001:   EQU         $
XWOR%:   VAL         0
<
< ACCES A L'IDESC UTILISATEUR :
<
         WORD        '1E45           < A=IDESC.
         ADRI        '30,A           < CONVERSION EN UN CHIFFRE ASCI.
         STBY        IDAN            < MAJ NOM FA.
         STBY        IDBN            < MAJ NOM FB.
         STBY        IDAO            < MAJ NOM FA.
         STBY        IDBO            < MAJ DU NOM FB.
<
< TENTATIVE DE DELETE DES FICHIERS FA & FB :
<
         BSR         ADF
<
< OUVERTURE DE NOUVEAUX FICHIERS FA & FB :
<
         LAD         MAN
         BSR         ACCI            < !ASSIGN A=N,FA.
         JNE         CCIER           < ON ABORTE ICI SI ERREUR.
         LAD         MBN
         BSR         ACCI            < !ASSIGN B=N,FB.
         JNE         CCIER           < ON ABORTE ICI SI ERREUR.
<
< INTERPOLATION GRAPHIQUE OU VIDEO ???
<
         LAD         MVID
         BSR         AENTER          < ENVOI MESSAGE ET LECTURE REPONSE.
         STB         VIDEO           < 0=VIDEO , 1=GRAPHIQUE.
         JE          E200            < INTERPOLATION VIDEO.
<
< CAS DE L'INTERPOLATION GRAPHIQUE :
<
         LAD         MDEL
         BSR         AENTER          < FAUT-IL DELETER ':GS' AU
                                     < PREALABLE ???
         JNE         E202            < NON.
         LAD         DELSEG
         SVC         0               < OUI.
E202:    EQU         $
         LA          AMTRAJ
         BSR         AENTER          < FAUT-IL TRACER LES TRAJECTOIRES
                                     < DES POINTS ???
         STB         ITRAJ           < B=0 SI OUI, B=1 SI NON.
         LA          AMERA
         BSR         AENTER          < FAUT-IL EFFACER L'ECRAN AVAANT
                                     < CHAQUE INTERPOLATION ???
         STB         EFFAC           < SAVE LA REPONSE OUI/NON.
         LAD         MCOP
         BSR         AENTER          < FAUT-IL FAIRE UN HARD-COPY
                                     < APRES CHAQUE INTERPOLATION ???
         STB         ICOP            < SAVE LA REPONSE OUI/NON.
         CPZR        B               < Y-AURA-T'IL HARD-COPY ???
         JNE         E602            < NON , RIEN DE PLUS.
E601:    EQU         $
         LA          AMNT            < SI OUI, ON PEUT CHANGER LE
         BSR         APRINT          < NBRE DE COPIES AINSI QUE LA
                                     < TEMPORISATION (S'ADAPTANT AINSI
                                     < AU HARD-COPY ET A LA CAMERA 16).
         LAD         DEMCON
         SVC         0               < ENTREE DU NBRE DE COPIES ET
                                     < DE LA TEMPORISATION EN SECONDES
                                     < SOUS FORME DE 2 CHIFFRES HEXAS.
         LYI         2               < 2 CHIFFRES A CONVERTIR.
         BSR         AHEX            < TENTATIVE DE CONVERSION BINAIRE.
         JNE         E601            < ERREUR DE CARACTERES.
         JAL         E601            < ERREUR DE VALEUR.
         JAE         E602            < SI LA VALEUR ENTREE EST NULLE,
                                     < OU SI LE MESSAGE EST VIDE, ON
                                     < CONSERVE LES VALEURS IMPLICITES.
         SCLD        12              < EXTRACTION DANS B DU NBRE DE
                                     < COPIES (A NOTER : (B)=0).
         SCLS        4               < MISE DE LA TEMPORISATION DANS A.
         JAE         E603            < TEMPO NULLE, ON GARDE LA VALEUR
                                     < IMPLICITE.
         STA         SLEEP+2         < SINON, ON CHANGE LA TEMPO.
E603:    EQU         $
         CPZR        B
         JE          E602            < LE NBRE DE COPIES EST NUL, ON
                                     < CONSERVE LE NBRE IMPLICITE.
         STB         NCOPY           < SINON, ON CHANGE LE NBRE.
E602:    EQU         $
         LA          AMCONV
         BSR         AENTER          < FAUT-IL CONVERTIR CHAQUE
                                     < GRAPHISME EN IMAGE VIDEO ???
         JG          E201            < NON , GRAPHIQUE PUR.
         LB          VIDEO           < OUI , CONVERSION DEMANDEE.
         NGR         B,B             < ON FAIT : VIDEO=-1.
         STB         VIDEO
E200:    EQU         $
         LAD         DEMMEM
         SVC         0               < ALLOCATION 8K MOTS.
E201:    EQU         $
<
< CHOIX DU MODE D'INTERPOLATION :
<
E170:    EQU         $
         LA          AMPAS
         BSR         AENTER          < ENVOI MESSAGE ET REPONSE.
         STB         PAS             < SAVE L'INDICATEUR : 0=PAS A PAS.
E310:    EQU         $
<
< ENTREE DU NBRE D'ITERATIONS :
<
E50:     EQU         $
         LA          AMCON
         BSR         APRINT          < ENVOI D'1N MESSAGE.
         LAD         DEMCON
         SVC         0               < ENTREE D'1N NBRE HEXA SOUS FORME
                                     < DE 2 CARACTERES.
         LYI         2               < 2 CARACTERES A DECODER.
         BSR         AHEX            < DECODAGE DE (REP).
         JNE         E50             < ERREUR , CE N'EST PAS DE
                                     < L'HEXADECIMAL ...
         JALE        E50             < ERREUR : NBRE NEGATIF OU NUL.
         STA         CONS            < SAVE LA VALEUR DE CONS.
<
< FAUT-IL TRANSFORMER PAR (ITEM2) :
<
         LA          AMTR
         BSR         AENTER          < ENVOI MESSAGE ET LECTURE REPONSE.
         JE          TRANS1          < OUI.
         STZ         AITEM2          < NON , ET ON FAIT AITEM2=0.
         JMP         TRANS2
TRANS1:  EQU         $
         LBY         &ATYP           < OUI : IL FAUT VALIDER L
                                     < TYPE DE L'ITEM2.
         CPI         "P"             < EST-CE UN PROGRAMME BINAIRE ???
         JNE         CCIER           < NON, ON ABORTE...
TRANS2:  EQU         $
<
<
<        A C C E S   I M A G E   D ' A R R I V E E  :
<
<
         CPZ         VIDEO           < QUEL EST LE MODE ???
         JE          E101            < CAS DU MODE VIDEO.
<
< CAS DE L'INTERPOLATION GRAPHIQUE : ON VA RENTRER LES
< SEGMENTS UN A UN , JUSQU'A TROUVER UN SEGMENT REDUIT
< A UN POINT DOUBLE ORIGINE.
<
         LAD         ERASE
         SVC         0               < EFFACEMENT DE L'ECRAN PREALABLE.
         LAD         SGFO1
         SVC         0               < OUVERTURE DE LA CLEF '1.0'.
E102:    EQU         $
         LBI         1               < B=1 : IMAGE D'ARRIVEE.
         BSR         AGET            < RECUPERATION D'UN SEGMENT.
         JAE         E103            < C'EST FINI : ORG=EXT=O.
         LXI         0
         LYI         0
         BSR         ASTBUF          < INSERTION D'UN POINT DE DEPART
                                     < PROVISOIRE A L'ORIGINE.
         LX          SEGORG+X        < ORIGINE DU SEGMENT.
         LY          SEGORG+Y        < ORIGINE DU SEGMENT.
         BSR         ASTBUF          < INSERTION DE L'ORIGINE.
         IC          NAR             < COMPTAGE DE L'ORIGINE SEGMENT.
         LXI         0
         LYI         0
         BSR         ASTBUF          < INSERTION D'UN COUPLE PROVISOIRE
                                     < A L'ORIGINE (DEPART).
         LX          SEGEXT+X        < EXTREMITE DU SEGMENT.
         LY          SEGEXT+Y        < EXTREMITE DU SEGMENT.
         BSR         ASTBUF          < INSERTION DE L'EXTREMITE DU
                                     < SEGMENT.
         IC          NAR             < COMPTAGE DE L'EXTREMITE.
         BSR         ADRAW           < TRACE DE L'IMAGE D'ARRIVEE.
         JMP         E102            < SEGMENT SUIVANT.
<
< CAS DE L'INTERPOLATION VIDEO :
<
E101:    EQU         $
         LA          AMRES
         BSR         AENTER          < GARDE-T'ON L'IMAGE RESIDENTE ???
         JE          E48             < OUI , RIEN A ENTRER ...
         LA          AMAR
         BSR         AGOSGN          < NON , ON ENTRE UNE IMAGE.
E48:     EQU         $
         BSR         AVIS            < DIFFUSION IMAGE ARRIVEE.
<
<        A N A L Y S E   D E   L ' I M A G E   D ' A R R I V E E  :
<
         LAD         SGFO1
         SVC         0               < OUVERTURE DE LA CLEF '1.0'.
<
< ICI, PAR TRANSFORMATION, ON PEUT PAR EXEMPLE ORDONNER
< LE TEST DES POINTS DE L'IMAGE VIDEO A L'AIDE PAR EXEMPLE
< D'UN DESSIN RECUPERE PAR :GS :
<
         LAD         DEMSEG          < AFIN DE RECUPERER ENTRE AUTRE
                                     < L'ADRESSE DU SEGMENT.
         LBI         -1
         BSR         ATRANS          < TRANSFORMATION EVENTUELLE.
<
< PARCOURS DE L'IMAGE D'ARRIVEE :
<
         LYI         0               < INITIALISATION DE LA COORDONNEE Y.
E2:      EQU         $
         LXI         0               < INITIALISATION DE LA COORDONNEE X.
E1:      EQU         $
         PSR         X,Y             < PRUDENCE (CF. TRANSFORMATION).
         LBI         1               < B=1 : IMAGE D'ARRIVEE.
         BSR         ATRANS          < TRANSFORMATION EVENTUELLE.
         BSR         ATEST           < TEST DU POINT (X,Y).
         JNC         E3              < POINT NOIR SANS INTERET ...
<
< ENREGISTREMENT D'UN POINT BLANC :
<
         PSR         X,Y             < SAVE (X,Y).
         LXI         0               < PREPARATION DU COUPLE DE
         LYI         0               < DEPART (0,0).
         BSR         ASTBUF          < SAVE LE COUPLE (0,0).
         PLR         X,Y             < RESTAURE LE COUPLE (X,Y) ,
         BSR         ASTBUF          < ET SAVE IT ...
         IC          NAR             < COMPTAGE DES POINTS DE L'IMAGE
                                     < D'ARRIVEE.
<
< PASSAGE AU POINT SUIVANT :
<
E3:      EQU         $
         PLR         X,Y
         ADRI        1,X             < SINON PASSAGE A LA COORDONNEE X.
         LR          X,A
         CPI         X21-1           < VALIDATION DE X.
         JLE         E1              < OK, ELLE EXISTE ...
         ADRI        1,Y             < PROGRESSION DE L'Y.
         LR          Y,A
         CPI         X20-1           < VALIDATION COORDONNEE Y.
         JLE         E2              < OK, ELLE EXISTE ...
<
< FIN DE L'IMAGE D'ARRIVEE :
<
E103:    EQU         $
         LXI         0
         LYI         0
         BSR         ASTBUF          < RANGEMENT D'UN VOUPLE (0,0).
         LXI         -1
         LYI         -1
         BSR         ASTBUF          < MARQUE DE FIN D'IMAGE (-1,-1).
         CPZ         IBUF            < Y-A-T'IL UN BUFFER SGF A MOITIE
                                     < PLEIN ???
         JE          E4              < NON,IL EST VIDE.
         LAD         SGFW
         SVC         0               < OUI, ON L'ECRIT.
E4:      EQU         $
         LAD         SGFC
         SVC         0               < PUIS ON FERME LA CLEF '1.0'.
         BSR         APAUS           < UNE PETITE PAUSE NE FERA PAS
                                     < DE MAL ...
<
<
<        C H A R G E M E N T   I M A G E   D E   D E P A R T  :
<
<
         CPZ         VIDEO           < TEST DU MODE ???
         JG          E110            < CAS DU GRAPHIQUE PUR.
         JL          E47             < CAS DU GRAPHIQUE AVEC CONVERSION.
<
< CAS DE L'INTERPOLATION VIDEO :
<
         LA          AMSCRA
         BSR         AENTER          < GARDE-T'ON L'IMAGE SCRATCH ???
         JE          E44             < OUI , IL FAUT LA RELIRE.
         LA          AMDE
         BSR         AGOSGN          < NON , IL FAUT EN LIRE UNE
                                     < PAR LE SGN ...
         BSR         AVIS            < DIFFUSION IMAGE DEPART.
         JMP         E47
E44:     EQU         $
         LY          RDK+2           < INCREMENT DE L'@OCTET BUFFER.
         LB          IMAG2           < @OCTET BUFFER COURANT.
         STZ         RDK+3           < PAR PRUDENCE ...
         LXI         LIMAG/128       < X=NBRE DE SECTEURS A LIRE.
         LAD         RDK             < A=@DEMANDE LECTURE SCRATCH.
E5:      EQU         $
         STB         RDK+1           < MAJ @OCTET BUFFER.
         PSR         X               < SAVE DECOMPTE SECTEURS.
         SVC         0               < LECTURE SECTEUR COURANT.
         PLR         X               < RESTAURE DECOMPTE SECTEURS.
         IC          RDK+3           < PROGRESSION NUMERO DE SECTEUR.
         ADR         Y,B             < PROGRESSION @OCTET BUFFER.
         JDX         E5              < AU SUIVANT ...
<
< MISE DE LA DEMANDE SGN EN SAVE :
<
E47:     EQU         $
         LAI         '04
         STBY        SGN             < NVP DE STORE.
<
< PREPARATIFS SGF :
<
E110:    EQU         $
         IC          SGFO1           < FONCTION=5 : OPEN OLD.
         LAD         SGFO1
         SVC         0               < OPEN OLD '1.0' SUR '0B.
         LAI         '0A
         STBY        SGFO1           < POUR OPEN SUR '0A.
         STBY        SGFW            < POUR ECRITURE SUR '0A.
         LAD         SGFR            < LECTURE DU 1ER SECTEUR DE LA
                                     < LISTE DESCRIPTIVE DE L'IMAGE
                                     < D'ARRIVEE.
         SVC         0
         DC          SGFO1           < FONCTION=4 : OPEN NEW.
         LAD         SGFO1
         SVC         0               < OPEN NEW CLEF '1.0' SUR '0A.
         STZ         IBUF            < REINITI IBUF.
<
<        E X P L O R A T I O N   D E   L ' I M A G E   D E   D E P A R T
<
         CPZ         VIDEO           < QUEL EST LE MODE D'INTERPOLATION ???
         JE          E1200           < CAS DE L'INTERPOLATION VIDEO.
<
< CAS DE L'INTERPOLATION GRAPHIQUE :
<
         LAD         ERASE
         SVC         0               < EFFACEMENT PREALABLE.
E121:    EQU         $
         LBI         2               < B=2 : IMAGE DE DEPART.
         BSR         AGET            < RECUPERATION DU SEGMENT COURANT.
         JAE         E122            < FIN DE LISTE : ORG=EXT=O.
         LX          SEGORG+X
         LY          SEGORG+Y
         BSR         AMAJL           < INSERTION DE L'ORIGINE DANS LA
                                     < LISTE D'ARRIVEE.
         LX          SEGEXT+X
         LY          SEGEXT+Y
         BSR         AMAJL           < INSERTION DE L'EXTREMITE DANS
                                     < LA LISTE D'ARRIVEE.
         BSR         ADRAW           < TRACE DE L'IMAGE DE DEPART.
         JMP         E121            < AU SEGMENT SUIVANT.
<
< CAS DE L'INTERPOLATION VIDEO :
<
E1200:   EQU         $
<
< ICI, PAR TRANSFORMATION, ON PEUT PAR EXEMPLE ORDONNER
< LE TEST DES POINTS DE L'IMAGE VIDEO A L'AIDE PAR EXEMPLE
< D'UN DESSIN RECUPERE PAR :GS :
<
         LAD         DEMSEG
         LBI         -2
         BSR         ATRANS          < TRANSFORMATION EVENTUELLE.
<
< PARCOURS DE L'IMAGE DE DEPART :
<
E120:    EQU         $
         IC          FOIS            < ET UN TOUR DE PLUS SUR L'IMAGE
                                     < DE DEPART.
         LYI         0
E12:     EQU         $
         LXI         0
E11:     EQU         $
         PSR         X,Y             < PRUDENCE (CF. TRANSFORMATION).
         LBI         2               < B=2 : IMAGE DE DEPART.
         BSR         ATRANS          < TRANSFORMATION EVENTUELLE.
         BSR         ATEST           < TEST DU POINT (X,Y).
         JC          E1201           < CAS D'UN POINT BLANC.
         PLR         X,Y             < CAS D'UN POINT NOIR,
         JMP         E13             < SANS INTERET...
<
< CAS D'UN POINT BLANC DE L'IMAGE DE DEPART :
<
E1201:   EQU         $
         BSR         AMAJL           < INSERTION DU POINT DE DEPART (X,Y)
         PLR         X,Y
         CPZ         FOIS
         JE          E750            < CAS DE LA 1ERE EXPLORATION
                                     < DE L'IMAGE DE DEPART, IL
                                     < FAUT LA FAIRE EN ENTIER.
         IC          ND              < AFIN DE COMPTABILISER CORRECTE-
                                     < MENT LE NBRE DE POINTS A
                                     < INTERPOLER.
         LA          NDE             < CAS DES EXPLORATIONS SUIVANTES,
         CP          NAR             < ON S'ARRETE LORSQUE LES 'N'
                                     < EXPLORATIONS DE L'IMAGE DE DEPART
                                     < ONT DONNE AUTANT DE POINTS QU'EN
         JE          E19             < CONTIENT L'IMAGE D'ARRIVEE.
                                     < A T T E N T I O N  : LORSQUE
                                     < L'IMAGE DE DEPART A PLUS DE
                                     < POINTS QUE L'IMAGE D'ARRIVEE,
                                     < CETTE DERNIERE N'EST PAS
                                     < REEXPLOREE...
E750:    EQU         $
E13:     EQU         $
         ADRI        1,X             < SI N'EXISTE PAS, PASSAGE AU
                                     < X SUIVANT.
         LR          X,A
         CPI         X21-1           < VALIDATION COORDONNE X.
         JLE         E11             < OK, EXISTE.
         ADRI        1,Y             < PROGRESSION COORDONNEE Y.
         LR          Y,A
         CPI         X20-1           < VALIDATION DE Y.
         JLE         E12             < OK, EXISTE ...
<
< ON A ATTEINT LA FIN DE L'IMAGE DE DEPART :
<
E122:    EQU         $
         LA          NDE
         STA         ND              < NBRE DE POINTS BLANCS TROUVES.
         CPZ         FOIS            < EST-CE LA 1ERE FOIS ???
         JG          E21             < NON.
         STA         SNDE            < CAS DE LA 1ERE FOIS EN VIDEO
                                     < (FOIS=0) OU GRAPHIQUE (FOIS=-1) .,
                                     < ON SAVE LE NBRE DE POINTS REEL
                                     < DE L'IMAGE DE DEPART.
E21:     EQU         $
         CP          NAR
         JGE         E19             < L'IMAGE DE DEPART A AU MOINS
                                     < AUTANT DE POINTS QUE L'IMAGE
                                     < D'ARRIVEE.
         CPZ         VIDEO           < TEST DU MODE ???
         JNE         E751            < CAS DU GRAPHIQUE.
         CPZ         NDE             < L'IMAGE DE DEPART EST-ELLE VIDE???
         JNE         E120            < NON, ALORS ON VA LA REEXPLORER...
<
< CAS OU L'IMAGE DE DEPART A MOINS DE POINTS QUE L'IMAGE D'ARRIVEE :
<
E751:    EQU         $
         LX          IBUF            < X=INDEX COURANT BUFFER SGF.
         STZ         &ABUF           < CREATION D'UN COUPLE DE
                                     < DEPART A L'ORIGINE.
         ADRI        1,X             < PROGRESSION INDEX BUFFER.
         STZ         &ABUF           < COORDONNEE Y.
         ADRI        3,X             < PROGRESSION INDEX BUFFER.
         IC          ND              < COMPTAGE DES POINTS DE L'IMAGE
                                     < DE DEPART, PLUS CEUX QUE L'ON
                                     < RAJOUTE A L'ORIGINE.
         BSR         AWR             < LECTURE/ECRITURE SGF.
         LA          ND              < A=NBRE DE POINTS COURANT DEPART.
         JMP         E21             < ET ON RECOMMENCE.
<
< FIN DE L'IMAGE DE DEPART :
<
E19:     EQU         $
         CPZ         IBUF            < UN BUFFER INCOMPLET EST-IL
                                     < EN COURS DE REMPLISSAGE ???
         JE          E22             < NON, C'EST FINI.
         LAD         SGFW
         SVC         0               < OUI, ECRITURE ENREGISTREMENT
                                     < COURNAT SUR '0A.
<
< OPERATIONS SGF :
<
E22:     EQU         $
         DC          SGFC            < MISE DU CLOSE EN RELEASE '06.
         LAD         SGFC
         SVC         0               < CLOSE-RELEASE SUR '0B.
         LAI         '0A
         STBY        SGFC
         IC          SGFC            < REMISE DU CLOSE EN SAVE '07.
         LAD         SGFC
         SVC         0               < CLOSE-SAVE SUR '0A.
<
<        ETAT DES DEMANDES SGF :
<                    SGFC : CLOSE-SAVE SUR '0A (7=SAVE , 6=RELEASE).
<                    SGFW : ECRITURE SUR '0A.
<                    SGFR : LECTURE-DELETE SUR '0B.
<                    SGFO1 : OPEN-NEW SUR '0A (4=NEW , 5=OLD).
<
         CPZ         VIDEO           < TEST DU MODE ...
         JE          E700            < CAS DE LA VIDEO : EDITION ND & NA.
         LAD         CG
         SVC         0               < RETOUR EN ALPHA EVENTUEL.
         CPZ         EFFAC           < DOIT-ON EFFACER ???
         JNE         E410            < NON, ALORS PAS D'EDITION...
<
< EDITION DU NBRE DE POINTS DE DEPART :
<
E700:    EQU         $
         LA          AMND
         BSR         APRINT
         LB          SNDE
         BSR         ADISP           < CONVERSION HEXA.
         LAD         BDISP
         BSR         APRINT
<
< EDITION DU NBRE DE POINTS D'ARRIVEE :
<
         LA          AMNA
         BSR         APRINT
         LB          NAR
         BSR         ADISP           < CONVERSION HEXA.
         LAD         BDISP
         BSR         APRINT
<
< LAISSONS LE TEMPS DE LIRE (A CAUSE DE L'ERASE A SUIVRE) :
<
         BSR         APAUS           < ET ENCORE UNE TITE PAUSE...
<
<
<        I N T E R P O L A T I O N  :
<
<
E410:    EQU         $
         IC          CONS            < AFIN DE NE PAS FAIRE TROP DE DC.
E30:     EQU         $
         DC          CONS            < DECOMPTE DES ITERATIONS A FAIRE.
         JLE         E250            < C'EST FINI : RETOUR A 'GE'.
         LA          ND
         JANE        E70             < OK , NBRE DE POINTS#0 ...
E250:    EQU         $
         BR          AGOGE           < ON ARRETE LA SI ND=0.
E70:     EQU         $
         STA         NC              < INITIALISATION DU DECOMPTEUR DE
                                     < POINTS A INTERPOLER.
         IC          SGFO1           < OPEN-OLD.
         LA          NVP1
         STBY        SGFO1           < MISE EN PLACE NVP OPEN-OLD.
         LAD         SGFO1
         SVC         0               < OPEN OLD SUR '0A PAR EXEMPLE.
         DC          SGFO1           < OPEN-NEW.
         LA          NVP1
         STBY        SGFR            < POUR LECTURE SUR '0A PAR EXEMPLE.
         IBT         15              < CHANGEMENT DE NVP.
         STBY        SGFO1           < POUR OPEN NEW SUR '0B PAR EXEMPLE
         STBY        SGFW            < POUR ECRITURE SUR '0B PAR EXEMPLE
         LAD         SGFO1
         SVC         0               < OPEN NEW SUR '0B PAR EXEMPLE.
         STZ         IBUF            < REINIT INDEX BUFFER.
         LAD         SGFR
         SVC         0               < LECTURE DU 1ER ENREGISTREMENT
                                     < SUR '0A PAR EXEMPLE.
         CPZ         EFFAC           < FAUT-IL EFFACER LA VISU ???
         JNE         E210            < NON.
<
< EFFACEMENT DE L'ECRAN.
<
         LAD         ERASE
         SVC         0
E210:    EQU         $
         CPZ         VIDEO           < TEST DU MODE D'INTERPOLATION.
         JG          E31             < RIEN D'AUTRE SI GRAPHIQUE PUR.
<
< RAZ DE L'IMAGE VIDEO COURANTE :
<
E160:    EQU         $
         LX          ALIMAG          < X=NRE DE MOTS A RAZER.
E38:     EQU         $
         STZ         &AIMAG          < RAZ MOT PAR MOT.
         JDX         E38             < AU PRECEDENT.
<
< INTERPOLATION DE L'2MAGE DE DEPART COURANTE :
<
         USE         W,XD
E31:     EQU         $
         LX          IBUF            < X=INDEX COURANT BUFFER SGF.
         LAD         &ABUF
         LR          A,W             < W=@DU QUADRUPLET COURANT.
         LX          XD              < X POINT DE DEPART.
         LY          YD              < Y POINT DE DEPART.
         STX         TRAJ+0+X        < AU CAS OU IL FAUDRAIT EDITER
         STY         TRAJ+0+Y        < LA TRAJECTOIRE DES POINTS.
         LA          XA              < X POINT D'ARRIVEE.
         SBR         X,A             < A=XA-XD.
         SARD        16              < EXTENSION 32 BITS.
         DV          CONS
         ADR         A,X             < X=XD+(XA-XD)/CONS.
         LA          YA              < Y POINT D'ARRIVEE.
         SBR         Y,A             < A=YA-YD.
         SARD        16              < EXTENSION 32 BITS.
         DV          CONS
         ADR         A,Y             < Y=YD+(YA-YD)/CONS.
         STX         XD              < CHANGEMENT DE POINT DE DEPART.
         STY         YD              < CHANGEMENT DE POINT DE DEPART.
         CPZ         VIDEO           < TEST DU MODE D'INTERPOLATION ???
         JE          E130            < CAS DE LA VIDEO.
<
< CAS DE L'INTERPOLATION GRAPHIQUE :
<
         CPZ         ITRAJ           < FAUT-IL TRACER LA TRAJECTOIRE ???
         JNE         E6000           < NON.
<
< TRACE DE LA TRAJECTOIRE DES POINTS :
<
         STX         TRAJ+2+X
         STY         TRAJ+2+Y
         LAD         OG
         SVC         0               < OPEN GRAPHIQUE.
         LAD         POINTI
         SVC         0               < MISE DU TRACE EN MODE POINTILLE
                                     < SI L'ON EST SUR 4014.
         LAD         DTRAJ
         SVC         0               < AFFICHAGE D'UNE TRAJECTOIRE.
         LAD         CONTI
         SVC         0               < RETOUR AU MODE CONTINU SUR 4014.
         LX          TRAJ+2+X        < RESTAURE X (A CAUSE DES SVC).
E6000:   EQU         $
         LAD         SEG             < A=@SEG COURANT.
         AD          DELTA           < TRANSLATION ORIGINE/EXTREMITE.
         LR          A,W             < W=@POINT COURANT (ORG/EXT).
         STX         X,W             < X DU POINT COURANT.
         STY         Y,W             < Y DU POINT COURANT.
         LA          DELTA
         IBT         14              < DELTA VAUT EN BASCULE 0/2.
         STA         DELTA           < MAJ DE DELTA.
         JANE        E131            < ON VIENT DE TRAITER L'ORIGINE
                                     < D'UN SEGMENT.
         BSR         ADRAW           < TRACE DU SEGMENT COURANT.
         CPZ         VIDEO
         JG          E131            < CAS DU GRAPHIQUE PUR.
<
< CONVERSION GRAPHIQUE--> VIDEO :
<
         IF          ORDI-"S",XWOR%,,XWOR%
<
<        T R A C E   V I D E O   D U   S E G M E N T   E N   S O L A R.
<
<        (C'EST LE SYSTEME CMS5 QUI SE CHARGERA DE L'INTERPOLATION !).
<
<
< PROLOGUE: SAUVEGARDE DES REGISTRES UTILISES ET SAUVEGARDE DANS LA PILE
< (QUI EST GRANDE !) DE LA ZONE QU'ON VA UTILISER POUR CONSTRUIRE L'EN-TETE
< DE L'IMAGE.
<
         PSR         A,B,X,W
<
         LR          K,B
         ADRI        1,B             < ZONE RECEPTRICE.
         LRM         A,X,W
         WORD        ENTIM           < ZONE EMETTRICE (A SAUVER DANS LA PILE).
         WORD        LENTIM          < LONGUEUR EN-TETE IMAGE.
         WORD        ENTIM           < POUR BASER L'EN-TETE.
         MOVE
         ADRI        LENTIM,K        < MISE A JOUR DE 'K'.
<
< ICI, ON A SAUVEGARDE LA ZONE DE CONSTRUCTION DE L'EN-TETE DANS LA PILE,
< ON VA CONSTRUIRE L'EN-TETE ET FAIRE LA DEMANDE D'INTERPOLATION VIDEO.
<
         LRM         A,B,X
         WORD        SEGORG+Y        < ZONE EMETTRICE: COORDONNEES (Y1,X1),
                                     < (Y2,X2) SEGMENT COURANT. CE SONT DES
                                     < COORDONNEES GRAPHIQUES.
         WORD        ENTIM+DEPY1     < ZONE RECEPTRICE.
         WORD        4               < LONGUEUR.
         MOVE
         STZ         DEPMOD,W
         IC          DEPMOD,W        < MODE TRACE 'SBT'.
         LRM         A,X
         WORD        ENTIM-ZERO*2    < ADRESSE OCTET EN-TETE IMAGE.
         WORD        LENTIM+LIMAG*2  < LONGUEUR OCTETS EN-TETE + IMAGE.
         STA         STABIL+1
         STX         STABIL+2
         LAD         STABIL          < DEMANDE INTERPOLATION ET AFFICHAGE.
         SVC         0
         LRM         A,X
         WORD        IMAG-ZERO*2     < RESTAURATION ADRESSE ET
         WORD        LIMAG*2         < LONGUEUR IMAGE DANS LA DEMANDE.
         STA         STABIL+1
         STX         STABIL+2
<
< EPILOGUE (FAIRE COMME SI ON N'AVAIT RIEN TOUCHE...).
<
         ADRI        -LENTIM,K       < RESTAURATION DE 'K'.
         LR          K,A
         ADRI        1,A             < ZONE EMETTRICE.
         LRM         B,X
         WORD        ENTIM           < ZONE RECEPTRICE (A RESTAURER).
         WORD        LENTIM          < LONGUEUR.
         MOVE
<
         PLR         A,B,X,W
XWOR%:   VAL         0
         IF          ORDI-"T",XWOR%,,XWOR%
         PSR         X,Y
<
< CALCUL DES EXTREMITES M1 ET M2 DU SEGMENT VIDEO :
<
         LA          SEGORG+X        < A=X(ORIGINE GRAPHIQUE).
         SLRS        DEDX            < REDUCTION VIDEO.
         STA         DICOX1          < RANGEMENT DE X1.
         LA          SEGORG+Y        < A=Y(ORIGINE GRAPHIQUE).
         SLRS        DEDY            < REDUCTION VIDEO.
         NGR         A,A
         AD          NLIG            < INVERSION DUE AU FAIT QUE LES
                                     < AXES Y VIDEO ET GRAPHIQUE SONT
                                     < INVERSES.
         STA         DICOY1          < RANGEMENT Y1.
         LA          SEGEXT+X        < A=X(EXTREMITE GRAPHIQUE).
         SLRS        DEDX            < REDUCTION VIDEO.
         STA         DICOX2          < RANGEMENT DE X2.
         LA          SEGEXT+Y        < A=Y(EXTREMITE GRAPHIQUE).
         SLRS        DEDY            < REDUCTION VIDEO.
         NGR         A,A
         AD          NLIG            < INVERSION DES AXES Y.
         STA         DICOY2          < RANGEMENT DE Y2.
<
< TRACE DICHOTOMIQUE DU SEGMENT :
<
         LX          DICOX1          < X=X1.
         LY          DICOY1          < Y=Y1.
         BSR         ASET            < AFFICHAGE DU POINT M1.
         BSR         ADICO           < TRACE DU SEGMENT M1M2.
         LX          DICOX2          < X=X2.
         LY          DICOY2          < Y=Y2.
         BSR         ASET            < AFFICHAGE DU POINT M2.
         PLR         X,Y
XWOR%:   VAL         0
E240:    EQU         $
         JMP         E131
<
< CAS DE L'INTERPOLATION VIDEO :
<
E130:    EQU         $
         BSR         ASET            < AFFICHAGE DU POINT COURANT.
E131:    EQU         $
         LA          IBUF
         ADRI        4,A             < PROGRESSION INDEX BUFFER.
         CPI         4*31            < ET VALIDATION DE CE DERNIER ...
         JL          E33             < OK.
         LAD         SGFW            < ECRITURE DE L'ENREGISTREMENT
                                     < COURANT SUR '0B PAR EXEMPLE.
         SVC         0
         LAD         SGFR
         SVC         0               < LECTURE DE L'ENREGISTREMENT
                                     < SUIVANT SUR '0A PAR EXEMPLE.
         LAI         0               < REINIT INDEX BUFFER.
E33:     EQU         $
         STA         IBUF            < MAJ IBUF.
         DC          NC              < DECOMPTAGE DES POINTS A
                                     < INTERPOLER.
         JG          E31             < IL Y EN A ENCORE ...
<
< CAS OU LA FIN DE LISTE EST RENCONTREE :
<
E32:     EQU         $
         CPZ         IBUF            < Y-A-T'IL UN BUFFER EN COURS
                                     < DE REMPLISSAGE ???
         JE          E34             < NON , RIEN A FAIRE ...
         LAD         SGFW            < OUI ,
         SVC         0               < ECRITURE DU DERNIER ENREGIS-
                                     < TREMENT SUR '0B PAR EXEMPLE.
E34:     EQU         $
         LA          NVP1
         STBY        SGFC
         DC          SGFC            < CLOSE RELEASE.
         LAD         SGFC
         SVC         0               < CLOSE RELEASE '0A PAR EXEMPLE.
         IC          SGFC            < CLOSE SAVE.
         LA          NVP1
         IBT         15
         STA         NVP1            < PERMUTATION DES NVP SGF.
         STBY        SGFC
         LAD         SGFC
         SVC         0               < CLOSE SAVE '0B PAR EXEMPLE.
E80:     EQU         $
         BSR         AVIS            < DIFFUSION EVENTUELLE IMAGE INTER.
         CPZ         PAS             < TEST DU MODE D'INTERPOLATION.
         JNE         EE30            < MODE CONTINU : ON REBOUCLE....
         BSR         AMCOPY          < HARD-COPY EVENTUELLE+TEMPO.
E220:    EQU         $
         CPZ         VIDEO
         JG          EE30            < CAS DU GRAPHIQUE PUR : VERS
                                     < L'INTERPOLATION SUIVANTE.
<
< CAS DE L'INTERPOLATION VIDEO :
<
E140:    EQU         $
         LAD         CG
         SVC         0               < RETOUR EVENTUEL EN ALPHA-NUMERIK.
         LAD         MSAVE
         BSR         AENTER          < CAS DU MODE PAS A PAS , FAUT-
                                     < IL SAUVER L'IMAGE COURANTE ???
         JNE         EE30            < NON , ALORS ON CONTINUE.
         LAI         -3
         STA         &ALONG          < L'IMAGE RECOIT LE TYPE 'VIDEO'.
         LAD         MNOM
         BSR         AGOSGN          < OUI , ALORS ON LUI DONNE UN
                                     < NOM , ET ON LA STORE.
EE30:    BR          AE30            < BOUCLE D'INTERPOLATION.
         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 D'ASSEMBLAGE SI MAUVAISE
                                     < IMPLANTATION !!!
         DZS         X10+1           < HYGIENE ...
         EOT         #SIP GEN PROCESSEUR#



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