IDP         "ANIMATION CUBE"
         IDP         "RELEASE 08/02/80"
         IDP         "P. FRANCONNET"
         PROG
NPATIN:  VAL         1               < NOMBRE DE "PATINAGE" (IMAGE FIXE).
ZERO:    EQU         $
         DZS         '10
         WORD        RUN
         WORD        ENTRY
RUN:     EQU         $
         LRP         L
         BR          -1,L
PILE:    DZS         20
<
<        MESSAGES STANDARD (POUR LE S/P 'ENVOI').
<
M:       EQU         $+256
MVI:     BYTE        '6D;"S"
         ASCI        "ORTIR SUR VI"
         WORD        0
MNBE:    BYTE        '6D;"N"
         ASCI        "OMBRE D'ETAPES="
         WORD        0
MNBP:    BYTE        '6D;"N"
         ASCI        "OMBRE DE PAS="
         WORD        0
MRAZ:    BYTE        '6D;"R"
         ASCI        "AZ?"
         WORD        0
MVIDEO:  BYTE        '6D;"V"
         ASCI        "IDEO?"
         WORD        0
MPOINT:  BYTE        '6D;"P"
         ASCI        "OINTILLES?"
         WORD        0
MCAM:    BYTE        '6D;"C"
         ASCI        "AMERA?"
         WORD        0
MTMPO:   BYTE        '6D;"T"
         ASCI        "EMPORISATION="
         WORD        0
         PAGE
         COMMON
COM:     EQU         $
         DZS         1               < POUR LE BLOC FLOTTANT.
<
< CONSTANTES.
<
C0659:   FLOAT       0.659
C07525:  FLOAT       0.7525
C09:     FLOAT       0.9
C0328:   FLOAT       0.328
C0287:   FLOAT       0.287
C06:     FLOAT       0.6
CT2:     FLOAT       2.0
CT1:     FLOAT       1.0
C512:    FLOAT       512.0
CTX:     FLOAT       256.0
CTY:     FLOAT       480.0
C05:     FLOAT       0.5
<
< RELAIS D'ACCES AUX SOUS-PROGRAMMES.
<
AINI:    WORD        INI             < INITIALISATIONS.
AGCUB:   WORD        GCUB            < GENERATION D'UN CUBE.
AGEN:    WORD        GEN             < GENERATION D'UNE ARETE.
ACXYZ:   WORD        CXYZ            < CALCUL "GRANDS" X,Y,Z ET "PETITS" X,Y
                                     < ET TRACE GRAPHIQUE.
ATRANS:  WORD        TRANS           < TRANSFORMATION "PETITS" X,Y EN
                                     < COORDONNEES GRAPHIQUES.
AFIX:    WORD        FIX             < ARRONDI ET PASSAGE FLT --> FIX.
AENVOI:  WORD        ENVOI           < ENVOI D'UN MESSAGE STANDARD.
ACONVH:  WORD        CONVH           < CONVERSION ASCI --> HEXA.
ARAZIM:  WORD        RAZIM           < RAZ IMAGE VIDEO.
AVIDEO:  WORD        VIDEO           < VISUALISATION IMAGE VIDEO.
AQREP:   WORD        QREP            < ENVOI QUESTION DEMANDE REPONSE.
ACAMT:   WORD        CAMT            < COMMANDE CAMERA ET/OU TEMPORISATION.
<
< DEMANDES.
<
COORD:   EQU         $               < COORDONNEES SEGMENT A TRACER.
Y1:      DZS         1
X1:      DZS         1
Y2:      DZS         1
X2:      DZS         1
DMRAZ:   WORD        '0B05           < DEMANDE DE RAZ ECRAN.
DMOG:    WORD        '0B03           < DEMANDE D'OPEN GRAPHIQUE.
DMTRGR:  WORD        '0B0A           < DEMANDE TRACE GRAPHIQUE.
         WORD        COORD-ZERO*2
         WORD        4*2
DMVID:   WORD        '8A01           < DEMANDE DE VISUALISATION VIDEO.
         WORD        XWORK1          < ADRESSE OCTET ARGUMENTS.
         WORD        '2014
         WORD        '0002           < SUR LE VERT.
ASVI:    ASCI        "!ASSIGN B=VI"
ASVI1:   BYTE        0;'04
ASVIF:   EQU         $
ASO:     ASCI        "!ASSIGN B="
         BYTE        "O";'04
ASOF:    EQU         $
CLOSE:   ASCI        "!CLOSE"
         BYTE        '04
CLOSEF:  EQU         $
DMASVI:  WORD        '0002           < ASSIGNATION B=VIX.
         WORD        ASVI-ZERO*2
         WORD        ASVIF-ASVI*2
DMASO:   WORD        '0002           < ASSIGNATION B=O.
         WORD        ASO-ZERO*2
         WORD        ASOF-ASO*2
DMCLOS:  WORD        '0002           < !CLOSE.
         WORD        CLOSE-ZERO*2
         WORD        CLOSEF-CLOSE*2
DMTMPO:  WORD        '0005           < TEMPORISATION N SECONDES
         WORD        0               < INUTILISE.
         DZS         1               < N SECONDES.
DMCAM:   WORD        '0B07           < COMMANDE CAMERA.
         WORD        '1B17
         WORD        '0400
DMOUT:   WORD        '0202           < DEMANDE SORTIE MESSAGE.
         DZS         1
         DZS         1
AM:      WORD        M               < POUR LE S/P 'ENVOI'.
AXTRAV:  WORD        '8000           < RELAI DE TRAVAIL.
REP:     DZS         1               < ZONE REPONSE.
DMREP:   WORD        '0101           < DEMANDE REPONSE.
         WORD        REP-ZERO*2
         WORD        1
<
< VARIABLES ETC...
<
< T INITIAL, FINAL, COURANT ET PAS DE VARIATION DE T.
TINIT:   FLOAT       0.0
TFINAL:  FLOAT       0.3
TC:      DZS         2
TPAS:    DZS         2               < PAS DE VARIATION DE T.
< PARAMETRE A,B,C : VALEUR INITIALE, VALEUR FINALE, VALEUR COURANTE.
A1:      FLOAT       -0.4
A2:      FLOAT       +0.4
AC:      DZS         2
<
B1:      FLOAT       -0.3
B2:      FLOAT       +0.3
BC:      DZS         2
<
C1:      FLOAT       0.0
C2:      FLOAT       1.0
CC:      DZS         2
<
P1:      VAL         A1-A1
P2:      VAL         A2-A1
PC:      VAL         AC-A1
<
< NOMBRE DE PAS: FIXE, FLOTTANT.
NBP:     DZS         1               < NOMBRE DE PAS.
NBPF:    DZS         2               < NOMBRE DE PAS EN FLOTTANT.
DMNBP:   WORD        '0101           < DEMANDE NOMBRE DE PAS.
         WORD        NBPF-ZERO*2
         WORD        4
<
NPC:     DZS         1               < NUMERO DU PAS COURANT
                                     < (DE 0 A N).
<
DELTAP:  DZS         2               < DELTA PARAMETRE COURANT (FINAL-INITIAL).
<
GX:      DZS         2               < GRAND X.
GY:      DZS         2               < GRAND Y.
GZ:      DZS         2               < GRAND Z.
X:       DZS         2               < PETIT X.
Y:       DZS         2               < PETIT Y.
<
TRAV1:   DZS         2               < ZONE DE TRAVAIL.
IRAZ:    DZS         1               < INDICATEUR DE "RAZ" :
                                     < = 0 : NON.
                                     < = 1 : OUI.
IVIDEO:  DZS         1               < INDICATEUR VISUALISATION VIDEO :
                                     < = 0 : NON,
                                     < = 1 : OUI.
IPOINT:  DZS         1               < INDICATEUR OPTION "POINTILLES":
                                     < = 0 : NON,
                                     < = 1 : NON.
ITRP:    DZS         1               < INDICATEUR "TRACE POINTILLES":
                                     < = 0 : OUI,
                                     < # 0 : NON.
ICAM:    DZS         1               < INDICATEUR "COMMANDE CANERA" :
                                     < = 0 : NON,
                                     < = 1 : OUI.
IPATIN:  DZS         1               < INDICATEUR "PATINAGE" :
                                     < = 0 : IL FAUT PATINER (IMAGE FIXE),
                                     < = 1 : NON.
AXIM:    WORD        IMAG-1,X        < RELAI POUR REMISE A ZERO,.
<
< ARGUMENTS DE LA DEMANDE DE TRACE / VISUALISATION VIDEO.
<
ARGV:    EQU         $
XWORK:   VAL         ARGV-ZERO*2
XWORK1:  EQU         ZERO+XWORK
         DZS         1
         WORD        1               < MODE 'SBT'.
         DZS         4
