home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!network.ucsd.edu!mvb.saic.com!vmsnet-sources
- Newsgroups: vmsnet.sources
- From: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
- Subject: VMS/RTL/KBD, part 01/03
- Date: Tue, 05 Jan 1993 00:07:01 GMT
- Message-ID: <9912945@MVB.SAIC.COM>
- Lines: 1444
- Approved: Mark.Berryman@Mvb.Saic.Com
-
- Submitted-by: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
- Posting-number: Volume 4, Issue 35
- Archive-name: keyboard_rtl/part01
-
- [ According to the README. file this package was written
- to solve the need to detect and read single keystrokes
- from the keyboard. Definition files are included for
- C, Pascal, and Ada. The functions listed below are
- provided. ]
-
- KBD$CLOSE_KEYBOARD: Free memory from data-structures associated to this
- unit.
-
- KBD$CVT_ANSI_SMG: Convert the ANSI sequence of a key into a SMG code.
-
- KBD$FLUSH_KEYBOARD: Empty the keyboard buffer.
-
- KBD$KEY_PRESSED: Indicate if at least one key is present in the buffer.
-
- KBD$OPEN_KEYBOARD: Creation and initialization of the data-structures
- associated to the unit.
-
- KBD$READ_KEYSTROKE: Extract the next key from the buffer; if the latter is
- empty, wait for an action onto the keyboard.
-
- $! ------------------ CUT HERE -----------------------
- $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
- $!
- $! This archive created by VMS_SHARE Version 8.1
- $! On 4-JAN-1993 14:40:12.85 By user BERRYMAN
- $!
- $! The VMS_SHARE software that created this archive
- $! was written by Andy Harper, Kings College London UK
- $! -- September 1992
- $!
- $! Credit is due to these people for their original ideas:
- $! James Gray, Michael Bednarek
- $!
- $!+ THIS PACKAGE DISTRIBUTED IN 3 PARTS, TO KEEP EACH PART
- $! BELOW 99 BLOCKS
- $!
- $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
- $! AND EXECUTE AS A COMMAND PROCEDURE ( @name )
- $!
- $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
- $! 1. BUILD.COM;1
- $! 2. DEMO_KBD$ROUTINES.C;1
- $! 3. DEMO_KBD$ROUTINES.PAS;1
- $! 4. DEMO_KBD_ROUTINES.ADA;1
- $! 5. KBD$ROUTINES.H;1
- $! 6. KBD$ROUTINES.PAS;1
- $! 7. KBDMSG.MSG;1
- $! 8. KBD_.ADA;1
- $! 9. LINK_CC.OPT;1
- $! 10. PASCAL$KBD_ROUTINES.PAS;1
- $!
- $set="set"
- $set symbol/scope=(nolocal,noglobal)
- $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
- $e="write sys$error ""%UNPACK"", "
- $w="write sys$output ""%UNPACK"", "
- $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
- $ ve=f$getsyi("version")
- $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
- $ e "-E-OLDVER, Must run at least VMS 4.4"
- $ v=f$verify(v)
- $ exit 44
- $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
- $ if f$search(P1) .eqs. "" then $ goto file_absent
- $ e "-W-EXISTS, File ''P1' exists. Skipped."
- $ delete 'f'*
- $ exit
- $file_absent:
- $ if f$parse(P1) .nes. "" then $ goto dirok
- $ dn=f$parse(P1,,,"DIRECTORY")
- $ w "-I-CREDIR, Creating directory ''dn'"
- $ create/dir 'dn'
- $ if $status then $ goto dirok
- $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
- $ delete 'f'*
- $ exit
- $dirok:
- $ w "-I-UNPACK, Unpacking file ''P1'"
- $ n=P1
- $ if P3 .nes. "" then $ n=f
- $ if .not. f$verify() then $ define/user sys$output nl:
- $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
- PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
- ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
- PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;
- ENDLOOP;ENDPROCEDURE;
- PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]
- :ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[
- OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;
- PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(
- CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
- PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
- ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
- END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
- ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
- "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
- GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
- GET_INFO(COMMAND_LINE,"output_file"));QUIT;
- $ if p3 .eqs. "" then $ goto dl
- $ open/write fdl &f
- $ write fdl "RECORD"
- $ write fdl P3
- $ close fdl
- $ w "-I-CONVRFM, Converting record format to ", P3
- $ convert/fdl=&f &f-1 &P1
- $dl: delete 'f'*
- $ if P2 .eqs. "" then $ goto ckskip
- $ checksum 'P1'
- $ if checksum$checksum .nes. P2 then $ -
- e "-E-CHKSMFAIL, Checksum of ''P1' failed."
- $ exit
- $ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'"
- $ endsubroutine
- $start:
- $!
- $ 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`20n
- Votice
- X$!--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20a
- Vny`20form
- X$!--`20without`20written`20permission`20of`20the`20copyright`20owner.
- X$!--
- X$!--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20N
- Von`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`20fitn
- Vess
- X$!--`20for`20a`20particular`20purpose`20exist.
- X$!--
- X$!--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20und
- Ver
- X$!--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitne
- Vss`20for
- X$!--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
- V`20to
- X$!--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20T
- Vhe`20user
- X$!--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20th
- Vis
- X$!--`20software.
- X$!--
- X$!--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20peopl
- Ve`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$!++
- X$!
- X$!`20Titre:`09`20`20`20BUILD
- X$!
- X$!`20Sujet:`09`20`20`20Fichier`20de`20procedure`20pour`20la`20reconstruction
- V`20d'un`20module
- X$!`09`09`20`20`20Pascal`20(interface`20+`20implementation)`20et`20son`20insert
- Vion`20dans
- X$!`09`09`20`20`20une`20librarie`20d'objets.
- X$!
- X$!`20Version:`09`20`20`201.3
- X$!
- X$!`20Description:`09`20`20`20Le`20module`20doit`20en`20fait`20se`20decomposer
- V`20en`202`20fichiers,`20un`20pour
- X$!`09`09`20`20`20la`20partie`20interface`20et`20l'autre`20pour`20la`20partie
- X$!`09`09`20`20`20implementation.
- X$!`09`09`20`20`20Ils`20doivent`20respecter`20le`20format`20suivant:`20file_V_x
- V_x.PAS
- X$!
- X$!`09`09`20`20`20Si`20P1`20=`201,`20alors`20compilation`20de`20l'interface
- X$!`09`09`20`20`20Si`20P1`20=`202,`20alors`20compilation`20de`20l'implementatio
- Vn
- X$!`09`09`20`20`20Si`20P1`20=`203,`20alors`20compilation`20de`20tout
- X$!
- X$!`09`09`20`20`20Si`20P2`20=`20F,`20alors`20phase`20finale
- X$!
- X$!`20Langage:`09`20`20`20DCL
- X$!
- X$!`20Fichier:`09`20`20`20BUILD.COM
- X$!
- X$!`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
- X$!`09`09`20`20`20Systeme`20d'exploitation:`20VMS`20Version`205.4-3
- 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`2001/07/92
- X$!
- X$!--
- X$
- X$
- X$!====`20`20PARAMETRES`20DU`20PROGRAMME`20`20=================================
- V=============
- X$
- X$`20TIT`20`20`20`20`20=`20"KBD$ROUTINES"`09`09!`20Titre
- X$`20FIC_INT`20=`20"PASCAL$KBD_ROUTINES"`09!`20Nom`20du`20fichier`20interface
- X$`20FIC_IMP`20=`20"KBD$ROUTINES"`09`09!`20Nom`20du`20fichier`20implementation
- X$`20VER`20`20`20`20`20=`20""`09`09`09`09!`20Version`20(respectez`20le`20format
- V)
- X$`20LIB`20`20`20`20`20=`20"MYLIB"`09`09`09!`20Librairie
- X$
- X$!====`20`20LISTE`20DES`20ETIQUETTES`20`20====================================
- V=============
- X$!
- X$!`20afp`20`20AFFICHER`20PAVE`20NUMERIQUE
- X$!`20gtm`20`20GET`20TIME
- X$!`20int`20`20COMPILER`20INTERFACE
- X$!`20imp`20`20COMPILER`20IMPLEMENTATION
- X$!`20tou`20`20TOUT`20COMPILER
- X$!`20cin`20`20COMPILER`20INTERFACE
- X$!`20cim`20`20COMPILER`20IMPLEMENTATION
- X$!
- X$!====`20`20DEFINITION`20DES`20SYMBOLES`20`20=================================
- V=============
- X$
- X$`20AFFICHER`20`20`20:=`20write`20sys$output
- X$`20LIGNE_VIDE`20:=`20"''AFFICHER'`20"""
- X$
- X$`20VC`20=`20"''VIDEO_C'"
- X$`20VI`20=`20"''VIDEO_I'"
- X$`20VB`20=`20"''VIDEO_B'"
- X$`20VN`20=`20"''VIDEO_N'"
- X$
- X$!====`20`20DEBUT`20DU`20PROGRAMME`20`20======================================
- V=============
- X$
- X$`20if`20p1`20.eqs.`20""`20then`20goto`20afp!AFFICHER`20PAVE`20NUMERIQUE
- X$
- X$`20gosub`20gtm!GET`20TIME
- X$
- X$`20DATE`20`20=`20f$extract(0,11,TIME)
- X$`20HEURE`20=`20f$extract(12,5,TIME)
- X$`20TITRE`20=`20"''VI'BUILD`20DE`20''TIT'`20LE`20''DATE'`20A`20''HEURE'''VN'"
- X$
- X$`20EFFACER`20:=`20delete/since='TIME'
- X$
- X$`20if`20p2`20.eqs.`20"F"
- X$`20`20`20then
- X$`20`20`20`20`20SOUSTITRE`20=`20"Version`20''VER'`20-`20Phase`20finale"
- X$`20`20`20`20`20COMPILER`20:=`20pascal/warning/nocheck/optimize=all
- X$`20`20`20else
- X$`20`20`20`20`20SOUSTITRE`20=`20"Version`20''VER'`20-`20Phase`20de`20developpe
- Vment"
- X$`20`20`20`20`20COMPILER`20:=`20pascal/warning/check=all/nooptimize
- X$`20endif
- X$
- X$`20if`20p1`20.eqs.`20"1"
- X$`20`20`20then
- X$`20`20`20`20`20gosub`20int!COMPILER`20INTERFACE
- X$`20`20`20else
- X$`20`20`20`20`20if`20p1`20.eqs.`20"2"
- X$`09then
- X$`20`20`20`20`20`20`20`20`20gosub`20imp!COMPILER`20IMPLEMENTATION
- X$`09else
- X$`20`20`20`20`20`20`20`20`20if`20p1`20.eqs.`20"3"
- X$`09`20`20`20`20then
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20gosub`20tou!TOUT`20COMPILER
- X$`09`20`20`20`20else
- X$`20`20`20`20`20`20`20`20`20`20`20`20`20AFFICHER`20"%BUILD-E-PARINV,`20paramet
- Vre`20invalide"
- X$`09`20`20`20`20`20`20AFFICHER`20"`20\''p1'\"
- X$`09`20`20endif
- X$`20`20`20`20`20endif
- X$`20endif
- X$
- X$`20exit
- X$
- X$`20afp:!AFFICHER`20PAVE`20NUMERIQUE
- X$
- X$`09DEF`20:=`20define/key/terminate/nolog
- X$
- X$`09DEF`20help`20"@`20BUILD"
- X$`09DEF`20kp1`20`20"@`20BUILD`201"
- X$`09DEF`20kp2`20`20"@`20BUILD`202"
- X$`09DEF`20kp3`20`20"@`20BUILD`203"
- X$
- X$`09set`20terminal/application_keypad
- X$
- X$`09LIGNE_VIDE
- X$`09AFFICHER`20`20"DEFINITION`20DU`20PAVE`20NUMERIQUE"
- X$`09LIGNE_VIDE
- X$
- X$`09AFFICHER`20"`09HELP`20->`20DEFINITION`20DU`20PAVE`20NUMERIQUE"
- X$`09AFFICHER`20"`09KP1`20`20->`20COMPILER`20L'INTERFACE"
- X$`09AFFICHER`20"`09KP2`20`20->`20COMPILER`20L'IMPLEMENTATION"
- X$`09AFFICHER`20"`09KP3`20`20->`20COMPILER`20TOUT"
- X$
- X$`09LIGNE_VIDE
- X$
- X$`09exit
- X$
- X$!====`20`20FIN`20DU`20PROGRAMME`20`20========================================
- V=============
- X$
- X$`20int:!COMPILER`20INTERFACE
- X$
- X$`09AFFICHER`20`20TITRE
- X$`09AFFICHER`20`20SOUSTITRE
- X$`09LIGNE_VIDE
- X$
- X$`09gosub`20cin!COMPILER`20INTERFACE
- X$
- X$`20return
- X$
- X$`20imp:!COMPILER`20IMPLEMENTATION
- X$
- X$`09AFFICHER`20`20TITRE
- X$`09AFFICHER`20`20SOUSTITRE
- X$`09LIGNE_VIDE
- X$
- X$`09gosub`20cim!COMPILER`20IMPLEMENTATION
- X$
- X$`20return
- X$
- X$`20tou:!TOUT`20COMPILER
- X$
- X$`09AFFICHER`20`20TITRE
- X$`09AFFICHER`20`20SOUSTITRE
- X$`09LIGNE_VIDE
- X$
- X$`09gosub`20cin!COMPILER`20INTERFACE
- X$`09gosub`20cim!COMPILER`20IMPLEMENTATION
- X$
- X$`20return
- X$
- X$`20cin:!COMPILER`20INTERFACE
- X$
- X$`09AFFICHER`20`20"''VB'COMPILATION`20DU`20MODULE`20''FIC_INT'''VN'"
- X$
- X$`09SRC`20=`20"''FIC_INT'''VER'.PAS"
- X$`09INT`20=`20"''FIC_INT'"
- X$
- X$`09purge`20'SRC'
- X$
- X$`09AFFICHER`20"Compilation"
- X$
- X$`09COMPILER/environment='INT'/object='INT'/nodiagnostics`20'SRC'
- X$
- X$`09purge`20'INT'.PEN
- X$`09purge`20'INT'.OBJ
- X$
- X$`09define`20sys$output`20nl:
- X$`09define`20sys$error`20`20nl:
- X$`09delete`20'INT'.DIA;*
- X$`09deassign`20sys$error
- X$`09deassign`20sys$output
- X$
- X$`09AFFICHER`20"Insertion`20dans`20la`20librairie"
- X$
- X$`09library/replace`20'LIB'`20'FIC_INT'
- X$
- X$`20return
- X$
- X$`20cim:!COMPILER`20IMPLEMENTATION
- X$
- X$`09AFFICHER`20"''VB'COMPILATION`20DU`20MODULE`20''FIC_IMP'''VN'"
- X$
- X$`09SRC`20=`20"''FIC_IMP'''VER'.PAS"
- X$`09IMP`20=`20"''FIC_IMP'"
- X$
- X$`09purge`20'SRC'
- X$
- X$`09AFFICHER`20"Compilation"
- X$
- X$`09COMPILER/noenvironment/object='IMP'/nodiagnostics`20'SRC'
- X$
- X$`09purge`20'IMP'.OBJ
- X$
- X$`09define`20sys$output`20nl:
- X$`09define`20sys$error`20`20nl:
- X$`09delete`20'INT'.DIA;*
- X$`09deassign`20sys$error
- X$`09deassign`20sys$output
- X$
- X$`09AFFICHER`20"Insertion`20dans`20la`20librairie"
- X$
- X$`09library/replace`20'LIB'`20'FIC_IMP'
- X$
- X$`20return
- X$
- X$`20gtm:!GET`20TIME
- X$
- X$`09TIME`20`20=`20f$time`20()
- X$`09DATE`20`20=`20f$extract(0,11,TIME)
- X$`09HEURE`20=`20f$extract(12,11,TIME)
- X$
- X$!`09Conversion`20du`20format`20de`20time`20de`20`20DD-MMM-YYYY`20HH:MM:SS.CC
- X$!`09`09`09`09`20`20`20`20`20en`20`20DD-MMM-YYYY:HH:MM:SS.CC
- X$
- X$`09TIME`20=`20"''DATE':''HEURE'"
- X$
- X$`20return
- X$
- $ call unpack BUILD.COM;1 1209236899 ""
- $!
- $ 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`20***************************************************************************
- V**
- X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
- X`20**`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`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
- X`20*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
- V`20Aerienne`20********
- X`20***************************************************************************
- V**/
- X
- X
- X
- X
- X/*
- X`20*`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
- X`20*
- X`20*`20Sujet:`09`20`20`20Single`20keypress`20under`20VMS.
- X`20*
- X`20*`20Version:`09`20`20`201.0-00
- X`20*
- X`20*`20Description:`09`20`20`20Programme`20de`20demonstration`20des`20routines
- V`20kbd$.
- X`20*
- X`20*`09`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration`20met`20en
- V`20oeuvre`20la`20fonction
- X`20*`09`09`20`20`20kbd$read_keystroke`20permettant`20d'attendre`20une`20action
- V`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*`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilis
- Vateur`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`20Afin`20de`20pouvoir`20recuperer`20les`20codes
- V`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,`20vous`20devez`20appeler`20au
- X`20*`09`09`20`20`20prealable`20la`20fonction`20kbd$open_keyboard`20et`20termin
- Ver`20par
- X`20*`09`09`20`20`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`20C`20ANSI
- X`20*
- X`20*`20Fichier:`09`20`20`20DEMO_KBD$ROUTINES.C
- X`20*
- X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Systeme`20d'exploitatio
- Vn:`20VAX/VMS`20Version`205.4-3
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Compilateur:`20`20`20
- V`20`20`20`20`20`20`20`20`20VAX`20C`20Version`203.2-044
- 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`2023/05/92
- X`20*
- X`20*`20Modification:`20`20`2026/05/92
- X`20*
- X`20*/
- X
- X
- X
- X
- X#include`20<stdio.h>
- X#include`20<lib$routines.h>
- X#include`20"kbd$routines.h"
- X
- X
- Xconst`20float`20`20second`20=`201.0;
- X
- Xstatic`20void`20`20perform();
- X
- X
- Xmain()`20
- X`7B
- X`20`20`20`20char`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20yes;
- X`20`20`20`20int`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20i;
- X`20`20`20`20kbd$t_ansi_sequence`20`20key;
- X
- X
- X`20`20`20`20perform(kbd$open_keyboard());
- X
- X`20`20`20`20(void)`20printf("Press`20a`20key.\n");
- X
- X`20`20`20`20do`20`7B
- X`09(void)`20kbd$key_pressed(`26yes);
- X`20`20`20`20`7D`20while`20(!yes);
- X
- X`20`20`20`20(void)`20printf("Five`20loop...\n");
- X
- X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
- X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
- Vn",`20i);
- X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
- X`20`20`20`20`7D
- X
- X`20`20`20`20(void)`20printf("Five`20readkey...\n");
- X
- X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
- X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(SMG`20code):
- V`20");
- X`20`20`20`20`20`20`20`20perform(kbd$read_keystroke(`26key));
- X`20`20`20`20`20`20`20`20(void)`20printf("%d\n",`20kbd$cvt_ansi_smg(`26key));
- X`20`20`20`20`7D
- X
- X`20`20`20`20(void)`20printf("Five`20loop...\n");
- X
- X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
- X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
- Vn",`20i);
- X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
- X`20`20`20`20`7D
- X
- X`20`20`20`20(void)`20printf("Flush`20keyboard.\n");
- X
- X`20`20`20`20perform(kbd$flush_keyboard());
- X
- X`20`20`20`20(void)`20printf("Five`20loop...\n");
- X
- X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
- X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
- Vn",`20i);
- X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
- X`20`20`20`20`7D
- X
- X`20`20`20`20(void)`20printf("End\n");
- X
- X`20`20`20`20perform(kbd$close_keyboard());
- X`7D
- X
- X
- Xstatic`20void`20perform(unsigned`20cond_value)
- X`7B
- X`20`20`20`20if`20(!(cond_value`20`26`201))`20(void)`20lib$stop(cond_value);
- X`7D
- $ call unpack DEMO_KBD$ROUTINES.C;1 1430524156 ""
- $!
- $ 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(**`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`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(**`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`20*`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
- X`20*
- X`20*`20Sujet:`09`20`20`20Programme`20de`20demonstration`20des`20routines`20KBD
- V$.
- X`20*
- X`20*`20Version:`09`20`20`201.0
- X`20*
- X`20*`20Description:`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration
- V`20met`20en`20oeuvre`20la`20fonction
- X`20*`09`09`20`20`20KBD$READ_KEYSTROKE`20permettant`20d'attendre`20une`20action
- V`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*`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilis
- Vateur`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`20Afin`20de`20pouvoir`20recuperer`20les`20codes
- V`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,`20vous`20devez`20appeler`20au
- X`20*`09`09`20`20`20prealable`20la`20fonction`20KBD$OPEN_KEYBOARD`20et`20termin
- Ver`20par
- X`20*`09`09`20`20`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`20QUASI`20STANDARD
- X`20*
- X`20*`20Fichier:`09`20`20`20DEMO_PASCAL$KBD_ROUTINES.PAS
- 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
- 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:pascal$lib_routines','pascal$kbd_routines'`20`20)
- V`5D
- X
- X
- XPROGRAM`20`20demo_kbd$routines`20(output);
- X
- X
- XPROCEDURE`20`20perform`20(cond_value`20:`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
- XVAR
- X
- X`20`20`20yes`20:`20BOOLEAN;
- X`20`20`20i`20`20`20:`20INTEGER;
- X`20`20`20key`20:`20KBD$T_ANSI_SEQUENCE;
- X
- X
- XBEGIN
- X
- X`20`20`20perform`20(KBD$OPEN_KEYBOARD);
- X
- X`20`20`20Writeln`20('Press`20a`20key.');
- X
- X`20`20`20REPEAT
- X`20`20`20`20`20`20perform`20(KBD$KEY_PRESSED`20(yes))
- X`20`20`20UNTIL`20yes;
- X
- X`20`20`20Writeln`20('Five`20loop...');
- X
- X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
- X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
- X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
- X`20`20`20END`20`7BFOR`7D;
- X
- X`20`20`20Writeln`20('Five`20readkey...');
- X
- X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
- X`20`20`20`20`20`20Write`20('Programme`20principal`20(SMG`20code):`20');
- X`20`20`20`20`20`20perform`20(KBD$READ_KEYSTROKE`20(key));
- X`20`20`20`20`20`20Writeln`20(KBD$CVT_ANSI_SMG`20(key):5)
- X`20`20`20END`20`7BFOR`7D;
- X
- X`20`20`20Writeln`20('Five`20loop...');
- X
- X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
- X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
- X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
- X`20`20`20END`20`7BFOR`7D;
- X
- X`20`20`20Writeln`20('Flush`20keyboard.');
- X
- X`20`20`20perform`20(KBD$FLUSH_KEYBOARD);
- X
- X`20`20`20Writeln`20('Five`20loop...');
- X
- X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
- X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
- X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
- X`20`20`20END`20`7BFOR`7D;
- X
- X`20`20`20Writeln`20('End');
- X
- X`20`20`20perform`20(KBD$CLOSE_KEYBOARD)
- X
- XEND`20(*`20DEMO`20PASCAL$KBD_ROUTINES`20*).
- $ call unpack DEMO_KBD$ROUTINES.PAS;1 1177951490 ""
- $!
- $ 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--**`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`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--**`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--`20++
- X--
- X--`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
- X--
- X--`20Sujet:`09`20`20`20Programme`20de`20demonstration`20des`20routines`20KBD$.
- V
- X--
- X--`20Version:`09`20`20`201.0
- X--
- X--`20Description:`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration
- V`20met`20en`20oeuvre`20la`20fonction
- X--`09`09`20`20`20KBD$READ_KEYSTROKE`20permettant`20d'attendre`20une`20action
- V`20au
- X--`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20corresponda
- Vnt`20a`20la
- X--`09`09`20`20`20touche`20actionnee.
- X--
- X--`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilisat
- Veur`20est`20prevenu
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonore
- V`20emit`20par`20le`20sous-programme`20d'IT.
- X--
- X--`09`09`20`20`20`20`20`20`20Afin`20de`20pouvoir`20recuperer`20les`20codes`20e
- Vmis`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--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20utilis
- Ver`20KBD$READ_KEYSTROKE,`20vous`20devez`20appeler`20au
- X--`09`09`20`20`20prealable`20la`20fonction`20KBD$OPEN_KEYBOARD`20et`20terminer
- V`20par
- X--`09`09`20`20`20KBD$CLOSE_KEYBOARD.
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20KBD$OPEN_K
- VEYBOARD`20permet,`20entre`20autres,`20de`20ne
- X--`09`09`20`20`20creer`20la`20zone`20tampon`20que`20si`20l'on`20desire`20reell
- Vement`20utiliser
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20KBD$READ_KEYSTROKE.
- X--
- X--`20Langage:`09`20`20`20ADA
- X--
- X--`20Fichier:`09`20`20`20DEMO_KBD_ROUTINES.ADA
- X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- 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`2025/05/92
- X--
- X--`20Modification:`20`20`2025/05/92
- X--
- X--`20--
- X
- X
- X
- X
- Xwith`20CONDITION_HANDLING;
- Xwith`20SYSTEM;
- Xwith`20LIB;
- Xwith`20KBD;
- Xwith`20TEXT_IO;
- X
- Xuse`20CONDITION_HANDLING;
- Xuse`20SYSTEM;
- Xuse`20KBD;
- Xuse`20TEXT_IO;
- X
- X
- Xprocedure`20DEMO_KBD_ROUTINES`20is
- X
- X
- X`20`20`20`20COND_VALUE`20:`20COND_VALUE_TYPE;
- X`20`20`20`20YES`20`20`20`20`20`20`20`20:`20BOOLEAN;
- X`20`20`20`20I`20`20`20`20`20`20`20`20`20`20:`20INTEGER;
- X`20`20`20`20KEY`20`20`20`20`20`20`20`20:`20T_ANSI_SEQUENCE;
- X`20`20`20`20CODE`20`20`20`20`20`20`20:`20UNSIGNED_WORD;
- X
- X
- X`20`20`20`20procedure`20CHECK`20(COND_VALUE`20:`20in`20COND_VALUE_TYPE)`20is
- X`20`20`20`20begin
- X`20`20`20`20`20`20`20`20if`20not`20SUCCESS`20(COND_VALUE)`20then
- X`09`20`20`20`20STOP`20(COND_VALUE);
- X`20`20`20`20`20`20`20`20end`20if;
- X`20`20`20`20end`20CHECK;
- X
- X
- X`20`20`20`20package`20LOCAL_INTEGER_IO`20is`20new`20TEXT_IO.INTEGER_IO(INTEGER
- V);
- X`20`20`20`20use`20LOCAL_INTEGER_IO;
- X
- X
- Xbegin
- X
- X`20`20`20`20OPEN_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X
- X`20`20`20`20PUT_LINE`20("Press`20a`20key.");
- X
- X`20`20`20`20loop
- X`20`20`20`20`20`20`20`20KEY_PRESSED`20(COND_VALUE`20=>`20COND_VALUE,`20YES`20=
- V>`20YES);
- X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X`09exit`20when`20YES;
- X`20`20`20`20end`20loop;
- X
- X`20`20`20`20PUT_LINE`20("Five`20loop...");
- X
- X`20`20`20`20for`20I`20in`201..5`20loop
- X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
- X`09PUT`20(I);
- X`09NEW_LINE;
- X`20`20`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>
- V`201.0);
- X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20end`20loop;
- X
- X`20`20`20`20PUT_LINE`20("Five`20readkey...");
- X
- X`20`20`20`20for`20I`20in`201..5`20loop
- X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(SMG`20code):`20");
- X`20`20`20`20`20`20`20`20READ_KEYSTROKE`20(COND_VALUE`20=>`20COND_VALUE,`20KEY
- V`20=>`20KEY);
- X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20`20`20`20`20CVT_ANSI_SMG`20(SMG_CODE`20=>`20CODE,`20SEQUENCE`20=>
- V`20KEY);
- X`20`20`20`20`20`20`20`20PUT`20(natural`20(CODE));
- X`09NEW_LINE;
- X`20`20`20`20end`20loop;
- X
- X`20`20`20`20PUT_LINE`20("Five`20loop...");
- X
- X`20`20`20`20for`20I`20in`201..5`20loop
- X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
- X`09PUT`20(I);
- X`09NEW_LINE;
- X`09delay`201.0;
- X--`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>`201.0
- V);
- X--`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20end`20loop;
- X
- X`20`20`20`20PUT_LINE`20("Flush`20keyboard.");
- X
- X`20`20`20`20FLUSH_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X
- X`20`20`20`20PUT_LINE`20("Five`20loop...");
- X
- X`20`20`20`20for`20I`20in`201..5`20loop
- X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
- X`09PUT`20(I);
- X`09NEW_LINE;
- X`09delay`201.0;
- X--`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>`201.0
- V);
- X--`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20end`20loop;
- X
- X`20`20`20`20PUT_LINE`20("End");
- X
- X`20`20`20`20CLOSE_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
- X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
- X
- Xend`20DEMO_KBD_ROUTINES;
- $ call unpack DEMO_KBD_ROUTINES.ADA;1 779701170 ""
- $!
- $ create 'f'
- X#ifndef`20__KBD$ROUTINES_LOADED
- X#define`20__KBD$ROUTINES_LOADED`20`201
- X
- X
- 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`20***************************************************************************
- V**
- X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
- X`20**`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`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
- X`20*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
- V`20Aerienne`20********
- X`20***************************************************************************
- V**/
- X
- X
- X
- X
- X/*
- X`20*`20Titre:`09`20`20`20HEADER`20KBD$ROUTINES
- X`20*
- X`20*`20Sujet:`09`20`20`20Fichier`20d'en-tete`20pour`20le`20module`20KBD$ROUTIN
- VES.
- 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`20la`20decla
- Vration`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`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`20le`20tampon`20clavier`20que`20si`20l'on`20desire
- V`20reellement
- X`20*`09`09`20`20`20utiliser`20kbd$read_keystroke.
- 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.
- 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*`20Langage:`09`20`20`20C`20ANSI
- X`20*
- X`20*`20Fichier:`09`20`20`20KBD$ROUTINES.H
- X`20*
- X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Systeme`20d'exploitatio
- Vn:`20VAX/VMS`20Version`205.4-3
- X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Compilateur:`20`20`20
- V`20`20`20`20`20`20`20`20`20VAX`20C`20Version`203.2-044
- 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`2023/05/92
- X`20*
- X`20*`20Modification:`20`20`2026/05/92
- X`20*
- X`20*/
- X
- X
- X
- X
- X/*****************************************************************************
- V
- X`20*`09TYPE`20DEFINITIONS`09`09`09`09`09`09`20`20`20`20`20*
- X`20***************************************************************************
- V**/
- X
- X
- Xtypedef`20unsigned`20char`20`20kbd$t_escape_overflow_buffer`5B4`5D;
- X
- Xtypedef`20struct`20`7B
- X`20`20`20`20unsigned`20char`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
- V`20ascii;
- X`20`20`20`20kbd$t_escape_overflow_buffer`20`20escOverBuffer;
- X`7D`20kbd$t_ansi_sequence;
- X
- X
- X
- X
- X/*****************************************************************************
- 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`20K
- VBD$`20FUNCTION`20DECLARATION`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**
- X`20***************************************************************************
- V**
- X`20***************************************************************************
- V**/
- X
- X
- X
- X
- X/*
- X`20*`20kbd$close_keyboard
- X`20*
- X`20*`20`20`20Libere`20la`20memoire`20des`20structures`20de`20donnees`20associe
- Ves`20a`20ce`20module.
- X`20*/
- X
- Xunsigned`20kbd$close_keyboard();
- X
- X
- X/*
- X`20*`20kbd$cvt_ansi_smg
- X`20*
- X`20*`20`20`20Convertit`20la`20sequence`20ANSI`20d'une`20touche`20en`20un`20cod
- Ve`20SMG.
- X`20*
- X`20*`20`20`20Liste`20des`20codes`20pouvant`20etre`20renvoyes`20(ils`20sont`20d
- Vefinis`20dans
- X`20*`20`20`20SYS$LIBRARY:SMGDEF.H):
- X`20*
- X`20*`09ascii`20(0`20-`20255)`09`09SMG$K_TRM_UP`09`09SMG$K_TRM_DOWN
- X`20*`09SMG$K_TRM_RIGHT`09`09SMG$K_TRM_LEFT`09`09SMG$K_TRM_ENTER
- X`20*`09SMG$K_TRM_PF1`09`09SMG$K_TRM_PF2`09`09SMG$K_TRM_PF3
- X`20*`09SMG$K_TRM_PF4`09`09SMG$K_TRM_COMMA`09`09SMG$K_TRM_MINUS
- X`20*`09SMG$K_TRM_PERIOD`09SMG$K_TRM_KP0`09`09SMG$K_TRM_KP1
- X`20*`09SMG$K_TRM_KP2`09`09SMG$K_TRM_KP3`09`09SMG$K_TRM_KP4
- X`20*`09SMG$K_TRM_KP5`09`09SMG$K_TRM_KP6`09`09SMG$K_TRM_KP7
- X`20*`09SMG$K_TRM_KP8`09`09SMG$K_TRM_KP9`09`09SMG$K_TRM_FIND
- X`20*`09SMG$K_TRM_INSERT_HERE`09SMG$K_TRM_REMOVE`09SMG$K_TRM_SELECT
- X`20*`09SMG$K_TRM_PREV_SCREEN`09SMG$K_TRM_NEXT_SCREEN`09SMG$K_TRM_F6
- X`20*`09SMG$K_TRM_F7`09`09SMG$K_TRM_F8`09`09SMG$K_TRM_F9
- X`20*`09SMG$K_TRM_F10`09`09SMG$K_TRM_F11`09`09SMG$K_TRM_F12
- X`20*`09SMG$K_TRM_F13`09`09SMG$K_TRM_F14`09`09SMG$K_TRM_HELP
- X`20*`09SMG$K_TRM_DO`09`09SMG$K_TRM_F17`09`09SMG$K_TRM_F18
- X`20*`09SMG$K_TRM_F19`09`09SMG$K_TRM_F20`09`09SMG$K_TRM_UP
- X`20*`09SMG$K_TRM_DOWN`09`09SMG$K_TRM_RIGHT`09`09SMG$K_TRM_LEFT
- X`20*`09SMG$K_TRM_UNKNOWN
- X`20*/
- X
- Xunsigned`20kbd$cvt_ansi_smg();
- X
- X
- X/*
- X`20*`20kbd$flush_keyboard
- X`20*
- X`20*`20`20`20Vide`20le`20tampon`20clavier.
- X`20*/
- X
- Xunsigned`20kbd$flush_keyboard();
- X
- X
- X/*
- X`20*`20kbd$key_pressed
- X`20*
- X`20*`20`20`20Indique`20si`20au`20moins`20une`20touche`20est`20presente`20dans
- V`20le`20tampon.
- X`20*/
- X
- Xunsigned`20kbd$key_pressed();
- X
- X
- X/*
- X`20*`20kbd$open_keyboard
- X`20*
- X`20*`20`20`20Creation`20et`20initialisation`20des`20structures`20de`20donnees
- V`20associees`20au`20module.
- X`20*/
- X
- Xunsigned`20kbd$open_keyboard();
- X
- X
- X/*
- X`20*`20kbd$read_keystroke
- X`20*
- X`20*`20`20`20Extrait`20la`20touche`20suivante`20du`20tampon;`20si`20ce`20derni
- Ver`20est`20vide,`20se`20met`20en
- X`20*`20`20`20attente`20d'une`20action`20au`20clavier.
- X`20*/
- X
- Xunsigned`20kbd$read_keystroke();
- X
- X
- X
- X
- X/*****************************************************************************
- V/
- X
- X#endif`20`20/*`20__KBD$ROUTINES_LOADED`20*/
- $ call unpack KBD$ROUTINES.H;1 1314154545 ""
- $!
- $ 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**)
- X(**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20K`20B`20D`20$`20R`20O`20U
- V`20T`20I`20N`20E`20S`20`20`20Implementation`20`20`20`20`20`20`20`20`20`20`20
- V`20`20`20`20`20`20**)
- X(**`09`09`20`20`20`20`09`09`09`09`09`09`09`20`20`20`20**)
- X(*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
- V`20Aerienne`20********)
- +-+-+-+-+-+-+-+- END OF PART 1 +-+-+-+-+-+-+-+-
-