home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!usc!news.service.uci.edu!unogate!mvb.saic.com!vmsnet-sources
- Newsgroups: vmsnet.sources
- From: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
- Subject: VMS/RTL/KBD, part 02/03
- Date: Tue, 05 Jan 1993 00:07:25 GMT
- Message-ID: <9912958@MVB.SAIC.COM>
- Lines: 1437
- Approved: Mark.Berryman@Mvb.Saic.Com
-
- Submitted-by: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
- Posting-number: Volume 4, Issue 36
- Archive-name: keyboard_rtl/part02
-
- -+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+
- X(*****************************************************************************
- V)
- X
- X
- X
- X
- X(*
- X`20*`20Titre:`09`20`20`20KBD$ROUTINES`20Implementation
- X`20*
- X`20*`20Sujet:`09`20`20`20Implementation`20des`20routines`20KBD$xxx`20("Keyboar
- Vd`20Routines").
- X`20*
- X`20*`20Version:`09`20`20`201.0
- X`20*
- X`20*`20Description:`09`20`20`20`20`20`20`20Ce`20module`20contient`20l'implemen
- Vtation`20de`20la`20fonction
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20KBD$READ_KEYSTROKE`20pe
- Vrmettant`20d'attendre`20une`20action`20au
- X`20*`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20correspon
- Vdant`20a`20la
- X`20*`09`09`20`20`20touche`20actionnee.
- X`20*
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Le`20module
- V`20repose`20sur`20l'algorithme`20producteur-
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20consommateur,`20l'utili
- Vsation`20de`20primitives`20de`20VAX/VMS`20(System
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Services:`20$GETDVI,
- V`20$QIO,`20etc),`20d'un`20sous-programme
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20d'interruption`20(AST)
- V`20et`20de`20la`20librairie`20PASCAL$PPL_ROUTINES.
- X`20*
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Le`20produc
- Vteur`20est`20un`20sous-programme`20d'interruption
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20active`20par`20une`20ac
- Vtion`20au`20clavier,`20alimentant`20une`20memoire
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20tampon.`20Le`20consomma
- Vteur`20est`20la`20fonction`20KBD$READ_KEYSTROKE
- X`20*`09`09`20`20`20qui`20preleve`20a`20chaque`20appel`20une`20sequence`20ANSI
- V`20de`20la`20memoire
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20tampon.
- X`20*
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Lorsque`20l
- Ve`20tampon`20est`20plein,`20l'utilisateur`20est`20prevenu
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonor
- Ve`20emit`20par`20le`20sous-programme`20d'IT.
- X`20*
- X`20*`09`09`20`20`20`20`20`20`20La`20fonction`20KBD$FLUSH_KEYBOARD`20permet`20d
- Ve`20vider`20le
- X`20*`09`09`20`20`20tampon`20clavier.
- X`20*
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Afin`20de`20po
- Vuvoir`20recuperer`20les`20codes`20emis`20par`20CTRL/C,
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTR
- VL/S,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer
- V`20la`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
- X`20*
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20util
- Viser`20KBD$READ_KEYSTROKE,`20il`20necessaire
- X`20*`09`09`20`20`20d'appeler`20au`20prealable`20la`20fonction`20KBD$OPEN_KEYBO
- VARD`20et`20de
- X`20*`09`09`20`20`20terminer`20par`20KBD$CLOSE_KEYBOARD.
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20KBD$OPEN
- V_KEYBOARD`20permet,`20entre`20autres,`20de`20ne
- X`20*`09`09`20`20`20creer`20la`20zone`20tampon`20que`20si`20l'on`20desire`20ree
- Vllement`20utiliser
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20KBD$READ_KEYSTROKE.
- X`20*
- X`20*`20Langage:`09`20`20`20PASCAL`20NON`20STANDARD
- X`20*
- X`20*`20Fichier:`09`20`20`20KBD$ROUTINES.PAS
- X`20*
- X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
- X`20*`09`09`20`20`20Systeme`20d'exploitation:`20VAX/VMS`20Version`205.4-3
- X`20*`09`09`20`20`20Compilateur:`20`20`20`20`20`20`20`20`20`20`20`20VAX`20Pasca
- Vl`20Version`204.3
- X`20*
- X`20*`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
- X`20*
- X`20*`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
- X`20*
- X`20*`09`09`20`20`20Mail:`20`20`20C.E.N.A.
- X`20*`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
- X`20*`09`09`09`20`20`20Orly`20Sud`20205
- X`20*`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
- X`20*
- X`20*`20Creation:`09`20`20`2019/05/92
- X`20*
- X`20*`20Modification:`20`20`2021/12/92
- X`20*
- X`20*)
- X
- X
- X
- X
- X`5BINHERIT(`20'sys$library:starlet',
- X`20`20`20`20`20`20`20`20`20`20'sys$library:pascal$lib_routines',
- X`20`20`20`20`20`20`20`20`20`20'sys$library:pascal$ppl_routines',
- X`20`20`20`20`20`20`20`20`20`20'pascal$kbd_routines'`20)`5D
- X
- X
- XMODULE`20`20kbd$routines`20(G_screen);
- X
- X
- X
- X
- X(*=================================================================`2019/05/92
- V`20*)
- X`09`5BHIDDEN`5D`20CONST
- X(*===========================================================================*
- V)
- X
- X
- X`20`20`20`20NUL`20=`20Chr`20(`200);
- X`20`20`20`20BEL`20=`20Chr`20(`207);
- X`20`20`20`20ESC`20=`20Chr`20(27);
- X
- X
- X(*=================================================================`2019/05/92
- V`20*)
- X`09`5BHIDDEN`5D`20TYPE
- X(*===========================================================================*
- V)
- X
- X
- X`20`20`20`20$WORD`20`20=`20`5BWORD`5D`20-32768..32767;
- X`20`20`20`20$UWORD`20=`20`5BWORD`5D`200..65535;
- X
- X
- X`20`20`20`20T_item_list_cell`20=`20PACKED`20RECORD
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20CASE`20INTEGER`20OF
- X`09`09`09`20`201:`20(`20(*`20Normal`20Cell`20-----*)
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20bufferLength`20`20:`20$UWORD;
- X`09`09`09`20`20itemCode`20`20`20`20`20`20:`20$UWORD;
- X`09`09`09`20`20bufferAddress`20:`20UNSIGNED;
- X`09`09`09`20`20returnAddress`20:`20UNSIGNED`20`20);
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`202:`20(`20(*`20Terminator`20Cell`20-*)
- X`09`09`09`20`20terminator`20`20`20`20:`20UNSIGNED`20`20)
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20END;
- X
- X`20`20`20`20T_item_list_template`20(count`20:`20INTEGER)`20=`20PACKED`20ARRAY
- V`20`5B1..count`5D`20OF
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20T_item_li
- Vst_cell;
- X
- X
- X`20`20`20`20T_IOSB`20=`20RECORD
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20ioStatus`20`20`20:`20$UWORD;
- X`09`09transCount`20:`20$UWORD;
- X`09`20`20`20`20`20`20`20`20deviceInfo`20:`20UNSIGNED
- X`20`20`20`20`20`20`20`20`20`20`20`20`20END;
- X
- X`20`20`20`20T_device_name`20=`20PACKED`20ARRAY`20`5B1..64`5D`20OF`20CHAR;
- X
- X
- X(*=================================================================`2019/05/92
- V`20*)
- X`09`5BHIDDEN`5D`20CONST
- X(*===========================================================================*
- V)
- X
- X
- X`20`20`20`20C_ESCOVERBUF_EMPTY`20=`20kbd$t_escape_overflow_buffer`20`5B1..4
- V`20:`20Chr`20(0)`5D;
- X
- X
- X(*=================================================================`2020/05/92
- V`20*)
- X`09`5BHIDDEN`5D`20VAR
- X(*===========================================================================*
- V)
- X
- X
- X`20`20`20`20G_keyboard_open`20:`20BOOLEAN`20VALUE`20FALSE;
- X`20`20`20`20G_screen`20`20`20`20`20`20`20`20:`20`5BVOLATILE`5D`20TEXT;`20`20
- V`20`20`7B`20Pour`20emettre`20le`20caractere`20BEL`20`20`20`20`7D
- X`20`20`20`20G_channel`20`20`20`20`20`20`20:`20`5BVOLATILE`5D`20$UWORD;`20`20
- V`7B`20Canal`20d'E/S`20affecte`20a`20SYS$INPUT`20`20`7D
- X`20`20`20`20G_iosb`20`20`20`20`20`20`20`20`20`20:`20`5BVOLATILE`5D`20T_IOSB;
- V`20`20`7B`20Bloc`20de`20status`20rempli`20par`20la`20QIO`20`7D
- X`20`20`20`20G_qio_buffer`20`20`20`20:`20`5BVOLATILE`5D`20kbd$t_ansi_sequence;
- X
- X
- X(*=================================================================`2019/05/92
- V`20*)
- X(*`20`20`20`20`20`20`20`20`20`20`20DEFINITIONS`20POUR`20L'ALGORITHME`20PRODUCT
- VEUR/CONSOMMATEUR`20`20`20`20`20`20`20`20`20`20`20*)
- X(*===========================================================================*
- V)
- X
- X
- X`5BHIDDEN`5D`20CONST
- X
- X`20`20`20C_TAILLE_MAX`20=`2032;`20`20`7B`20taille`20maximale`20du`20tampon`20c
- Vlavier`20`7D
- X
- X`5BHIDDEN`5D`20TYPE
- X
- X`20`20`20T_tampon_clavier`20=`20ARRAY`20`5B0..C_TAILLE_MAX-1`5D`20OF`20kbd$t_a
- Vnsi_sequence;
- X
- X`5BHIDDEN`5D`20VAR
- X
- X`20`20`20G_TAMPON_CLAVIER`20`20`20`20`20`20:`20`5BVOLATILE`5D`20`5ET_tampon_cl
- Vavier;
- X`20`20`20G_NB_A_CONSOMMER`20`20`20`20`20`20:`20`5BVOLATILE`5D`20UNSIGNED;
- X`20`20`20G_NB_PLACE_DISPONIBLE`20:`20`5BVOLATILE`5D`200`20..`20C_TAILLE_MAX;
- X`20`20`20G_INDICE_PRODUCTEUR`20`20`20:`20`5BVOLATILE`5D`200`20..`20C_TAILLE_MA
- VX`20-`201;
- X`20`20`20G_INDICE_CONSOMMATEUR`20:`200`20..`20C_TAILLE_MAX`20-`201;
- X
- X
- X
- X
- X(*****************************************************************************
- V)
- X(*****************************************************************************
- V)
- X(**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20S`20O`20U
- V`20S`20`20-`20`20P`20R`20O`20G`20R`20A`20M`20M`20E`20S`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20**)
- X(*****************************************************************************
- V)
- X(*****************************************************************************
- V)
- X
- X
- X
- X
- X(******************************************************************`2022/05/92
- V`20*)
- X(*`09perform`09`09`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BHIDDEN,ASYNCHRONOUS,UNBOUND`5D`20PROCEDURE`20`20perform`20(cond_value`20:
- V`20UNSIGNED);
- X
- XBEGIN
- X
- X`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20LIB$STOP`20(cond_value)
- X
- XEND`20(*`20perform`20*);
- X
- X
- X(******************************************************************`2019/05/92
- V`20*)
- X(*`09SS_get_device_name`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BHIDDEN`5D`20FUNCTION`20`20SS_get_device_name`20(
- X
- X`20`20`20device`20`20`20:`20PACKED`20ARRAY`20`5Bl..u:INTEGER`5D`20OF`20CHAR;
- X`20`20`20VAR`20name`20:`20T_device_name`20)`20:`20UNSIGNED;
- X
- XVAR
- X
- X`20`20`20item_list`20`20`20:`20T_item_list_template`20(2);
- X`20`20`20device_name`20:`20T_device_name;
- X`20`20`20cond_value`20`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20WITH`20item_list`5B1`5D`20DO`20BEGIN
- X
- X`20`20`20`20`20`20itemCode`20`20`20`20`20`20:=`20DVI$_ALLDEVNAM;
- X`20`20`20`20`20`20bufferLength`20`20:=`20size`20`20`20`20`20(device_name);
- X`20`20`20`20`20`20bufferAddress`20:=`20iAddress`20(device_name);
- X`20`20`20`20`20`20returnAddress`20:=`200
- X
- X`20`20`20END`20`7BWITH`7D;
- X
- X`20`20`20item_list`20`5B2`5D.terminator`20:=`200;
- X
- X`20`20`20cond_value`20:=`20$GETDVI`20(itmlst`20:=`20item_list,`20devnam`20:=
- V`20device);
- X
- X`20`20`20IF`20cond_value`20=`20SS$_NORMAL`20THEN`20name`20:=`20device_name;
- X
- X`20`20`20SS_get_device_name`20:=`20cond_value
- X
- XEND`20(*`20SS_get_device_name`20*);
- X
- X
- X(******************************************************************`2022/05/92
- V`20*)
- X`20`20`5BHIDDEN,ASYNCHRONOUS,UNBOUND`5D`20FUNCTION`20`20SS_qio_read`20:`20UNSI
- VGNED;`20`20FORWARD;
- X(*****************************************************************************
- V)
- X
- X
- X(******************************************************************`2022/05/92
- V`20*)
- X(*`09SS_interrupt_keyboard`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BHIDDEN,ASYNCHRONOUS,UNBOUND`5D`20PROCEDURE`20`20interrupt_keyboard;
- X
- XVAR
- X
- X`20`20`20cond_value`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20(***************************)
- X`20`20`20(*`20DEBUT`20BOUCLE`20PRODUCTEUR`20*)
- X`20`20`20(***************************)
- X
- X`20`20`20IF`20(G_iosb.ioStatus`20=`20SS$_NORMAL)`20`20`20`20OR
- X`20`20`20`20`20`20(G_iosb.ioStatus`20=`20SS$_BADESCAPE)`20THEN`20BEGIN
- X
- X`20`20`20`20`20`20`7B+`7D
- X`20`20`20`20`20`20`7B`20La`20condition`20BADESCAPE`20permet`20de`20traiter`20l
- Va`20touche`20F10`20(ESC).
- X`20`20`20`20`20`20`7B-`7D
- X
- X`20`20`20`20`20`20IF`20G_NB_PLACE_DISPONIBLE`20=`200`20THEN
- X
- X`20`20`20`20`20`20`20`20`20Writeln`20(G_screen,`20BEL)`20`20`7B`20Le`20tampon
- V`20clavier`20est`20plein`20!`20`7D
- X
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20G_NB_PLACE_DISPONIBLE`20:=`20G_NB_PLACE_DISPONIBLE
- V`20-`201;
- X
- X`20`20`20`20`20`20`20`20`20G_TAMPON_CLAVIER`5E`20`5BG_INDICE_PRODUCTEUR`5D`20:
- V=`20G_qio_buffer;
- X
- X`20`20`20`20`20`20`20`20`20IF`20G_INDICE_PRODUCTEUR`20=`20C_TAILLE_MAX`20-`201
- V
- X`20`20`20`20`20`20`20`20`20`20`20`20THEN`20G_INDICE_PRODUCTEUR`20:=`200
- X`09`20`20`20`20ELSE`20G_INDICE_PRODUCTEUR`20:=`20G_INDICE_PRODUCTEUR`20+`201;
- X
- X`20`20`20`20`20`20`20`20`20perform`20(PPL$INCREMENT_SEMAPHORE`20(G_NB_A_CONSOM
- VMER))
- X
- X`20`20`20`20`20`20END`20`7BIF`7D;
- X
- X`20`20`20`20`20`20perform`20(SS_qio_read)
- X
- X`20`20`20END
- X`20`20`20ELSE`20IF`20G_iosb.ioStatus`20<>`20SS$_ABORT`20THEN`20BEGIN
- X
- X`20`20`20`20`20`20LIB$STOP`20(G_iosb.ioStatus)
- X
- X`20`20`20END`20`7BIF`7D
- X
- X`20`20`20(*************************)
- X`20`20`20(*`20FIN`20BOUCLE`20PRODUCTEUR`20*)
- X`20`20`20(*************************)
- X
- XEND`20(*`20interrupt_keyboard`20*);
- X
- X
- X(******************************************************************`2022/05/92
- V`20*)
- X(*`09SS_qio_read`09`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- XFUNCTION`20`20SS_qio_read;
- X
- XCONST
- X
- X`20`20`20IO_FUNCTION_CODE`20=`20IO$_READVBLK`20+`20IO$M_EXTEND;
- X
- XVAR
- X
- X`20`20`20item_list`20:`20T_item_list_template`20(2);
- X
- XBEGIN
- X
- X`20`20`20WITH`20item_list`5B1`5D`20DO`20BEGIN
- X
- X`20`20`20`20`20`20itemCode`20`20`20`20`20`20:=`20TRM$_ESCTRMOVR;
- X`20`20`20`20`20`20bufferLength`20`20:=`200;
- X`20`20`20`20`20`20bufferAddress`20:=`20size`20(G_qio_buffer.escOverBuffer);
- X`20`20`20`20`20`20returnAddress`20:=`200
- X
- X`20`20`20END`20`7BWITH`7D;
- X
- X`20`20`20WITH`20item_list`5B2`5D`20DO`20BEGIN
- X
- X`20`20`20`20`20`20itemCode`20`20`20`20`20`20:=`20TRM$_MODIFIERS;
- X`20`20`20`20`20`20bufferLength`20`20:=`200;
- X`20`20`20`20`20`20bufferAddress`20:=`20uOR`20(uOR`20(`20TRM$M_TM_ESCAPE,
- X`09`09`09`09`20`20TRM$M_TM_NOECHO`20),
- X`09`09`09`09`20`20TRM$M_TM_NOFILTR`20);
- X`20`20`20`20`20`20returnAddress`20:=`200
- X
- X`20`20`20END`20`7BWITH`7D;
- X
- X`20`20`20G_qio_buffer.escOverBuffer`20:=`20C_ESCOVERBUF_EMPTY;
- X
- X`20`20`20SS_QIO_read`20:=`20$QIO`20(`20chan`20`20`20:=`20G_channel,
- X`09`09`09`20func`20`20`20:=`20IO_FUNCTION_CODE,
- X`09`09`09`20iosb`20`20`20:=`20G_iosb,
- X`09`09`09`20astadr`20:=`20interrupt_keyboard,
- X`09`09`09`20p1`20`20`20`20`20:=`20G_qio_buffer,
- X`09`09`09`20p2`20`20`20`20`20:=`20size`20(G_qio_buffer),
- X`09`09`09`20p5`20`20`20`20`20:=`20iAddress`20(item_list),
- X`09`09`09`20p6`20`20`20`20`20:=`20size`20(item_list)`20)
- X
- XEND`20(*`20SS_qio_read`20*);
- X
- X
- X(******************************************************************`2019/05/92
- V`20*)
- X(*`09KBD$OPEN_KEYBOARD`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$open_keyboard`20:`20UNSIGNED;
- X
- XVAR
- X
- X`20`20`20cond_value`20:`20UNSIGNED;
- X`20`20`20device`20`20`20`20`20:`20T_device_name;
- X
- XBEGIN
- X
- X`20`20`20IF`20G_keyboard_open`20THEN`20kbd$open_keyboard`20:=`20KBD$_ALREADYOP
- VEN
- X`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20(********************************)
- X`20`20`20`20`20`20(*`20DEBUT`20INITIALISATION`20COMMUNE`20*)
- X`20`20`20`20`20`20(********************************)
- X
- X`20`20`20`20`20`20`7B+`7D
- X`20`20`20`20`20`20`7B`20Creation`20du`20tampon`20AVANT`20l'installation`20du
- V`20S/P`20d'IT.
- X`20`20`20`20`20`20`7B-`7D
- X`20`20`20`20`20`20
- X`20`20`20`20`20`20New`20(G_TAMPON_CLAVIER);
- X
- X`20`20`20`20`20`20cond_value`20:=`20PPL$CREATE_SEMAPHORE`20(
- X`09`09`20`20`20`20`20`20`20semaphore_id`20`20`20`20`20`20:=`20G_NB_A_CONSOMMER
- V,
- X`09`09`20`20`20`20`20`20`20semaphore_maximum`20:=`20C_TAILLE_MAX,
- X`09`09`20`20`20`20`20`20`20semaphore_initial`20:=`200`20);
- X
- X`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$open_keyboard`20:
- V=`20KBD$_OPENERROR
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`09`20G_NB_PLACE_DISPONIBLE`20:=`20C_TAILLE_MAX;
- X
- X`09`20(******************************)
- X`09`20(*`20FIN`20INITIALISATION`20COMMUNE`20*)
- X`09`20(******************************)
- X
- X`09`20(***********************************)
- X`09`20(*`20DEBUT`20INITIALISATION`20PRODUCTEUR`20*)
- X`09`20(***********************************)
- X
- X`09`20`7B+`7D
- X`09`20`7B`20Pour`20emettre`20le`20caractere`20BEL`20lorsque`20le`20tampon`20se
- Vra`20plein.
- X`09`20`7B-`7D
- X
- X`09`20open`20(G_screen,`20'SYS$OUTPUT',`20carriage_control`20:=`20NONE);
- X
- X`09`20Rewrite`20(G_screen);
- X
- X`20`20`20`20`20`20`20`20`20G_INDICE_PRODUCTEUR`20:=`200;
- X
- X`09`20cond_value`20:=`20SS_get_device_name`20('SYS$INPUT',`20device);
- X
- X`09`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$open_keyboard`20:=`20KBD$_OPE
- VNERROR
- X`09`20ELSE`20BEGIN
- X
- X`09`20`20`20`20cond_value`20:=`20$ASSIGN`20(devnam`20:=`20device,`20chan`20:=
- V`20G_channel);
- X
- X`09`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$open_keyboard`20:=
- V`20KBD$_OPENERROR
- X`09`20`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B+`7D
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B`20Premiere`20mise`20en`20plac
- Ve`20du`20S/P`20d'interruption.
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`7B-`7D
- X
- X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20cond_value`20:=`20SS_qio_read;
- X
- X`09`20`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$open_keyboa
- Vrd`20:=`20KBD$_OPENERROR
- X`09`20`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`09`20`20`20`20`20`20`20`20`20`20(*********************************)
- X`09`20`20`20`20`20`20`20`20`20`20(*`20FIN`20INITIALISATION`20PRODUCTEUR`20*)
- X`09`20`20`20`20`20`20`20`20`20`20(*********************************)
- X
- X`09`09`09`09`09`20`20`20`20`20`20`20(*******************************)
- X`09`20`20`20`20`20`20`20`20`20`20G_INDICE_CONSOMMATEUR`20:=`200;`20`20(*`20INI
- VTIALISATION`20CONSOMMATEUR`20*)
- X`09`09`09`09`09`20`20`20`20`20`20`20(*******************************)
- X
- X`09`20`20`20`20`20`20`20`20`20`20G_keyboard_open`20:=`20TRUE;
- X
- X`09`20`20`20`20`20`20`20`20`20`20kbd$open_keyboard`20:=`20KBD$_NORMAL
- X
- X`09`20`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`09`20`20`20`20END`20`7BIF`7D
- X
- X`09`20END`20`7BIF`7D
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BIF`7D
- X
- XEND`20(*`20KBD$OPEN_KEYBOARD`20*);
- X
- X
- X(******************************************************************`2026/05/92
- V`20*)
- X(*`09KBD$FLUSH_KEYBOARD`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$flush_keyboard`20:`20UNSIGNED;
- X
- XVAR
- X
- X`20`20`20cond_value`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20IF`20NOT`20G_keyboard_open`20THEN`20kbd$flush_keyboard`20:=`20KBD$_NO
- VTOPEN
- X`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20cond_value`20:=`20PPL$CREATE_SEMAPHORE`20(
- X`09`09`20`20`20`20`20`20`20semaphore_id`20`20`20`20`20`20:=`20G_NB_A_CONSOMMER
- V,
- X`09`09`20`20`20`20`20`20`20semaphore_maximum`20:=`20C_TAILLE_MAX,
- X`09`09`20`20`20`20`20`20`20semaphore_initial`20:=`200`20);
- X
- X`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$flush_keyboard
- V`20:=`20KBD$_FLUSHERROR
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`09`20G_NB_PLACE_DISPONIBLE`20:=`20C_TAILLE_MAX;
- X
- X`20`20`20`20`20`20`20`20`20G_INDICE_PRODUCTEUR`20`20`20:=`200;
- X`09`20G_INDICE_CONSOMMATEUR`20:=`200;
- X
- X`09`20kbd$flush_keyboard`20:=`20KBD$_NORMAL
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BIF`7D
- X
- XEND`20(*`20KBD$FLUSH_KEYBOARD`20*);
- X
- X
- X(******************************************************************`2019/05/92
- V`20*)
- X(*`09KBD$CLOSE_KEYBOARD`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$close_keyboard`20:`20UNSIGNED;
- X
- XVAR
- X
- X`20`20`20cond_value`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20IF`20NOT`20G_keyboard_open`20THEN`20kbd$close_keyboard`20:=`20KBD$_AL
- VREADYCLOSE
- X`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20G_keyboard_open`20:=`20FALSE;
- X
- X`20`20`20`20`20`20cond_value`20:=`20$CANCEL`20(chan`20:=`20G_channel);
- X
- X`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$close_keyboard
- V`20:=`20KBD$_CLOSEERROR
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20Close`20(G_screen);
- X
- X`20`20`20`20`20`20`20`20`20Dispose`20(G_TAMPON_CLAVIER);
- X
- X`20`20`20`20`20`20`20`20`20kbd$close_keyboard`20:=`20KBD$_NORMAL
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BIF`7D
- X
- XEND`20(*`20KBD$CLOSE_KEYBOARD`20*);
- X
- X
- X(******************************************************************`2019/05/92
- V`20*)
- X(*`09KBD$READ_KEYSTROKE`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$read_keystroke`20(
- X
- X`20`20`20VAR`20key`20:`20kbd$t_ansi_sequence)`20:`20UNSIGNED;
- X
- X`7B+`7D
- X`7B`20Cette`20fonction`20se`20met`20en`20attente`20d'une`20action`20au`20clavi
- Ver`20et`20renvoie`20la
- X`7B`20sequence`20ANSI`20de`20la`20touche`20qui`20vient`20d'etre`20actionnee.
- X`7B-`7D
- X
- XVAR
- X
- X`20`20`20cond_value`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20IF`20NOT`20G_keyboard_open`20THEN`20kbd$read_keystroke`20:=`20KBD$_NO
- VTOPEN
- X`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20(*****************************)
- X`20`20`20`20`20`20(*`20DEBUT`20BOUCLE`20CONSOMMATEUR`20*)
- X`20`20`20`20`20`20(*****************************)
- X
- X`20`20`20`20`20`20cond_value`20:=`20PPL$DECREMENT_SEMAPHORE`20(G_NB_A_CONSOMME
- VR);
- X
- X`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$read_keystroke
- V`20:=`20KBD$_READERROR
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20key`20:=`20G_TAMPON_CLAVIER`5E`20`5BG_INDICE_CONSOM
- VMATEUR`5D;
- X
- X`20`20`20`20`20`20`20`20`20IF`20G_INDICE_CONSOMMATEUR`20=`20C_TAILLE_MAX`20-
- V`201
- X`20`20`20`20`20`20`20`20`20`20`20`20THEN`20G_INDICE_CONSOMMATEUR`20:=`200
- X`20`20`20`20`20`20`20`20`20`20`20`20ELSE`20G_INDICE_CONSOMMATEUR`20:=`20G_INDI
- VCE_CONSOMMATEUR`20+`201;
- X
- X`20`20`20`20`20`20`20`20`20G_NB_PLACE_DISPONIBLE`20:=`20G_NB_PLACE_DISPONIBLE
- V`20+`201;
- X
- X`20`20`20`20`20`20`20`20`20kbd$read_keystroke`20:=`20KBD$_NORMAL
- X
- X`20`20`20`20`20`20`20`20`20(***************************)
- X`20`20`20`20`20`20`20`20`20(*`20FIN`20BOUCLE`20CONSOMMATEUR`20*)
- X`20`20`20`20`20`20`20`20`20(***************************)
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BIF`7D
- X
- XEND`20(*`20KBD$READ_KEYSTROKE`20*);
- X
- X
- X(******************************************************************`2025/05/92
- V`20*)
- X(*`09KBD$KEY_PRESSED`09`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$key_pressed`20(VAR`20yes`20:`20BOOLEAN)`20:
- V`20UNSIGNED;
- X
- XVAR
- X
- X`20`20`20nombre`20`20`20`20`20:`20$WORD;
- X`20`20`20cond_value`20:`20UNSIGNED;
- X
- XBEGIN
- X
- X`20`20`20IF`20NOT`20G_keyboard_open`20THEN`20kbd$key_pressed`20:=`20KBD$_NOTOP
- VEN
- X`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20cond_value`20:=`20PPL$READ_SEMAPHORE`20(G_NB_A_CONSOMMER,
- V`20nombre);
- X
- X`20`20`20`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20kbd$key_pressed`20:=
- V`20KBD$_KEYPRESERROR
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20yes`20:=`20nombre`20<>`200;
- X
- X`20`20`20`20`20`20`20`20`20kbd$key_pressed`20:=`20KBD$_NORMAL
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BIF`7D
- X
- XEND`20(*`20KBD$KEY_PRESSED`20*);
- X
- X
- X(******************************************************************`2019/05/92
- V`20*)
- X(*`09KBD$CVT_ANSI_SMG`09`09`09`09`09`09`20`20`20`20`20*)
- X(*****************************************************************************
- V)
- X
- X`5BGLOBAL`5D`20FUNCTION`20`20kbd$cvt_ansi_smg`20(sequence`20:`20kbd$t_ansi_seq
- Vuence)`20:`20$UWORD;
- X
- XBEGIN
- X
- X`20`20`20WITH`20sequence`20DO`20BEGIN
- X
- X`20`20`20`20`20`20IF`20escOverBuffer`20=`20C_ESCOVERBUF_EMPTY`20THEN`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20(********************)
- X`09`20(*`20ASCII`20Characters`20*)
- X`20`20`20`20`20`20`20`20`20(********************)
- X
- X`20`20`20`20`20`20`20`20`20kbd$cvt_ansi_smg`20:=`20Ord`20(ascii)
- X
- X`20`20`20`20`20`20END
- X`20`20`20`20`20`20ELSE`20IF`20ascii`20=`20ESC`20THEN`20BEGIN
- X
- X`20`20`20`20`20`20`20`20`20(********************)
- X`09`20(*`20Escape`20Sequences`20*)
- X`20`20`20`20`20`20`20`20`20(********************)
- X
- X`09`20IF`20escOverBuffer`20`5B1`5D`20=`20'O'`20THEN`20BEGIN`20`20(*`20SS3`20*)
- V
- X
- X`09`20`20`20`20CASE`20escOverBuffer`20`5B2`5D`20OF
- X
- X`09`20`20`20`20`20`20`20(*`20Arrow`20Keys`20-`20Application`20*)
- X
- X`09`20`20`20`20`20`20`20'A'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UP;
- X`09`20`20`20`20`20`20`20'B'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_DOWN;
- X`09`20`20`20`20`20`20`20'C'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_RIGHT;
- X`09`20`20`20`20`20`20`20'D'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_LEFT;
- X
- X`09`20`20`20`20`20`20`20(*`20Numeric`20Keypad`20Keys`20-`20Application`20*)
- X
- X`09`20`20`20`20`20`20`20'M'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_ENTER;
- X`09`20`20`20`20`20`20`20'P'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PF1;
- X`09`20`20`20`20`20`20`20'Q'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PF2;
- X`09`20`20`20`20`20`20`20'R'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PF3;
- X`09`20`20`20`20`20`20`20'S'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PF4;
- X`09`20`20`20`20`20`20`20'l'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_COMMA;
- X`09`20`20`20`20`20`20`20'm'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_MINUS;
- X`09`20`20`20`20`20`20`20'n'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PERIOD;
- X`09`20`20`20`20`20`20`20'p'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP0;
- X`09`20`20`20`20`20`20`20'q'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP1;
- X`09`20`20`20`20`20`20`20'r'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP2;
- X`09`20`20`20`20`20`20`20's'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP3;
- X`09`20`20`20`20`20`20`20't'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP4;
- X`09`20`20`20`20`20`20`20'u'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP5;
- X`09`20`20`20`20`20`20`20'v'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP6;
- X`09`20`20`20`20`20`20`20'w'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP7;
- X`09`20`20`20`20`20`20`20'x'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP8;
- X`09`20`20`20`20`20`20`20'y'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_KP9
- X
- X`09`20`20`20`20`20`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`09`20`20`20`20END`20`7BCASE`7D
- X
- X`09`20END
- X`09`20ELSE`20IF`20escOverBuffer`20`5B1`5D`20=`20'`5B'`20THEN`20BEGIN`20`20(*
- V`20CSI`20*)
- X
- X`09`20`20`20`20IF`20escOverBuffer`20`5B3`5D`20=`20'`7E'`20THEN`20BEGIN
- X
- X`09`20`20`20`20`20`20`20CASE`20escOverBuffer`20`5B2`5D`20OF
- X
- X`09`09`20`20(*`20Editing`20Keys`20*)
- X
- X`09`09`20`20'1'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_FIND;
- X`09`09`20`20'2'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_INSERT_HERE;
- X`09`09`20`20'3'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_REMOVE;
- X`09`09`20`20'4'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_SELECT;
- X`09`09`20`20'5'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_PREV_SCREEN;
- X`09`09`20`20'6'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_NEXT_SCREEN
- X
- X`09`09`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`09`20`20`20`20`20`20`20END`20`7BCASE`7D
- X
- X`09`20`20`20`20END
- X`09`20`20`20`20ELSE`20IF`20escOverBuffer`20`5B4`5D`20=`20'`7E'`20THEN`20BEGIN
- X
- X`09`20`20`20`20`20`20`20CASE`20escOverBuffer`20`5B2`5D`20OF
- X
- X`09`09`20`20'1'`20:`20CASE`20escOverBuffer`20`5B3`5D`20OF
- X`09`09`09`20`20`20'7'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F6;
- X`09`09`09`20`20`20'8'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F7;
- X`09`09`09`20`20`20'9'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F8
- X`09`09`09`20`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X`09`09`09END`20`7BCASE`7D;
- X`09`09`20`20'2'`20:`20CASE`20escOverBuffer`20`5B3`5D`20OF
- X`09`09`09`20`20`20'0'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F9;
- X`09`09`09`20`20`20'1'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F10;
- X`09`09`09`20`20`20'3'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F11;
- X`09`09`09`20`20`20'4'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F12;
- X`09`09`09`20`20`20'5'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F13;
- X`09`09`09`20`20`20'6'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F14;
- X`09`09`09`20`20`20'8'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_HELP;
- X`09`09`09`20`20`20'9'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_DO
- X`09`09`09`20`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X`09`09`09END`20`7BCASE`7D;
- X`09`09`20`20'3'`20:`20CASE`20escOverBuffer`20`5B3`5D`20OF
- X`09`09`09`20`20`20'1'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F17;
- X`09`09`09`20`20`20'2'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F18;
- X`09`09`09`20`20`20'3'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F19;
- X`09`09`09`20`20`20'4'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_F20
- X`09`09`09`20`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X`09`09`09END`20`7BCASE`7D
- X
- X`09`09`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`09`20`20`20`20`20`20`20END`20`7BCASE`7D
- X
- X`09`20`20`20`20END
- X`09`20`20`20`20ELSE`20BEGIN
- X
- X`09`20`20`20`20`20`20`20CASE`20escOverBuffer`20`5B2`5D`20OF
- X
- X`09`09`20`20(*`20Arrow`20Keys`20-`20Normal`20*)
- X
- X`09`09`20`20'A'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UP;
- X`09`09`20`20'B'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_DOWN;
- X`09`09`20`20'C'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_RIGHT;
- X`09`09`20`20'D'`20:`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_LEFT
- X
- X`09`09`20`20OTHERWISE`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`09`20`20`20`20`20`20`20END`20`7BCASE`7D
- X
- X`09`20`20`20`20END`20`7BIF`7D
- X
- X`09`20END
- X`09`20ELSE`20BEGIN
- X
- X`09`20`20`20`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`09`20END`20`7BIF`7D
- X
- X`20`20`20`20`20`20END
- X`20`20`20`20`20`20ELSE`20BEGIN
- X
- X`09`20kbd$cvt_ansi_smg`20:=`20SMG$K_TRM_UNKNOWN
- X
- X`20`20`20`20`20`20END`20`7BIF`7D
- X
- X`20`20`20END`20`7BWITH`7D
- X
- XEND`20(*`20KBD$CVT_ANSI_SMG`20*);
- X
- X
- X
- X
- X(*****************************************************************************
- V)
- X
- XEND`20(*`20KBD$ROUTINES`20Implementation`20*).
- X
- $ call unpack KBD$ROUTINES.PAS;1 979673541 ""
- $!
- $ create 'f'
- X
- X!------------------`20Distribution`20and`20Copyright`20-----------------
- X!--
- X!--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
- X!--`20All`20rights`20reserved.
- X!--
- X!--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20no
- Vtice
- X!--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20an
- Vy`20form
- X!--`20without`20written`20permission`20of`20the`20copyright`20owner.
- X!--
- X!--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20No
- Vn`20Profit
- X!--`20Organization
- X!--
- X!---------------------------------------------------------------
- X
- X
- X!------------------`20Disclaimer`20---------------------------------
- X!--
- X!--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
- V`20and
- X!--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
- X!--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitne
- Vss
- X!--`20for`20a`20particular`20purpose`20exist.
- X!--
- X!--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20unde
- Vr
- X!--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitnes
- Vs`20for
- X!--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
- V`20to
- X!--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20Th
- Ve`20user
- X!--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20thi
- Vs
- X!--`20software.
- X!--
- X!--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
- V`20be
- X!--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
- X!--`20or`20inconsequential`20damages`20or`20lost`20profits.
- X!--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20
- X!-------------------END-PROLOGUE--------------------------------
- X
- X
- X
- X
- X!*****************************************************************************
- V
- X!*****************************************************************************
- V
- X!**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
- X!**`20`20`20`20`20`20`20`20`20`20`20M`20E`20S`20S`20A`20G`20E`20S`20`20`20P
- V`20O`20U`20R`20`20`20K`20B`20D`20$`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20
- V`20`20`20`20`20`20`20`20**
- X!**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20**
- X!********`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
- V`20Aerienne`20*******
- X!*****************************************************************************
- V
- X
- X
- X
- X
- X!++
- X!
- X!`20Titre:`09`20`20MESSAGES`20POUR`20KBD$ROUTINES
- X!
- X!`20Sujet:`09`20`20Definition`20des`20messages`20pour`20KBD$ROUTINES.
- X!
- X!`20Version:`09`20`201.0
- X!
- X!`20Description:`09`20`20`20`20`20`20Ce`20fichier`20contient`20les`20messages
- V`20d'erreur`20utilises`20par`20la
- X!`09`09`20`20bibliotheque`20de`20routines`20KBD$ROUTINES.
- X!`09`09`20`20`20`20`20`20Il`20doit`20etre`20compile`20a`20travers`20la`20comma
- Vnde`20MESSAGE.`20Le
- X!`09`09`20`20fichier`20objet`20obtenu`20peut`20etre`20soit`20lie`20directement
- V`20a
- X!`09`09`20`20l'application,`20soit`20etre`20utilise`20pour`20generer`20une`20i
- Vmage
- X!`09`09`20`20partageable:`20ce`20sera`20alors`20un`20fichier`20vecteur`20qui
- V`20sera`20lie
- X!`09`09`20`20a`20l'application.
- X!
- X!`20Fichier:`09`20`20KBDMSG.MSG
- X!
- X!`20Environnement:`20`20VAX/VMS`20Version`205.4-3
- X!`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20VAX/VMS`20Message`20Utilit
- Vy
- X!
- X!`20Auteur:`09`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
- X!`20
- X!`20`09`09`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
- X!`20
- X!`20`09`09`20`20Mail:`20`20`20C.E.N.A.
- X!`20`09`09`09`20`20Div.`20Support`20Informatique`20`26`20Developpement
- X!`20`09`09`09`20`20Orly`20Sud`20205
- X!`20`09`09`09`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
- X!
- X!`20Creation:`09`20`2019/05/92
- X!
- X!`20Modification:`09`20`2026/05/92
- X!
- X!--
- X
- X
- X.title`20Messages`20for`20KBD$`20utility
- X
- X.ident`20"Version`201.0"
- X
- X.facility`20KBD,`201`20/prefix=KBD$_
- X
- X
- X.severity`20success
- X
- XNORMAL`09`09<normal`20successful`20completion>
- X
- X
- X.severity`20informational
- X
- XALREADYOPEN`09<keyboard`20already`20open>
- XALREADYCLOSE`09<keyboard`20already`20close>
- X
- X
- X.severity`20warning
- X
- XNOTOPEN`09`09<keyboard`20not`20open>
- X
- X
- X.severity`20error
- X
- XCLOSEERROR`09<error`20during`20close`20operation>
- XFLUSHERROR`09<error`20during`20flush`20operation>
- XKEYPRESERROR`09<error`20during`20key`20pressed`20operation>
- XOPENERROR`09<error`20during`20open`20operation>
- XREADERROR`09<error`20during`20read`20operation>
- X
- $ call unpack KBDMSG.MSG;1 340948879 ""
- $!
- $ create 'f'
- X
- X------------------`20Distribution`20and`20Copyright`20-----------------
- X--
- X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
- X--`20All`20rights`20reserved.
- X--
- X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
- Vice
- X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
- V`20form
- X--`20without`20written`20permission`20of`20the`20copyright`20owner.
- X--
- X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
- V`20Profit
- X--`20Organization
- X--
- X---------------------------------------------------------------
- X
- X
- X------------------`20Disclaimer`20---------------------------------
- X--
- X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
- V`20and
- X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
- X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
- Vs
- X--`20for`20a`20particular`20purpose`20exist.
- X--
- X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
- V
- X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
- V`20for
- X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
- V`20to
- X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
- V`20user
- X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
- V
- X--`20software.
- X--
- X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
- V`20be
- X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
- X--`20or`20inconsequential`20damages`20or`20lost`20profits.
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20
- X-------------------END-PROLOGUE--------------------------------
- X
- X
- X
- X
- X--****************************************************************************
- V*
- X--****************************************************************************
- V*
- X--**`09`09`09`09`09`09`09`09`09`20`20`20`20`20**
- X--**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20D`20E`20M`20O`20`20`20D`20E
- V`20S`20`20`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20K`20B`20D`20$`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20**
- X--**`09`09`09`09`09`09`09`09`09`20`20`20`20`20**
- X--********`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
- V`20Aerienne`20*******
- X--****************************************************************************
- V*
- X
- X
- X
- X
- X--`20++
- X--
- X--`20Titre:`09`20`20`20Paquetage`20KBD
- X--
- X--`20Sujet:`09`20`20`20Declarations`20des`20routines`20KBD$xxx`20("Keyboard
- V`20Routines").
- X--
- X--`20Version:`09`20`20`201.0
- X--
- X--`20Description:`09`20`20`20`20`20`20`20Ce`20paquetage`20contient`20la`20decl
- Varation`20de`20la`20procedure
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20READ_KEYSTROKE`20permetta
- Vnt`20d'attendre`20une`20action`20au`20clavier
- X--`09`09`20`20`20et`20renvoyant`20la`20sequence`20ANSI`20correspondant`20a`20l
- Va`20touche
- X--`09`09`20`20`20actionnee.
- X--
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20utilis
- Ver`20READ_KEYSTROKE,`20il`20necessaire`20d'appeler`20au
- X--`09`09`20`20`20prealable`20la`20procedure`20OPEN_KEYBOARD`20et`20de`20termin
- Ver`20par
- X--`09`09`20`20`20CLOSE_KEYBOARD.
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20OPEN_KEYBO
- VARD`20permet,`20entre`20autres,`20de`20ne`20creer
- X--`09`09`20`20`20le`20tampon`20clavier`20que`20si`20l'on`20desire`20reellement
- V`20utiliser
- X--`09`09`20`20`20READ_KEYSTROKE.
- X--
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Lorsque`20le
- V`20tampon`20est`20plein,`20l'utilisateur`20est`20prevenu
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonore.
- V
- X--
- X--`09`09`20`20`20`20`20`20`20La`20procedure`20FLUSH_KEYBOARD`20permet`20de`20v
- Vider`20le`20tampon
- X--`09`09`20`20`20clavier.
- X--
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Afin`20de`20pouv
- Voir`20recuperer`20les`20codes`20emis`20par`20CTRL/C,
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTRL/
- VS,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer`20l
- Va`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
- X--
- X--`20Langage:`09`20`20`20ADA
- X--
- X--`20Fichier:`09`20`20`20KBD_.ADA
- X--
- X--`20Paquetage:`09`20`20`20KBD
- X--
- X--`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
- X--`09`09`20`20`20Systeme`20d'exploitation:`20VAX/VMS`20Version`205.4
- X--`09`09`20`20`20Compilateur:`20`20`20`20`20`20`20`20`20`20`20`20VAX`20Ada`20V
- Version`202.1-28
- X--
- X--`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
- X--
- X--`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
- X--
- X--`09`09`20`20`20Mail:`20`20`20C.E.N.A.
- X--`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
- X--`09`09`09`20`20`20Orly`20Sud`20205
- X--`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
- X--
- X--`20Creation:`09`20`20`2019/05/92
- X--
- X--`20Modification:`20`20`2026/05/92
- X--
- X--`20--
- X
- X
- X
- X
- Xwith`20CONDITION_HANDLING;
- Xwith`20SYSTEM;
- X
- X
- Xuse`20CONDITION_HANDLING;
- Xuse`20SYSTEM;
- X
- X
- X
- X
- Xpackage`20KBD`20is
- X
- X
- X
- X
- X--`20=========================================================================
- V===
- X--`20`20TYPE
- X--`20=========================================================================
- V===
- X
- X
- X`20`20`20`20type`20T_ESCAPE_OVERFLOW_BUFFER`20is`20array`20(1..4)`20of`20chara
- Vcter;
- X
- X`20`20`20`20type`20T_ANSI_SEQUENCE`20is`20record
- X`20`20`20`20`20`20`20`20ASCII`20`20`20`20`20`20`20`20`20:`20character;
- X`20`20`20`20`20`20`20`20ESCOVERBUFFER`20:`20T_ESCAPE_OVERFLOW_BUFFER;
- X`20`20`20`20end`20record;
- X
- X
- X
- X
- X--`20*************************************************************************
- V***
- X--`20*************************************************************************
- V***
- X--`20**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20KBD$`20ROUTINE`20DECLARATION`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20**
- X--`20*************************************************************************
- V***
- X--`20*************************************************************************
- V***
- X
- X
- X
- X
- X--
- X--`20KBD$CLOSE_KEYBOARD
- X--
- X--`20`20`20Libere`20la`20memoire`20des`20structures`20de`20donnees`20associees
- V`20a`20ce`20module.
- X--
- X
- X`20`20`20`20procedure`20CLOSE_KEYBOARD`20(COND_VALUE`20:`20out`20COND_VALUE_TY
- VPE);
- X
- X
- X--
- X--`20KBD$CVT_ANSI_SMG
- X--
- X--`20`20`20Convertit`20la`20sequence`20ANSI`20d'une`20touche`20en`20un`20code
- V`20SMG.
- X--
- X--`20`20`20Liste`20des`20codes`20pouvant`20etre`20renvoyes`20(ils`20sont`20def
- Vinis`20dans`20le`20paquetage
- X--`20`20`20SMG):
- X--
- X--`09ascii`20(0`20-`20255)`09`09K_TRM_UP`09`09K_TRM_DOWN
- X--`09K_TRM_RIGHT`09`09K_TRM_LEFT`09`09K_TRM_ENTER
- X--`09K_TRM_PF1`09`09K_TRM_PF2`09`09K_TRM_PF3
- X--`09K_TRM_PF4`09`09K_TRM_COMMA`09`09K_TRM_MINUS
- X--`09K_TRM_PERIOD`09`09K_TRM_KP0`09`09K_TRM_KP1
- X--`09K_TRM_KP2`09`09K_TRM_KP3`09`09K_TRM_KP4
- X--`09K_TRM_KP5`09`09K_TRM_KP6`09`09K_TRM_KP7
- X--`09K_TRM_KP8`09`09K_TRM_KP9`09`09K_TRM_FIND
- X--`09K_TRM_INSERT_HERE`09K_TRM_REMOVE`09`09K_TRM_SELECT
- X--`09K_TRM_PREV_SCREEN`09K_TRM_NEXT_SCREEN`09K_TRM_F6
- X--`09K_TRM_F7`09`09K_TRM_F8`09`09K_TRM_F9
- X--`09K_TRM_F10`09`09K_TRM_F11`09`09K_TRM_F12
- X--`09K_TRM_F13`09`09K_TRM_F14`09`09K_TRM_HELP
- X--`09K_TRM_DO`09`09K_TRM_F17`09`09K_TRM_F18
- X--`09K_TRM_F19`09`09K_TRM_F20`09`09K_TRM_UP
- X--`09K_TRM_DOWN`09`09K_TRM_RIGHT`09`09K_TRM_LEFT
- X--`09K_TRM_UNKNOWN
- X--
- X
- X`20`20`20`20procedure`20CVT_ANSI_SMG`20(
- X`20`20`20`20`20`20`20`20SMG_CODE`20:`20out`20UNSIGNED_WORD;
- X`09SEQUENCE`20:`20in`20`20T_ANSI_SEQUENCE`20);
- X
- X
- X--
- X--`20KBD$FLUSH_KEYBOARD
- X--
- X--`20`20`20Vide`20le`20tampon`20clavier.
- X--
- X
- X`20`20`20`20procedure`20FLUSH_KEYBOARD`20(COND_VALUE`20:`20out`20COND_VALUE_TY
- VPE);
- X
- X
- X--
- X--`20KBD$KEY_PRESSED
- X--
- X--`20`20`20Indique`20si`20au`20moins`20une`20touche`20est`20presente`20dans
- V`20le`20tampon.
- X--
- X
- X`20`20`20`20procedure`20KEY_PRESSED`20(
- X`20`20`20`20`20`20`20`20COND_VALUE`20:`20out`20COND_VALUE_TYPE;
- X`09YES`20`20`20`20`20`20`20`20:`20out`20BOOLEAN`20);
- X
- X
- X--
- X--`20KBD$OPEN_KEYBOARD
- X--
- X--`20`20`20Creation`20et`20initialisation`20des`20structures`20de`20donnees
- V`20associees`20au`20module.
- X--
- X
- X`20`20`20`20procedure`20OPEN_KEYBOARD`20(COND_VALUE`20:`20out`20COND_VALUE_TYP
- VE);
- X
- X
- X--
- X--`20KBD$READ_KEYSTROKE
- X--
- X--`20`20`20Extrait`20la`20touche`20suivante`20du`20tampon;`20si`20ce`20dernier
- V`20est`20vide,`20se`20met`20en
- X--`20`20`20attente`20d'une`20action`20au`20clavier.
- X--
- X
- X`20`20`20`20procedure`20READ_KEYSTROKE`20(
- X`20`20`20`20`20`20`20`20COND_VALUE`20:`20out`20`20`20`20COND_VALUE_TYPE;
- X`20`20`20`20`20`20`20`20KEY`20`20`20`20`20`20`20`20:`20in`20out`20T_ANSI_SEQUE
- VNCE`20);
- X
- X
- X
- X
- X--`20*************************************************************************
- V***
- X
- X
- Xprivate
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20CLOSE_KEYBOARD);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20CLOSE_KEYBOARD,`20"KBD$CLOS
- VE_KEYBOARD",
- X`20`20`20`20`20`20`20`20(COND_VALUE_TYPE)`20);
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20CVT_ANSI_SMG);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20CVT_ANSI_SMG,`20"KBD$CVT_AN
- VSI_SMG",
- X`20`20`20`20`20`20`20`20(UNSIGNED_WORD,`20T_ANSI_SEQUENCE)`20);
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20FLUSH_KEYBOARD);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20FLUSH_KEYBOARD,`20"KBD$FLUS
- VH_KEYBOARD",
- X`20`20`20`20`20`20`20`20(COND_VALUE_TYPE)`20);
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20KEY_PRESSED);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20KEY_PRESSED,`20"KBD$KEY_PRE
- VSSED",
- X`20`20`20`20`20`20`20`20(cond_value_type,`20BOOLEAN)`20);
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20OPEN_KEYBOARD);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20OPEN_KEYBOARD,`20"KBD$OPEN_
- VKEYBOARD",
- X`20`20`20`20`20`20`20`20(COND_VALUE_TYPE)`20);
- X
- X
- X`20`20`20`20pragma`20INTERFACE`20(external,`20READ_KEYSTROKE);
- X
- X`20`20`20`20pragma`20IMPORT_VALUED_PROCEDURE`20(`20READ_KEYSTROKE,`20"KBD$READ
- V_KEYSTROKE",
- X`20`20`20`20`20`20`20`20(COND_VALUE_TYPE,`20T_ANSI_SEQUENCE)`20);
- X
- X
- Xend`20KBD;
- $ call unpack KBD_.ADA;1 810836228 ""
- $!
- $ create 'f'
- X!`20Fichier`20d'options`20pour`20le`20linker`20VAX/VMS
- X!`20A`20utiliser`20pour`20du`20code`20genere`20par`20le`20compilateur`20CC`20n
- Vatif
- X!
- XSYS$LIBRARY:VAXCRTLG.OLB/LIBRARY`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20!`20C`20Library
- XSYS$LIBRARY:VAXCRTL.EXE/SHAREABLE`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20!`20C`20Run`20Time`20Library
- $ call unpack LINK_CC.OPT;1 1381593291 ""
- $!
- $ create 'f'
- X(*
- X------------------`20Distribution`20and`20Copyright`20-----------------
- X--
- X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
- X--`20All`20rights`20reserved.
- X--
- X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
- Vice
- X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
- V`20form
- X--`20without`20written`20permission`20of`20the`20copyright`20owner.
- X--
- X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
- V`20Profit
- X--`20Organization
- X--
- X---------------------------------------------------------------
- X
- X
- X------------------`20Disclaimer`20---------------------------------
- X--
- X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
- V`20and
- X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
- X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
- Vs
- X--`20for`20a`20particular`20purpose`20exist.
- X--
- X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
- V
- X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
- V`20for
- X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
- V`20to
- X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
- V`20user
- X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
- V
- X--`20software.
- X--
- X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
- V`20be
- X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
- X--`20or`20inconsequential`20damages`20or`20lost`20profits.
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20`20`20`20
- X-------------------END-PROLOGUE--------------------------------
- X*)
- X
- X
- X
- X
- X(*****************************************************************************
- V)
- X(*****************************************************************************
- V)
- X(**`09`09`09`09`09`09`09`09`09`20`20`20`20**)
- +-+-+-+-+-+-+-+- END OF PART 2 +-+-+-+-+-+-+-+-
-