/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E N V O I   D ' U N E   C O M M A N D E   A U   D I S Q U E   V I D E O   B E T A - P A L  :                               */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/video_P.04$I' :                                                                                            */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 1994??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        V A L I D A T I O N   D U  R A L E N T I   D E M A N D E  :                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
          Test(IFEXff(ralenti_courant,RALENTI_FAIBLE_PAL_BETA,RALENTI_FORT_PAL_BETA))
               Bblock
               PRINT_ERREUR("le ralenti demande est incompatible avec cette machine");
               CAL1(Prer1("ralenti demande.=%d\n",ralenti_courant));
               CAL1(Prer1("ralenti effectue=%d\n",RALENTI_PAL_BETA(ralenti_courant)));
               Eblock
          ATes
               Bblock
               Eblock
          ETes

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        E N V O I   D ' U N E   C O M M A N D E   A U   D I S Q U E   V I D E O   B E T A - P A L  :                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
          TEST_COMMANDE(COMMANDE_VIDE
                       ,BLOC(VIDE;)
                        );
                                        /* Commande vide, il n'y a rien a faire...                                                   */
          TEST_COMMANDE(COMMANDE_VERSION
                       ,BLOC(EDITION_DU_TYPE_DE_MACHINE_PAL_BETA;)
                        );
                                        /* Commande d'edition de la version.                                                         */
          TEST_COMMANDE(COMMANDE_D_INITIALISATION_MINIMALE
                       ,BLOC(INITIALISATION_MINIMALE_PAL_BETA(affichage_sur_le_moniteur);)
                        );
                                        /* Tentative de "initialisation minimale".                                                   */
          TEST_COMMANDE(COMMANDE_D_INITIALISATION_MAXIMALE
                       ,BLOC(INITIALISATION_MAXIMALE_PAL_BETA(affichage_sur_le_moniteur);)
                        );
                                        /* Tentative de "initialisation maximale".                                                   */
          TEST_COMMANDE(COMMANDE_D_ETAT
                       ,BLOC(ETAT_PAL_BETA;)
                        );
                                        /* Tentative d'acces a l'etat du disque.                                                     */
          TEST_COMMANDE(COMMANDE_D_ADRESSE
                       ,BLOC(ADRESSE_COURANTE_PAL_BETA;)
                        );
                                        /* Tentative d'acces a l'adresse courante du disque.                                         */
          TEST_COMMANDE(COMMANDE_D_EJECTION
                       ,BLOC(EJECTION_PAL_BETA;)
                        );
                                        /* Tentative d'ejection du disque.                                                           */
          TEST_COMMANDE(COMMANDE_D_ARRET
                       ,BLOC(ARRET_PAL_BETA;)
                        );
                                        /* Tentative d'arret de la commande en cours.                                                */
          TEST_COMMANDE(COMMANDE_DE_REPRISE
                       ,BLOC(REPRISE_PAL_BETA;)
                        );
                                        /* Tentative de reprise d'une commande arretee par 'COMMANDE_D_ARRET'.                       */
          TEST_COMMANDE(COMMANDE_DE_SAUVEGARDE
                       ,BLOC(SAUVEGARDE_POSITION_PAL_BETA;)
                        );
                                        /* Tentative de sauvegarde de la position courante du disque.                                */
          TEST_COMMANDE(COMMANDE_DE_RESTAURATION
                       ,BLOC(RESTAURE_POSITION_PAL_BETA;)
                        );
                                        /* Tentative de retour a la position memorisee du disque.                                    */
          TEST_COMMANDE(COMMANDE_DE_RECHERCHE_D_UNE_IMAGE
                       ,BLOC(RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_courante);)
                        );
                                        /* Tentative de "recherche" d'une image de numero donne.                                     */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut
                                                            ,adresse_de_fin
                                                             );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees.                        */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_F_SCAN_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_SCAN
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_debut
                                                                       ,adresse_de_fin
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance ultra-rapide. */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_F_FAST_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_FAST
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_debut
                                                                       ,adresse_de_fin
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance rapide.       */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_F_PLAY_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_PLAY
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_debut
                                                                       ,adresse_de_fin
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance normale.      */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_F_SLOW_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_SLOW
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_debut
                                                                       ,adresse_de_fin
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance lente.        */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_F_STEP_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_STEP
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_debut
                                                                       ,adresse_de_fin
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance pas a pas.    */
          TEST_COMMANDE(COMMANDE_DE_LECTURE_R_PLAY_D_UNE_SEQUENCE
                       ,BLOC(LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_R_PLAY
                                                                       ,ralenti_courant
                                                                       ,nombre_de_repetitions
                                                                       ,adresse_de_fin
                                                                       ,adresse_de_debut
                                                                        );
                             )
                        );
                                        /* Tentative de lecture d'une "sequence" d'images d'adresses donnees en avance normale       */
                                        /* en marche arriere (introduite le 20030204133222).                                         */
          TEST_COMMANDE(COMMANDE_DE_RECHERCHE_D_UN_BLOC_DE_DONNEES
                       ,BLOC(RECHERCHE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_courante);)
                        );
                                        /* Tentative de "recherche" d'un bloc de donnees numeriques de numero donne.                 */

#define   COMMANDE_disk_video_P                                                                                                         \
                    chain_Aconcaten5(GENERATION_NOM_D_UNE_COMMANDE_X(Direct_xci,"disk_video_P")                                         \
                                    ,chain_Aconcaten2(" commande=",commande_courante)                                                   \
                                    ,chain_Aconcaten2(" permuter=",ETAT_LOGIQUE(NOTL(permuter_les_octets_d_un_bloc_de_donnees)))        \
                                    ,chain_Aconcaten2(" adresse=",chain_Aentier(adresse_courante))                                      \
                                    ,chain_Aconcaten2(" valeur=",chain_Aentier(donnees))                                                \
                                     )