YV1:     DZS         4               < Y1,X1,Y2,X2.
IMAG:    DZS         256*16          < IMAGE.
LIMAG:   VAL         $-IMAG          < LONGUEUR MOTS IMAGE.
         PAGE
         PROG
ENTRY:   EQU         $
<
<        A N I M A T I O N   D ' U N   C U B E
<
         LRM         C,K
         WORD        COM+'80         < BASE DU COMMON.
         WORD        PILE-1          < PILE.
<
         BSR         AINI            < INITIALISATIONS
<
<        G E N E R A T I O N   D E S   C U B E S.
<
         FLD         TINIT           < T INITIAL.
         FST         TC              < T COURANT.
         STZ         IPATIN          < PATINAGE = OUI.
GC1:     EQU         $
         BSR         AGCUB           < GENERATION D'UN CUBE.
         BSR         ACAMT           < COMMANDE CAMERA ET/OU TEMPORISATION.
         FLD         TC
         FAD         TPAS            < NOUVEAU T COURANT.
         FST         TC
         FCAM        TFINAL          < TEST DE FIN.
         JCV         GC1
<
<        G E N E R A T I O N   E N   " M A R C H E   A R R I E R E "
<
         FLD         TFINAL
         FST         TC              < T COURANT = T FINAL.
         STZ         IPATIN          < PATINAGE = OUI.
GC2:     EQU         $
         BSR         AGCUB           < GENERATION D'UN CUBE.
         BSR         ACAMT           < COMMANDE CAMERA ET/OU TEMPORISATION.
         FLD         TC
         FSB         TPAS            < NOUVEAU T COURANT.
         FST         TC
         FCAM        TINIT           < TEST DE FIN.
         JNC         GC2
<
         STZ         IPATIN          < PATINAGE = OUI.
         BSR         ACAMT           < COMMANDE CAMERA ET/OU TEMPORISATION.
         LAD         DMCLOS          < DESASSIGNATIONS.
         SVC         0
         WORD        '1E16           < FIN DU PROGRAMME.
         JMP         ENTRY           < VERS NOUVELLE EXECUTION.
         PAGE
INI:     EQU         $
<
<        I N I T I A L I S A T I O N S.
<
INI2:    EQU         $
<
< CHOIX ET ASSIGNATION DE LA VISU SUR LAQUELLE IL FAUT SORTIR.
<
         LAD         DMCLOS          < !CLOSE D'ABORD.
         SVC         0
         LAI         MVI-M           < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         '0D
         JE          INI1            < SI 'RETURN', ASSIGNER L'ORGANE DE
                                     < SORTIE.
         STBY        ASVI1           < SINON, ASSIGNER LA VISU DEMANDEE.
         LAD         DMASVI          < DEMANDE D'ASSIGNATION.
         SVC         0
         JNE         INI2
         JMP         INI3
INI1:    EQU         $
         LAD         DMASO           < DEMANDE D'ASSIGNATION DE L'ORGANE
         SVC         0               < DE SORTIE.
         JNE         INI2
INI3:    EQU         $
<
< DEMANDE ET INITIALISATION DU NOMBRE D'ETAPES.
<
         LAI         MNBE-M          < PROPOSITION.
         BSR         AENVOI
         LAD         DMNBP           < DEMANDE REPONSE.
         SVC         0
         LA          DMNBP+1         < ADRESSE REPONSE.
         BSR         ACONVH          < CONVERSION DANS 'A'.
         JNE         INI3            < INCORRECT.
         JAE         INI3            < INADMISSIBLE.
         FLT
         STA         TPAS
         FLD         TFINAL          < T FINAL...
         FDV         TPAS            < / NOMBRE D'ETAPES ...
         FST         TPAS            < = LE PAS DE VARIATION DE T.
INI5:    EQU         $
<
< CHOIX ET INITIALISATION DU NOMBRE DE PAS.
<
         LAI         MNBP-M          < PROPOSITION.
         BSR         AENVOI
         LAD         DMNBP           < DEMANDE REPONSE.
         SVC         0
         LA          DMNBP+1         < ADRESSE REPONSE.
         BSR         ACONVH          < CONVERSION DANS 'A'.
         JNE         INI5            < INCORRECT.
         JAE         INI5            < INADMISSIBLE.
         STA         NBP             < NOMBRE DE PAS EN FIXE.
         FLT
         FST         NBPF            < NOMBRE DE PAS EN FLOTTANT.
