home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume34 / vms_rtl_kbd / part02 / demo_kbd_routines.ada next >
Text File  |  1992-12-19  |  6KB  |  206 lines

  1.  
  2. ------------------ Distribution and Copyright -----------------
  3. --
  4. -- This software is copyright by the CENA/DGAC/FRANCE
  5. -- All rights reserved.
  6. --
  7. -- No part of the material protected by this copyright notice
  8. -- may be reproduced or utilized for commercial use in any form
  9. -- without written permission of the copyright owner.
  10. --
  11. -- It may be reproduced or utilized for R&D use in Non Profit
  12. -- Organization
  13. --
  14. ---------------------------------------------------------------
  15.  
  16.  
  17. ------------------ Disclaimer ---------------------------------
  18. --
  19. -- This software and its documentation are provided "AS IS" and
  20. -- without any expressed or implied warranties whatsoever.
  21. -- No warranties as to performance, merchantability, or fitness
  22. -- for a particular purpose exist.
  23. --
  24. -- Because of the diversity of conditions and hardware under
  25. -- which this software may be used, no warranty of fitness for
  26. -- a particular purpose is offered.  The user is advised to
  27. -- test the software thoroughly before relying on it.  The user
  28. -- must assume the entire risk and liability of using this
  29. -- software.
  30. --
  31. -- In no event shall any person or organization of people be
  32. -- held responsible for any direct, indirect, consequential
  33. -- or inconsequential damages or lost profits.
  34. --                                                           
  35. -------------------END-PROLOGUE--------------------------------
  36.  
  37.  
  38.  
  39.  
  40. --*****************************************************************************
  41. --*****************************************************************************
  42. --**                                                                         **
  43. --**               D E M O   D E S   R O U T I N E S   K B D $               **
  44. --**                                                                         **
  45. --******** Copyright (C) 1992 Centre d'Etudes de la Navigation Aerienne *******
  46. --*****************************************************************************
  47.  
  48.  
  49.  
  50.  
  51. -- ++
  52. --
  53. -- Titre:       DEMO DES ROUTINES KBD$
  54. --
  55. -- Sujet:       Programme de demonstration des routines KBD$.
  56. --
  57. -- Version:       1.0
  58. --
  59. -- Description:           Ce programme de demonstration met en oeuvre la fonction
  60. --           KBD$READ_KEYSTROKE permettant d'attendre une action au
  61. --           clavier et renvoyant la sequence ANSI correspondant a la
  62. --           touche actionnee.
  63. --
  64. --               Lorsque le tampon est plein, l'utilisateur est prevenu
  65. --                 par un beep sonore emit par le sous-programme d'IT.
  66. --
  67. --               Afin de pouvoir recuperer les codes emis par CTRL/C,
  68. --                 CTRL/O, CTRL/Q, CTRL/S, CTRL/T, CTRL/X, CTRL/Y et F6, il est
  69. --                 necessaire d'entrer la commande DCL "SET TERMINAL/PASTHRU
  70. --                 /NOTTSYNC".
  71. --
  72. --                     Pour utiliser KBD$READ_KEYSTROKE, vous devez appeler au
  73. --           prealable la fonction KBD$OPEN_KEYBOARD et terminer par
  74. --           KBD$CLOSE_KEYBOARD.
  75. --                 La routine KBD$OPEN_KEYBOARD permet, entre autres, de ne
  76. --           creer la zone tampon que si l'on desire reellement utiliser
  77. --                 KBD$READ_KEYSTROKE.
  78. --
  79. -- Langage:       ADA
  80. --
  81. -- Fichier:       DEMO_KBD_ROUTINES.ADA
  82. --                       
  83. -- Environnement:  Machine cible:          VAX
  84. --           Systeme d'exploitation: VAX/VMS Version 5.4
  85. --           Compilateur:            VAX Ada Version 2.1-28
  86. --
  87. -- Auteur:       Martin VICENTE (DGAC/CENA/SID)
  88. --
  89. --           E-mail: vicente@cenaath.cena.dgac.fr
  90. --
  91. --           Mail:   C.E.N.A.
  92. --               Div. Support Informatique & Developpement
  93. --               Orly Sud 205
  94. --               94 542 ORLY AEROGARE CEDEX, FRANCE
  95. --
  96. -- Creation:       25/05/92
  97. --
  98. -- Modification:   25/05/92
  99. --
  100. -- --
  101.  
  102.  
  103.  
  104.  
  105. with CONDITION_HANDLING;
  106. with SYSTEM;
  107. with LIB;
  108. with KBD;
  109. with TEXT_IO;
  110.  
  111. use CONDITION_HANDLING;
  112. use SYSTEM;
  113. use KBD;
  114. use TEXT_IO;
  115.  
  116.  
  117. procedure DEMO_KBD_ROUTINES is
  118.  
  119.  
  120.     COND_VALUE : COND_VALUE_TYPE;
  121.     YES        : BOOLEAN;
  122.     I          : INTEGER;
  123.     KEY        : T_ANSI_SEQUENCE;
  124.     CODE       : UNSIGNED_WORD;
  125.  
  126.  
  127.     procedure CHECK (COND_VALUE : in COND_VALUE_TYPE) is
  128.     begin
  129.         if not SUCCESS (COND_VALUE) then
  130.         STOP (COND_VALUE);
  131.         end if;
  132.     end CHECK;
  133.  
  134.  
  135.     package LOCAL_INTEGER_IO is new TEXT_IO.INTEGER_IO(INTEGER);
  136.     use LOCAL_INTEGER_IO;
  137.  
  138.  
  139. begin
  140.  
  141.     OPEN_KEYBOARD (COND_VALUE => COND_VALUE);
  142.     CHECK (COND_VALUE => COND_VALUE);
  143.  
  144.     PUT_LINE ("Press a key.");
  145.  
  146.     loop
  147.         KEY_PRESSED (COND_VALUE => COND_VALUE, YES => YES);
  148.         CHECK (COND_VALUE => COND_VALUE);
  149.     exit when YES;
  150.     end loop;
  151.  
  152.     PUT_LINE ("Five loop...");
  153.  
  154.     for I in 1..5 loop
  155.         PUT ("Programme principal (loop): ");
  156.     PUT (I);
  157.     NEW_LINE;
  158.         LIB.WAIT (STATUS => COND_VALUE, SECONDS => 1.0);
  159.         CHECK (COND_VALUE => COND_VALUE);
  160.     end loop;
  161.  
  162.     PUT_LINE ("Five readkey...");
  163.  
  164.     for I in 1..5 loop
  165.         PUT ("Programme principal (SMG code): ");
  166.         READ_KEYSTROKE (COND_VALUE => COND_VALUE, KEY => KEY);
  167.         CHECK (COND_VALUE => COND_VALUE);
  168.         CVT_ANSI_SMG (SMG_CODE => CODE, SEQUENCE => KEY);
  169.         PUT (natural (CODE));
  170.     NEW_LINE;
  171.     end loop;
  172.  
  173.     PUT_LINE ("Five loop...");
  174.  
  175.     for I in 1..5 loop
  176.         PUT ("Programme principal (loop): ");
  177.     PUT (I);
  178.     NEW_LINE;
  179.     delay 1.0;
  180. --      LIB.WAIT (STATUS => COND_VALUE, SECONDS => 1.0);
  181. --      CHECK (COND_VALUE => COND_VALUE);
  182.     end loop;
  183.  
  184.     PUT_LINE ("Flush keyboard.");
  185.  
  186.     FLUSH_KEYBOARD (COND_VALUE => COND_VALUE);
  187.     CHECK (COND_VALUE => COND_VALUE);
  188.  
  189.     PUT_LINE ("Five loop...");
  190.  
  191.     for I in 1..5 loop
  192.         PUT ("Programme principal (loop): ");
  193.     PUT (I);
  194.     NEW_LINE;
  195.     delay 1.0;
  196. --      LIB.WAIT (STATUS => COND_VALUE, SECONDS => 1.0);
  197. --      CHECK (COND_VALUE => COND_VALUE);
  198.     end loop;
  199.  
  200.     PUT_LINE ("End");
  201.  
  202.     CLOSE_KEYBOARD (COND_VALUE => COND_VALUE);
  203.     CHECK (COND_VALUE => COND_VALUE);
  204.  
  205. end DEMO_KBD_ROUTINES;
  206.