/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D E S   F O N C T I O N S   D U                                                                    */
/*        D I S Q U E   V I D E O   ' B E T A -  P A L '   ( S O N Y   'LVS6000P-LVR6000'   O U   'LVR4000P' )                       */
/*        E T   D U   M A G N E T O S C O P E   ' B E T A -  P A L '   ( S O N Y   'UVW1400P' )  :       )                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Dans ce fichier, se trouvent toutes                                                                            */
/*                  les definitions de macros relatives                                                                              */
/*                  aux fonctions.                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xiidP/fonct$vv$DEF' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 19890000000000).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I T I O N   D U   F O R M A T   D E S   I M A G E S   ' P a l '  :                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Nota :                                                                                                                     */
/*                                                                                                                                   */
/*                    Le format des images 'Pal', sur :                                                                              */
/*                                                                                                                                   */
/*                                      'SYSTEME_SG4D20G_IRIX_CC',                                                                   */
/*                                      'SYSTEME_SG4D25TG_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SG4D310VGX_IRIX_CC',                                                                */
/*                                      'SYSTEME_SG4D35TG_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SG4D85GT_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND308_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND324_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND3GA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND408_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND424_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND4GA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND508_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND524_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND5GA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND808_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND824_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGIND8GA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGINDA08_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGINDA24_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGINDAGA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO200A1_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO200A2_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO200A4_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO25224_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO252VA_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGO252VN_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGPCM801_IRIX_CC',                                                                  */
/*                                      'SYSTEME_SGPCMA01_IRIX_CC'.                                                                  */
/*                                                                                                                                   */
/*                  est defini dans '$xiidG/fonction$DEF. Sur les                                                                    */
/*                  autres SYSTEMEs, il faut bien le definir                                                                         */
/*                  quand meme, et c'est ici que c'est le                                                                            */
/*                  plus logique... On fera donc attention                                                                           */
/*                  a l'ordre des includes 'image_drive_SiliG_FONCTION_1_DEF'                                                        */
/*                  et 'image_drive_diskP_FONCTION_DEF' dans le fichier                                                              */
/*                  '$xi/INCLUDES_min$I'.                                                                                            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
                                        /* La fonction 'GvalDefaut(...)' a ete introduite le 20100408130019 (bien tardivement...).   */

#TestADef XminPal                                                                                                                       \
                    GvalDefaut("XminPal",COORDONNEE_MINIMALE)                                                                           \
                                        /* Definition de l'abscisse minimale d'une image au format 'Pal',                            */
#TestADef XmaxPal                                                                                                                       \
                    GvalDefaut("XmaxPal",779)                                                                                           \
                                        /* Definition de l'abscisse maximale d'une image au format 'Pal'.                            */
#TestADef dimXPal                                                                                                                       \
                    DIMENSION(XminPal,XmaxPal)                                                                                          \
                                        /* Definition de la dimension de l'axe 'OX' d'une image au format 'Pal' (ceci fut introduit  */ \
                                        /* le 20100408182925).                                                                       */

#TestADef YminPal                                                                                                                       \
                    GvalDefaut("YminPal",COORDONNEE_MINIMALE)                                                                           \
                                        /* Definition de l'ordonnee minimale d'une image au format 'Pal',                            */
#TestADef YmaxPal                                                                                                                       \
                    GvalDefaut("YmaxPal",574)                                                                                           \
                                        /* Definition de l'ordonnee maximale d'une image au format 'Pal'.                            */
#TestADef dimYPal                                                                                                                       \
                    DIMENSION(YminPal,YmaxPal)                                                                                          \
                                        /* Definition de la dimension de l'axe 'OY' d'une image au format 'Pal' (ceci fut introduit  */ \
                                        /* le 20100408182925).                                                                       */

#TestADef dimXYPal                                                                                                                      \
                    MUL2(dimXPal,dimYPal)                                                                                               \
                                        /* Definition de la dimension d'une image au format 'Pal' (ceci fut introduit                */ \
                                        /* le 20100408182925).                                                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        O P P O R T U N I T E   D E   C O M P I L E R   C E   M O D U L E  :                                                       */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#ifdef    sDKVP
                                        /* ATTENTION, la variable '$sDKVP' est a priori systematiquement definie dans le fichier     */
                                        /* 'v $Fmachines sDKVP' , mais n'est transmise a '$xiidP/fonct$vv$DEF' que sur la MACHINE    */
                                        /* '$sDKVP' et ce grace au fichier 'v $xcc/cpp$D/cpp$Y sDKVP' appele par '$xcc/cpp$Z'...     */

#    define    __VERSION__COMPILER_LA_GESTION_DU_DISQUE_PAL_BETA                                                                        \
                                        /* Compiler la bibliotheque de gestion du disque PAL-Beta...                                 */
#Aifdef   sDKVP
#Eifdef   sDKVP