INI4:    EQU         $
<
< CHOIX DE L'OPTION "RAZ" (INDICATEUR 'IRAZ').
<
         STZ         IRAZ            < NON A PRIORI.
         LAI         MRAZ-M          < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         "N"
         JE          INI6            < NON.
         CPI         "O"
         JNE         INI4            < REPONSE INCORRECTE.
         IC          IRAZ            < OUI.
INI6:    EQU         $
<
< CHOIX DE L'OPTION "VISUALISATION VIDEO" (INDICATEUR 'IVIDEO').
<
         STZ         IVIDEO          < NON A PRIORI.
         LAI         MVIDEO-M        < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         "N"
         JE          INI7
         CPI         "O"
         JNE         INI6            < REPONSE INCORRECTE.
         IC          IVIDEO          < OUI.
INI7:    EQU         $
<
< CHOIX DE L'OPTION POINTILLES (INDICATEUR 'IPOINT').
<
         STZ         IPOINT          < NON A PRIORI.
         LAI         MPOINT-M        < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         "N"
         JE          INI8
         CPI         "O"
         JNE         INI7            < REPONSE INCORRECTE.
         IC          IPOINT          < OUI.
INI8:    EQU         $
<
< CHOIX DE L'OPTION CAMERA (INDICATEUR 'ICAM').
<
         STZ         ICAM            < NON A PRIORI.
         LAI         MCAM-M          < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         "N"
         JE          INI9            < NON.
         CPI         "O"
         JNE         INI8            < REPONSE NON RECONNUE.
         IC          ICAM            < OUI.
INI9:    EQU         $
<
< CHOIX D'UNE DUREE DE TEMPORISATION.
<
         LAI         MTMPO-M         < PROPOSITION.
         BSR         AQREP           < QUESTION / REPONSE.
         CPI         "A"
         JL          INIA
         CPI         "F"
         JG          INI9            < INCORRECT.
         ADRI        -"A"+10,A
         JMP         INIB
INIA:    EQU         $
         CPI         "0"
         JL          INI9            < INCORRECT.
         CPI         "9"
         JG          INI9            < INCORRECT.
         ADRI        -"0",A
INIB:    EQU         $
         STA         DMTMPO+2        < DUREE EN SECONDE DANS LA DEMANDE.
<
< RAZ ECRAN INITIAL.
<
         LAD         DMRAZ           < DEMANDE DE RAZ ECRAN VISU.
         SVC         0
         BSR         ARAZIM          < ET RAZ IMAGE.
         RSR
         PAGE
GCUB:    EQU         $
<
<        G  E  N  E  R  A  T  I  O  N    D  '  U  N    C  U  B  E.
<
<
         CPZ         IRAZ            < TEST MODE "RAZ".
         JE          GCUB1
         LAD         DMRAZ           < RAZ ECRAN.
         SVC         0
         BSR         ARAZIM          < RAZ IMAGE VIDEO.
         STZ         ITRP            < A PRIORI.
GCUB1:   EQU         $
<
<        G E N E R A T I O N   D E S   A R E T E S
<
<        H O R I Z O N T A L E S - L O N G I T U D I N A L E S.
<
         LRM         W
         WORD        C1              < PARAMETRE A FAIRE VARIER.
<
         FLD         A1
         FST         AC              < A COURANT.
         FLD         B1
         FST         BC              < B COURANT.
         IC          ITRP            < POINTILLES EVENTUELS.
         BSR         AGEN            < GENERATION AVEC A1, B1 ; C VARIANT.
         STZ         ITRP            < TRACE NORMAL.
         FLD         B2
         FST         BC
         BSR         AGEN            < A1,B2; C.
         FLD         A2
         FST         AC
         BSR         AGEN            < A2,B2; C.
         FLD         B1
         FST         BC
         BSR         AGEN            < A2,B1; C.
<
<        G E N E R A T I O N   D E S   A R E T E S
<
<        H O R I Z O N T A L E S - T R A N S V E R S A L E S.
<
         LRM         W
         WORD        B1              < PARAMETRE A FAIRE VARIER.
<
         FLD         A1
         FST         AC              < A COURANT.
         FLD         C1
         FST         CC              < C COURANT.
         IC          ITRP            < POINTILLES EVENTUELS.
         BSR         AGEN            < GENERATION AVEC A1, C1 ; B VARIANT.
         STZ         ITRP            < TRACE NORMAL.
         FLD         C2
         FST         CC
         BSR         AGEN            < A1,C2; B.
         FLD         A2
         FST         AC
         BSR         AGEN            < A2,C2; B.
         FLD         C1
         FST         CC
         BSR         AGEN            < A2,C1; B.
<
<        G E N E R A T I O N   D E S   A R E T E S
<
<        V E R T I C A L E S.
<
         LRM         W
         WORD        A1              < PARAMETRE A FAIRE VARIER.
<
         FLD         B1
         FST         BC              < B COURANT.
         FLD         C1
         FST         CC              < C COURANT.
         IC          ITRP            < POINTILLES EVENTUELS.
         BSR         AGEN            < GENERATION AVEC B1, C1 ; A VARIANT.
         STZ         ITRP            < TRACE NORMAL.
         FLD         C2
         FST         CC
         BSR         AGEN            < B1,C2; A.
         FLD         B2
         FST         BC
         BSR         AGEN            < B2,C2; A.
         FLD         C1
         FST         CC
         BSR         AGEN            < B2,C1; B.
         RSR
         PAGE
GEN:     EQU         $
<
<        G E N E R A T I O N   D ' U N E   A R E T E.
<
<                    ARGUMENTS:
<
<                    - 'AC' 'BC' 'CC' = A COURANT, B COURANT, C COURANT :
<                      PARAMETRES DONT L'UN DOIT VARIER (CF 'W').
<                    - 'W' POINTE SUR LA VALEUR INITIALE DU PARAMETRE A
<                      FAIRE VARIER.
<                    - 'NBP' = NOMBRE DE PAS.
<
         STZ         NPC             < NUMERO DU PAS COURANT = 0.
         FLD         P2,W            < VALEUR FINALE PARAMETRE A FAIRE VARIER.
         FSB         P1,W            < VALEUR INITIALE...
         FST         DELTAP          < DELTA (P1,P2).
<
GEN1:    EQU         $
         LA          NPC             < NUMERO DU PAS COURANT (DE 0 A 'NBP')
         FLT
         FMP         DELTAP
         FDV         NBPF            < (NUMERO PAS * DELTAP) / NB DE PAS.
         FAD         P1,W            < + VALEUR INITIALE...
         FST         PC,W            < --> VALEUR COURANTE DU PARAMETRE.
         BSR         ACXYZ           < CALCUL DES "GRANDS" X,Y,Z ET DES
                                     < "PETITS" X ET Y... ET TRACE GRAPHIQUE..
<
         IC          NPC             < NOUVEAU PAS COURANT.
         LA          NPC
         CP          NBP             < TEST DE FIN.
         JLE         GEN1            < AU PAS SUIVANT.
<
         RSR
         PAGE
CXYZ:    EQU         $
<
<        C A L C U L   D E S   " G R A N D S "   X , Y , Z
<
<        E T   D E S   " P E T I T S "   X , Y    E T   T R A C E
<
<        G R A P H I Q U E   D U   S E G M E N T   C O U R A N T.
<
<                    ARGUMENTS:
<                                    - 'AC' 'BC' 'CC' : A,B,C COURANTS.
<
         FLD         BC
         FMP         BC              < B^2.
         FST         TRAV1
         FLD         AC
         FMP         AC              < A^2.
         FSB         TRAV1
         FST         TRAV1           < A^2 - B^2.
         FLD         C06
         FMP         TRAV1
         FST         TRAV1           < 0.6 ( A^2 - B^2).
         FLD         CC
         FMP         CC              < C^2.
         FAD         TRAV1           < 0.6 ( A^2 - B^2 ) + C^2.
         FST         TRAV1
         FLD         TC              < T COURANT.
         FMP         TRAV1
         FAD         AC
         FST         GX              < "GRAND" X.
<
         FLD         AC
         FMP         TC
         FAD         CT1
         FMP         BC              < B (1 + AT).
         FST         GY              < "GRAND" Y.
<
         FLD         AC
         FMP         TC
         FMP         CT2
         FNEG
         FAD         CT1
         FMP         CC              < C (1-2AT).
         FST         GZ              < "GRAND" Z.
<
<        CALCUL DES "PETITS" X,Y.
<
         FLD         GY
         FMP         C0659
         FST         TRAV1
         FLD         GZ
         FMP         C07525
         FSB         TRAV1           < -0.659 GY + 0.7525 GZ.
         FST         X               < "PETIT" X.