#define   COMMANDE_car_controle                                                                                                         \
                    chain_Aconcaten3(GENERATION_NOM_D_UNE_COMMANDE_X(Direct_xcp,"car_controle")                                         \
                                    ,chain_Aconcaten2(" eliminer=",C_VRAI____)                                                          \
                                    ,chain_Aconcaten2(" eliminer_non_alpha_numerique=",C_VRAI____)                                      \
                                     )
#define   COMMANDE_SwapBytes_01                                                                                                         \
                    chain_Aconcaten3(GENERATION_NOM_D_UNE_COMMANDE_X(Direct_xcg,"SwapBytes.01")                                         \
                                    ,chain_Aconcaten2(" K_LF=",C_FAUX____)                                                              \
                                    ,chain_Aconcaten2(" groupes=",chain_Aentier(SIZE(vrai_Int_de_base)))                                \
                                     )

          TEST_COMMANDE(COMMANDE_DE_LECTURE_D_UN_BLOC_DE_DONNEES
                       ,BLOC(
                             Test(IL_NE_FAUT_PAS(permuter_les_octets_d_un_bloc_de_donnees))
                                  Bblock
                                  LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_courante,donnees);
                                  Eblock
                             ATes
                                  Bblock
                                  EXECUTION_D_UNE_SUITE_DE_COMMANDES_SOUS_SH(chain_Aconcaten5(COMMANDE_disk_video_P
                                                                                             ,C_SH__REDIRECTION_PROGRAMME
                                                                                             ,COMMANDE_car_controle
                                                                                             ,C_SH__REDIRECTION_PROGRAMME
                                                                                             ,COMMANDE_SwapBytes_01
                                                                                              )
                                                                             );
                                  Eblock
                             ETes
                             )
                        );
                                        /* Tentative de "recherche" d'un bloc de donnees numeriques de numero donne et lecture.      */
                                        /*                                                                                           */
                                        /* Le 20041221115815, a ete introduite la possibilite de permuter les octets d'un bloc de    */
                                        /* donnees numeriques pour permettre aux 'SYSTEME_APC's de recuperer les blocs de donnees    */
                                        /* ecrits il y a bien longtemps sur 'SYSTEME_SGIND'...                                       */
                                        /*                                                                                           */
                                        /* Passage de 'C_REDIRECTION_PROGRAMME' a 'C_SH__REDIRECTION_PROGRAMME' le 20111117082006... */
          TEST_COMMANDE(COMMANDE_AVANT_UN_PAS
                       ,BLOC(AVANT_UN_PAS_PAL_BETA;)
                        );
                                        /* Tentative d'avance d'une image,                                                           */
          TEST_COMMANDE(COMMANDE_ARRIERE_UN_PAS
                       ,BLOC(ARRIERE_UN_PAS_PAL_BETA;)
                        );
                                        /* Tentative de recul d'une image.                                                           */
          TEST_COMMANDE(COMMANDE_AVANT_LENT
                       ,BLOC(AVANT_LENT_PAL_BETA(ralenti_courant);)
                        );
                                        /* Tentative de mise en pas a pas "avant" (avec ralenti='ralenti_courant'),                  */
          TEST_COMMANDE(COMMANDE_ARRIERE_LENT
                       ,BLOC(ARRIERE_LENT_PAL_BETA(ralenti_courant);)
                        );
                                        /* Tentative de mise en pas a pas "arriere" (avec ralenti='ralenti_courant').                */
          TEST_COMMANDE(COMMANDE_AVANT_NORMAL
                       ,BLOC(AVANT_NORMAL_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche avant normal,                                               */
          TEST_COMMANDE(COMMANDE_ARRIERE_NORMAL
                       ,BLOC(ARRIERE_NORMAL_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche arriere normal.                                             */
          TEST_COMMANDE(COMMANDE_AVANT_RAPIDE
                       ,BLOC(AVANT_RAPIDE_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche avant rapide,                                               */
          TEST_COMMANDE(COMMANDE_ARRIERE_RAPIDE
                       ,BLOC(ARRIERE_RAPIDE_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche arriere rapide.                                             */
          TEST_COMMANDE(COMMANDE_AVANT_ULTRA_RAPIDE
                       ,BLOC(AVANT_EXPLORATION_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche avant ultra-rapide ("exploration").                         */
          TEST_COMMANDE(COMMANDE_ARRIERE_ULTRA_RAPIDE
                       ,BLOC(ARRIERE_EXPLORATION_PAL_BETA;)
                        );
                                        /* Tentative de "play" en marche arriere ultra-rapide ("exploration").                       */
          TEST_COMMANDE(COMMANDE_D_ENREGISTREMENT_D_UNE_IMAGE
                       ,BLOC(ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA(adresse_courante);)
                        );
                                        /* Tentative d'"enregistrement" d'une image de numero donne.                                 */
          TEST_COMMANDE(COMMANDE_D_ENREGISTREMENT_EN_CONTINU_D_UNE_SEQUENCE
                       ,BLOC(ENREGISTREMENT_EN_CONTINU_D_UNE_SEQUENCE_PAL_BETA;)
                        );
                                        /* Tentative d'"enregistrement" d'une sequence d'images en continu.                          */
          TEST_COMMANDE(COMMANDE_D_ENREGISTREMENT_D_UN_BLOC_DE_DONNEES
                       ,BLOC(ENREGISTREMENT_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_courante,donnees);)
                        );
                                        /* Tentative d'"enregistrement" d'un bloc de donnees numeriques de numero donne.             */



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.