#ifdef    __VERSION__COMPILER_LA_GESTION_DU_DISQUE_PAL_BETA
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D U   D I S Q U E   U T I L I S E  :                                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *             */
/*                        *             *        *             **        *        *        *   *         *   **        *             */
/*            * *         *             *        *             * *       *        *        *   *         *   * *       *             */
/*                        *             *        *             *  *      *        *        *   *         *   *  *      *             */
/*           *   *        *             *        *             *   *     *        *        *   *         *   *   *     *             */
/*                        *             *        * * *         *    *    *        *        *   *         *   *    *    *             */
/*          * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *             */
/*                        *             *        *             *      *  *        *        *   *         *   *      *  *             */
/*         *       *      *             *        *             *       * *        *        *   *         *   *       * *             */
/*                        *             *        *             *        **        *        *   *         *   *        **             */
/*        *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Les trois symboles qui sont definis (par                                                                       */
/*                  '#define') ou non definis (par '#nodefine')                                                                      */
/*                  ci-apres sont en fait et en general definis                                                                      */
/*                  dans les commandes  'v $xci/disk_video_P$K' et                                                                   */
/*                  'v $xci/magneto_P$K'...                                                                                          */
/*                                                                                                                                   */
/*                    De plus, le fichier '$xiidP/fonct$vv$FON'                                                                      */
/*                  ne depend pas du choix qui est fait ci-apres entre                                                               */
/*                  les differentes MACHINEs possibles...                                                                            */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                  \
               &&        (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                          \
               &&        (! defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                            \
                )
#         define    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P
#         nodefine  __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#         nodefine  __VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P
                                        /* Choix de la machine implicite...                                                          */
                                        /*                                                                                           */
                                        /* Le 20030314093814, les symboles 'GESTION_D_UN_*' ont ete changes en                       */
                                        /* '__VERSION__GESTION_D_UN_*' afin de permettre leur recuperation dans                      */
                                        /* 'v $xcc/cpp$Z _VERSION_'.                                                                 */
#    Aif       (         (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                  \
               &&        (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                          \
               &&        (! defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                            \
                )
#    Eif       (         (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                  \
               &&        (! defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                          \
               &&        (! defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                            \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        B U G S   D E   L ' A C C E S   A U   D I S Q U E   V I D E O    P A L - B E T A  :                                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                       \
               ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                         \
                )
                                        /* Ce test ete introduit le 20041110000507 car il manquait...                                */
#         define    BUG_SYSTEME_PAL_BETA_IMPOSSIBLE_DE_PURGER_LE_BUFFER_DES_CARACTERES_EN_ATTENTE_DANS_IKPopen_disque_video             \
                                        /* Ce bug a ete introduit le 20041109161155, lors du remplacement de '$LACT12' par           */ \
                                        /* '$LACT16' en tant que '$sDKVP'. En effet, lors du 'IKPopen_disque_video(...)', il y a     */ \
                                        /* un 'Read(...)' destine a purger le buffer des caracteres en attente. Sur '$LACT16', ce    */ \
                                        /* 'Read(...)' indefiniment avec le message :                                                */ \
                                        /*                                                                                           */ \
                                        /*                  read(3,...,1) = -1 EAGAIN (Resource temporarily unavailable)             */ \
                                        /*                                                                                           */ \
                                        /* ce que j'ai pu voir grace a '/usr/bin/strace' ou grace a l'option "editer=VRAI" dans      */ \
                                        /* 'v $xci/disk_video_P$K editer=' ; le resultat du 'Read(...)' est toujours different de    */ \
                                        /* 'FICHIER_VIDE'. Il faut donc, modifier cette facilite en remplacant un 'IFNE(...)' par    */ \
                                        /* un 'IFGT(...)'...                                                                         */
#    Aif       (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                       \
               ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                         \
                )
#    Eif       (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                       \
               ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                         \
               ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                         \
                )

#    TestADef  BUG_SYSTEME_PAL_BETA_Read                                                                                                \
                                        /* Ce bug necessite la presence d'un buffer intermediaire d'un caractere lors de lectures    */ \
                                        /* de donnees en provenance du disque ('LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA()').           */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         TestADef  BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS                                                                           \
                                        /* Ce bug se produit lorsque l'on repete une sequence d'images avec repetitions. Soit la     */ \
                                        /* suite a repeter 'R' fois :                                                                */ \
                                        /*                                                                                           */ \
                                        /*                  I , I ,..., I   , I                                                      */ \
                                        /*                   1   2       n-1   n                                                     */ \
                                        /*                                                                                           */ \
                                        /* on obtiendra pour les 'R-1' premieres fois :                                              */ \
                                        /*                                                                                           */ \
                                        /*                  I , I ,..., I                                                            */ \
                                        /*                   1   2       n-1                                                         */ \
                                        /*                                                                                           */ \
                                        /* et pour la derniere iteration ('R') :                                                     */ \
                                        /*                                                                                           */ \
                                        /*                  I , I ,..., I   , I                                                      */ \
                                        /*                   1   2       n-1   n                                                     */ \
                                        /*                                                                                           */ \
                                        /* Le 1996022200 j'ai observe une autre anomalie liee a celle-ci en visualisant la sequence  */ \
                                        /* suivante avec repetitions :                                                               */ \
                                        /*                                                                                           */ \
                                        /*                  xivPdf 7 2 / 007042_007058    repetitions=4                              */ \
                                        /*                                                                                           */ \
                                        /* le phenomene percu (uniquement s'il y a repetitions) est le suivant ; sur les 'R-1'       */ \
                                        /* premieres repetitions (dans ce cas '3') on voit en haut de l'image '007058' (la derniere) */ \
                                        /* une petite bande horizontale qui visiblement appartient a l'image suivante '007059'.      */
#         TestADef  BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS_99                                                                        \
                                        /* Ce bug fait que l'on ne peut pas demander plus de 99 repetitions d'une sequence. Cela     */ \
                                        /* est-il un hasard si cela correspond au passage de 2 a 3 chiffres decimaux ?               */
#         TestADef  BUG_SYSTEME_PAL_BETA_PAL_BETA_F_SCAN                                                                                \
                                        /* Ce bug se produit lorsque l'on essaye d'utiliser la fonction 'PAL_BETA_F_SCAN' comme      */ \
                                        /* les autres fonctions de lecture, c'est-a-dire en precisant une adresse de debut et une    */ \
                                        /* adresse de fin ; le disque renvoie alors 'NON_ACQUITTEMENT_DU_DISQUE'...                  */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )
#         TestADef  BUG_SYSTEME_PAL_BETA_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA                                                          \
                                        /* Ce bug documente dans 'v $xtc/disk_vi_P.11$c' fait qu'une duree importante s'ecoule lors  */ \
                                        /* de 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA()' entre la demande de positionnement et le     */ \
                                        /* positionnement effectif sur une piste numerique. De plus, lors du retour aux pistes       */ \
                                        /* analogiques, il y a un passage par l'adresse '08523' (dont le contenu apparait            */ \
                                        /* systematiquement noir) avant d'aller a l'adresse effectivement demandee.                  */ \
                                        /*                                                                                           */ \
                                        /* Monsieur Cagna (49 45 41 08) de chez Sony m'a appele le 1996041800 car il avait dans      */ \
                                        /* son laboratoire un 'LVR4000P' ; nous avons donc fait l'essai suivant :                    */ \
                                        /*                                                                                           */ \
                                        /*                  PAL_BETA_SEARCH                                                          */ \
                                        /*                  une adresse "numerique" (par exemple '90001')                            */ \
                                        /*                  PAL_BETA_ENTER                                                           */ \
                                        /*                                                                                           */ \
                                        /* le disque va a l'adresse demandee en s'arretant un peu en '36251' ; puis nous avons fait  */ \
                                        /* l'essai :                                                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  PAL_BETA_SEARCH                                                          */ \
                                        /*                  une adresse "analogique" (par exemple '1')                               */ \
                                        /*                  PAL_BETA_ENTER                                                           */ \
                                        /*                                                                                           */ \
                                        /* le disque va a l'adresse demandee en s'arretant un peu en cours de route. Ainsi le defaut */ \
                                        /* semble general (malheureusement...).                                                      */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   G E N E R A L E S   P O U R   L E   D I S Q U E   V I D E O   P A L - B E T A   :                  */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    PREMIERE_IMAGE_PAL_BETA                                                                                                  \
                         ZERO                                                                                                           \
                                        /* Numero de la premiere image sur le disque video PAL-Beta,                                 */
#    define    LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                                           \
                         ZERO                                                                                                           \
                                        /* Argument "dummy" utilise lorsque 'NE_PAS_LIRE_DES_DONNEES_NUMERIQUES'...                  */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PREMIERE_IMAGE_ENREGISTRABLE_PAL_BETA                                                                               \
                              SUCC(PREMIERE_IMAGE_PAL_BETA)                                                                             \
                                        /* Numero de la premiere image enregistrable sur le disque video PAL-Beta.                   */

#         define    DERNIERE_IMAGE_PAL_BETA                                                                                             \
                              PRED(36251)                                                                                               \
                                        /* Numero de la derniere image sur le disque video PAL-Beta.                                 */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, cette valeur est recuperee par '$Fdisk_video_P' afin de ne pas definir a       */ \
                                        /* deux endroits differents le meme parametre ('DERNIERE_IMAGE_PAL_BETA' et 'imageN_DKVP').  */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, jusqu'au 1994111700, il y a eu ici :                                           */ \
                                        /*                                                                                           */ \
                                        /*                   #         define    DERNIERE_IMAGE_PAL_BETA                          \  */ \
                                        /*                                                 PARE(36251)                               */ \
                                        /*                                                                                           */ \
                                        /* Or malheureusement, lors de l'enregistrement de la sequence :                             */ \
                                        /*                                                                                           */ \
                                        /*                   xivPdf 1 1 / 036135_036262                                              */ \
                                        /*                                                                                           */ \
                                        /* pour la premiere fois, on s'est heurte a cette limite. Il y a eu alors une erreur faisant */ \
                                        /* que l'enregistrement de l'image '036251' n'a pas ete possible ; cette sequenec est donc   */ \
                                        /* devenue la sequence :                                                                     */ \
                                        /*                                                                                           */ \
                                        /*                   xivPdf 1 1 / 036135_036250                                              */ \
                                        /*                                                                                           */ \
                                        /* La raison est simple ; en effet, la procedure :                                           */ \
                                        /*                                                                                           */ \
                                        /*                   ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut,adresse_de_fin) */ \
                                        /*                                                                                           */ \
                                        /* utilise le point de montage suivant :                                                     */ \
                                        /*                                                                                           */ \
                                        /*                   [NEUT(adresse_de_debut),SUCC(adresse_de_fin)]                           */ \
                                        /*                                                                                           */ \
                                        /* la derniere piste du disque (soit '036251') est donc inaccessible en enregistrement (a    */ \
                                        /* cause du 'SUCC(...)').                                                                    */
#         define    PREMIERE_ZONE_DE_DONNEES_PAL_BETA                                                                                   \
                              PARE(90001)                                                                                               \
                                        /* Numero de la premiere zone de donnees ('user data') sur le disque video PAL-Beta,         */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, cette valeur est recuperee par '$Fdisk_video_P' afin de ne pas definir a       */ \
                                        /* deux endroits differents le meme parametre ('PREMIERE_ZONE_DE_DONNEES_PAL_BETA' et        */ \
                                        /* 'Idisque_DKVP').                                                                          */

#         define    DERNIERE_ZONE_DE_DONNEES_PAL_BETA                                                                                   \
                              ADD2(PREMIERE_ZONE_DE_DONNEES_PAL_BETA,PRED(DEUXp10))                                                     \
                                        /* Numero de la derniere zone de donnees ('user data') sur le disque video PAL-Beta.         */
=         define    NOMBRE_DE_CHIFFRES_PAL_BETA                                                                                         \
                              NOMBRE_DE_CHIFFRES_DECIMAUX(MAX2(DERNIERE_IMAGE_PAL_BETA,DERNIERE_ZONE_DE_DONNEES_PAL_BETA))              \
                                        /* Nombre de chiffres necessaires a coder en decimal un numero d'image du disque PAL-Beta.   */ \
                                        /*                                                                                           */ \
                                        /* La procedure 'NOMBRE_DE_CHIFFRES_DECIMAUX(...)' fut introduite le 20051210182403...       */
#         define    LONGUEUR_DES_BLOCS_DE_DONNEES_PAL_BETA                                                                              \
                              SOIXANTE_QUATRE                                                                                           \
                                        /* Longueur fixe des blocs de donnees numeriques sur le disque video PAL-Beta.               */
#         define    LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA                                                                   \
                              ADD2(LONGUEUR_DES_BLOCS_DE_DONNEES_PAL_BETA,UN)                                                           \
                                        /* Longueur maximale a priori des reponses envoyees par le disque, ce qui correspond         */ \
                                        /* aux donnees numeriques (64), plus leur "check-sum" (+1)...                                */
=         define    LONGUEUR_MAXIMALE_D_UNE_COMMANDE_DU_DISQUE_PAL_BETA                                                                 \
                              ADD2(LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA,SIZC(C_VIDE))
                                        /* Longueur maximale des commandes envoyees au disque video PAL-Beta ; on la rencontre       */
                                        /* lorsqu'on transmet des blocs de donnees numeriques.                                       */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    PREMIERE_IMAGE_ENREGISTRABLE_PAL_BETA                                                                               \
                              NEUT(PREMIERE_IMAGE_PAL_BETA)                                                                             \
                                        /* Numero de la premiere image enregistrable sur le disque video PAL-Beta.                   */
#         define    DERNIERE_IMAGE_PAL_BETA                                                                                             \
                              INFINI                                                                                                    \
                                        /* Numero de la derniere image sur le disque video PAL-Beta.                                 */

                                        /* On notera que 'TAILLE_DES_PAQUETS_HHMMSSII' et 'NOMBRE_DE_PAQUETS_HHMMSSII' doivent       */
                                        /* etre definis avant 'NOMBRE_DE_CHIFFRES_PAL_BETA' qui suit et qui lui est defini en        */
                                        /* '$PASSE_2'.                                                                               */

#         define    TAILLE_DES_PAQUETS_HHMMSSII                                                                                         \
                              CENT                                                                                                      \
                                        /* "Taille des paquets" decimaux dans lesquels on met l'heure, les minutes, les secondes     */ \
                                        /* et le numero de l'image.                                                                  */
#         define    NOMBRE_DE_PAQUETS_HHMMSSII                                                                                          \
                              QUATRE                                                                                                    \
                                        /* Et leur nombre...                                                                         */

                                        /* On notera que 'TAILLE_DES_PAQUETS_HHMMSSII' et 'NOMBRE_DE_PAQUETS_HHMMSSII' doivent       */
                                        /* etre definis avant 'NOMBRE_DE_CHIFFRES_PAL_BETA' qui suit et qui lui est defini en        */
                                        /* '$PASSE_2'.                                                                               */

=         define    NOMBRE_DE_CHIFFRES_PAL_BETA                                                                                         \
                              MUL2(NOMBRE_DE_PAQUETS_HHMMSSII,NOMBRE_DE_CHIFFRES_DECIMAUX(TAILLE_DES_PAQUETS_HHMMSSII))                 \
                                        /* Nombre de chiffres necessaires a coder en decimal un numero d'image du disque PAL-Beta.   */ \
                                        /*                                                                                           */ \
                                        /* La procedure 'NOMBRE_DE_CHIFFRES_DECIMAUX(...)' fut introduite le 20051210182403. On      */ \
                                        /* notera qu'avant cette date figurait ici :                                                 */ \
                                        /*                                                                                           */ \
                                        /*                  INTE(LO1X(TAILLE_DES_PAQUETS_HHMMSSII))                                  */ \
                                        /*                                                                                           */ \
                                        /* et il semble donc qu'il manquait une incrementation d'une unite...                        */
#         define    LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA                                                                   \
                              LONGUEUR_DU_BLOC_D_ETAT_PAL_BETA                                                                          \
                                        /* Longueur maximale a priori des reponses envoyees par le magnetoscope, ce qui correspond   */ \
                                        /* a l'etat de celui-ci...                                                                   */
=         define    LONGUEUR_MAXIMALE_D_UNE_COMMANDE_DU_DISQUE_PAL_BETA                                                                 \
                              ONZE                                                                                                      \
                                        /* Longueur maximale des commandes envoyees au disque video PAL-Beta ; on la rencontre       */
                                        /* avec la commande 'PAL_BETA_SEARCH_WITH_DATA'...                                           */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    define    LONGUEUR_DU_BLOC_D_ETAT_PAL_BETA                                                                                         \
                         CINQ                                                                                                           \
                                        /* Longueur fixe du bloc donnant l'etat du disque video PAL-Beta.                            */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    LONGUEUR_DU_BLOC_D_ADRESSE_COURANTE_PAL_BETA                                                                        \
                              NOMBRE_DE_CHIFFRES_PAL_BETA                                                                               \
                                        /* Longueur fixe du bloc donnant l'adresse courante du disque video PAL-Beta.                */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        A D R E S S A G E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                                                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    ADRESSAGE_PAL_BETA(adresse)                                                                                         \
                              NEUT(adresse)                                                                                             \
                                        /* Fonction de passage des adresses "externes" (celles vues par les programmes utilisant     */ \
                                        /* le disque) et les adresses "internes" (celles connues du disque).                         */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    IMAGE_DANS_LA_SECONDE(adresse)                                                                                      \
                              NEUT(NEUT(REST(adresse,IMAGES_PAR_SECONDE)))                                                              \
                                        /* Numero d'une image par rapport a une seconde.                                             */
#         define    SECONDE_DANS_LA_MINUTE(adresse)                                                                                     \
                              NEUT(REST(QUOD(adresse,IMAGES_PAR_SECONDE),SECONDES_PAR_MINUTE))                                          \
                                        /* Numero d'une seconde par rapport a une minute.                                            */
#         define    MINUTE_DANS_L_HEURE(adresse)                                                                                        \
                              REST(QUOD(QUOD(adresse,IMAGES_PAR_SECONDE),SECONDES_PAR_MINUTE),MINUTES_PAR_HEURE)                        \
                                        /* Numero d'une minute par rapport a une heure.                                              */
#         define    HEURE_DANS_LE_JOUR(adresse)                                                                                         \
                              QUOD(QUOD(QUOD(adresse,IMAGES_PAR_SECONDE),SECONDES_PAR_MINUTE),MINUTES_PAR_HEURE)                        \
                                        /* Numero d'une heure par rapport a un jour.                                                 */

#         define    ADRESSAGE_PAL_BETA(adresse)                                                                                         \
                              AXPB(AXPB(AXPB(HEURE_DANS_LE_JOUR(adresse)                                                                \
                                            ,TAILLE_DES_PAQUETS_HHMMSSII                                                                \
                                            ,MINUTE_DANS_L_HEURE(adresse)                                                               \
                                             )                                                                                          \
                                       ,TAILLE_DES_PAQUETS_HHMMSSII                                                                     \
                                       ,SECONDE_DANS_LA_MINUTE(adresse)                                                                 \
                                        )                                                                                               \
                                  ,TAILLE_DES_PAQUETS_HHMMSSII                                                                          \
                                  ,IMAGE_DANS_LA_SECONDE(adresse)                                                                       \
                                   )                                                                                                    \
                                        /* Fonction de passage des adresses "externes" (celles vues par les programmes utilisant     */ \
                                        /* le disque) et les adresses "internes" (celles connues du disque).                         */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N   D E S   E C H A N G E S   P O U R   L E   D I S Q U E   V I D E O    P A L - B E T A  :              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    UN_ACQUITTEMENT_PAR_CARACTERE                                                                                            \
                         VRAI                                                                                                           \
                                        /* En general, il faut attendre un caractere d'acquittement ('ACQUITTEMENT_DU_DISQUE') par   */ \
                                        /* caractere ecrit,                                                                          */
#    define    PAS_D_ACQUITTEMENT_INDIVIDUEL_DES_CARACTERES                                                                             \
                         NOTL(UN_ACQUITTEMENT_PAR_CARACTERE)                                                                            \
                                        /* Sauf lorsqu'on transmet des donnees numeriques...                                         */ \
                                        /* caractere ecrit,                                                                          */
#    define    ATTENTE_ASYNCHRONE_PAL_BETA                                                                                              \
                         VRAI                                                                                                           \
                                        /* Valeur de l'indicateur logique 'attendre_une_reponse_multiple', lorsque la commande       */ \
                                        /* envoyee envoie quelque chose de plus que 'ACQUITTEMENT_DU_DISQUE'...                      */
#    define    PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                                                                        \
                         NOTL(ATTENTE_ASYNCHRONE_PAL_BETA)                                                                              \
                                        /* Valeur de l'indicateur logique 'attendre_une_reponse_multiple', lorsque la commande       */ \
                                        /* n'envoie que 'ACQUITTEMENT_DU_DISQUE'...                                                  */
#    define    LIRE_DES_DONNEES_NUMERIQUES                                                                                              \
                         VRAI                                                                                                           \
                                        /* Valeur de l'indicateur logique 'lire_des_donnees_numeriques', lorsque la commande         */ \
                                        /* doit en plus lire un bloc de donnees numeriques...                                        */
#    define    NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                                                       \
                         NOTL(LIRE_DES_DONNEES_NUMERIQUES)                                                                              \
                                        /* Valeur de l'indicateur logique 'lire_des_donnees_numeriques', lorsque la commande         */ \
                                        /* ne doit pas lire un bloc de donnees numeriques, ce qui est en general le cas...           */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D I V E R S E S   P O U R   L E   D I S Q U E   V I D E O    P A L - B E T A  :                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    REPETER_UNE_FOIS_UNE_SEQUENCE_PAL_BETA                                                                                   \
                         UN                                                                                                             \
                                        /* Afin de ne repeter qu'une seule fois une sequence...                                      */
#    define    VITESSE_NOMINALE_PAL_BETA                                                                                                \
                         UN                                                                                                             \
                                        /* Definit la vitesse nominale utilisee pour preciser un ralenti ou un accelere qui sont     */ \
                                        /* precisemment egaux a cette meme vitesse...                                                */
#    define    RALENTI_FAIBLE_PAL_BETA                                                                                                  \
                         VITESSE_NOMINALE_PAL_BETA                                                                                      \
                                        /* Ralenti le plus faible (correspond a 1/1 de la vitesse nominale),                         */
#    define    RALENTI_FORT_PAL_BETA                                                                                                    \
                         MOCD                                                                                                           \
                                        /* Ralenti le plus fort (correspond a 1/255 de la vitesse nominale),                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D E F I N I T I O N S   D U   " C H E C K - S U M "   D U   D I S Q U E   V I D E O    P A L - B E T A  :                  */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    AVEC_CHECK_SUM_PAL_BETA                                                                                                  \
                         VRAI                                                                                                           \
                                        /* Lorsqu'un "check-sum" est necessaire a la fin d'une chaine de caracteres.                 */
#    define    SANS_CHECK_SUM_PAL_BETA                                                                                                  \
                         NOTL(AVEC_CHECK_SUM_PAL_BETA)                                                                                  \
                                        /* Lorsqu'un "check-sum" n'est pas necessaire a la fin d'une chaine de caracteres.           */
#    define    INITIALISATION_DU_CHECK_SUM_PAL_BETA                                                                                     \
                         DEFV(CHAR,INIT(check_sum,CARA(ZERO)));                                                                         \
                                        /* Initialisation a zero du 'check-sum'...                                                   */
#    define    MISE_A_JOUR_DU_CHECK_SUM_PAL_BETA(chaine,index)                                                                          \
                         DECR(check_sum,ITb1(chaine,INDX(index,PREMIER_CARACTERE)));                                                    \
                                        /* Calcul progressif du "check-sum" par soustraction toute bete ; on notera le modulo        */ \
                                        /* implicite qui est ainsi fait.                                                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T I O N   D E S   C O M M A N D E S   A U   D I S Q U E   V I D E O    P A L - B E T A  :                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction)                                              \
                         Bblock                                                                                                         \
                         Test(IFNE(fonction,CARA(fonction)))                                                                            \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la fonction demandee ne tient pas sur un octet");                                           \
                              CAL1(Prer1("fonction = %08x\n",fonction));                                                                \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock                                                                                                         \
                                        /* Validation de la fonction demandee (en fait qu'elle tienne sur un octet)...               */

=    define    MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,caractere_argument)                                                      \
                         Bblock                                                                                                         \
                         EGAL(ITb1(Commande,INDX(index,PREMIER_CARACTERE)),caractere_argument);                                         \
                                        /* Mise en place du caractere courant.                                                       */ \
                                                                                                                                        \
                         Test(IFLT(LENG(PREMIER_CARACTERE,PRED(index)),LONGUEUR_MAXIMALE_D_UNE_COMMANDE_DU_DISQUE_PAL_BETA))            \
                              Bblock                                                                                                    \
                              INCR(index,I);                                                                                            \
                                        /* Progression de l'index pour le caractere suivant eventuel...                              */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la commande courante est trop longue");                                                     \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock
                                        /* Mise en place d'un caractere dans une commande quelconque, mais ATTENTION, avec           */
                                        /* progression de l'index de rangement 'index'...                                            */
=    define    MISE_A_JOUR_C_COMMANDE_DISQUE_PAL_BETA(Commande,chaine_argument,generer_un_check_sum)                                    \
                         Bblock                                                                                                         \
                         INITIALISATION_DU_CHECK_SUM_PAL_BETA;                                                                          \
                                        /* A priori, on initialise le "check-sum", meme s'il ne faut pas le calculer...              */ \
                                                                                                                                        \
                         Komp(numero_du_caractere_courant,chain_Xtaille(chaine_argument))                                               \
                              Bblock                                                                                                    \
                              Test(IL_FAUT(generer_un_check_sum))                                                                       \
                                   Bblock                                                                                               \
                                   MISE_A_JOUR_DU_CHECK_SUM_PAL_BETA(chaine_argument,index);                                            \
                                        /* Calcul progressif du "check-sum" par soustraction toute bete, lorsqu'il a ete demande ;   */ \
                                        /* on notera le modulo implicite qui est ainsi fait ; on notera que ce calcul de "check-sum" */ \
                                        /* est fait avant 'MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA()', car en effet, cette derniere   */ \
                                        /* incremente 'index'...                                                                     */ \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,ITb1(chaine_argument,INDX(index,PREMIER_CARACTERE)));     \
                                        /* Mise en place du caractere courant de la chaine argument, en excluant 'END_OF_CHAIN'.     */ \
                              Eblock                                                                                                    \
                         EKom                                                                                                           \
                                                                                                                                        \
                         Test(IL_FAUT(generer_un_check_sum))                                                                            \
                              Bblock                                                                                                    \
                              MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,check_sum);                                               \
                                        /* Mise en place du "check-sum" s'il a ete demande. Ce "check-sum" est donc tel qu'ajoute a  */ \
                                        /* la somme modulo un octet des caracteres, on trouve zero...                                */ \
                              Eblock                                                                                                    \
                         ATes                                                                                                           \
                              Bblock                                                                                                    \
                              Eblock                                                                                                    \
                         ETes                                                                                                           \
                         Eblock
                                        /* Mise en place d'ne chaine de caracteres dans une commande quelconque...                   */

%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande,sequence_d_initialisation,longueur_de_la_commande)                       \
                         Bblock                                                                                                         \
                         DEFV(Int,INIT(index,PREMIER_CARACTERE));                                                                       \
                                        /* Index de la chaine argument de commande.                                                  */ \
                         BLOC(sequence_d_initialisation);                                                                               \
                                        /* Mise en place de tous les arguments...                                                    */ \
                         EGAL(longueur_de_la_commande,LENG(PREMIER_CARACTERE,PRED(index)));                                             \
                                        /* Ainsi, on calcule la longueur de la commande avant l'insertion du 'END_OF_CHAIN' ; on     */ \
                                        /* notera la presence du 'PRED(index)' du au fait qu'on a fait un 'INCR(index,I)' de trop... */ \
                         MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,END_OF_CHAIN);                                                 \
                                        /* Ainsi, on fait de la commande une chaine standard...                                      */ \
                         Eblock
                                        /* Generation d'une commande a 'n' arguments definis en fait dans le 'BLOC' de la sequence   */
                                        /* d'initialisation argument.                                                                */

%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__01(Commande,fonction,longueur_de_la_commande)                                       \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a un argument 'fonction'.                                       */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__02(Commande,fonction,data1,longueur_de_la_commande)                                 \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a deux arguments 'fonction' et 'data1', ou les 'data' sont      */
                                        /* des caracteres.                                                                           */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__03(Commande,fonction,data1,data2,longueur_de_la_commande)                           \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data2);            \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a trois arguments 'fonction', 'data1' et 'data2', ou les        */
                                        /* 'data' sont des caracteres.                                                               */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__04(Commande,fonction,data1,data2,data3,longueur_de_la_commande)                     \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data2);            \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data3);            \
                                        /* Mise en place du quatrieme argument...                                                    */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a quatre arguments 'fonction', 'data1', 'data2' et 'data3',     */
                                        /* ou les 'data' sont des caracteres.                                                        */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__05(Commande,fonction,data1,data2,data3,data4,longueur_de_la_commande)               \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data2);            \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data3);            \
                                        /* Mise en place du quatrieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data4);            \
                                        /* Mise en place du cinquieme argument...                                                    */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a cinq arguments 'fonction', 'data1', 'data2', 'data3'          */
                                        /* et 'data4', ou les 'data' sont des caracteres.                                            */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__06(Commande,fonction,data1,data2,data3,data4,data5,longueur_de_la_commande)         \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data2);            \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data3);            \
                                        /* Mise en place du quatrieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data4);            \
                                        /* Mise en place du cinquieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data5);            \
                                        /* Mise en place du sixieme argument...                                                      */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a six arguments 'fonction', 'data1', 'data2', 'data3',          */
                                        /* 'data4' et 'data5', ou les 'data' sont des caracteres.                                    */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__07(Commande,fonction,data1,data2,data3,data4,data5,data6,longueur_de_la_commande)   \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du premier argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data1);            \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data2);            \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data3);            \
                                        /* Mise en place du quatrieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data4);            \
                                        /* Mise en place du cinquieme argument...                                                    */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data5);            \
                                        /* Mise en place du sixieme argument...                                                      */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,data6);            \
                                        /* Mise en place du septieme argument...                                                     */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a sept arguments 'fonction', 'data1', 'data2', 'data3',         */
                                        /* 'data4', 'data5' et 'data6', ou les 'data' sont des caracteres.                           */

%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__11(Commande,data_1,longueur_de_la_commande)                                         \
                         Bblock                                                                                                         \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_C_COMMANDE_DISQUE_PAL_BETA(Commande                    \
                                                                                                           ,data_1                      \
                                                                                                           ,AVEC_CHECK_SUM_PAL_BETA     \
                                                                                                            );                          \
                                        /* Mise en place du premier argument avec calcul de "check-sum"...                           */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a un argument 'data_1' (avec "check-sum"), ou 'data' est une    */
                                        /* chaine de caracteres.                                                                     */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__12(Commande,fonction,data_1,longueur_de_la_commande)                                \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);                                   \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_C_COMMANDE_DISQUE_PAL_BETA(Commande                    \
                                                                                                           ,data_1                      \
                                                                                                           ,SANS_CHECK_SUM_PAL_BETA     \
                                                                                                            );                          \
                                        /* Mise en place du premier argument sans calcul de "check-sum"...                           */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction);         \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a deux arguments 'fonction' et 'data_1', ou 'data' est une      */
                                        /* chaine de caracteres.                                                                     */
%    define    GENERATION_COMMANDE_DISQUE_PAL_BETA__13(Commande,fonction_1,fonction_2,data_1,longueur_de_la_commande)                   \
                         Bblock                                                                                                         \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction_1);                                 \
                         VALIDATION_DE_LA_FONCTION_D_UNE_COMMANDE_DISQUE_PAL_BETA(Commande,fonction_2);                                 \
                                                                                                                                        \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA_nn(Commande                                                                \
                                                               ,BLOC(MISE_A_JOUR_C_COMMANDE_DISQUE_PAL_BETA(Commande                    \
                                                                                                           ,data_1                      \
                                                                                                           ,SANS_CHECK_SUM_PAL_BETA     \
                                                                                                            );                          \
                                        /* Mise en place du premier argument sans calcul de "check-sum"...                           */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction_2);       \
                                        /* Mise en place du second argument...                                                       */ \
                                                                     MISE_A_JOUR_K_COMMANDE_DISQUE_PAL_BETA(Commande,fonction_1);       \
                                        /* Mise en place du troisieme argument...                                                    */ \
                                                                     )                                                                  \
                                                               ,longueur_de_la_commande                                                 \
                                                                );                                                                      \
                         Eblock
                                        /* Generation d'une commande a trois arguments 'fonction_1', 'fonction_2' et 'data_1', ou    */
                                        /* 'data' est une chaine de caracteres, mais ATTENTION : a l'ordre inverse de l'appel des    */
                                        /* fonctions...                                                                              */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   " P H Y S I Q U E S "   G E N E R A L E S   D U   D I S Q U E   V I D E O    P A L - B E T A  :        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

                                        /* On notera que pour faire des tests via 'v $xtc/disk_vi_P.21$c' (qui permet de faire       */
                                        /* facilement des tests de suites de commandes en envoyant au disque des chaines de          */
                                        /* caracteres alphanumeriques), il est possible de convertir les codes hexa-decimaux         */
                                        /* qui suivent ('0x??') a l'aide de la commande 'xalpha'.                                    */

#    ifdef     __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#         define    PAL_BETA_CONNECT_TO_PROCESSOR                                                                                       \
                              PARE(0xB7)                                                                                                \
                                        /* Connexion entre l'ordinateur Hote et le disque ('Connect Processor Command').             */
#    Aifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#    Eifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000

#    define    PAL_BETA_C_E                                                                                                             \
                         PARE(0x41)                                                                                                     \
                                        /* Reinitialisation des entrees ('Clear Input').                                             */
#    define    PAL_BETA_C_L                                                                                                             \
                         PARE(0x56)                                                                                                     \
                                        /* Reinitialisation generale ('All Clear').                                                  */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_B_W_MODE                                                                                                   \
                              PARE(0xED)                                                                                                \
                                        /* Mise en mode Noir et Blanc ('Black and  White Mode').                                     */
#         define    PAL_BETA_COLOR_MODE                                                                                                 \
                              PARE(0xEC)                                                                                                \
                                        /* Mise en mode couleur ('Color  Mode').                                                     */
#         define    PAL_BETA_FRAME_NUMBER_MODE                                                                                          \
                              PARE(0x55)                                                                                                \
                                        /* Mise en mode "numero d'image" ('Set to Frame Number Mode'), par opposition a 'Set to      */ \
                                        /* Time Code Mode'. ATTENTION : on notera que seul le mode 'PAL_BETA_FRAME_NUMBER_MODE'      */ \
                                        /* permet d'acceder a la zone 'user data area', alors que cela est impossible en mode        */ \
                                        /* 'time code'...                                                                            */
#         define    PAL_BETA_TIME_CODE_MODE                                                                                             \
                              PARE(0xB8)                                                                                                \
                                        /* Mise en mode "time code" ('Set to Time Code Mode'), par opposition a 'Set to Frame        */ \
                                        /* Number Mode'. ATTENTION : on notera que seul le mode 'PAL_BETA_FRAME_NUMBER_MODE'         */ \
                                        /* permet d'acceder a la zone 'user data area', alors que cela est impossible en mode        */ \
                                        /* 'time code'. Ce code a ete introduit le 20020710100924.                                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    ifdef     __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#         define    PAL_BETA_PAL_MODE                                                                                                   \
                              PARE(0xEB)                                                                                                \
                                        /* Mise en mode 'PAL', au cas ou il y aurait du 'NTSC' ('Set to PAL Mode').                  */
#    Aifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#    Eifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000

#    define    PAL_BETA_VIDEO_ON                                                                                                        \
                         PARE(0x27)                                                                                                     \
                                        /* Activation de la video en sortie ('Video Signal Output Whitin Effective Picture Area').   */
#    define    PAL_BETA_VIDEO_OFF                                                                                                       \
                         PARE(0x26)                                                                                                     \
                                        /* Desactivation de la video en sortie ('Mute Video Signal Output').                         */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_INDEX_ON                                                                                                   \
                              PARE(0x50)                                                                                                \
                                        /* Activation de l'affichage numerique sur le moniteur ('Activate Index Display').           */
#         define    PAL_BETA_INDEX_OFF                                                                                                  \
                              PARE(0x51)                                                                                                \
                                        /* Desactivation de l'affichage numerique sur le moniteur ('Deactivate Index Display').      */
#         define    PAL_BETA_BLANK_AREA_SEARCH                                                                                          \
                              PARE(0xBB)                                                                                                \
                                        /* Recherche d'une zone enregistrable sur le disque ("blanche").                             */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    define    PAL_BETA_STATUS_INQ                                                                                                      \
                         PARE(0x67)                                                                                                     \
                                        /* Demande de l'etat du disque ('Request for Recorder').                                     */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_ADDR_INQ                                                                                                   \
                              PARE(0x60)                                                                                                \
                                        /* Demande de l'adresse courante du disque ('Current Adress Inquiry').                       */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    PAL_BETA_ADDR_INQ                                                                                                   \
                              UNDEF                                                                                                     \
                                        /* Bien que n'existant pas sur '__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P',     */ \
                                        /* 'PAL_BETA_ADDR_INQ' est definie malgre tout car 'INFORMATIONS_GENERALES_PAL_BETA(...)'    */ \
                                        /* l'utilise, or exceptionnellement, je cherche a simplifier les choses...                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    define    PAL_BETA_ENTER                                                                                                           \
                         PARE(0x40)                                                                                                     \
                                        /* Entree d'un parametre numerique ('End of Parameter Input').                               */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_SEARCH                                                                                                     \
                              PARE(0x43)                                                                                                \
                                        /* Positionnement sur une image ('Locate Target Address').                                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    PAL_BETA_EXP_8                                                                                                      \
                              PARE(0xDF)                                                                                                \
                                        /* Fonction d'expansion utilisee par exemple pour 'PAL_BETA_EXP_8'.                          */
#         define    PAL_BETA_SEARCH_WITH_DATA                                                                                           \
                              PARE(0x93)                                                                                                \
                                        /* Positionnement sur une image ('Locate Target Address').                                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    define    PAL_BETA_STILL                                                                                                           \
                         PARE(0x4F)                                                                                                     \
                                        /* Demande de mise en mode "image arretee" ('Still Picture').                                */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_STOP                                                                                                       \
                              PAL_BETA_STILL                                                                                            \
                                        /* Demande de mise en mode "stop".                                                           */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    PAL_BETA_STOP                                                                                                       \
                              PARE(0x3F)                                                                                                \
                                        /* Demande de mise en mode "stop".                                                           */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_CONTINUE                                                                                                   \
                              PARE(0x61)                                                                                                \
                                        /* Reprise d'un mode interrompu par 'PAL_BETA_STILL' ('Resume Mode Prior to Still Command'). */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    define    PAL_BETA_MEMORY                                                                                                          \
                         PARE(0x5A)                                                                                                     \
                                        /* Memorisation de la position courante ('Memorize the Current Location').                   */
#    define    PAL_BETA_M_SEARCH                                                                                                        \
                         PARE(0x5B)                                                                                                     \
                                        /* Retour a la position courante memorisee ('Locate the Memorized Address').                 */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_EJECT_ENABLE                                                                                               \
                              PARE(0x74)                                                                                                \
                                        /* Autorisation de l'ejection du support ('Activate Eject Button').                          */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    define    PAL_BETA_EJECT                                                                                                           \
                         PARE(0x2A)                                                                                                     \
                                        /* Ejection du support ('Eject Disc').                                                       */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   " P H Y S I Q U E S "   D ' A V A N C E   D U   D I S Q U E   V I D E O    P A L - B E T A  :          */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    PAL_BETA_F_SCAN                                                                                                          \
                         PARE(0x3E)                                                                                                     \
                                        /* Lecture a 30 fois la vitesse en marche avant ('Scan in Forward Direction').               */