<
         FLD         GX
         FMP         C09
         FST         TRAV1
         FLD         GY
         FMP         C0328
         FNEG
         FAD         TRAV1
         FST         TRAV1
         FLD         GZ
         FMP         C0287
         FNEG
         FAD         TRAV1           < 0.9 GX - 0.328 GY - 0.287 GZ.
         FST         Y               < "PETIT" Y.
<
         BSR         ATRANS          < TRANSFORMATION DE X ET Y EN COORDONNEES
                                     < GRAPHIQUES. 'TRANS' LES PLACE EN 'X2'
                                     < ET 'Y2' DE LA DEMANDE GRAPHIQUE.
         CPZ         NPC             < TEST PREMIER PAS.
         JE          CXYZ1           < SI C'EST LE PREMIER PAS (DONC LE
                                     < PREMIER POINT, NE PAS TRACER ENCORE).
         CPZ         IPOINT          < TEST OPTION POINTILLES.
         JE          CXYZ2
         CPZ         ITRP            < TEST TRACE POINTILLE (ARETE CACHEE).
         JE          CXYZ2
         IC          ITRP            < INCREMENTATION 'ITRP'.
         LA          ITRP
         TBT         15              < CAR CE BIT BASCULE... ET ON VEUT
         JC          CXYZ1           < TRACER UN SEGMENT SUR DEUX!
CXYZ2:   EQU         $
         LAD         DMOG            < OPEN GRAPHIQUE.
         SVC         0
         JE          $+2
         WORD        '1E16
         LAD         DMTRGR          < DEMANDE DE TRACE GRAPHIQUE.
         SVC         0
         JE          $+2
         WORD        '1E16
         CPZ         IVIDEO          < TEST OPTION VIDEO.
         JE          CXYZ1
         BSR         AVIDEO          < TRACE / VISUALISATION VIDEO.
CXYZ1:   EQU         $
         LA          X2
         STA         X1              < NOUVEL X1.
         LA          Y2
         STA         Y1              < NOUVEL Y1.
         RSR
         PAGE
TRANS:   EQU         $
<
<        T R A N S F O R M A T I O N   D E   X , Y   E N
<
<        C O O R D O N N E E S   G R A P H I Q U E S.
<
<                    ARGUMENTS:      'X' ET 'Y'
<
<                    RESULTAT:       'X' ET 'Y' TRANSFORMEES SONT PLACEES EN
<                                    'X2' ET 'Y2' DE LA DEMANDE GRAPHIQUE.
<
         FLD         X
         FMP         C512
         FAD         CTX             < TRANSLATION EN X.
         BSR         AFIX
         STA         X2
<
         FLD         Y
         FMP         C512
         FAD         CTY             < TRANSLATION EN Y.
         BSR         AFIX
         STA         Y2
<
         RSR
<
<
FIX:     EQU         $
<
<        ARRONDI ET "FIX"
<
         FAD         C05
         FIX
         RSR
         PAGE
RAZIM:   EQU         $
<
<        R A Z   I M A G E   V I D E O.
<
         LRM         X
         WORD        LIMAG           < LONGUEUR MOTS IMAGE.
         STZ         &AXIM
         JDX         $-1
         RSR
<
VIDEO:   EQU         $
<
<        T R A C E / V I S U A L I S A T I O N   V I D E O.
<
         LRM         A,B,X
         WORD        Y1
         WORD        YV1
         WORD        4
         MOVE                        < COORDONNEES POUR LE TRACE.
         LAD         DMVID           < DEMANDE TRACE / VISUALISATION.
         SVC         0
         RSR
CAMT:    EQU         $
<
<        C O M M A N D E   C A M E R A
<
<                    E T   /   O U
<
<                                    T E M P O R I S A T I O N.
<
<        (AVEC "PATINAGE" EVENTUEL).
<
         LXI         1               < 1 IMAGE SEULEMENT A PRIORI.
         CPZ         IPATIN          < TEST INDICATEUR PATINAGE.
         JNE         CAMT3
         LXI         NPATIN          < 'NPATIN' IMAGES FIXES.
         IC          IPATIN          < BASCULEMENT INDICATEUR.
CAMT3:   EQU         $
         PSR         X               < SAUVEGARDE COUNT.
         CPZ         ICAM            < TEST OPTION CAMERA.
         JE          CAMT1
         LAD         DMCAM           < DECLENCHEMENT CAMERA.
         SVC         0
