home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / vmsnet / sources / 481 < prev    next >
Encoding:
Internet Message Format  |  1993-01-05  |  48.0 KB

  1. Path: sparky!uunet!zaphod.mps.ohio-state.edu!sdd.hp.com!network.ucsd.edu!mvb.saic.com!vmsnet-sources
  2. Newsgroups: vmsnet.sources
  3. From: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
  4. Subject: VMS/RTL/KBD, part 01/03
  5. Date: Tue, 05 Jan 1993 00:07:01 GMT
  6. Message-ID: <9912945@MVB.SAIC.COM>
  7. Lines: 1444
  8. Approved: Mark.Berryman@Mvb.Saic.Com
  9.  
  10. Submitted-by: vicente@cenaath.cena.dgac.fr (Martin VICENTE)
  11. Posting-number: Volume 4, Issue 35
  12. Archive-name: keyboard_rtl/part01
  13.  
  14.          [ According to the README. file this package was written
  15.            to solve the need to detect and read single keystrokes
  16.            from the keyboard.  Definition files are included for
  17.            C, Pascal, and Ada.  The functions listed below are
  18.            provided. ]
  19.  
  20.     KBD$CLOSE_KEYBOARD:     Free memory from data-structures associated to this 
  21.              unit.
  22.  
  23.     KBD$CVT_ANSI_SMG:     Convert the ANSI sequence of a key into a SMG code.
  24.  
  25.     KBD$FLUSH_KEYBOARD:  Empty the keyboard buffer.
  26.  
  27.     KBD$KEY_PRESSED:     Indicate if at least one key is present in the buffer.
  28.  
  29.     KBD$OPEN_KEYBOARD:     Creation and initialization of the data-structures 
  30.              associated to the unit.
  31.  
  32.     KBD$READ_KEYSTROKE:  Extract the next key from the buffer; if the latter is
  33.              empty, wait for an action onto the keyboard.
  34.  
  35. $! ------------------ CUT HERE -----------------------
  36. $ v='f$verify(f$trnlnm("SHARE_UNPACK_VERIFY"))'
  37. $!
  38. $! This archive created by VMS_SHARE Version 8.1
  39. $!   On  4-JAN-1993 14:40:12.85   By user BERRYMAN    
  40. $!
  41. $! The VMS_SHARE software that created this archive
  42. $!    was written by  Andy Harper, Kings College London UK
  43. $!    -- September 1992
  44. $!
  45. $! Credit is due to these people for their original ideas:
  46. $!    James Gray, Michael Bednarek 
  47. $!
  48. $!+ THIS PACKAGE DISTRIBUTED IN 3 PARTS, TO KEEP EACH PART
  49. $!  BELOW 99 BLOCKS
  50. $!
  51. $! TO UNPACK THIS SHARE FILE, CONCATENATE ALL PARTS IN ORDER
  52. $! AND EXECUTE AS A COMMAND PROCEDURE  (  @name  )
  53. $!
  54. $! THE FOLLOWING FILE(S) WILL BE CREATED AFTER UNPACKING:
  55. $!       1. BUILD.COM;1
  56. $!       2. DEMO_KBD$ROUTINES.C;1
  57. $!       3. DEMO_KBD$ROUTINES.PAS;1
  58. $!       4. DEMO_KBD_ROUTINES.ADA;1
  59. $!       5. KBD$ROUTINES.H;1
  60. $!       6. KBD$ROUTINES.PAS;1
  61. $!       7. KBDMSG.MSG;1
  62. $!       8. KBD_.ADA;1
  63. $!       9. LINK_CC.OPT;1
  64. $!      10. PASCAL$KBD_ROUTINES.PAS;1
  65. $!
  66. $set="set"
  67. $set symbol/scope=(nolocal,noglobal)
  68. $f=f$parse("SHARE_UNPACK_TEMP","SYS$SCRATCH:."+f$getjpi("","PID"))
  69. $e="write sys$error  ""%UNPACK"", "
  70. $w="write sys$output ""%UNPACK"", "
  71. $ if .not. f$trnlnm("SHARE_UNPACK_LOG") then $ w = "!"
  72. $ ve=f$getsyi("version")
  73. $ if ve-f$extract(0,1,ve) .ges. "4.4" then $ goto start
  74. $ e "-E-OLDVER, Must run at least VMS 4.4"
  75. $ v=f$verify(v)
  76. $ exit 44
  77. $unpack: subroutine ! P1=filename, P2=checksum, P3=attributes
  78. $ if f$search(P1) .eqs. "" then $ goto file_absent
  79. $ e "-W-EXISTS, File ''P1' exists. Skipped."
  80. $ delete 'f'*
  81. $ exit
  82. $file_absent:
  83. $ if f$parse(P1) .nes. "" then $ goto dirok
  84. $ dn=f$parse(P1,,,"DIRECTORY")
  85. $ w "-I-CREDIR, Creating directory ''dn'"
  86. $ create/dir 'dn'
  87. $ if $status then $ goto dirok
  88. $ e "-E-CREDIRFAIL, Unable to create ''dn' File skipped."
  89. $ delete 'f'*
  90. $ exit
  91. $dirok:
  92. $ w "-I-UNPACK, Unpacking file ''P1'"
  93. $ n=P1
  94. $ if P3 .nes. "" then $ n=f
  95. $ if .not. f$verify() then $ define/user sys$output nl:
  96. $ EDIT/TPU/NOSEC/NODIS/COM=SYS$INPUT 'f'/OUT='n'
  97. PROCEDURE GetHex LOCAL x1,x2;x1:=INDEX(t,ERASE_CHARACTER(1))-1;x2:=INDEX(t,
  98. ERASE_CHARACTER(1))-1;RETURN 16*x1+x2;ENDPROCEDURE;
  99. PROCEDURE SkipPartsep LOOP EXITIF INDEX(ERASE_LINE,"-+-+-+-+-+-+-+-+")=1;
  100. ENDLOOP;ENDPROCEDURE;
  101. PROCEDURE ExpandChar CASE CURRENT_CHARACTER FROM ' ' TO 'z' ["`"]
  102. :ERASE_CHARACTER(1);COPY_TEXT(ASCII(GetHex));[" "]:ERASE_CHARACTER(1);[
  103. OUTRANGE,INRANGE]:MOVE_HORIZONTAL(1);ENDCASE;ENDPROCEDURE;
  104. PROCEDURE ProcessLine s:=ERASE_CHARACTER(1);LOOP EXITIF CURRENT_OFFSET>=LENGTH(
  105. CURRENT_LINE);ExpandChar;ENDLOOP;IF s="V" THEN APPEND_LINE;ENDIF;ENDPROCEDURE;
  106. PROCEDURE AdvanceLine MOVE_HORIZONTAL(-CURRENT_OFFSET);MOVE_VERTICAL(1);
  107. ENDPROCEDURE;PROCEDURE Decode POSITION(BEGINNING_OF(b));LOOP EXITIF MARK(NONE)=
  108. END_OF(b);IF INDEX(CURRENT_LINE,"+-+-+-+-+-+-+-+-")=1 THEN SkipPartSep;
  109. ELSE ProcessLine;AdvanceLine;ENDIF;ENDLOOP;ENDPROCEDURE;SET(FACILITY_NAME,
  110. "UNPACK");SET(SUCCESS,OFF);SET(INFORMATIONAL,OFF);t:="0123456789ABCDEF";f:=
  111. GET_INFO(COMMAND_LINE,"file_name");b:=CREATE_BUFFER(f,f);Decode;WRITE_FILE(b,
  112. GET_INFO(COMMAND_LINE,"output_file"));QUIT;
  113. $ if p3 .eqs. "" then $ goto dl
  114. $ open/write fdl &f
  115. $ write fdl "RECORD"
  116. $ write fdl P3
  117. $ close fdl
  118. $ w "-I-CONVRFM, Converting record format to ", P3
  119. $ convert/fdl=&f &f-1 &P1
  120. $dl: delete 'f'*
  121. $ if P2 .eqs. "" then $ goto ckskip
  122. $ checksum 'P1'
  123. $ if checksum$checksum .nes. P2 then $ -
  124.   e "-E-CHKSMFAIL, Checksum of ''P1' failed."
  125. $ exit
  126. $ckskip: e "-W-CHKSUMSKIP, checksum validation unavailable for ''P1'"
  127. $ endsubroutine
  128. $start:
  129. $!
  130. $ create 'f'
  131. X
  132. X$!------------------`20Distribution`20and`20Copyright`20-----------------
  133. X$!--
  134. X$!-`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  135. X$!--`20All`20rights`20reserved.
  136. X$!--
  137. X$!--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20n
  138. Votice
  139. X$!--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20a
  140. Vny`20form
  141. X$!--`20without`20written`20permission`20of`20the`20copyright`20owner.
  142. X$!--
  143. X$!--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20N
  144. Von`20Profit
  145. X$!--`20Organization
  146. X$!--
  147. X$!---------------------------------------------------------------
  148. X
  149. X
  150. X$!------------------`20Disclaimer`20---------------------------------
  151. X$!--
  152. X$!--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS
  153. V"`20and
  154. X$!--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  155. X$!--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitn
  156. Vess
  157. X$!--`20for`20a`20particular`20purpose`20exist.
  158. X$!--
  159. X$!--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20und
  160. Ver
  161. X$!--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitne
  162. Vss`20for
  163. X$!--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  164. V`20to
  165. X$!--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20T
  166. Vhe`20user
  167. X$!--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20th
  168. Vis
  169. X$!--`20software.
  170. X$!--
  171. X$!--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20peopl
  172. Ve`20be
  173. X$!--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  174. X$!--`20or`20inconsequential`20damages`20or`20lost`20profits.
  175. 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
  176. 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
  177. V`20`20`20`20`20`20`20`20`20`20
  178. X$!-------------------END-PROLOGUE--------------------------------
  179. X
  180. X
  181. X
  182. X
  183. X$!++
  184. X$!
  185. X$!`20Titre:`09`20`20`20BUILD
  186. X$!
  187. X$!`20Sujet:`09`20`20`20Fichier`20de`20procedure`20pour`20la`20reconstruction
  188. V`20d'un`20module
  189. X$!`09`09`20`20`20Pascal`20(interface`20+`20implementation)`20et`20son`20insert
  190. Vion`20dans
  191. X$!`09`09`20`20`20une`20librarie`20d'objets.
  192. X$!
  193. X$!`20Version:`09`20`20`201.3
  194. X$!
  195. X$!`20Description:`09`20`20`20Le`20module`20doit`20en`20fait`20se`20decomposer
  196. V`20en`202`20fichiers,`20un`20pour
  197. X$!`09`09`20`20`20la`20partie`20interface`20et`20l'autre`20pour`20la`20partie
  198. X$!`09`09`20`20`20implementation.
  199. X$!`09`09`20`20`20Ils`20doivent`20respecter`20le`20format`20suivant:`20file_V_x
  200. V_x.PAS
  201. X$!
  202. X$!`09`09`20`20`20Si`20P1`20=`201,`20alors`20compilation`20de`20l'interface
  203. X$!`09`09`20`20`20Si`20P1`20=`202,`20alors`20compilation`20de`20l'implementatio
  204. Vn
  205. X$!`09`09`20`20`20Si`20P1`20=`203,`20alors`20compilation`20de`20tout
  206. X$!
  207. X$!`09`09`20`20`20Si`20P2`20=`20F,`20alors`20phase`20finale
  208. X$!
  209. X$!`20Langage:`09`20`20`20DCL
  210. X$!
  211. X$!`20Fichier:`09`20`20`20BUILD.COM
  212. X$!
  213. X$!`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
  214. X$!`09`09`20`20`20Systeme`20d'exploitation:`20VMS`20Version`205.4-3
  215. X$!
  216. X$!`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
  217. X$!
  218. X$!`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
  219. X$!
  220. X$!`09`09`20`20`20Mail:`20`20`20C.E.N.A.
  221. X$!`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
  222. X$!`09`09`09`20`20`20Orly`20Sud`20205
  223. X$!`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
  224. X$!
  225. X$!`20Creation:`09`20`20`2019/05/92
  226. X$!
  227. X$!`20Modification:`20`20`2001/07/92
  228. X$!
  229. X$!--
  230. X$
  231. X$
  232. X$!====`20`20PARAMETRES`20DU`20PROGRAMME`20`20=================================
  233. V=============
  234. X$
  235. X$`20TIT`20`20`20`20`20=`20"KBD$ROUTINES"`09`09!`20Titre
  236. X$`20FIC_INT`20=`20"PASCAL$KBD_ROUTINES"`09!`20Nom`20du`20fichier`20interface
  237. X$`20FIC_IMP`20=`20"KBD$ROUTINES"`09`09!`20Nom`20du`20fichier`20implementation
  238. X$`20VER`20`20`20`20`20=`20""`09`09`09`09!`20Version`20(respectez`20le`20format
  239. V)
  240. X$`20LIB`20`20`20`20`20=`20"MYLIB"`09`09`09!`20Librairie
  241. X$
  242. X$!====`20`20LISTE`20DES`20ETIQUETTES`20`20====================================
  243. V=============
  244. X$!
  245. X$!`20afp`20`20AFFICHER`20PAVE`20NUMERIQUE
  246. X$!`20gtm`20`20GET`20TIME
  247. X$!`20int`20`20COMPILER`20INTERFACE
  248. X$!`20imp`20`20COMPILER`20IMPLEMENTATION
  249. X$!`20tou`20`20TOUT`20COMPILER
  250. X$!`20cin`20`20COMPILER`20INTERFACE
  251. X$!`20cim`20`20COMPILER`20IMPLEMENTATION
  252. X$!
  253. X$!====`20`20DEFINITION`20DES`20SYMBOLES`20`20=================================
  254. V=============
  255. X$
  256. X$`20AFFICHER`20`20`20:=`20write`20sys$output
  257. X$`20LIGNE_VIDE`20:=`20"''AFFICHER'`20"""
  258. X$
  259. X$`20VC`20=`20"''VIDEO_C'"
  260. X$`20VI`20=`20"''VIDEO_I'"
  261. X$`20VB`20=`20"''VIDEO_B'"
  262. X$`20VN`20=`20"''VIDEO_N'"
  263. X$
  264. X$!====`20`20DEBUT`20DU`20PROGRAMME`20`20======================================
  265. V=============
  266. X$
  267. X$`20if`20p1`20.eqs.`20""`20then`20goto`20afp!AFFICHER`20PAVE`20NUMERIQUE
  268. X$
  269. X$`20gosub`20gtm!GET`20TIME
  270. X$
  271. X$`20DATE`20`20=`20f$extract(0,11,TIME)
  272. X$`20HEURE`20=`20f$extract(12,5,TIME)
  273. X$`20TITRE`20=`20"''VI'BUILD`20DE`20''TIT'`20LE`20''DATE'`20A`20''HEURE'''VN'"
  274. X$
  275. X$`20EFFACER`20:=`20delete/since='TIME'
  276. X$
  277. X$`20if`20p2`20.eqs.`20"F"
  278. X$`20`20`20then
  279. X$`20`20`20`20`20SOUSTITRE`20=`20"Version`20''VER'`20-`20Phase`20finale"
  280. X$`20`20`20`20`20COMPILER`20:=`20pascal/warning/nocheck/optimize=all
  281. X$`20`20`20else
  282. X$`20`20`20`20`20SOUSTITRE`20=`20"Version`20''VER'`20-`20Phase`20de`20developpe
  283. Vment"
  284. X$`20`20`20`20`20COMPILER`20:=`20pascal/warning/check=all/nooptimize
  285. X$`20endif
  286. X$
  287. X$`20if`20p1`20.eqs.`20"1"
  288. X$`20`20`20then
  289. X$`20`20`20`20`20gosub`20int!COMPILER`20INTERFACE
  290. X$`20`20`20else
  291. X$`20`20`20`20`20if`20p1`20.eqs.`20"2"
  292. X$`09then
  293. X$`20`20`20`20`20`20`20`20`20gosub`20imp!COMPILER`20IMPLEMENTATION
  294. X$`09else
  295. X$`20`20`20`20`20`20`20`20`20if`20p1`20.eqs.`20"3"
  296. X$`09`20`20`20`20then
  297. X$`20`20`20`20`20`20`20`20`20`20`20`20`20gosub`20tou!TOUT`20COMPILER
  298. X$`09`20`20`20`20else
  299. X$`20`20`20`20`20`20`20`20`20`20`20`20`20AFFICHER`20"%BUILD-E-PARINV,`20paramet
  300. Vre`20invalide"
  301. X$`09`20`20`20`20`20`20AFFICHER`20"`20\''p1'\"
  302. X$`09`20`20endif
  303. X$`20`20`20`20`20endif
  304. X$`20endif
  305. X$
  306. X$`20exit
  307. X$
  308. X$`20afp:!AFFICHER`20PAVE`20NUMERIQUE
  309. X$
  310. X$`09DEF`20:=`20define/key/terminate/nolog
  311. X$
  312. X$`09DEF`20help`20"@`20BUILD"
  313. X$`09DEF`20kp1`20`20"@`20BUILD`201"
  314. X$`09DEF`20kp2`20`20"@`20BUILD`202"
  315. X$`09DEF`20kp3`20`20"@`20BUILD`203"
  316. X$
  317. X$`09set`20terminal/application_keypad
  318. X$
  319. X$`09LIGNE_VIDE
  320. X$`09AFFICHER`20`20"DEFINITION`20DU`20PAVE`20NUMERIQUE"
  321. X$`09LIGNE_VIDE
  322. X$
  323. X$`09AFFICHER`20"`09HELP`20->`20DEFINITION`20DU`20PAVE`20NUMERIQUE"
  324. X$`09AFFICHER`20"`09KP1`20`20->`20COMPILER`20L'INTERFACE"
  325. X$`09AFFICHER`20"`09KP2`20`20->`20COMPILER`20L'IMPLEMENTATION"
  326. X$`09AFFICHER`20"`09KP3`20`20->`20COMPILER`20TOUT"
  327. X$
  328. X$`09LIGNE_VIDE
  329. X$
  330. X$`09exit
  331. X$
  332. X$!====`20`20FIN`20DU`20PROGRAMME`20`20========================================
  333. V=============
  334. X$
  335. X$`20int:!COMPILER`20INTERFACE
  336. X$
  337. X$`09AFFICHER`20`20TITRE
  338. X$`09AFFICHER`20`20SOUSTITRE
  339. X$`09LIGNE_VIDE
  340. X$
  341. X$`09gosub`20cin!COMPILER`20INTERFACE
  342. X$
  343. X$`20return
  344. X$
  345. X$`20imp:!COMPILER`20IMPLEMENTATION
  346. X$
  347. X$`09AFFICHER`20`20TITRE
  348. X$`09AFFICHER`20`20SOUSTITRE
  349. X$`09LIGNE_VIDE
  350. X$
  351. X$`09gosub`20cim!COMPILER`20IMPLEMENTATION
  352. X$
  353. X$`20return
  354. X$
  355. X$`20tou:!TOUT`20COMPILER
  356. X$
  357. X$`09AFFICHER`20`20TITRE
  358. X$`09AFFICHER`20`20SOUSTITRE
  359. X$`09LIGNE_VIDE
  360. X$
  361. X$`09gosub`20cin!COMPILER`20INTERFACE
  362. X$`09gosub`20cim!COMPILER`20IMPLEMENTATION
  363. X$
  364. X$`20return
  365. X$
  366. X$`20cin:!COMPILER`20INTERFACE
  367. X$
  368. X$`09AFFICHER`20`20"''VB'COMPILATION`20DU`20MODULE`20''FIC_INT'''VN'"
  369. X$
  370. X$`09SRC`20=`20"''FIC_INT'''VER'.PAS"
  371. X$`09INT`20=`20"''FIC_INT'"
  372. X$
  373. X$`09purge`20'SRC'
  374. X$
  375. X$`09AFFICHER`20"Compilation"
  376. X$
  377. X$`09COMPILER/environment='INT'/object='INT'/nodiagnostics`20'SRC'
  378. X$
  379. X$`09purge`20'INT'.PEN
  380. X$`09purge`20'INT'.OBJ
  381. X$
  382. X$`09define`20sys$output`20nl:
  383. X$`09define`20sys$error`20`20nl:
  384. X$`09delete`20'INT'.DIA;*
  385. X$`09deassign`20sys$error
  386. X$`09deassign`20sys$output
  387. X$
  388. X$`09AFFICHER`20"Insertion`20dans`20la`20librairie"
  389. X$
  390. X$`09library/replace`20'LIB'`20'FIC_INT'
  391. X$
  392. X$`20return
  393. X$
  394. X$`20cim:!COMPILER`20IMPLEMENTATION
  395. X$
  396. X$`09AFFICHER`20"''VB'COMPILATION`20DU`20MODULE`20''FIC_IMP'''VN'"
  397. X$
  398. X$`09SRC`20=`20"''FIC_IMP'''VER'.PAS"
  399. X$`09IMP`20=`20"''FIC_IMP'"
  400. X$
  401. X$`09purge`20'SRC'
  402. X$
  403. X$`09AFFICHER`20"Compilation"
  404. X$
  405. X$`09COMPILER/noenvironment/object='IMP'/nodiagnostics`20'SRC'
  406. X$
  407. X$`09purge`20'IMP'.OBJ
  408. X$
  409. X$`09define`20sys$output`20nl:
  410. X$`09define`20sys$error`20`20nl:
  411. X$`09delete`20'INT'.DIA;*
  412. X$`09deassign`20sys$error
  413. X$`09deassign`20sys$output
  414. X$
  415. X$`09AFFICHER`20"Insertion`20dans`20la`20librairie"
  416. X$
  417. X$`09library/replace`20'LIB'`20'FIC_IMP'
  418. X$
  419. X$`20return
  420. X$
  421. X$`20gtm:!GET`20TIME
  422. X$
  423. X$`09TIME`20`20=`20f$time`20()
  424. X$`09DATE`20`20=`20f$extract(0,11,TIME)
  425. X$`09HEURE`20=`20f$extract(12,11,TIME)
  426. X$
  427. X$!`09Conversion`20du`20format`20de`20time`20de`20`20DD-MMM-YYYY`20HH:MM:SS.CC
  428. X$!`09`09`09`09`20`20`20`20`20en`20`20DD-MMM-YYYY:HH:MM:SS.CC
  429. X$
  430. X$`09TIME`20=`20"''DATE':''HEURE'"
  431. X$
  432. X$`20return
  433. X$
  434. $ call unpack BUILD.COM;1 1209236899 ""
  435. $!
  436. $ create 'f'
  437. X/*
  438. X------------------`20Distribution`20and`20Copyright`20-----------------
  439. X--
  440. X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  441. X--`20All`20rights`20reserved.
  442. X--
  443. X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
  444. Vice
  445. X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
  446. V`20form
  447. X--`20without`20written`20permission`20of`20the`20copyright`20owner.
  448. X--
  449. X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
  450. V`20Profit
  451. X--`20Organization
  452. X--
  453. X---------------------------------------------------------------
  454. X
  455. X
  456. X------------------`20Disclaimer`20---------------------------------
  457. X--
  458. X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
  459. V`20and
  460. X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  461. X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
  462. Vs
  463. X--`20for`20a`20particular`20purpose`20exist.
  464. X--
  465. X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
  466. V
  467. X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
  468. V`20for
  469. X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  470. V`20to
  471. X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
  472. V`20user
  473. X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
  474. V
  475. X--`20software.
  476. X--
  477. X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
  478. V`20be
  479. X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  480. X--`20or`20inconsequential`20damages`20or`20lost`20profits.
  481. 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
  482. 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
  483. V`20`20`20`20`20`20`20`20`20
  484. X-------------------END-PROLOGUE--------------------------------
  485. X*/
  486. X
  487. X
  488. X
  489. X
  490. X/*****************************************************************************
  491. V
  492. X`20***************************************************************************
  493. V**
  494. X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
  495. X`20**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20D`20E`20M`20O`20`20`20D`20E
  496. V`20S`20`20`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20K`20B`20D`20$`20`20`20`20
  497. V`20`20`20`20`20`20`20`20`20`20`20**
  498. X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
  499. X`20*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
  500. V`20Aerienne`20********
  501. X`20***************************************************************************
  502. V**/
  503. X
  504. X
  505. X
  506. X
  507. X/*
  508. X`20*`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
  509. X`20*
  510. X`20*`20Sujet:`09`20`20`20Single`20keypress`20under`20VMS.
  511. X`20*
  512. X`20*`20Version:`09`20`20`201.0-00
  513. X`20*
  514. X`20*`20Description:`09`20`20`20Programme`20de`20demonstration`20des`20routines
  515. V`20kbd$.
  516. X`20*
  517. X`20*`09`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration`20met`20en
  518. V`20oeuvre`20la`20fonction
  519. X`20*`09`09`20`20`20kbd$read_keystroke`20permettant`20d'attendre`20une`20action
  520. V`20au
  521. X`20*`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20correspon
  522. Vdant`20a`20la
  523. X`20*`09`09`20`20`20touche`20actionnee.
  524. X`20*
  525. X`20*`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilis
  526. Vateur`20est`20prevenu
  527. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonor
  528. Ve`20emit`20par`20le`20sous-programme`20d'IT.
  529. X`20*
  530. X`20*`09`09`20`20`20`20`20`20`20Afin`20de`20pouvoir`20recuperer`20les`20codes
  531. V`20emis`20par`20CTRL/C,
  532. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTR
  533. VL/S,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
  534. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer
  535. V`20la`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
  536. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
  537. X`20*
  538. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20util
  539. Viser`20kbd$read_keystroke,`20vous`20devez`20appeler`20au
  540. X`20*`09`09`20`20`20prealable`20la`20fonction`20kbd$open_keyboard`20et`20termin
  541. Ver`20par
  542. X`20*`09`09`20`20`20kbd$close_keyboard.
  543. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20kbd$open
  544. V_keyboard`20permet,`20entre`20autres,`20de`20ne
  545. X`20*`09`09`20`20`20creer`20la`20zone`20tampon`20que`20si`20l'on`20desire`20ree
  546. Vllement`20utiliser
  547. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20kbd$read_keystroke.
  548. X`20*
  549. X`20*`20Langage:`09`20`20`20C`20ANSI
  550. X`20*
  551. X`20*`20Fichier:`09`20`20`20DEMO_KBD$ROUTINES.C
  552. X`20*
  553. X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
  554. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Systeme`20d'exploitatio
  555. Vn:`20VAX/VMS`20Version`205.4-3
  556. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Compilateur:`20`20`20
  557. V`20`20`20`20`20`20`20`20`20VAX`20C`20Version`203.2-044
  558. X`20*
  559. X`20*`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
  560. X`20*
  561. X`20*`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
  562. X`20*
  563. X`20*`09`09`20`20`20Mail:`20`20`20C.E.N.A.
  564. X`20*`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
  565. X`20*`09`09`09`20`20`20Orly`20Sud`20205
  566. X`20*`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
  567. X`20*
  568. X`20*`20Creation:`09`20`20`2023/05/92
  569. X`20*
  570. X`20*`20Modification:`20`20`2026/05/92
  571. X`20*
  572. X`20*/
  573. X
  574. X
  575. X
  576. X
  577. X#include`20<stdio.h>
  578. X#include`20<lib$routines.h>
  579. X#include`20"kbd$routines.h"
  580. X
  581. X
  582. Xconst`20float`20`20second`20=`201.0;
  583. X
  584. Xstatic`20void`20`20perform();
  585. X
  586. X
  587. Xmain()`20
  588. X`7B
  589. X`20`20`20`20char`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20yes;
  590. X`20`20`20`20int`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20i;
  591. X`20`20`20`20kbd$t_ansi_sequence`20`20key;
  592. X
  593. X
  594. X`20`20`20`20perform(kbd$open_keyboard());
  595. X
  596. X`20`20`20`20(void)`20printf("Press`20a`20key.\n");
  597. X
  598. X`20`20`20`20do`20`7B
  599. X`09(void)`20kbd$key_pressed(`26yes);
  600. X`20`20`20`20`7D`20while`20(!yes);
  601. X
  602. X`20`20`20`20(void)`20printf("Five`20loop...\n");
  603. X
  604. X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
  605. X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
  606. Vn",`20i);
  607. X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
  608. X`20`20`20`20`7D
  609. X
  610. X`20`20`20`20(void)`20printf("Five`20readkey...\n");
  611. X
  612. X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
  613. X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(SMG`20code):
  614. V`20");
  615. X`20`20`20`20`20`20`20`20perform(kbd$read_keystroke(`26key));
  616. X`20`20`20`20`20`20`20`20(void)`20printf("%d\n",`20kbd$cvt_ansi_smg(`26key));
  617. X`20`20`20`20`7D
  618. X
  619. X`20`20`20`20(void)`20printf("Five`20loop...\n");
  620. X
  621. X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
  622. X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
  623. Vn",`20i);
  624. X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
  625. X`20`20`20`20`7D
  626. X
  627. X`20`20`20`20(void)`20printf("Flush`20keyboard.\n");
  628. X
  629. X`20`20`20`20perform(kbd$flush_keyboard());
  630. X
  631. X`20`20`20`20(void)`20printf("Five`20loop...\n");
  632. X
  633. X`20`20`20`20for`20(i`20=`200;`20i`20<`205;`20i++)`20`7B
  634. X`20`20`20`20`20`20`20`20(void)`20printf("Programme`20principal`20(loop):`20%d\
  635. Vn",`20i);
  636. X`20`20`20`20`20`20`20`20(void)`20lib$wait(`26second);
  637. X`20`20`20`20`7D
  638. X
  639. X`20`20`20`20(void)`20printf("End\n");
  640. X
  641. X`20`20`20`20perform(kbd$close_keyboard());
  642. X`7D
  643. X
  644. X
  645. Xstatic`20void`20perform(unsigned`20cond_value)
  646. X`7B
  647. X`20`20`20`20if`20(!(cond_value`20`26`201))`20(void)`20lib$stop(cond_value);
  648. X`7D
  649. $ call unpack DEMO_KBD$ROUTINES.C;1 1430524156 ""
  650. $!
  651. $ create 'f'
  652. X(*
  653. X------------------`20Distribution`20and`20Copyright`20-----------------
  654. X--
  655. X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  656. X--`20All`20rights`20reserved.
  657. X--
  658. X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
  659. Vice
  660. X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
  661. V`20form
  662. X--`20without`20written`20permission`20of`20the`20copyright`20owner.
  663. X--
  664. X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
  665. V`20Profit
  666. X--`20Organization
  667. X--
  668. X---------------------------------------------------------------
  669. X
  670. X
  671. X------------------`20Disclaimer`20---------------------------------
  672. X--
  673. X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
  674. V`20and
  675. X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  676. X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
  677. Vs
  678. X--`20for`20a`20particular`20purpose`20exist.
  679. X--
  680. X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
  681. V
  682. X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
  683. V`20for
  684. X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  685. V`20to
  686. X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
  687. V`20user
  688. X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
  689. V
  690. X--`20software.
  691. X--
  692. X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
  693. V`20be
  694. X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  695. X--`20or`20inconsequential`20damages`20or`20lost`20profits.
  696. 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
  697. 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
  698. V`20`20`20`20`20`20`20`20`20
  699. X-------------------END-PROLOGUE--------------------------------
  700. X*)
  701. X
  702. X
  703. X
  704. X
  705. X(*****************************************************************************
  706. V)
  707. X(*****************************************************************************
  708. V)
  709. 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
  710. 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
  711. 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**)
  712. X(**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20D`20E`20M`20O`20`20`20D`20E
  713. V`20S`20`20`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20K`20B`20D`20$`20`20`20`20
  714. V`20`20`20`20`20`20`20`20`20`20`20**)
  715. 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
  716. 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
  717. 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**)
  718. X(********`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
  719. V`20Aerienne`20*******)
  720. X(*****************************************************************************
  721. V)
  722. X
  723. X
  724. X
  725. X
  726. X(*
  727. X`20*`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
  728. X`20*
  729. X`20*`20Sujet:`09`20`20`20Programme`20de`20demonstration`20des`20routines`20KBD
  730. V$.
  731. X`20*
  732. X`20*`20Version:`09`20`20`201.0
  733. X`20*
  734. X`20*`20Description:`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration
  735. V`20met`20en`20oeuvre`20la`20fonction
  736. X`20*`09`09`20`20`20KBD$READ_KEYSTROKE`20permettant`20d'attendre`20une`20action
  737. V`20au
  738. X`20*`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20correspon
  739. Vdant`20a`20la
  740. X`20*`09`09`20`20`20touche`20actionnee.
  741. X`20*
  742. X`20*`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilis
  743. Vateur`20est`20prevenu
  744. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonor
  745. Ve`20emit`20par`20le`20sous-programme`20d'IT.
  746. X`20*
  747. X`20*`09`09`20`20`20`20`20`20`20Afin`20de`20pouvoir`20recuperer`20les`20codes
  748. V`20emis`20par`20CTRL/C,
  749. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTR
  750. VL/S,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
  751. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer
  752. V`20la`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
  753. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
  754. X`20*
  755. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20util
  756. Viser`20KBD$READ_KEYSTROKE,`20vous`20devez`20appeler`20au
  757. X`20*`09`09`20`20`20prealable`20la`20fonction`20KBD$OPEN_KEYBOARD`20et`20termin
  758. Ver`20par
  759. X`20*`09`09`20`20`20KBD$CLOSE_KEYBOARD.
  760. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20KBD$OPEN
  761. V_KEYBOARD`20permet,`20entre`20autres,`20de`20ne
  762. X`20*`09`09`20`20`20creer`20la`20zone`20tampon`20que`20si`20l'on`20desire`20ree
  763. Vllement`20utiliser
  764. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20KBD$READ_KEYSTROKE.
  765. X`20*
  766. X`20*`20Langage:`09`20`20`20PASCAL`20QUASI`20STANDARD
  767. X`20*
  768. X`20*`20Fichier:`09`20`20`20DEMO_PASCAL$KBD_ROUTINES.PAS
  769. 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
  770. X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
  771. X`20*`09`09`20`20`20Systeme`20d'exploitation:`20VAX/VMS`20Version`205.4-3
  772. X`20*`09`09`20`20`20Compilateur:`20`20`20`20`20`20`20`20`20`20`20`20VAX`20Pasca
  773. Vl`20Version`204.3
  774. X`20*
  775. X`20*`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
  776. X`20*
  777. X`20*`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
  778. X`20*
  779. X`20*`09`09`20`20`20Mail:`20`20`20C.E.N.A.
  780. X`20*`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
  781. X`20*`09`09`09`20`20`20Orly`20Sud`20205
  782. X`20*`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
  783. X`20*
  784. X`20*`20Creation:`09`20`20`2019/05/92
  785. X`20*
  786. X`20*`20Modification:`20`20`2021/12/92
  787. X`20*
  788. X`20*)
  789. X
  790. X
  791. X
  792. X
  793. X`5BINHERIT(`20'sys$library:pascal$lib_routines','pascal$kbd_routines'`20`20)
  794. V`5D
  795. X
  796. X
  797. XPROGRAM`20`20demo_kbd$routines`20(output);
  798. X
  799. X
  800. XPROCEDURE`20`20perform`20(cond_value`20:`20UNSIGNED);
  801. X
  802. XBEGIN
  803. X
  804. X`20`20`20IF`20NOT`20Odd`20(cond_value)`20THEN`20LIB$STOP`20(cond_value)
  805. X
  806. XEND`20(*`20perform`20*);
  807. X
  808. X
  809. XVAR
  810. X
  811. X`20`20`20yes`20:`20BOOLEAN;
  812. X`20`20`20i`20`20`20:`20INTEGER;
  813. X`20`20`20key`20:`20KBD$T_ANSI_SEQUENCE;
  814. X
  815. X
  816. XBEGIN
  817. X
  818. X`20`20`20perform`20(KBD$OPEN_KEYBOARD);
  819. X
  820. X`20`20`20Writeln`20('Press`20a`20key.');
  821. X
  822. X`20`20`20REPEAT
  823. X`20`20`20`20`20`20perform`20(KBD$KEY_PRESSED`20(yes))
  824. X`20`20`20UNTIL`20yes;
  825. X
  826. X`20`20`20Writeln`20('Five`20loop...');
  827. X
  828. X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
  829. X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
  830. X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
  831. X`20`20`20END`20`7BFOR`7D;
  832. X
  833. X`20`20`20Writeln`20('Five`20readkey...');
  834. X
  835. X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
  836. X`20`20`20`20`20`20Write`20('Programme`20principal`20(SMG`20code):`20');
  837. X`20`20`20`20`20`20perform`20(KBD$READ_KEYSTROKE`20(key));
  838. X`20`20`20`20`20`20Writeln`20(KBD$CVT_ANSI_SMG`20(key):5)
  839. X`20`20`20END`20`7BFOR`7D;
  840. X
  841. X`20`20`20Writeln`20('Five`20loop...');
  842. X
  843. X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
  844. X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
  845. X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
  846. X`20`20`20END`20`7BFOR`7D;
  847. X
  848. X`20`20`20Writeln`20('Flush`20keyboard.');
  849. X
  850. X`20`20`20perform`20(KBD$FLUSH_KEYBOARD);
  851. X
  852. X`20`20`20Writeln`20('Five`20loop...');
  853. X
  854. X`20`20`20FOR`20i`20:=`201`20TO`205`20DO`20BEGIN
  855. X`20`20`20`20`20`20Writeln`20('Programme`20principal`20(loop):`20',`20i:2);
  856. X`20`20`20`20`20`20perform`20(LIB$WAIT`20(1))
  857. X`20`20`20END`20`7BFOR`7D;
  858. X
  859. X`20`20`20Writeln`20('End');
  860. X
  861. X`20`20`20perform`20(KBD$CLOSE_KEYBOARD)
  862. X
  863. XEND`20(*`20DEMO`20PASCAL$KBD_ROUTINES`20*).
  864. $ call unpack DEMO_KBD$ROUTINES.PAS;1 1177951490 ""
  865. $!
  866. $ create 'f'
  867. X
  868. X------------------`20Distribution`20and`20Copyright`20-----------------
  869. X--
  870. X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  871. X--`20All`20rights`20reserved.
  872. X--
  873. X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
  874. Vice
  875. X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
  876. V`20form
  877. X--`20without`20written`20permission`20of`20the`20copyright`20owner.
  878. X--
  879. X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
  880. V`20Profit
  881. X--`20Organization
  882. X--
  883. X---------------------------------------------------------------
  884. X
  885. X
  886. X------------------`20Disclaimer`20---------------------------------
  887. X--
  888. X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
  889. V`20and
  890. X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  891. X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
  892. Vs
  893. X--`20for`20a`20particular`20purpose`20exist.
  894. X--
  895. X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
  896. V
  897. X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
  898. V`20for
  899. X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  900. V`20to
  901. X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
  902. V`20user
  903. X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
  904. V
  905. X--`20software.
  906. X--
  907. X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
  908. V`20be
  909. X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  910. X--`20or`20inconsequential`20damages`20or`20lost`20profits.
  911. 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
  912. 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
  913. V`20`20`20`20`20`20`20`20`20
  914. X-------------------END-PROLOGUE--------------------------------
  915. X
  916. X
  917. X
  918. X
  919. X--****************************************************************************
  920. V*
  921. X--****************************************************************************
  922. V*
  923. 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
  924. 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
  925. 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**
  926. X--**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20D`20E`20M`20O`20`20`20D`20E
  927. V`20S`20`20`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20K`20B`20D`20$`20`20`20`20
  928. V`20`20`20`20`20`20`20`20`20`20`20**
  929. 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
  930. 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
  931. 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**
  932. X--********`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
  933. V`20Aerienne`20*******
  934. X--****************************************************************************
  935. V*
  936. X
  937. X
  938. X
  939. X
  940. X--`20++
  941. X--
  942. X--`20Titre:`09`20`20`20DEMO`20DES`20ROUTINES`20KBD$
  943. X--
  944. X--`20Sujet:`09`20`20`20Programme`20de`20demonstration`20des`20routines`20KBD$.
  945. V
  946. X--
  947. X--`20Version:`09`20`20`201.0
  948. X--
  949. X--`20Description:`09`20`20`20`20`20`20`20Ce`20programme`20de`20demonstration
  950. V`20met`20en`20oeuvre`20la`20fonction
  951. X--`09`09`20`20`20KBD$READ_KEYSTROKE`20permettant`20d'attendre`20une`20action
  952. V`20au
  953. X--`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20corresponda
  954. Vnt`20a`20la
  955. X--`09`09`20`20`20touche`20actionnee.
  956. X--
  957. X--`09`09`20`20`20`20`20`20`20Lorsque`20le`20tampon`20est`20plein,`20l'utilisat
  958. Veur`20est`20prevenu
  959. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonore
  960. V`20emit`20par`20le`20sous-programme`20d'IT.
  961. X--
  962. X--`09`09`20`20`20`20`20`20`20Afin`20de`20pouvoir`20recuperer`20les`20codes`20e
  963. Vmis`20par`20CTRL/C,
  964. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTRL/
  965. VS,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
  966. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer`20l
  967. Va`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
  968. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
  969. X--
  970. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20utilis
  971. Ver`20KBD$READ_KEYSTROKE,`20vous`20devez`20appeler`20au
  972. X--`09`09`20`20`20prealable`20la`20fonction`20KBD$OPEN_KEYBOARD`20et`20terminer
  973. V`20par
  974. X--`09`09`20`20`20KBD$CLOSE_KEYBOARD.
  975. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20KBD$OPEN_K
  976. VEYBOARD`20permet,`20entre`20autres,`20de`20ne
  977. X--`09`09`20`20`20creer`20la`20zone`20tampon`20que`20si`20l'on`20desire`20reell
  978. Vement`20utiliser
  979. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20KBD$READ_KEYSTROKE.
  980. X--
  981. X--`20Langage:`09`20`20`20ADA
  982. X--
  983. X--`20Fichier:`09`20`20`20DEMO_KBD_ROUTINES.ADA
  984. X--`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  985. X--`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
  986. X--`09`09`20`20`20Systeme`20d'exploitation:`20VAX/VMS`20Version`205.4
  987. X--`09`09`20`20`20Compilateur:`20`20`20`20`20`20`20`20`20`20`20`20VAX`20Ada`20V
  988. Version`202.1-28
  989. X--
  990. X--`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
  991. X--
  992. X--`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
  993. X--
  994. X--`09`09`20`20`20Mail:`20`20`20C.E.N.A.
  995. X--`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
  996. X--`09`09`09`20`20`20Orly`20Sud`20205
  997. X--`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
  998. X--
  999. X--`20Creation:`09`20`20`2025/05/92
  1000. X--
  1001. X--`20Modification:`20`20`2025/05/92
  1002. X--
  1003. X--`20--
  1004. X
  1005. X
  1006. X
  1007. X
  1008. Xwith`20CONDITION_HANDLING;
  1009. Xwith`20SYSTEM;
  1010. Xwith`20LIB;
  1011. Xwith`20KBD;
  1012. Xwith`20TEXT_IO;
  1013. X
  1014. Xuse`20CONDITION_HANDLING;
  1015. Xuse`20SYSTEM;
  1016. Xuse`20KBD;
  1017. Xuse`20TEXT_IO;
  1018. X
  1019. X
  1020. Xprocedure`20DEMO_KBD_ROUTINES`20is
  1021. X
  1022. X
  1023. X`20`20`20`20COND_VALUE`20:`20COND_VALUE_TYPE;
  1024. X`20`20`20`20YES`20`20`20`20`20`20`20`20:`20BOOLEAN;
  1025. X`20`20`20`20I`20`20`20`20`20`20`20`20`20`20:`20INTEGER;
  1026. X`20`20`20`20KEY`20`20`20`20`20`20`20`20:`20T_ANSI_SEQUENCE;
  1027. X`20`20`20`20CODE`20`20`20`20`20`20`20:`20UNSIGNED_WORD;
  1028. X
  1029. X
  1030. X`20`20`20`20procedure`20CHECK`20(COND_VALUE`20:`20in`20COND_VALUE_TYPE)`20is
  1031. X`20`20`20`20begin
  1032. X`20`20`20`20`20`20`20`20if`20not`20SUCCESS`20(COND_VALUE)`20then
  1033. X`09`20`20`20`20STOP`20(COND_VALUE);
  1034. X`20`20`20`20`20`20`20`20end`20if;
  1035. X`20`20`20`20end`20CHECK;
  1036. X
  1037. X
  1038. X`20`20`20`20package`20LOCAL_INTEGER_IO`20is`20new`20TEXT_IO.INTEGER_IO(INTEGER
  1039. V);
  1040. X`20`20`20`20use`20LOCAL_INTEGER_IO;
  1041. X
  1042. X
  1043. Xbegin
  1044. X
  1045. X`20`20`20`20OPEN_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
  1046. X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1047. X
  1048. X`20`20`20`20PUT_LINE`20("Press`20a`20key.");
  1049. X
  1050. X`20`20`20`20loop
  1051. X`20`20`20`20`20`20`20`20KEY_PRESSED`20(COND_VALUE`20=>`20COND_VALUE,`20YES`20=
  1052. V>`20YES);
  1053. X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1054. X`09exit`20when`20YES;
  1055. X`20`20`20`20end`20loop;
  1056. X
  1057. X`20`20`20`20PUT_LINE`20("Five`20loop...");
  1058. X
  1059. X`20`20`20`20for`20I`20in`201..5`20loop
  1060. X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
  1061. X`09PUT`20(I);
  1062. X`09NEW_LINE;
  1063. X`20`20`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>
  1064. V`201.0);
  1065. X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1066. X`20`20`20`20end`20loop;
  1067. X
  1068. X`20`20`20`20PUT_LINE`20("Five`20readkey...");
  1069. X
  1070. X`20`20`20`20for`20I`20in`201..5`20loop
  1071. X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(SMG`20code):`20");
  1072. X`20`20`20`20`20`20`20`20READ_KEYSTROKE`20(COND_VALUE`20=>`20COND_VALUE,`20KEY
  1073. V`20=>`20KEY);
  1074. X`20`20`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1075. X`20`20`20`20`20`20`20`20CVT_ANSI_SMG`20(SMG_CODE`20=>`20CODE,`20SEQUENCE`20=>
  1076. V`20KEY);
  1077. X`20`20`20`20`20`20`20`20PUT`20(natural`20(CODE));
  1078. X`09NEW_LINE;
  1079. X`20`20`20`20end`20loop;
  1080. X
  1081. X`20`20`20`20PUT_LINE`20("Five`20loop...");
  1082. X
  1083. X`20`20`20`20for`20I`20in`201..5`20loop
  1084. X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
  1085. X`09PUT`20(I);
  1086. X`09NEW_LINE;
  1087. X`09delay`201.0;
  1088. X--`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>`201.0
  1089. V);
  1090. X--`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1091. X`20`20`20`20end`20loop;
  1092. X
  1093. X`20`20`20`20PUT_LINE`20("Flush`20keyboard.");
  1094. X
  1095. X`20`20`20`20FLUSH_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
  1096. X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1097. X
  1098. X`20`20`20`20PUT_LINE`20("Five`20loop...");
  1099. X
  1100. X`20`20`20`20for`20I`20in`201..5`20loop
  1101. X`20`20`20`20`20`20`20`20PUT`20("Programme`20principal`20(loop):`20");
  1102. X`09PUT`20(I);
  1103. X`09NEW_LINE;
  1104. X`09delay`201.0;
  1105. X--`20`20`20`20`20`20LIB.WAIT`20(STATUS`20=>`20COND_VALUE,`20SECONDS`20=>`201.0
  1106. V);
  1107. X--`20`20`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1108. X`20`20`20`20end`20loop;
  1109. X
  1110. X`20`20`20`20PUT_LINE`20("End");
  1111. X
  1112. X`20`20`20`20CLOSE_KEYBOARD`20(COND_VALUE`20=>`20COND_VALUE);
  1113. X`20`20`20`20CHECK`20(COND_VALUE`20=>`20COND_VALUE);
  1114. X
  1115. Xend`20DEMO_KBD_ROUTINES;
  1116. $ call unpack DEMO_KBD_ROUTINES.ADA;1 779701170 ""
  1117. $!
  1118. $ create 'f'
  1119. X#ifndef`20__KBD$ROUTINES_LOADED
  1120. X#define`20__KBD$ROUTINES_LOADED`20`201
  1121. X
  1122. X
  1123. X/*
  1124. X------------------`20Distribution`20and`20Copyright`20-----------------
  1125. X--
  1126. X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  1127. X--`20All`20rights`20reserved.
  1128. X--
  1129. X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
  1130. Vice
  1131. X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
  1132. V`20form
  1133. X--`20without`20written`20permission`20of`20the`20copyright`20owner.
  1134. X--
  1135. X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
  1136. V`20Profit
  1137. X--`20Organization
  1138. X--
  1139. X---------------------------------------------------------------
  1140. X
  1141. X
  1142. X------------------`20Disclaimer`20---------------------------------
  1143. X--
  1144. X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
  1145. V`20and
  1146. X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  1147. X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
  1148. Vs
  1149. X--`20for`20a`20particular`20purpose`20exist.
  1150. X--
  1151. X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
  1152. V
  1153. X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
  1154. V`20for
  1155. X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  1156. V`20to
  1157. X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
  1158. V`20user
  1159. X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
  1160. V
  1161. X--`20software.
  1162. X--
  1163. X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
  1164. V`20be
  1165. X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  1166. X--`20or`20inconsequential`20damages`20or`20lost`20profits.
  1167. 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
  1168. 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
  1169. V`20`20`20`20`20`20`20`20`20
  1170. X-------------------END-PROLOGUE--------------------------------
  1171. X*/
  1172. X
  1173. X
  1174. X
  1175. X
  1176. X/*****************************************************************************
  1177. V
  1178. X`20***************************************************************************
  1179. V**
  1180. X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
  1181. X`20**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20D`20E`20M`20O`20`20`20D`20E
  1182. V`20S`20`20`20R`20O`20U`20T`20I`20N`20E`20S`20`20`20K`20B`20D`20$`20`20`20`20
  1183. V`20`20`20`20`20`20`20`20`20`20`20**
  1184. X`20**`09`09`09`09`09`09`09`09`09`20`20`20`20**
  1185. X`20*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
  1186. V`20Aerienne`20********
  1187. X`20***************************************************************************
  1188. V**/
  1189. X
  1190. X
  1191. X
  1192. X
  1193. X/*
  1194. X`20*`20Titre:`09`20`20`20HEADER`20KBD$ROUTINES
  1195. X`20*
  1196. X`20*`20Sujet:`09`20`20`20Fichier`20d'en-tete`20pour`20le`20module`20KBD$ROUTIN
  1197. VES.
  1198. X`20*
  1199. X`20*`20Version:`09`20`20`201.0
  1200. X`20*
  1201. X`20*`20Description:`09`20`20`20`20`20`20`20Ce`20module`20contient`20la`20decla
  1202. Vration`20de`20la`20fonction
  1203. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20kbd$read_keystroke`20pe
  1204. Vrmettant`20d'attendre`20une`20action`20au
  1205. X`20*`09`09`20`20`20clavier`20et`20renvoyant`20la`20sequence`20ANSI`20correspon
  1206. Vdant`20a`20la
  1207. X`20*`09`09`20`20`20touche`20actionnee.
  1208. X`20*
  1209. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Pour`20util
  1210. Viser`20kbd$read_keystroke,`20il`20necessaire
  1211. X`20*`09`09`20`20`20d'appeler`20au`20prealable`20la`20fonction`20kbd$open_keybo
  1212. Vard`20et`20de
  1213. X`20*`09`09`20`20`20terminer`20par`20kbd$close_keyboard.
  1214. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20La`20routine`20kbd$open
  1215. V_keyboard`20permet,`20entre`20autres,`20de`20ne
  1216. X`20*`09`09`20`20`20creer`20le`20tampon`20clavier`20que`20si`20l'on`20desire
  1217. V`20reellement
  1218. X`20*`09`09`20`20`20utiliser`20kbd$read_keystroke.
  1219. X`20*
  1220. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Lorsque`20l
  1221. Ve`20tampon`20est`20plein,`20l'utilisateur`20est`20prevenu
  1222. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20par`20un`20beep`20sonor
  1223. Ve.
  1224. X`20*
  1225. X`20*`09`09`20`20`20`20`20`20`20La`20fonction`20kbd$flush_keyboard`20permet`20d
  1226. Ve`20vider`20le
  1227. X`20*`09`09`20`20`20tampon`20clavier.
  1228. X`20*
  1229. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Afin`20de`20po
  1230. Vuvoir`20recuperer`20les`20codes`20emis`20par`20CTRL/C,
  1231. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20CTRL/O,`20CTRL/Q,`20CTR
  1232. VL/S,`20CTRL/T,`20CTRL/X,`20CTRL/Y`20et`20F6,`20il`20est
  1233. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20necessaire`20d'entrer
  1234. V`20la`20commande`20DCL`20"SET`20TERMINAL/PASTHRU
  1235. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20/NOTTSYNC".
  1236. X`20*
  1237. X`20*`20Langage:`09`20`20`20C`20ANSI
  1238. X`20*
  1239. X`20*`20Fichier:`09`20`20`20KBD$ROUTINES.H
  1240. X`20*
  1241. X`20*`20Environnement:`20`20Machine`20cible:`20`20`20`20`20`20`20`20`20`20VAX
  1242. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Systeme`20d'exploitatio
  1243. Vn:`20VAX/VMS`20Version`205.4-3
  1244. X`20*`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20Compilateur:`20`20`20
  1245. V`20`20`20`20`20`20`20`20`20VAX`20C`20Version`203.2-044
  1246. X`20*
  1247. X`20*`20Auteur:`09`20`20`20Martin`20VICENTE`20(DGAC/CENA/SID)
  1248. X`20*
  1249. X`20*`09`09`20`20`20E-mail:`20vicente@cenaath.cena.dgac.fr
  1250. X`20*
  1251. X`20*`09`09`20`20`20Mail:`20`20`20C.E.N.A.
  1252. X`20*`09`09`09`20`20`20Div.`20Support`20Informatique`20`26`20Developpement
  1253. X`20*`09`09`09`20`20`20Orly`20Sud`20205
  1254. X`20*`09`09`09`20`20`2094`20542`20ORLY`20AEROGARE`20CEDEX,`20FRANCE
  1255. X`20*
  1256. X`20*`20Creation:`09`20`20`2023/05/92
  1257. X`20*
  1258. X`20*`20Modification:`20`20`2026/05/92
  1259. X`20*
  1260. X`20*/
  1261. X
  1262. X
  1263. X
  1264. X
  1265. X/*****************************************************************************
  1266. V
  1267. X`20*`09TYPE`20DEFINITIONS`09`09`09`09`09`09`20`20`20`20`20*
  1268. X`20***************************************************************************
  1269. V**/
  1270. X
  1271. X
  1272. Xtypedef`20unsigned`20char`20`20kbd$t_escape_overflow_buffer`5B4`5D;
  1273. X
  1274. Xtypedef`20struct`20`7B
  1275. X`20`20`20`20unsigned`20char`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  1276. V`20ascii;
  1277. X`20`20`20`20kbd$t_escape_overflow_buffer`20`20escOverBuffer;
  1278. X`7D`20kbd$t_ansi_sequence;
  1279. X
  1280. X
  1281. X
  1282. X
  1283. X/*****************************************************************************
  1284. V
  1285. X`20***************************************************************************
  1286. V**
  1287. 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
  1288. VBD$`20FUNCTION`20DECLARATION`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20
  1289. V`20`20`20`20`20`20`20`20**
  1290. X`20***************************************************************************
  1291. V**
  1292. X`20***************************************************************************
  1293. V**/
  1294. X
  1295. X
  1296. X
  1297. X
  1298. X/*
  1299. X`20*`20kbd$close_keyboard
  1300. X`20*
  1301. X`20*`20`20`20Libere`20la`20memoire`20des`20structures`20de`20donnees`20associe
  1302. Ves`20a`20ce`20module.
  1303. X`20*/
  1304. X
  1305. Xunsigned`20kbd$close_keyboard();
  1306. X
  1307. X
  1308. X/*
  1309. X`20*`20kbd$cvt_ansi_smg
  1310. X`20*
  1311. X`20*`20`20`20Convertit`20la`20sequence`20ANSI`20d'une`20touche`20en`20un`20cod
  1312. Ve`20SMG.
  1313. X`20*
  1314. X`20*`20`20`20Liste`20des`20codes`20pouvant`20etre`20renvoyes`20(ils`20sont`20d
  1315. Vefinis`20dans
  1316. X`20*`20`20`20SYS$LIBRARY:SMGDEF.H):
  1317. X`20*
  1318. X`20*`09ascii`20(0`20-`20255)`09`09SMG$K_TRM_UP`09`09SMG$K_TRM_DOWN
  1319. X`20*`09SMG$K_TRM_RIGHT`09`09SMG$K_TRM_LEFT`09`09SMG$K_TRM_ENTER
  1320. X`20*`09SMG$K_TRM_PF1`09`09SMG$K_TRM_PF2`09`09SMG$K_TRM_PF3
  1321. X`20*`09SMG$K_TRM_PF4`09`09SMG$K_TRM_COMMA`09`09SMG$K_TRM_MINUS
  1322. X`20*`09SMG$K_TRM_PERIOD`09SMG$K_TRM_KP0`09`09SMG$K_TRM_KP1
  1323. X`20*`09SMG$K_TRM_KP2`09`09SMG$K_TRM_KP3`09`09SMG$K_TRM_KP4
  1324. X`20*`09SMG$K_TRM_KP5`09`09SMG$K_TRM_KP6`09`09SMG$K_TRM_KP7
  1325. X`20*`09SMG$K_TRM_KP8`09`09SMG$K_TRM_KP9`09`09SMG$K_TRM_FIND
  1326. X`20*`09SMG$K_TRM_INSERT_HERE`09SMG$K_TRM_REMOVE`09SMG$K_TRM_SELECT
  1327. X`20*`09SMG$K_TRM_PREV_SCREEN`09SMG$K_TRM_NEXT_SCREEN`09SMG$K_TRM_F6
  1328. X`20*`09SMG$K_TRM_F7`09`09SMG$K_TRM_F8`09`09SMG$K_TRM_F9
  1329. X`20*`09SMG$K_TRM_F10`09`09SMG$K_TRM_F11`09`09SMG$K_TRM_F12
  1330. X`20*`09SMG$K_TRM_F13`09`09SMG$K_TRM_F14`09`09SMG$K_TRM_HELP
  1331. X`20*`09SMG$K_TRM_DO`09`09SMG$K_TRM_F17`09`09SMG$K_TRM_F18
  1332. X`20*`09SMG$K_TRM_F19`09`09SMG$K_TRM_F20`09`09SMG$K_TRM_UP
  1333. X`20*`09SMG$K_TRM_DOWN`09`09SMG$K_TRM_RIGHT`09`09SMG$K_TRM_LEFT
  1334. X`20*`09SMG$K_TRM_UNKNOWN
  1335. X`20*/
  1336. X
  1337. Xunsigned`20kbd$cvt_ansi_smg();
  1338. X
  1339. X
  1340. X/*
  1341. X`20*`20kbd$flush_keyboard
  1342. X`20*
  1343. X`20*`20`20`20Vide`20le`20tampon`20clavier.
  1344. X`20*/
  1345. X
  1346. Xunsigned`20kbd$flush_keyboard();
  1347. X
  1348. X
  1349. X/*
  1350. X`20*`20kbd$key_pressed
  1351. X`20*
  1352. X`20*`20`20`20Indique`20si`20au`20moins`20une`20touche`20est`20presente`20dans
  1353. V`20le`20tampon.
  1354. X`20*/
  1355. X
  1356. Xunsigned`20kbd$key_pressed();
  1357. X
  1358. X
  1359. X/*
  1360. X`20*`20kbd$open_keyboard
  1361. X`20*
  1362. X`20*`20`20`20Creation`20et`20initialisation`20des`20structures`20de`20donnees
  1363. V`20associees`20au`20module.
  1364. X`20*/
  1365. X
  1366. Xunsigned`20kbd$open_keyboard();
  1367. X
  1368. X
  1369. X/*
  1370. X`20*`20kbd$read_keystroke
  1371. X`20*
  1372. X`20*`20`20`20Extrait`20la`20touche`20suivante`20du`20tampon;`20si`20ce`20derni
  1373. Ver`20est`20vide,`20se`20met`20en
  1374. X`20*`20`20`20attente`20d'une`20action`20au`20clavier.
  1375. X`20*/
  1376. X
  1377. Xunsigned`20kbd$read_keystroke();
  1378. X
  1379. X
  1380. X
  1381. X
  1382. X/*****************************************************************************
  1383. V/
  1384. X
  1385. X#endif`20`20/*`20__KBD$ROUTINES_LOADED`20*/
  1386. $ call unpack KBD$ROUTINES.H;1 1314154545 ""
  1387. $!
  1388. $ create 'f'
  1389. X(*
  1390. X------------------`20Distribution`20and`20Copyright`20-----------------
  1391. X--
  1392. X--`20This`20software`20is`20copyright`20by`20the`20CENA/DGAC/FRANCE
  1393. X--`20All`20rights`20reserved.
  1394. X--
  1395. X--`20No`20part`20of`20the`20material`20protected`20by`20this`20copyright`20not
  1396. Vice
  1397. X--`20may`20be`20reproduced`20or`20utilized`20for`20commercial`20use`20in`20any
  1398. V`20form
  1399. X--`20without`20written`20permission`20of`20the`20copyright`20owner.
  1400. X--
  1401. X--`20It`20may`20be`20reproduced`20or`20utilized`20for`20R`26D`20use`20in`20Non
  1402. V`20Profit
  1403. X--`20Organization
  1404. X--
  1405. X---------------------------------------------------------------
  1406. X
  1407. X
  1408. X------------------`20Disclaimer`20---------------------------------
  1409. X--
  1410. X--`20This`20software`20and`20its`20documentation`20are`20provided`20"AS`20IS"
  1411. V`20and
  1412. X--`20without`20any`20expressed`20or`20implied`20warranties`20whatsoever.
  1413. X--`20No`20warranties`20as`20to`20performance,`20merchantability,`20or`20fitnes
  1414. Vs
  1415. X--`20for`20a`20particular`20purpose`20exist.
  1416. X--
  1417. X--`20Because`20of`20the`20diversity`20of`20conditions`20and`20hardware`20under
  1418. V
  1419. X--`20which`20this`20software`20may`20be`20used,`20no`20warranty`20of`20fitness
  1420. V`20for
  1421. X--`20a`20particular`20purpose`20is`20offered.`20`20The`20user`20is`20advised
  1422. V`20to
  1423. X--`20test`20the`20software`20thoroughly`20before`20relying`20on`20it.`20`20The
  1424. V`20user
  1425. X--`20must`20assume`20the`20entire`20risk`20and`20liability`20of`20using`20this
  1426. V
  1427. X--`20software.
  1428. X--
  1429. X--`20In`20no`20event`20shall`20any`20person`20or`20organization`20of`20people
  1430. V`20be
  1431. X--`20held`20responsible`20for`20any`20direct,`20indirect,`20consequential
  1432. X--`20or`20inconsequential`20damages`20or`20lost`20profits.
  1433. 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
  1434. 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
  1435. V`20`20`20`20`20`20`20`20`20
  1436. X-------------------END-PROLOGUE--------------------------------
  1437. X*)
  1438. X
  1439. X
  1440. X
  1441. X
  1442. X(*****************************************************************************
  1443. V)
  1444. X(*****************************************************************************
  1445. V)
  1446. X(**`09`09`09`09`09`09`09`09`09`20`20`20`20**)
  1447. X(**`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20K`20B`20D`20$`20R`20O`20U
  1448. V`20T`20I`20N`20E`20S`20`20`20Implementation`20`20`20`20`20`20`20`20`20`20`20
  1449. V`20`20`20`20`20`20**)
  1450. X(**`09`09`20`20`20`20`09`09`09`09`09`09`09`20`20`20`20**)
  1451. X(*******`20Copyright`20(C)`201992`20Centre`20d'Etudes`20de`20la`20Navigation
  1452. V`20Aerienne`20********)
  1453. +-+-+-+-+-+-+-+-  END  OF PART 1 +-+-+-+-+-+-+-+-
  1454.