#    define    PAL_BETA_F_FAST                                                                                                          \
                         PARE(0x3B)                                                                                                     \
                                        /* Lecture a vitesse triple en marche avant ('Fast Forward Play').                           */
#    define    PAL_BETA_F_PLAY                                                                                                          \
                         PARE(0x3A)                                                                                                     \
                                        /* Lecture a vitesse nominale en marche avant ('Normal Forward Play').                       */
#    define    PAL_BETA_F_SLOW                                                                                                          \
                         PARE(0x3C)                                                                                                     \
                                        /* Lecture a vitesse lente en marche avant ('Slow Forward Play').                            */
#    define    PAL_BETA_F_STEP                                                                                                          \
                         PARE(0x3D)                                                                                                     \
                                        /* Avance d'une image en marche avant ('Variable Forward Play').                             */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_FWD_STEP_AND_STILL                                                                                         \
                              PARE(0x2B)                                                                                                \
                                        /* Avance d'une image en marche avant ('One Frame Advance').                                 */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    define    PAL_BETA_R_SCAN                                                                                                          \
                         PARE(0x4E)                                                                                                     \
                                        /* Lecture a 30 fois la vitesse en marche arriere ('Scan in Reverse Direction').             */
#    define    PAL_BETA_R_FAST                                                                                                          \
                         PARE(0x4B)                                                                                                     \
                                        /* Lecture a vitesse triple en marche arriere ('Fast Reverse Play').                         */
#    define    PAL_BETA_R_PLAY                                                                                                          \
                         PARE(0x4A)                                                                                                     \
                                        /* Lecture a vitesse nominale en marche arriere ('Normal Reverse Play').                     */
#    define    PAL_BETA_R_SLOW                                                                                                          \
                         PARE(0x4C)                                                                                                     \
                                        /* Lecture a vitesse lente en marche arriere ('Slow Reverse Play').                          */
#    define    PAL_BETA_R_STEP                                                                                                          \
                         PARE(0x4D)                                                                                                     \
                                        /* Recul d'une image en marche arriere ('Variable Reverse Play').                            */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_REV_STEP_AND_STILL                                                                                         \
                              PARE(0x2C)                                                                                                \
                                        /* Recul d'une image en marche arriere ('One Frame Reverse').                                */
#         define    PAL_BETA_REPEAT                                                                                                     \
                              PARE(0x44)                                                                                                \
                                        /* Lecture jusqu'a une certaine adresse ('Repeat Play a Designated Sequence').               */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   " P H Y S I Q U E S "   D E   R E C O R D   D U   D I S Q U E   V I D E O    P A L - B E T A  :        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_FRAME_REC                                                                                                  \
                              PARE(0xE6)                                                                                                \
                                        /* Afin d'enregistrer image par image ('Recording One Frame at a Time').                     */
#         define    PAL_BETA_REC_STANDBY                                                                                                \
                              PARE(0xE0)                                                                                                \
                                        /* Definition des parametres d'enregistrement ('Recording Standby').                         */
#         define    PAL_BETA_REC                                                                                                        \
                              PARE(0xE9)                                                                                                \
                                        /* Enregistrement ('Execution of Recording').                                                */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    PAL_BETA_REC_DUB_REQUEST                                                                                            \
                              PARE(0xFA)                                                                                                \
                                        /* Commande a envoyer imperativement avant 'PAL_BETA_REC' (mais mysterieuse...).             */
#         define    PAL_BETA_REC                                                                                                        \
                              PARE(0xCA)                                                                                                \
                                        /* Enregistrement ('Execution of Recording').                                                */
#         define    PAL_BETA_REC_PAUSE                                                                                                  \
                              PARE(0xCB)                                                                                                \
                                        /* Mise de l'enregistreur en "standby".                                                      */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   " P H Y S I Q U E S "   D E   G E S T I O N   D E S   D O N N E E S                                    */
/*        N U M E R I Q U E S   D U   D I S Q U E   V I D E O    P A L - B E T A  :                                                  */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    PAL_BETA_SET_DATA                                                                                                   \
                              PARE(0xE1)                                                                                                \
                                        /* Mise en place des donnees numeriques avant ecriture ('Register User Data').               */
#         define    PAL_BETA_WRITE_DATA                                                                                                 \
                              PARE(0xE3)                                                                                                \
                                        /* Ecriture des donnees mise en place ci-dessus ('Record UserData').                         */
#         define    PAL_BETA_READ_DATA                                                                                                  \
                              PARE(0xE2)                                                                                                \
                                        /* Lecture des donnees numeriques ('Read Out User Data').                                    */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E   S I M P L E   " T Y P E "   D U   D I S Q U E   V I D E O    P A L - B E T A  :                          */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    COMMANDE_SIMPLE_TYPE_PAL_BETA(fonction_simple)                                                                           \
                         Bblock                                                                                                         \
                         OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                          \
                                                                                                                                        \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(fonction_simple)                                                             \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                                 \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                                                                                                                                        \
                         FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                                \
                         Eblock                                                                                                         \
                                        /* Envoi d'une fonction "simple" et "typique" au disque...                                   */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   D E   L A   L I G N E   D E   C O M M A N D E   D U   D I S Q U E   V I D E O    P A L - B E T A  :        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    OUVERTURE_DE_LA_LIGNE_PAL_BETA(sequence_initiale)                                                                        \
                         Bblock                                                                                                         \
                         DODO(MOIT(IKP_____temporisation_inter_commande));                                                              \
                                        /* On attend un peu avant d'emettre la commande courante, et ce afin d'etre sur que la       */ \
                                        /* precedente a bien ete lancee...                                                           */ \
                         CALS(IKPopen_disque_video());                                                                                  \
                                        /* Ouverture de la ligne.                                                                    */ \
                         BLOC(sequence_initiale);                                                                                       \
                                        /* On ne sait jamais, on fera en general un 'DEBLOCAGE_DU_CLAVIER_PAL_BETA', mais a cause    */ \
                                        /* de 'ARRET_PAL_BETA' et de 'REPRISE_PAL_BETA', on prevoit de faire un 'VIDE', car entre    */ \
                                        /* une commande 'PAL_BETA_STILL' et une commande 'PAL_BETA_CONTINUE', il ne faut rien, de    */ \
                                        /* meme que devant la premiere...                                                            */ \
                         Eblock                                                                                                         \
                                        /* Ouverture de la ligne ; on notera qu'elle ne peut etre faite autour de chaque appel       */ \
                                        /* 'IKPenvoi_d_une_commande_au_disque_video()', et ce a cause des envois de reponses         */ \
                                        /* asynchrones qui "survolent" plusieurs commandes successives...                            */
#    define    FERMETURE_DE_LA_LIGNE_PAL_BETA                                                                                           \
                         Bblock                                                                                                         \
                         CALS(IKPclose_disque_video());                                                                                 \
                                        /* Fermeture de la ligne.                                                                    */ \
                         DODO(MOIT(IKP_____temporisation_inter_commande));                                                              \
                                        /* On attend un peu avant de rendre la main, afin d'etre sur que la commande est finie.      */ \
                         Eblock                                                                                                         \
                                        /* Fermeture de la ligne...                                                                  */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E N E R A T E U R   D E   C O M M A N D E S   A U   D I S Q U E   V I D E O    P A L - B E T A  :                        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    COMMANDE_QUELCONQUE_PAL_BETA(sous_nom,commandes,un_ack_par_caractere,wait_reponse_multiple,lecture_numerique,longueur)   \
                         Bblock                                                                                                         \
                         DEFV(CHAR,DTb1(commande_courante,LONGUEUR_MAXIMALE_D_UNE_COMMANDE_DU_DISQUE_PAL_BETA));                        \
                                        /* Buffer destine a contenir la commande courante apres sa mise au format...                 */ \
                         DEFV(Positive,INIT(longueur_de_la_commande_courante,UNDEF));                                                   \
                                        /* Longueur de la commande courante ; en effet, on ne peut utiliser le 'END_OF_CHAIN',       */ \
                                        /* puisque des caracteres 'NULL's peuvent apparaitre dedans...                               */ \
                         GENERATION_COMMANDE_DISQUE_PAL_BETA`sous_nom(commande_courante                                                 \
                                                                     ,commandes                                                         \
                                                                     ,longueur_de_la_commande_courante                                  \
                                                                      );                                                                \
                                        /* Generation de la commande courante...                                                     */ \
                         CODE_ERROR(IKPenvoi_d_une_commande_au_disque_video(commande_courante                                           \
                                                                           ,longueur_de_la_commande_courante                            \
                                                                           ,un_ack_par_caractere                                        \
                                                                           ,wait_reponse_multiple                                       \
                                                                           ,lecture_numerique                                           \
                                                                           ,longueur                                                    \
                                                                            )                                                           \
                                    );                                                                                                  \
                                        /* Et envoi de la commande avec renvoi de 'CODE_ERREUR' afin de le renvoyer comme '$status'  */ \
                                        /* dans 'v $xci/disk_video_P$K' et d'ainsi pouvoir le tester dans 'v $xci/disk_video_P$Z'... */ \
                         Eblock                                                                                                         \
                                        /* Generation d'une commande quelconque dont on donne les arguments explicitement, et dont   */ \
                                        /* le "type" est donne par 'sous_nom'.                                                       */
#    define    ENTER_PAL_BETA(valeur_numerique,attendre_une_reponse_multiple)                                                           \
                         Bblock                                                                                                         \
                         COMMANDE_QUELCONQUE_PAL_BETA(_12                                                                               \
                                                     ,LIS2(PAL_BETA_ENTER                                                               \
                                                          ,chain_numero(valeur_numerique                                                \
                                                                       ,NOMBRE_DE_CHIFFRES_PAL_BETA                                     \
                                                                        )                                                               \
                                                           )                                                                            \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,attendre_une_reponse_multiple                                                     \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                         DODO(IKP_____temporisation_apres_ENTER);                                                                       \
                                        /* Et oui, a cause de l'envoi des differents parametres des commandes d'enregistrement       */ \
                                        /* (du type 'ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA'), il faut entre chacun de ses appels    */ \
                                        /* a 'ENTER_PAL_BETA(valeur_numerique)', faire un petit dodo...                              */ \
                         Eblock                                                                                                         \
                                        /* 'ENTER' d'une valeur numerique (numero d'image par exemple) dans le disque PAL-Beta ; on  */ \
                                        /* notera avec attention, que l'ordre des arguments ('PAL_BETA_ENTER', puis le numero) est   */ \
                                        /* l'ordre inverse de ce qui est reellement envoye au disque...                              */
#    define    ENTER_PAL_BETA_AVEC_FONCTION(fonction_a_envoyer,valeur_numerique,attendre_une_reponse_multiple)                          \
                         Bblock                                                                                                         \
                         COMMANDE_QUELCONQUE_PAL_BETA(_13                                                                               \
                                                     ,LIS3(PAL_BETA_ENTER                                                               \
                                                          ,fonction_a_envoyer                                                           \
                                                          ,chain_numero(valeur_numerique                                                \
                                                                       ,NOMBRE_DE_CHIFFRES_PAL_BETA                                     \
                                                                        )                                                               \
                                                           )                                                                            \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,attendre_une_reponse_multiple                                                     \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                         DODO(IKP_____temporisation_apres_ENTER);                                                                       \
                                        /* Et oui, a cause de l'envoi des differents parametres des commandes d'enregistrement       */ \
                                        /* (du type 'ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA'), il faut entre chacun de ses appels    */ \
                                        /* a 'ENTER_PAL_BETA(valeur_numerique)', faire un petit dodo...                              */ \
                         Eblock                                                                                                         \
                                        /* 'ENTER' d'une valeur numerique (numero d'image par exemple) dans le disque PAL-Beta avec  */ \
                                        /* envoi avant le 'PAL_BETA_ENTER' d'une fonction specifique 'fonction_a_envoyer' ; on       */ \
                                        /* notera avec attention, que l'ordre des arguments ('PAL_BETA_ENTER', la fonction           */ \
                                        /* specifique 'fonction_a_envoyer', puis le numero) est l'ordre inverse de ce qui est        */ \
                                        /* reellement envoye au disque. Cette deuxieme procedure de 'ENTER' a ete introduite a       */ \
                                        /* cause de la procedure 'LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(...)' qui demande       */ \
                                        /* l'envoi du mode lecture avant la fonction 'PAL_BETA_ENTER'...                             */
#    define    DEBLOCAGE_DU_CLAVIER_PAL_BETA                                                                                            \
                         Bblock                                                                                                         \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(PAL_BETA_C_L)                                                                \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                                 \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                         Eblock                                                                                                         \
                                        /* Reinitialisation de l'acces au commande ("deblocage du clavier").                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        Q U E L Q U E S   C O M M A N D E S   U T I L E S   A U   D I S Q U E   V I D E O    P A L - B E T A  :                    */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    INFORMATIONS_GENERALES_PAL_BETA(fonction_d_acces_aux_informations,longueur_du_bloc_a_lire)                               \
                         Bblock                                                                                                         \
                         begin_nouveau_block                                                                                            \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                        /* On notera le 'VIDE' du au fait que la commande 'PAL_BETA_CONTINUE' fait repasser dans     */ \
                                        /* le mode precedent le 'PAL_BETA_STILL' ; si on mettait ici 'DEBLOCAGE_DU_CLAVIER_PAL_BETA' */ \
                                        /* c'est ce dernier qui serait "rejoue" par 'REPRISE_PAL_BETA'...                            */ \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(fonction_d_acces_aux_informations)                                      \
                                                          ,PAS_D_ACQUITTEMENT_INDIVIDUEL_DES_CARACTERES                                 \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,LIRE_DES_DONNEES_NUMERIQUES                                                  \
                                                          ,longueur_du_bloc_a_lire                                                      \
                                                           );                                                                           \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                         end_nouveau_block                                                                                              \
                                                                                                                                        \
                         begin_nouveau_block                                                                                            \
                              Bblock                                                                                                    \
                              DEFV(Int,INIT(index,PREMIER_CARACTERE));                                                                  \
                                        /* Index du buffer de reception.                                                             */ \
                              CAL2(Prin0("\n"));                                                                                        \
                                                                                                                                        \
                              Komp(numero_du_caractere_courant,longueur_du_bloc_a_lire)                                                 \
                                   Bblock                                                                                               \
                                   Choi(fonction_d_acces_aux_informations)                                                              \
                                        Bblock                                                                                          \
                                        Ca1e(PAL_BETA_STATUS_INQ)                                                                       \
                                             Bblock                                                                                     \
                                             CAL2(Prin1("%02X ",ITb1(IKP_____buffer_de_reception,INDX(index,PREMIER_CARACTERE))));      \
                                        /* Et on edite "betement" les donnees...                                                     */ \
                                             Eblock                                                                                     \
                                        ECa1                                                                                            \
                                                                                                                                        \
                                        Ca1e(PAL_BETA_ADDR_INQ)                                                                         \
                                        /* C'est a cause de ce test que sur '__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P' */ \
                                        /* ou elle n'existe pas, la fonction 'PAL_BETA_ADDR_INQ' est definie quand meme (mais        */ \
                                        /* 'UNDEF'...).                                                                              */ \
                                             Bblock                                                                                     \
                                             CAL2(Prin1("%c",ITb1(IKP_____buffer_de_reception,INDX(index,PREMIER_CARACTERE))));         \
                                        /* Et on convertit l'adresse courante...                                                     */ \
                                             Eblock                                                                                     \
                                        ECa1                                                                                            \
                                                                                                                                        \
                                        Defo                                                                                            \
                                             Bblock                                                                                     \
                                             PRINT_ERREUR("fonction 'fonction_d_acces_aux_informations' sans format d'edition");        \
                                             Eblock                                                                                     \
                                        EDef                                                                                            \
                                        Eblock                                                                                          \
                                   ECho                                                                                                 \
                                                                                                                                        \
                                   INCR(index,I);                                                                                       \
                                        /* Progression de l'index pour le caractere suivant eventuel...                              */ \
                                   Eblock                                                                                               \
                              EKom                                                                                                      \
                                                                                                                                        \
                              CAL2(Prin0("\n"));                                                                                        \
                              Eblock                                                                                                    \
                         end_nouveau_block                                                                                              \
                         Eblock                                                                                                         \
                                        /* Recuperation de l'etat du disque.                                                         */

#    define    ETAT_PAL_BETA                                                                                                            \
                         Bblock                                                                                                         \
                         INFORMATIONS_GENERALES_PAL_BETA(PAL_BETA_STATUS_INQ,LONGUEUR_DU_BLOC_D_ETAT_PAL_BETA);                         \
                         Eblock                                                                                                         \
                                        /* Recuperation de l'etat du disque.                                                         */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    ADRESSE_COURANTE_PAL_BETA                                                                                           \
                              Bblock                                                                                                    \
                              INFORMATIONS_GENERALES_PAL_BETA(PAL_BETA_ADDR_INQ,LONGUEUR_DU_BLOC_D_ADRESSE_COURANTE_PAL_BETA);          \
                              Eblock                                                                                                    \
                                        /* Recuperation de l'adresse courante du disque.                                             */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    ADRESSE_COURANTE_PAL_BETA                                                                                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("l'acces a l'adresse courante est indisponible");                                            \
                              Eblock                                                                                                    \
                                        /* Recuperation de l'adresse courante du disque.                                             */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    ifdef     __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#         define    PREPARATION_SPECIFIQUE_DE_L_INITIALISATION_MINIMALE_PAL_BETA                                                        \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_CONNECT_TO_PROCESSOR)                                          \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                        /* Premiere operation essentielle...                                                         */ \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                                                                                                                                        \
                              RECHERCHE_D_UNE_IMAGE_PAL_BETA(PREMIERE_IMAGE_PAL_BETA);                                                  \
                                        /* Ce positionnement est obligatoire, si l'on veut que des commandes, telle que              */ \
                                        /* 'PAL_BETA_PAL_MODE', soient acceptees juste apres...                                      */ \
                                        /*                                                                                           */ \
                                        /* ATTENTION, on notera la structure :                                                       */ \
                                        /*                                                                                           */ \
                                        /*                  FERMETURE_DE_LA_LIGNE_PAL_BETA;                                          */ \
                                        /*                  RECHERCHE_D_UNE_IMAGE_PAL_BETA(PREMIERE_IMAGE_PAL_BETA);                 */ \
                                        /*                  OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                             */ \
                                        /*                                                                                           */ \
                                        /* le positionnement sur 'PREMIERE_IMAGE_PAL_BETA' se faisant alors que la ligne est fermee, */ \
                                        /* cela et-il normal ? Oui, car la procedure 'RECHERCHE_D_UNE_IMAGE_PAL_BETA(...)' fait      */ \
                                        /* elle-meme un [FERMETURE_DE_LA_LIGNE_PAL_BETA,OUVERTURE_DE_LA_LIGNE_PAL_BETA]... Cette     */ \
                                        /* structure est donc obligatoire...                                                         */ \
                                                                                                                                        \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_06                                                                          \
                                                          ,LIS6(PAL_BETA_C_L                                                            \
                                                               ,PAL_BETA_EJECT_ENABLE                                                   \
                                                               ,COND(IL_FAUT(IKP_____utiliser_le_mode_PAL_BETA_FRAME_NUMBER_MODE)       \
                                                                    ,PAL_BETA_FRAME_NUMBER_MODE                                         \
                                                                    ,PAL_BETA_TIME_CODE_MODE                                            \
                                                                     )                                                                  \
                                                               ,PAL_BETA_COLOR_MODE                                                     \
                                                               ,PAL_BETA_PAL_MODE                                                       \
                                                               ,PAL_BETA_VIDEO_ON                                                       \
                                                                )                                                                       \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                              Eblock                                                                                                    \
                                        /* Preparation specifique a un disque 'LVS6000P-LVR6000' de l'initialisation minimale...     */
#    Aifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000
#    Eifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000

#    ifdef     __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P
#         define    PREPARATION_SPECIFIQUE_DE_L_INITIALISATION_MINIMALE_PAL_BETA                                                        \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_05                                                                          \
                                                          ,LIS5(PAL_BETA_C_L                                                            \
                                                               ,PAL_BETA_EJECT_ENABLE                                                   \
                                                               ,COND(IL_FAUT(IKP_____utiliser_le_mode_PAL_BETA_FRAME_NUMBER_MODE)       \
                                                                    ,PAL_BETA_FRAME_NUMBER_MODE                                         \
                                                                    ,PAL_BETA_TIME_CODE_MODE                                            \
                                                                     )                                                                  \
                                                               ,PAL_BETA_COLOR_MODE                                                     \
                                                               ,PAL_BETA_VIDEO_ON                                                       \
                                                                )                                                                       \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                              Eblock                                                                                                    \
                                        /* Preparation specifique a un disque 'LVR4000P' de l'initialisation minimale...             */
#    Aifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P
#    Eifdef    __VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P

#    ifdef     __VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P
#         define    PREPARATION_SPECIFIQUE_DE_L_INITIALISATION_MINIMALE_PAL_BETA                                                        \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_02                                                                          \
                                                          ,LIS2(PAL_BETA_C_L                                                            \
                                                               ,PAL_BETA_VIDEO_ON                                                       \
                                                                )                                                                       \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                              Eblock                                                                                                    \
                                        /* Preparation specifique a un magnetoscope 'UVW1400P' de l'initialisation minimale...       */
#    Aifdef    __VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P
#    Eifdef    __VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    INITIALISATION_MINIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle)                                             \
                              Bblock                                                                                                    \
                              PREPARATION_SPECIFIQUE_DE_L_INITIALISATION_MINIMALE_PAL_BETA;                                             \
                                        /* Preparation specifique de l'initialisation minimale ; celle-ci depend du type de disque.  */ \
                                                                                                                                        \
                              Test(IL_FAUT(affichage_sur_le_moniteur_de_controle))                                                      \
                                   Bblock                                                                                               \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_INDEX_ON)                                                 \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_INDEX_OFF)                                                \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Initialisation minimale du disque PAL-Beta : en particulier, on autorise l'affichage,     */ \
                                        /* on choisit d'adresser par numero d'image (et non pas par 'time code'), on se met en mode  */ \
                                        /* 'PAL' (au cas ou il y aurait du 'NTSC'...), avec des images en couleurs ; on notera que   */ \
                                        /* l'on ne se met pas en arret sur image ('PAL_BETA_STILL'), car l'initialisation le fait    */ \
                                        /* (par 'PAL_BETA_C_L'). ATTENTION : on notera la presence de 'PAL_BETA_EJECT_ENABLE',       */ \
                                        /* contrairement a toute logique : en effet, cette possibilite est offerte, car elle         */ \
                                        /* permet d'agir physiquement sur le disque (par exemple pour aborter un sequence            */ \
                                        /* d'enregistrement) en cas de probleme avec l'ordinateur ; dans le contraire, dans la       */ \
                                        /* mesure ou, lorsque la telecommande est active, le pupitre de l'enregistreur est inactif   */ \
                                        /* aucun moyen d'acces ne reste, sauf, bien entendu la mise hors tension, ce qui est un      */ \
                                        /* peu trop dangereux...                                                                     */
#         define    INITIALISATION_MAXIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle)                                             \
                              Bblock                                                                                                    \
                              INITIALISATION_MINIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle);                                  \
                                                                                                                                        \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_BLANK_AREA_SEARCH)                                             \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,ATTENTE_ASYNCHRONE_PAL_BETA                                                  \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                        /* Recherche des "zones blanches" afin d'autoriser les enregistrements ulterieurs.           */ \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Initialisation maximale du disque PAL-Beta : en particulier, on autorise l'affichage,     */ \
                                        /* on choisit d'adresser par numero d'image (et non pas par 'time code'), on se met en mode  */ \
                                        /* 'PAL' (au cas ou il y aurait du 'NTSC'...), avec des images en couleurs ; on notera que   */ \
                                        /* l'on ne se met pas en arret sur image ('PAL_BETA_STILL'), car l'initialisation le fait    */ \
                                        /* (par 'PAL_BETA_C_L'). Enfin, on procede a la recherche des zones "blanches"...            */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    INITIALISATION_MINIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle)                                             \
                              Bblock                                                                                                    \
                              PREPARATION_SPECIFIQUE_DE_L_INITIALISATION_MINIMALE_PAL_BETA;                                             \
                                        /* Preparation specifique de l'initialisation minimale ; celle-ci depend du type de disque.  */ \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Initialisation du magnetoscope...                                                         */
#         define    INITIALISATION_MAXIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle)                                             \
                              Bblock                                                                                                    \
                              INITIALISATION_MINIMALE_PAL_BETA(affichage_sur_le_moniteur_de_controle);                                  \
                              Eblock                                                                                                    \
                                        /* Initialisation du magnetoscope...                                                         */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   D ' A R R E T - M A R C H E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                      */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#    define    EJECTION_PAL_BETA                                                                                                        \
                         Bblock                                                                                                         \
                         OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                                   \
                                                                                                                                        \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(PAL_BETA_EJECT)                                                              \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,ATTENTE_ASYNCHRONE_PAL_BETA                                                       \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                                                                                                                                        \
                         FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                                \
                         Eblock                                                                                                         \
                                        /* Ejection du disque (par exemple apres un long enregistrement...).                         */

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    ARRET_PAL_BETA                                                                                                      \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                        /* On notera le 'VIDE' du au fait que la commande 'PAL_BETA_CONTINUE' fait repasser dans     */ \
                                        /* le mode precedent le 'PAL_BETA_STILL' ; si on mettait ici 'DEBLOCAGE_DU_CLAVIER_PAL_BETA' */ \
                                        /* c'est ce dernier qui serait "rejoue" par 'REPRISE_PAL_BETA'...                            */ \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_STILL)                                                         \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Arret de la commande courante, mais ATTENTION, sans 'DODO'...                             */
#         define    REPRISE_PAL_BETA                                                                                                    \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                        /* On notera le 'VIDE' du au fait qu'entre une commande 'PAL_BETA_STILL' et une              */ \
                                        /* commande 'PAL_BETA_CONTINUE', il ne faut rien d'autre...                                  */ \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_CONTINUE)                                                      \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Reprise d'une commande interrompue par 'ARRET_PAL_BETA'...                                */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    ARRET_PAL_BETA                                                                                                      \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(VIDE;));                                                              \
                                        /* On notera le 'VIDE' du au fait que la commande 'PAL_BETA_CONTINUE' fait repasser dans     */ \
                                        /* le mode precedent le 'PAL_BETA_STILL' ; si on mettait ici 'DEBLOCAGE_DU_CLAVIER_PAL_BETA' */ \
                                        /* c'est ce dernier qui serait "rejoue" par 'REPRISE_PAL_BETA'...                            */ \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_STOP)                                                          \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                                                                                                                        \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Arret de la commande courante, mais ATTENTION, sans 'DODO'...                             */
#         define    REPRISE_PAL_BETA                                                                                                    \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la fonction de reprise n'existe pas");                                                      \
                              Eblock                                                                                                    \
                                        /* Reprise d'une commande interrompue par 'ARRET_PAL_BETA'...                                */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    define    SAUVEGARDE_POSITION_PAL_BETA                                                                                             \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_MEMORY);                                                                \
                         Eblock                                                                                                         \
                                        /* Memorisation de la position courante du disque ; cette commande fonctionne en "bascule"   */ \
                                        /* avec la commande 'RESTAURE_POSITION_PAL_BETA'.                                            */
#    define    RESTAURE_POSITION_PAL_BETA                                                                                               \
                         Bblock                                                                                                         \
                         OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                          \
                                                                                                                                        \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(PAL_BETA_M_SEARCH)                                                           \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,ATTENTE_ASYNCHRONE_PAL_BETA                                                       \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                                                                                                                                        \
                         FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                                \
                         Eblock                                                                                                         \
                                        /* Retour a la position courante memorisee du disque ; cette commande fonctionne en          */ \
                                        /* "bascule" avec la commande 'SAUVEGARDE_POSITION_PAL_BETA'.                                */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   D E   R E C H E R C H E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                          */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_de_l_image)                                                                  \
                              Bblock                                                                                                    \
                              Test(INCLff(adresse_de_l_image,PREMIERE_IMAGE_PAL_BETA,DERNIERE_IMAGE_PAL_BETA))                          \
                                   Bblock                                                                                               \
                                   OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                \
                                                                                                                                        \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_SEARCH)                                                   \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                        /* Definition de l'adresse de l'image recherchee ('adresse_de_l_image').                     */ \
                                   ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(adresse_de_l_image),ATTENTE_ASYNCHRONE_PAL_BETA);                  \
                                                                                                                                        \
                                   FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("l'adresse de recherche est inexistante");                                              \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Positionnement sur une image d'adresse donnee.                                            */

#         define    RECHERCHE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees)                                                 \
                              Bblock                                                                                                    \
                              Test(INCLff(adresse_du_bloc_de_donnees                                                                    \
                                         ,PREMIERE_ZONE_DE_DONNEES_PAL_BETA                                                             \
                                         ,DERNIERE_ZONE_DE_DONNEES_PAL_BETA                                                             \
                                          )                                                                                             \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                \
                                                                                                                                        \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_SEARCH)                                                   \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                        /* Definition de l'adresse du bloc de donnees recherche ('adresse_du_bloc_de_donnees').      */ \
                                   ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(adresse_du_bloc_de_donnees),ATTENTE_ASYNCHRONE_PAL_BETA);          \
                                        /* On notera qu'un bloc de donnees est considere comme une image en ce qui concerne son      */ \
                                        /* adressage puisqu'il passe par 'ADRESSAGE_PAL_BETA(...)'...                                */ \
                                                                                                                                        \
                                   FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("l'adresse du bloc demande n'existe pas");                                              \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Positionnement sur un bloc de donnees d'adresse donnee.                                   */

#         define    NOMBRE_DE_TENTATIVES_DE_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA                                                       \
                              QUATRE                                                                                                    \
                                        /* On autorise l'iteration de 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(...)' en cas de defaut  */ \
                                        /* car, en effet, il est apparu le 1994101300 qu'une erreur de parite pouvait apparaitre de  */ \
                                        /* facon transitoire...                                                                      */

#         ifndef    BUG_SYSTEME_PAL_BETA_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA
#              define    LECTURE_DES_BLOCS_DE_DONNEES                                                                                   \
                                   AUTORISE                                                                                             \
                                        /* A priori, la lecture des blocs de donnees est AUTORISEe...                                */
#         Aifndef   BUG_SYSTEME_PAL_BETA_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA
#              define    LECTURE_DES_BLOCS_DE_DONNEES                                                                                   \
                                   INTERDIT                                                                                             \
                                        /* A priori, la lecture des blocs de donnees est INTERDITe...                                */
#         Eifndef   BUG_SYSTEME_PAL_BETA_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA

#         define    LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees,valeur_numerique)                                  \
                              Bblock                                                                                                    \
                              Test(EST_AUTORISE(IKP_____lecture_des_blocs_de_donnees))                                                  \
                                   Bblock                                                                                               \
                                   DEFV(Logical,INIT(iterer_la_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA,VRAI));                            \
                                        /* A priori, 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(...)' doit etre iteree, et ce afin       */ \
                                        /* de le faire au moins une fois...                                                          */ \
                                   DEFV(Int,INIT(nombre_de_tentatives_DE_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA                          \
                                                ,NOMBRE_DE_TENTATIVES_DE_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA                          \
                                                 )                                                                                      \
                                        );                                                                                              \
                                        /* Nombre de tentatives autorisees...                                                        */ \
                                                                                                                                        \
                                   Tant(IL_FAUT(iterer_la_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA))                                       \
                                        Bblock                                                                                          \
                                        DECR(nombre_de_tentatives_DE_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA,I);                          \
                                        /* On decompte les tentatives...                                                             */ \
                                        begin_nouveau_block                                                                             \
                                             Bblock                                                                                     \
                                                                                                                                        \
                                             RECHERCHE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees);                       \
                                        /* Positionnement prealable...                                                               */ \
                                             OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                      \
                                                                                                                                        \
                                             COMMANDE_QUELCONQUE_PAL_BETA(_01                                                           \
                                                                         ,LIS1(PAL_BETA_READ_DATA)                                      \
                                                                         ,UN_ACQUITTEMENT_PAR_CARACTERE                                 \
                                                                         ,ATTENTE_ASYNCHRONE_PAL_BETA                                   \
                                                                         ,LIRE_DES_DONNEES_NUMERIQUES                                   \
                                                                         ,LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA             \
                                                                          );                                                            \
                                        /* Lecture des donnees numeriques.                                                           */ \
                                                                                                                                        \
                                             FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                            \
                                             Eblock                                                                                     \
                                        end_nouveau_block                                                                               \
                                                                                                                                        \
                                        begin_nouveau_block                                                                             \
                                             Bblock                                                                                     \
                                             DEFV(Int,INIT(index,PREMIER_CARACTERE));                                                   \
                                        /* Index du buffer de reception.                                                             */ \
                                             INITIALISATION_DU_CHECK_SUM_PAL_BETA;                                                      \
                                        /* A priori, on initialise le "check-sum".                                                   */ \
                                                                                                                                        \
                                             Komp(numero_du_caractere_courant,LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA)        \
                                                  Bblock                                                                                \
                                                  Test(IFLT(numero_du_caractere_courant                                                 \
                                                           ,LONGUEUR_MAXIMALE_DES_REPONSES_DU_DISQUE_PAL_BETA                           \
                                                            )                                                                           \
                                                       )                                                                                \
                                                       Bblock                                                                           \
                                                       MISE_A_JOUR_DU_CHECK_SUM_PAL_BETA(IKP_____buffer_de_reception,index);            \
                                        /* Calcul progressif du "check-sum" par soustraction toute bete sur tous les caracteres      */ \
                                        /* sauf sur le dernier qui est le "check-sum"...                                             */ \
                                                       INCR(index,I);                                                                   \
                                        /* Progression de l'index pour le caractere suivant eventuel...                              */ \
                                                       Eblock                                                                           \
                                                  ATes                                                                                  \
                                                       Bblock                                                                           \
                                                       Test(IFEQ(check_sum                                                              \
                                                                ,ITb1(IKP_____buffer_de_reception,INDX(index,PREMIER_CARACTERE))        \
                                                                 )                                                                      \
                                                            )                                                                           \
                                                            Bblock                                                                      \
                                                            EGAL(ITb1(IKP_____buffer_de_reception,INDX(index,PREMIER_CARACTERE))        \
                                                                ,END_OF_CHAIN                                                           \
                                                                 );                                                                     \
                                        /* Lorsque le "check-sum" est bon, on le remplace par un 'END_OF_CHAIN' afin que les donnees */ \
                                        /* soient considerees comme une "bonne" chaine de caracteres...                              */ \
                                                            CAL2(Prin1("\n%s\n",IKP_____buffer_de_reception));                          \
                                        /* Et on edite "betement" les donnees...                                                     */ \
                                                            EGAL(iterer_la_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA,FAUX);                 \
                                        /* Puis on demande l'arret de l'iteration de 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(...)'.   */ \
                                                            Eblock                                                                      \
                                                       ATes                                                                             \
                                                            Bblock                                                                      \
                                                            PRINT_ERREUR("les 'check-sum's enregistre et calcule different");           \
                                                            Test(IZLE(nombre_de_tentatives_DE_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA))   \
                                                                 Bblock                                                                 \
                                                                 EGAL(iterer_la_LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA,FAUX);            \
                                        /* On demande l'arret de l'iteration de 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(...)' si il   */ \
                                        /* a eu trop de tentatives...                                                                */ \
                                                                 Eblock                                                                 \
                                                            ATes                                                                        \
                                                                 Bblock                                                                 \
                                        /* Lorsqu'il y a eu un defaut et qu'il est encore possible d'iterer, on le fait...           */ \
                                                                 Eblock                                                                 \
                                                            ETes                                                                        \
                                                            Eblock                                                                      \
                                                       ETes                                                                             \
                                                       Eblock                                                                           \
                                                  ETes                                                                                  \
                                                  Eblock                                                                                \
                                             EKom                                                                                       \
                                             Eblock                                                                                     \
                                        end_nouveau_block                                                                               \
                                        Eblock                                                                                          \
                                   ETan                                                                                                 \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_AVERTISSEMENT("fonction 'LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA' non implementee");             \
                                   PRINT_AVERTISSEMENT("elle retourne tout simplement la valeur numerique argument d'appel");           \
                                        /* ATTENTION, le 19990217135150, les 'PRINT_ATTENTION(...)' ont ete remplace par des         */ \
                                        /* 'PRINT_AVERTISSEMENT(...)' afin de faire disparaitre implicitement ces messages. En       */ \
                                        /* effet, il est evident que ce probleme ne sera jamais corrige et je commence a bien le     */ \
                                        /* connaitre...                                                                              */ \
                                                                                                                                        \
                                   CAL2(Prin1("\n%s\n"                                                                                  \
                                             ,MISE_EN_FORME_D_UN_BLOC_DE_DONNEES_PAL_BETA(valeur_numerique)                             \
                                              )                                                                                         \
                                        );                                                                                              \
                                        /* Et on re-edite "betement" les donnees dans le format attendu...                           */ \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Positionnement sur un bloc de donnees d'adresse donnee et lecture.                        */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_de_l_image)                                                                  \
                              Bblock                                                                                                    \
                              Test(INCLff(adresse_de_l_image,PREMIERE_IMAGE_PAL_BETA,DERNIERE_IMAGE_PAL_BETA))                          \
                                   Bblock                                                                                               \
                                   OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                \
                                                                                                                                        \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_02                                                                     \
                                                               ,LIS2(PAL_BETA_EXP_8                                                     \
                                                                    ,PAL_BETA_SEARCH_WITH_DATA                                          \
                                                                     )                                                                  \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                        /* Definition de l'adresse de l'image recherchee ('adresse_de_l_image').                     */ \
                                   ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(adresse_de_l_image),ATTENTE_ASYNCHRONE_PAL_BETA);                  \
                                                                                                                                        \
                                   FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("l'adresse de recherche est inexistante");                                              \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Positionnement sur une image d'adresse donnee.                                            */

#         define    RECHERCHE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees)                                                 \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("il n'y a pas de blocs de donnees numeriques lors d'une recherche");                         \
                              Eblock                                                                                                    \
                                        /* Positionnement sur un bloc de donnees d'adresse donnee.                                   */

#         define    LECTURE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees,valeur_numerique)                                  \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("il n'y a pas de blocs de donnees numeriques lors d'une lecture");                           \
                              Eblock                                                                                                    \
                                        /* Positionnement sur un bloc de donnees d'adresse donnee et lecture.                        */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   D E   L E C T U R E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    AVANT_UN_PAS_PAL_BETA                                                                                               \
                              Bblock                                                                                                    \
                              COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_FWD_STEP_AND_STILL);                                               \
                              Eblock                                                                                                    \
                                        /* Avance d'une seule image. A noter, que cela fonctionnerait tout aussi bien avec           */ \
                                        /* la commande 'LIS2(PAL_BETA_F_STEP,PAL_BETA_STILL)'.                                       */
#         define    ARRIERE_UN_PAS_PAL_BETA                                                                                             \
                              Bblock                                                                                                    \
                              COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_REV_STEP_AND_STILL);                                               \
                              Eblock                                                                                                    \
                                        /* Recul d'une seule image. A noter, que cela fonctionnerait tout aussi bien avec            */ \
                                        /* la commande 'LIS2(PAL_BETA_R_STEP,PAL_BETA_STILL)'.                                       */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    AVANT_UN_PAS_PAL_BETA                                                                                               \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la commande d'avance d'une image n'est pas disponible");                                    \
                              Eblock                                                                                                    \
                                        /* Avance d'une seule image. A noter, que cela fonctionnerait tout aussi bien avec           */ \
                                        /* la commande 'LIS2(PAL_BETA_F_STEP,PAL_BETA_STILL)'.                                       */
#         define    ARRIERE_UN_PAS_PAL_BETA                                                                                             \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la commande de recul d'une image n'est pas disponible");                                    \
                              Eblock                                                                                                    \
                                        /* Recul d'une seule image. A noter, que cela fonctionnerait tout aussi bien avec            */ \
                                        /* la commande 'LIS2(PAL_BETA_R_STEP,PAL_BETA_STILL)'.                                       */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#    define    RALENTI_PAL_BETA(ralenti)                                                                                                \
                         TRON(ralenti,RALENTI_FAIBLE_PAL_BETA,RALENTI_FORT_PAL_BETA)                                                    \
                                        /* Pour "valider" le taux de ralenti demande...                                              */
#    define    AVANT_LENT_PAL_BETA(ralenti)                                                                                             \
                         Bblock                                                                                                         \
                         OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                          \
                                                                                                                                        \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(PAL_BETA_F_STEP)                                                             \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                                 \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                         ENTER_PAL_BETA(RALENTI_PAL_BETA(ralenti),PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA);                                   \
                                        /* Definition du taux de ralenti : de '1' (vitesse nominale 1/1) a '255' (vitesse            */ \
                                        /* tres lente 1/255).                                                                        */ \
                                                                                                                                        \
                         FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                                \
                         Eblock                                                                                                         \
                                        /* Avance image par image, avec ralenti programmable.                                        */
#    define    ARRIERE_LENT_PAL_BETA(ralenti)                                                                                           \
                         Bblock                                                                                                         \
                         OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                          \
                                                                                                                                        \
                         COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                               \
                                                     ,LIS1(PAL_BETA_R_STEP)                                                             \
                                                     ,UN_ACQUITTEMENT_PAR_CARACTERE                                                     \
                                                     ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                                 \
                                                     ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                                \
                                                     ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                    \
                                                      );                                                                                \
                         ENTER_PAL_BETA(RALENTI_PAL_BETA(ralenti),PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA);                                   \
                                        /* Definition du taux de ralenti : de '1' (vitesse nominale 1/1) a '255' (vitesse            */ \
                                        /* tres lente 1/255).                                                                        */ \
                                                                                                                                        \
                         FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                                \
                         Eblock                                                                                                         \
                                        /* Recul image par image, avec ralenti programmable.                                         */
#    define    AVANT_NORMAL_PAL_BETA                                                                                                    \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_F_PLAY);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche avant du disque PAL-Beta.                                        */
#    define    ARRIERE_NORMAL_PAL_BETA                                                                                                  \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_R_PLAY);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche arriere du disque PAL-Beta.                                      */
#    define    AVANT_RAPIDE_PAL_BETA                                                                                                    \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_F_FAST);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche avant rapide du disque PAL-Beta.                                 */
#    define    ARRIERE_RAPIDE_PAL_BETA                                                                                                  \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_R_FAST);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche arriere rapide du disque PAL-Beta.                               */
#    define    AVANT_EXPLORATION_PAL_BETA                                                                                               \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_F_SCAN);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche avant ultra-rapide du disque PAL-Beta.                           */
#    define    ARRIERE_EXPLORATION_PAL_BETA                                                                                             \
                         Bblock                                                                                                         \
                         COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_R_SCAN);                                                                \
                         Eblock                                                                                                         \
                                        /* Mise en 'PLAY' en marche arriere ultra-rapide du disque PAL-Beta.                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        L E C T U R E   D ' U N E   S E Q U E N C E   D ' I M A G E S  :                                                           */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#         ifdef     BUG_SYSTEME_PAL_BETA_PAL_BETA_F_SCAN
#              define    ENTER_PAL_BETA_F_SCAN(fonction_a_envoyer,valeur_numerique,attendre_une_reponse_multiple)                       \
                                   Bblock                                                                                               \
                                   PRINT_ATTENTION("fonction 'PAL_BETA_F_SCAN' mal implementee et remplacee par 'PAL_BETA_F_FAST'");    \
                                                                                                                                        \
                                   ENTER_PAL_BETA_AVEC_FONCTION(PAL_BETA_F_FAST                                                         \
                                                               ,valeur_numerique                                                        \
                                                               ,attendre_une_reponse_multiple                                           \
                                                                );                                                                      \
                                   Eblock                                                                                               \
                                        /* Fonction 'ENTER_PAL_BETA_AVEC_FONCTION(...)' speciale pour la fonction 'PAL_BETA_F_SCAN'. */
#         Aifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_F_SCAN
#              define    ENTER_PAL_BETA_F_SCAN(fonction_a_envoyer,valeur_numerique,attendre_une_reponse_multiple)                       \
                                   Bblock                                                                                               \
                                   ENTER_PAL_BETA_AVEC_FONCTION(fonction_a_envoyer                                                      \
                                                               ,valeur_numerique                                                        \
                                                               ,attendre_une_reponse_multiple                                           \
                                                                );                                                                      \
                                   Eblock                                                                                               \
                                        /* Fonction 'ENTER_PAL_BETA_AVEC_FONCTION(...)' speciale pour la fonction 'PAL_BETA_F_SCAN'. */
#         Eifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_F_SCAN

#         ifdef     BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS_99
#              define    NOMBRE_DE_REPETITIONS_MAXIMAL                                                                                  \
                                   PRED(CENT)                                                                                           \
                                        /* Nombre de repetitions maximal...                                                          */
#              define    VERIFICATION_DU_NOMBRE_DE_REPETITIONS(nombre_repet)                                                            \
                                   Bblock                                                                                               \
                                   Test(IFGT(nombre_repet,NOMBRE_DE_REPETITIONS_MAXIMAL))                                               \
                                        Bblock                                                                                          \
                                        PRINT_ATTENTION("le nombre de repetitions va etre reduit");                                     \
                                        CAL1(Prer1("(a %d)\n",NOMBRE_DE_REPETITIONS_MAXIMAL));                                          \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                                        /* Verification de la valeur du nombre de repetitions demandees...                           */
#              define    NOMBRE_REPET(nombre_repet)                                                                                     \
                                   COND(IFLE(nombre_repet,NOMBRE_DE_REPETITIONS_MAXIMAL)                                                \
                                       ,nombre_repet                                                                                    \
                                       ,NOMBRE_DE_REPETITIONS_MAXIMAL                                                                   \
                                        )                                                                                               \
                                        /* Nombre de repetitions reellement effectuees.                                              */
#         Aifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS_99
#              define    VERIFICATION_DU_NOMBRE_DE_REPETITIONS(nombre_repet)                                                            \
                                   Bblock                                                                                               \
                                   BLOC(VIDE;);                                                                                         \
                                   Eblock                                                                                               \
                                        /* Verification de la valeur du nombre de repetitions demandees...                           */
#              define    NOMBRE_REPET(nombre_repet)                                                                                     \
                                   nombre_repet                                                                                         \
                                        /* Nombre de repetitions reellement effectuees.                                              */
#         Eifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS_99

#         define    gLECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture,vitesse,nombre_repet,adresse_de_debut,adresse_de_fin)  \
                                        /* ATTENTION au bug 'BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS'...                           */ \
                              Bblock                                                                                                    \
                              Test(IFOU(IFET(I5OU(IFEQ(fonction_lecture,PAL_BETA_F_SCAN)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_F_FAST)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_F_PLAY)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_F_SLOW)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_F_STEP)                                                \
                                                  )                                                                                     \
                                            ,IFLE(adresse_de_debut,adresse_de_fin)                                                      \
                                             )                                                                                          \
                                       ,IFET(I5OU(IFEQ(fonction_lecture,PAL_BETA_R_SCAN)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_R_FAST)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_R_PLAY)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_R_SLOW)                                                \
                                                 ,IFEQ(fonction_lecture,PAL_BETA_R_STEP)                                                \
                                                  )                                                                                     \
                                            ,IFGE(adresse_de_debut,adresse_de_fin)                                                      \
                                             )                                                                                          \
                                        )                                                                                               \
                                   )                                                                                                    \
                                        /* Avant le 20030204093549, le seul test effectue ici etait :                                */ \
                                        /*                                                                                           */ \
                                        /*                  IFLE(adresse_de_debut,adresse_de_fin)                                    */ \
                                        /*                                                                                           */ \
                                        /* mais avec la nouvelle version, on prepare l'avenir (par exemple des sequences lues en     */ \
                                        /* marche arriere...).                                                                       */ \
                                   Bblock                                                                                               \
                                   Test(IFET(IFGE(adresse_de_debut,PREMIERE_IMAGE_ENREGISTRABLE_PAL_BETA)                               \
                                            ,IFLE(adresse_de_fin,DERNIERE_IMAGE_PAL_BETA)                                               \
                                             )                                                                                          \
                                        )                                                                                               \
                                        Bblock                                                                                          \
                                        VERIFICATION_DU_NOMBRE_DE_REPETITIONS(nombre_repet);                                            \
                                                                                                                                        \
                                        RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_de_debut);                                               \
                                        /* Positionnement au debut de la sequence.                                                   */ \
                                        OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                           \
                                                                                                                                        \
                                        COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                \
                                                                    ,LIS1(PAL_BETA_REPEAT)                                              \
                                                                    ,UN_ACQUITTEMENT_PAR_CARACTERE                                      \
                                                                    ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                  \
                                                                    ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                 \
                                                                    ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                     \
                                                                     );                                                                 \
                                        /* Mise du disque en mode 'REPEAT'.                                                          */ \
                                                                                                                                        \
                                        Choi(fonction_lecture)                                                                          \
                                             Bblock                                                                                     \
                                             Ca1e(PAL_BETA_F_SCAN)                                                                      \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA_F_SCAN(fonction_lecture                                                \
                                                                       ,ADRESSAGE_PAL_BETA(adresse_de_fin)                              \
                                                                       ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                               \
                                                                        );                                                              \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement), avec choix de la vitesse de lecture    */ \
                                        /* par l'intermediaire de la fonction 'fonction_lecture'...                                  */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_F_FAST)                                                                      \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA_AVEC_FONCTION(fonction_lecture                                         \
                                                                              ,ADRESSAGE_PAL_BETA(adresse_de_fin)                       \
                                                                              ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                        \
                                                                               );                                                       \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement), avec choix de la vitesse de lecture    */ \
                                        /* par l'intermediaire de la fonction 'fonction_lecture'...                                  */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_F_PLAY)                                                                      \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(adresse_de_fin)                                     \
                                                                ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                      \
                                                                 );                                                                     \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement) ; on notera que pour 'PAL_BETA_F_PLAY'  */ \
                                        /* la fonction utilisee pour la lecture n'a pas besoin d'etre indiquee ('PAL_BETA_F_PLAY'    */ \
                                        /* est implicite et ce a cause de l'odre de {adresse_de_debut,adresse_de_fin}).              */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_F_SLOW)                                                                      \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA_AVEC_FONCTION(fonction_lecture                                         \
                                                                              ,ADRESSAGE_PAL_BETA(adresse_de_fin)                       \
                                                                              ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                        \
                                                                               );                                                       \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement), avec choix de la vitesse de lecture    */ \
                                        /* par l'intermediaire de la fonction 'fonction_lecture'...                                  */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_F_STEP)                                                                      \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA_AVEC_FONCTION(fonction_lecture                                         \
                                                                              ,ADRESSAGE_PAL_BETA(adresse_de_fin)                       \
                                                                              ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                        \
                                                                               );                                                       \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement), avec choix de la vitesse de lecture    */ \
                                        /* par l'intermediaire de la fonction 'fonction_lecture'...                                  */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_R_SCAN)                                                                      \
                                        /* Introduit le 20030204132922...                                                            */ \
                                                  Bblock                                                                                \
                                                  PRINT_ERREUR("la fonction 'PAL_BETA_R_SCAN' ne marche pas et donc non implementee");  \
                                        /* Ceci a ete vu le 20030206163940 grace a 'v $xtc/disk_vi_P.21$c'...                        */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_R_FAST)                                                                      \
                                        /* Introduit le 20030204132922...                                                            */ \
                                                  Bblock                                                                                \
                                                  PRINT_ERREUR("la fonction 'PAL_BETA_R_FAST' ne marche pas et donc non implementee");  \
                                        /* Ceci a ete vu le 20030206163940 grace a 'v $xtc/disk_vi_P.21$c'...                        */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_R_PLAY)                                                                      \
                                        /* Introduit le 20030204132922...                                                            */ \
                                                  Bblock                                                                                \
                                                  ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(adresse_de_fin)                                     \
                                                                ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                      \
                                                                 );                                                                     \
                                        /* Definition de la fin de la sequence (c'est-a-dire la derniere image a lire, et non pas    */ \
                                        /* celle qui la suit comme lors d'un enregistrement) ; on notera que pour 'PAL_BETA_R_PLAY'  */ \
                                        /* la fonction utilisee pour la lecture n'a pas besoin d'etre indiquee ('PAL_BETA_R_PLAY'    */ \
                                        /* est implicite et ce a cause de l'odre de {adresse_de_debut,adresse_de_fin}).              */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_R_SLOW)                                                                      \
                                                  Bblock                                                                                \
                                                  PRINT_ERREUR("la fonction 'PAL_BETA_R_SLOW' ne marche pas et donc non implementee");  \
                                        /* Ceci a ete vu le 20030206163940 grace a 'v $xtc/disk_vi_P.21$c'...                        */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Ca1e(PAL_BETA_R_STEP)                                                                      \
                                        /* Introduit le 20030204132922...                                                            */ \
                                                  Bblock                                                                                \
                                                  PRINT_ERREUR("la fonction 'PAL_BETA_R_STEP' ne marche pas et donc non implementee");  \
                                        /* Ceci a ete vu le 20030206163940 grace a 'v $xtc/disk_vi_P.21$c'...                        */ \
                                                  Eblock                                                                                \
                                             ECa1                                                                                       \
                                                                                                                                        \
                                             Defo                                                                                       \
                                                  Bblock                                                                                \
                                                  PRINT_ERREUR("la fonction demandee n'est pas autorisee pour 'PAL_BETA_F_REPEAT'");    \
                                                  Eblock                                                                                \
                                             EDef                                                                                       \
                                             Eblock                                                                                     \
                                        ECho                                                                                            \
                                                                                                                                        \
                                        Test(IFEQ(fonction_lecture,PAL_BETA_F_STEP))                                                    \
                                             Bblock                                                                                     \
                                             ENTER_PAL_BETA(NOMBRE_REPET(nombre_repet),PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA);              \
                                        /* Definition du nombre de repetitions a effectuer.                                          */ \
                                             ENTER_PAL_BETA(RALENTI_PAL_BETA(vitesse),ATTENTE_ASYNCHRONE_PAL_BETA);                     \
                                        /* Definition de la vitesse de la lecture, et attente de fin de lecture...                   */ \
                                             Eblock                                                                                     \
                                        ATes                                                                                            \
                                             Bblock                                                                                     \
                                             ENTER_PAL_BETA(NOMBRE_REPET(nombre_repet),ATTENTE_ASYNCHRONE_PAL_BETA);                    \
                                        /* Definition du nombre de repetitions a effectuer, et attente de fin de lecture ; on notera */ \
                                        /* qu'il n'y a que pour 'PAL_BETA_F_STEP' que l'on definit une vitesse...                    */ \
                                             Eblock                                                                                     \
                                        ETes                                                                                            \
                                                                                                                                        \
                                        FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                 \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        PRINT_ERREUR("la sequence a lire contient des adresses inexistantes");                          \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la definition de la sequence d'images a lire est mauvaise");                           \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Lecture quelconque d'une sequence commencant a l'adresse 'adresse_de_debut' et se         */ \
                                        /* terminant a l'adresse 'adresse_de_fin'. On notera que l'on peut changer le mode de        */ \
                                        /* lecture par l'intermediaire de 'fonction_lecture' et du taux de ralenti                   */ \
                                        /* par 'vitesse'.                                                                            */

#         ifdef     BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS
#              define    LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture,vitesse,nombre_repet,adresse_debut,adresse_fin)    \
                                   Bblock                                                                                               \
                                   Test(IFGT(NOMBRE_REPET(nombre_repet),UN))                                                            \
                                        Bblock                                                                                          \
                                        VERIFICATION_DU_NOMBRE_DE_REPETITIONS(nombre_repet);                                            \
                                                                                                                                        \
                                        gLECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture                                    \
                                                                                   ,vitesse                                             \
                                                                                   ,NOMBRE_REPET(nombre_repet)                          \
                                                                                   ,adresse_debut                                       \
                                                                                   ,SUCC(adresse_fin)                                   \
                                                                                    );                                                  \
                                        RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_fin);                                                    \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        gLECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture                                    \
                                                                                   ,vitesse                                             \
                                                                                   ,NOMBRE_REPET(nombre_repet)                          \
                                                                                   ,adresse_debut                                       \
                                                                                   ,adresse_fin                                         \
                                                                                    );                                                  \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                                        /* Lecture quelconque d'une sequence commencant a l'adresse 'adresse_debut' et se            */ \
                                        /* terminant a l'adresse 'adresse_fin'. On notera que l'on peut changer le mode de           */ \
                                        /* lecture par l'intermediaire de 'fonction_lecture' et du taux de ralenti                   */ \
                                        /* par 'vitesse'.                                                                            */
#         Aifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS
#              define    LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture,vitesse,nombre_repet,adresse_debut,adresse_fin)    \
                                   Bblock                                                                                               \
                                   VERIFICATION_DU_NOMBRE_DE_REPETITIONS(nombre_repet);                                                 \
                                                                                                                                        \
                                   gLECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture                                         \
                                                                              ,vitesse                                                  \
                                                                              ,NOMBRE_REPET(nombre_repet)                               \
                                                                              ,adresse_debut                                            \
                                                                              ,adresse_fin                                              \
                                                                               )                                                        \
                                   Eblock                                                                                               \
                                        /* Lecture quelconque d'une sequence commencant a l'adresse 'adresse_debut' et se            */ \
                                        /* terminant a l'adresse 'adresse_fin'. On notera que l'on peut changer le mode de           */ \
                                        /* lecture par l'intermediaire de 'fonction_lecture' et du taux de ralenti                   */ \
                                        /* par 'vitesse'.                                                                            */
#         Eifdef    BUG_SYSTEME_PAL_BETA_PAL_BETA_REPETITIONS

#         define    LECTURE_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut,adresse_de_fin)                                                    \
                              Bblock                                                                                                    \
                              LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(PAL_BETA_F_PLAY                                                \
                                                                        ,VITESSE_NOMINALE_PAL_BETA                                      \
                                                                        ,REPETER_UNE_FOIS_UNE_SEQUENCE_PAL_BETA                         \
                                                                        ,adresse_de_debut                                               \
                                                                        ,adresse_de_fin                                                 \
                                                                         );                                                             \
                              Eblock                                                                                                    \
                                        /* Lecture nominale d'une sequence commencant a l'adresse 'adresse_de_debut' et se           */ \
                                        /* terminant a l'adresse 'adresse_de_fin'.                                                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    gLECTURE_PAL_BETA(fonction_lecture)                                                                                 \
                              Bblock                                                                                                    \
                              COMMANDE_SIMPLE_TYPE_PAL_BETA(fonction_lecture);                                                          \
                              Eblock                                                                                                    \
                                        /* Mise en mode lecture du magnetoscope.                                                     */ \
#         define    LECTURE_PAL_BETA                                                                                                    \
                              Bblock                                                                                                    \
                              gLECTURE_PAL_BETA(PAL_BETA_F_PLAY);                                                                       \
                              Eblock                                                                                                    \
                                        /* Mise en mode lecture du magnetoscope a vitesse nominale.                                  */
#         define    LECTURE_QUELCONQUE_D_UNE_SEQUENCE_PAL_BETA(fonction_lecture,vitesse,nombre_repet,adresse_debut,adresse_fin)         \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la lecture quelconque de sequences d'images est indisponible");                             \
                              Eblock                                                                                                    \
                                        /* Lecture quelconque d'une sequence commencant a l'adresse 'adresse_debut' et se            */ \
                                        /* terminant a l'adresse 'adresse_fin'. On notera que l'on peut changer le mode de           */ \
                                        /* lecture par l'intermediaire de 'fonction_lecture' et du taux de ralenti                   */ \
                                        /* par 'vitesse'.                                                                            */
#         define    LECTURE_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut,adresse_de_fin)                                                    \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("la lecture de sequences d'images est indisponible");                                        \
                              Eblock                                                                                                    \
                                        /* Lecture nominale d'une sequence commencant a l'adresse 'adresse_de_debut' et se           */ \
                                        /* terminant a l'adresse 'adresse_de_fin'.                                                   */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   D ' E C R I T U R E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    ENREGISTREMENT_EN_CONTINU_D_UNE_SEQUENCE_PAL_BETA                                                                   \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("l'enregistrement d'images en continu est indisponible");                                    \
                              Eblock                                                                                                    \
                                        /* Commande d'enregistrement d'images en continu.                                            */

#         define    ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut,adresse_de_fin)                                             \
                              Bblock                                                                                                    \
                              Test(IFLE(adresse_de_debut,adresse_de_fin))                                                               \
                                   Bblock                                                                                               \
                                   Test(IFET(IFGE(adresse_de_debut,PREMIERE_IMAGE_ENREGISTRABLE_PAL_BETA)                               \
                                            ,IFLE(adresse_de_fin,DERNIERE_IMAGE_PAL_BETA)                                               \
                                             )                                                                                          \
                                        )                                                                                               \
                                        Bblock                                                                                          \
                                        OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                           \
                                                                                                                                        \
                                        COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                \
                                                                    ,LIS1(PAL_BETA_FRAME_REC)                                           \
                                                                    ,UN_ACQUITTEMENT_PAR_CARACTERE                                      \
                                                                    ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                  \
                                                                    ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                 \
                                                                    ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                     \
                                                                     );                                                                 \
                                        /* Mise en mode image par image a priori...                                                  */ \
                                        COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                \
                                                                    ,LIS1(PAL_BETA_REC_STANDBY)                                         \
                                                                    ,UN_ACQUITTEMENT_PAR_CARACTERE                                      \
                                                                    ,ATTENTE_ASYNCHRONE_PAL_BETA                                        \
                                                                    ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                 \
                                                                    ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                     \
                                                                     );                                                                 \
                                        /* Entree des parametres d'enregistrement :                                                  */ \
                                        ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(NEUT(adresse_de_debut)),PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA);   \
                                        /* Definition du point d'entree ('adresse_de_debut'),                                        */ \
                                        ENTER_PAL_BETA(ADRESSAGE_PAL_BETA(SUCC(adresse_de_fin)),PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA);     \
                                        /* Definition du point de sortie (qui est juste derriere 'adresse_de_fin'),                  */ \
                                        ENTER_PAL_BETA(NBRE(NEUT(adresse_de_debut),NEUT(adresse_de_fin)),ATTENTE_ASYNCHRONE_PAL_BETA);  \
                                        /* Definition du nombre d'images enregistrees.                                               */ \
                                        COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                \
                                                                    ,LIS1(PAL_BETA_REC)                                                 \
                                                                    ,UN_ACQUITTEMENT_PAR_CARACTERE                                      \
                                                                    ,ATTENTE_ASYNCHRONE_PAL_BETA                                        \
                                                                    ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                 \
                                                                    ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                     \
                                                                     );                                                                 \
                                                                                                                                        \
                                        FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                 \
                                        Eblock                                                                                          \
                                   ATes                                                                                                 \
                                        Bblock                                                                                          \
                                        PRINT_ERREUR("la sequence a enregistrer contient des adresses inexistantes");                   \
                                        Eblock                                                                                          \
                                   ETes                                                                                                 \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("la definition de la sequence d'images a enregistrer est mauvaise");                    \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'une sequence commencant a l'adresse 'adresse_de_debut' et se             */ \
                                        /* terminant a l'adresse 'adresse_de_fin'.                                                   */
#         define    ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA(adresse_de_l_image)                                                             \
                              Bblock                                                                                                    \
                              ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA(adresse_de_l_image,adresse_de_l_image);                            \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'une seule image a l'adresse 'adresse_de_l_image'. On notera l'absence    */ \
                                        /* du couple 'OUVERTURE_DE_LA_LIGNE_PAL_BETA'/'FERMETURE_DE_LA_LIGNE_PAL_BETA', puisqu'en    */ \
                                        /* effet, il est present dans 'ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA()'...                  */

#         define    MISE_EN_FORME_D_UN_BLOC_DE_DONNEES_PAL_BETA(valeur_numerique)                                                       \
                              chain_numero(valeur_numerique                                                                             \
                                          ,LONGUEUR_DES_BLOCS_DE_DONNEES_PAL_BETA                                                       \
                                           )                                                                                            \
                                        /* Mise en forme d'un bloc de donnees numeriques avant enregistrement.                       */

#         define    ENREGISTREMENT_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees,valeur_numerique)                           \
                              Bblock                                                                                                    \
                              Test(INCLff(adresse_du_bloc_de_donnees                                                                    \
                                         ,PREMIERE_ZONE_DE_DONNEES_PAL_BETA                                                             \
                                         ,DERNIERE_ZONE_DE_DONNEES_PAL_BETA                                                             \
                                          )                                                                                             \
                                   )                                                                                                    \
                                   Bblock                                                                                               \
                                   RECHERCHE_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees);                                 \
                                        /* Positionnement preliminaire dans la zone des donnees numeriques...                        */ \
                                   OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                \
                                                                                                                                        \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_SET_DATA)                                                 \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                       \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_11                                                                     \
                                                               ,LIS1(MISE_EN_FORME_D_UN_BLOC_DE_DONNEES_PAL_BETA(valeur_numerique))     \
                                                               ,PAS_D_ACQUITTEMENT_INDIVIDUEL_DES_CARACTERES                            \
                                                               ,ATTENTE_ASYNCHRONE_PAL_BETA                                             \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                        /* Preparation des donnees numeriques (avec leur "check-sum"),                               */ \
                                   COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                     \
                                                               ,LIS1(PAL_BETA_WRITE_DATA)                                               \
                                                               ,UN_ACQUITTEMENT_PAR_CARACTERE                                           \
                                                               ,ATTENTE_ASYNCHRONE_PAL_BETA                                             \
                                                               ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                      \
                                                               ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                          \
                                                                );                                                                      \
                                        /* Et ecriture sur le disque...                                                              */ \
                                                                                                                                        \
                                   FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                      \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("le bloc a enregistrer n'existe pas");                                                  \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'un bloc de donnees numeriques a une certaine adresse.                    */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
               ||        (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    ENREGISTREMENT_EN_CONTINU_D_UNE_SEQUENCE_PAL_BETA                                                                   \
                              Bblock                                                                                                    \
                              OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));                                     \
                                                                                                                                        \
                                        /* La sequence suivante :                                                                    */ \
                                        /*                                                                                           */ \
                                        /*        COMMANDE_QUELCONQUE_PAL_BETA(_01                                                   */ \
                                        /*                                    ,LIS1(PAL_BETA_STILL)                                  */ \
                                        /*                                    ,UN_ACQUITTEMENT_PAR_CARACTERE                         */ \
                                        /*                                    ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                     */ \
                                        /*                                    ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                    */ \
                                        /*                                    ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES        */ \
                                        /*                                     );                                                    */ \
                                        /*                                                                                           */ \
                                        /* semble inutile...                                                                         */ \
                              COMMANDE_QUELCONQUE_PAL_BETA(_01                                                                          \
                                                          ,LIS1(PAL_BETA_REC_PAUSE)                                                     \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                        /* Mise en pause, la commande 'PAL_BETA_STILL' etant surement inutile...                     */ \
                                                                                                                                        \
                                        /* ATTENTION, il est impossible d'ecrire :                                                   */ \
                                        /*                                                                                           */ \
                                        /*                  COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_STILL);                           */ \
                                        /*                  COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_REC_PAUSE);                       */ \
                                        /*                  COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_REC_DUB_REQUEST);                 */ \
                                        /*                  COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_REC);                             */ \
                                        /*                                                                                           */ \
                                        /* car, en effet, les couples :                                                              */ \
                                        /*                                                                                           */ \
                                        /*                  OUVERTURE_DE_LA_LIGNE_PAL_BETA(BLOC(DEBLOCAGE_DU_CLAVIER_PAL_BETA;));    */ \
                                        /*                  FERMETURE_DE_LA_LIGNE_PAL_BETA;                                          */ \
                                        /*                                                                                           */ \
                                        /* qui sont a l'interieur de 'COMMANDE_SIMPLE_TYPE_PAL_BETA(...)' font qu'alors l'image      */ \
                                        /* courante enregistree ne l'est pas a partir de 'adresse_de_l_image', mais qu'en fait,      */ \
                                        /* elle ecrase aussi environ une seconde de bande avant...                                   */ \
                                                                                                                                        \
                              COMMANDE_QUELCONQUE_PAL_BETA(_02                                                                          \
                                                          ,LIS2(PAL_BETA_REC_DUB_REQUEST                                                \
                                                               ,PAL_BETA_REC                                                            \
                                                                )                                                                       \
                                                          ,UN_ACQUITTEMENT_PAR_CARACTERE                                                \
                                                          ,PAS_D_ATTENTE_ASYNCHRONE_PAL_BETA                                            \
                                                          ,NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                                           \
                                                          ,LONGUEUR_SI_NE_PAS_LIRE_DES_DONNEES_NUMERIQUES                               \
                                                           );                                                                           \
                                        /* Et mise en enregistrement (voir le commentaire important qui precede...).                 */ \
                              FERMETURE_DE_LA_LIGNE_PAL_BETA;                                                                           \
                              Eblock                                                                                                    \
                                        /* Commande d'enregistrement d'images en continu.                                            */

#         define    ENREGISTREMENT_D_UNE_SEQUENCE_PAL_BETA(adresse_de_debut,adresse_de_fin)                                             \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("l'enregistrement de sequences d'images est indisponible");                                  \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'une sequence commencant a l'adresse 'adresse_de_debut' et se             */ \
                                        /* terminant a l'adresse 'adresse_de_fin'.                                                   */

#         define    DUREE_DE_L_ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA                                                                      \
                              QUATRE                                                                                                    \
                                        /* Pour enregistrer une image, on enregistre en fait pendant quatre secondes. ATTENTION, on  */ \
                                        /* notera qu'une duree inferieure (et par exemple 'DEUX') provoque un comportement           */ \
                                        /* aleatoire (l'image est ou n'est pas enregistree, ce qui doit correspondre au fait         */ \
                                        /* que la commande 'PAL_BETA_STOP' doit arriver trop tot...).                                */
#         define    ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA(adresse_de_l_image)                                                             \
                              Bblock                                                                                                    \
                              Test(INCLff(adresse_de_l_image,PREMIERE_IMAGE_ENREGISTRABLE_PAL_BETA,DERNIERE_IMAGE_PAL_BETA))            \
                                   Bblock                                                                                               \
                                   RECHERCHE_D_UNE_IMAGE_PAL_BETA(adresse_de_l_image);                                                  \
                                        /* Positionnement de la machine...                                                           */ \
                                                                                                                                        \
                                   ENREGISTREMENT_EN_CONTINU_D_UNE_SEQUENCE_PAL_BETA;                                                   \
                                        /* Commande d'enregistrement d'images en continu.                                            */ \
                                                                                                                                        \
                                   DODO(DUREE_DE_L_ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA);                                                \
                                        /* Et ce pendant un certain temps...                                                         */ \
                                   COMMANDE_SIMPLE_TYPE_PAL_BETA(PAL_BETA_STOP);                                                        \
                                        /* Puis on arrete la machine...                                                              */ \
                                                                                                                                        \
                                   Eblock                                                                                               \
                              ATes                                                                                                      \
                                   Bblock                                                                                               \
                                   PRINT_ERREUR("l'adresse de l'image a enregistrer est inexistante");                                  \
                                   Eblock                                                                                               \
                              ETes                                                                                                      \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'une seule image a l'adresse 'adresse_de_l_image'. On notera que dans     */ \
                                        /* ce contexte ('__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P'), l'enregistrement  */ \
                                        /* d'une image se fait en ecrasant la bande a partir de 'adresse_de_l_image' et ce pendant   */ \
                                        /* 'DUREE_DE_L_ENREGISTREMENT_D_UNE_IMAGE_PAL_BETA' secondes. Ainsi, on ne peut pas realiser */ \
                                        /* le remplacement d'une image par une autre (c'est le 'UVW1800P' qui le permettrait, car    */ \
                                        /* c'est en effet une machine de montage...).                                                */
#         define    ENREGISTREMENT_D_UN_BLOC_DE_DONNEES_PAL_BETA(adresse_du_bloc_de_donnees,valeur_numerique)                           \
                              Bblock                                                                                                    \
                              PRINT_ERREUR("l'enregistrement d'un bloc de donnees est indisponible");                                   \
                              Eblock                                                                                                    \
                                        /* Enregistrement d'un bloc de donnees numeriques a une certaine adresse.                    */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O M M A N D E S   D ' E C R I T U R E   D U   D I S Q U E   V I D E O    P A L - B E T A  :                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )
#         define    EDITION_DU_TYPE_DE_MACHINE_PAL_BETA                                                                                 \
                              Bblock                                                                                                    \
                              CAL2(Prin0("la machine utilisee est un disque video 'LVR4000P'\n\n"));                                    \
                              Eblock                                                                                                    \
                                        /* Commande d'enregistrement d'images en continu.                                            */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVR4000P))                                                    \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#         define    EDITION_DU_TYPE_DE_MACHINE_PAL_BETA                                                                                 \
                              Bblock                                                                                                    \
                              CAL2(Prin0("la machine utilisee est un disque video 'LVS6000P-LVR6000'\n\n"));                            \
                              Eblock                                                                                                    \
                                        /* Commande d'enregistrement d'images en continu.                                            */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_DISQUE_PAL_BETA_LVS6000P_LVR6000))                                            \
                )

#    if        (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#         define    EDITION_DU_TYPE_DE_MACHINE_PAL_BETA                                                                                 \
                              Bblock                                                                                                    \
                              CAL2(Prin0("la machine utilisee est un magnetoscope 'UVW1400P'\n\n"));                                    \
                              Eblock                                                                                                    \
                                        /* Commande d'enregistrement d'images en continu.                                            */
#    Aif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )
#    Eif       (         (defined(__VERSION__GESTION_D_UN_MAGNETOSCOPE_PAL_BETA_UVW1400P))                                              \
                )

#Aifdef   __VERSION__COMPILER_LA_GESTION_DU_DISQUE_PAL_BETA
#Eifdef   __VERSION__COMPILER_LA_GESTION_DU_DISQUE_PAL_BETA




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