CAMT1:   EQU         $
         CPZ         DMTMPO+2        < TEST DUREE EN SECONDES.
         JE          CAMT2           < SI DUREE NULLE, PAS DE DEMANDE.
         LAD         DMTMPO          < DEMANDE DE TEMPORISATION.
         SVC         0
CAMT2:   EQU         $
         PLR         X               < RESTAURATION COUNT.
         JDX         CAMT3           < ET ON RECOMMENCE.
         RSR
         PAGE
<
<        CONVERSION EN BINAIRE D'UN NOMBRE HEXADECIMAL SAISI
<        EN ASCI (PAR EXEMPLE, NUMERO DE SECTEUR)
<
<        ARGUMENTS:
<                    'A' = ADRESSE OCTET DES 4 CARACTERES ASCI
<
<        RESULTAT:
<                    'A' = NOMBRE EN BINAIRE, A VALIDER EN FAISANT AU RETOUR:
<                                         JE     OK         OU
<                                         JNE    ERREUR
<
CONVH:   EQU         $
         PSR         B,X,Y,W         < SAUVEGARDES
         LR          A,Y             < Y = ADRESSE CARACTERE EN COURS
         LXI         4               < INIT COUNT
CONVH1:  EQU         $
         LR          X,W             < SAUVEGARDE COUNT
         LR          Y,X             < INDEX CARACTERE
         LBY         &AXTRAV         < CARACTERE
         CPI         "0"
         JL          CONVH3          < ERREUR
         CPI         "9"
         JLE         CONVH2
         CPI         "A"
         JL          CONVH3          < ERREUR
         CPI         "F"
         JG          CONVH3          < ERREUR
         ADRI        -7,A
CONVH2:  EQU         $
         ADRI        -'30,A
         SLLS        12
         SCLD        4               < CHIFFRE HEXA DANS 'B'
         ADRI        1,Y             < CARACTERE SUIVANT
         LR          W,X             < RESTAURATION COUNT
         JDX         CONVH1          < AU SUIVANT
<
         SLLD        16              < CONVERSION OK
         JMP         CONVH9
<
CONVH3:  EQU         $
         LBI         1               < ERREUR
CONVH9:  EQU         $
         CPZR        B               < POUR TEST AU RETOUR.
         PLR         B,X,Y,W         < RESTAURATIONS
         RSR
         PAGE
QREP:    EQU         $
<
<        E N V O I   Q U E S T I O N   E T   D E M A N D E   R E P O N S E
<
<                      LA REPONSE EST DE 1 CARACTERE (PAR EXEMPLE
<                    OUI/NON).
<
<        ARGUMENT:
<                    'A' = ARGUMENT D'APPEL DU S/P ENVOI POUR
<                          POSER UNE QUESTION.
<
<        RESULTAT:
<                    'A' ( 8-15 ) = REPONSE.
<
<        ATTENTION:
<                    DETRUIT 'X'.
<
         BSR         AENVOI          < ENVOI QUESTION
         LAD         DMREP           < DEMANDE REPONSE
         SVC         0
         LBY         REP             < CHARGEMENT REPONSE DANS 'A'.
         RSR
         PAGE
ENVOI:   EQU         $
<
<        ENVOI D'UN MESSAGE SUR UL '02
<
<        EN ENTREE
<
<        A=DEPLACEMENT MOTS DU MESSAGE A ENVOYER PAR RAPPORT
<          A M. TOUT MESSAGE EST DELIMITE PAR '00
<
<
<        NOTA: ON A
<                    EN TABLE:     M:    EQU    $+256
<                                  MES1: ASCI   "TEXTE..."
<                                        WORD   0
<                    EN COMMON:    AM:  WORD   M
<                    APPEL PAR:          LAI    MESI-M
<                                        BSR    AENVOI
<
         PSR         A,X
         AD          AM              < @ MOT MESSAGE
         ADR         A,A             < @ OCT MESSAGE
         STA         DMOUT+1
         STZ         DMOUT+2
         LR          A,X
ENV1:    EQU         $               < BOUCLE JUSQU'A DELIM '00
         LBY         &AXTRAV
         JAE         ENV2
         IC          DMOUT+2         < LONGUEUR='+1
         ADRI        1,X
         JMP         ENV1
ENV2:    EQU         $
         LAD         DMOUT
         SVC         0
         PLR         A,X
         RSR
         LST
         NDS
         END



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.