Thread View: vmsnet.sources
1 messages
1 total messages
Started by Martin VICENTE
Tue, 05 Jan 1993 00:07
VMS/RTL/KBD, part 01/03
Author: Martin VICENTE
Date: Tue, 05 Jan 1993 00:07
Date: Tue, 05 Jan 1993 00:07
1444 lines
50558 bytes
50558 bytes
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 +-+-+-+-+-+-+-+-
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads