home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / tricks / manykey.pas < prev    next >
Pascal/Delphi Source File  |  1991-01-08  |  2KB  |  66 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     MANYKEY.PAS                        *)
  3. (* Unit zur direkten Abfrage mehrerer Tasten gleichzeitig *)
  4. (*      (c) 1991 Hanno-Ekkehard Müller & TOOLBOX          *)
  5. (* ------------------------------------------------------ *)
  6. UNIT ManyKey;
  7.  
  8. INTERFACE
  9.  
  10. USES Dos;
  11.  
  12. CONST
  13.   InitFlag : BOOLEAN = FALSE;
  14.     { ein Flag, um Katastrophen zu vermeiden }
  15.  
  16. VAR
  17.   ButtonPressed : ARRAY [$00..$7F] OF BOOLEAN;
  18.     { wenn TRUE, dann gedrückt }
  19.  
  20.   PROCEDURE InitManyKey;
  21.   PROCEDURE ReInitManyKey;
  22.  
  23.  
  24. IMPLEMENTATION
  25.  
  26. VAR
  27.   SaveInt09,
  28.   SaveExitProc : Pointer;
  29.  
  30.   PROCEDURE Int09;  EXTERNAL;  {$L INT09}
  31.  
  32.   PROCEDURE InitManyKey;
  33.     { Installierung unserer eigenen Interrupt-Prozedur }
  34.   BEGIN
  35.     IF NOT InitFlag THEN BEGIN
  36.       FillChar(ButtonPressed, 128, CHAR(FALSE));
  37.       GetIntVec($09, SaveInt09);
  38.       SetIntVec($09, @Int09);
  39.       InitFlag := TRUE;
  40.     END;
  41.   END;
  42.  
  43.   PROCEDURE ReInitManyKey;
  44.     { Normalen Zustand wiederherstellen }
  45.   BEGIN
  46.     IF InitFlag THEN BEGIN
  47.       SetIntVec($09, SaveInt09);
  48.       InitFlag := FALSE;
  49.     END;
  50.   END;
  51.  
  52. {$F+}
  53.   PROCEDURE ManyKeyExit;
  54.     { Damit Laufzeitfehler nicht zum Verhängnis werden... }
  55.   BEGIN
  56.     ReInitManyKey;
  57.     ExitProc := SaveExitProc;
  58.   END;
  59. {$F-}
  60.  
  61. BEGIN
  62.   SaveExitProc := ExitProc;
  63.   ExitProc     := @ManyKeyExit;
  64. END.
  65. (* ------------------------------------------------------ *)
  66. (*                  Ende von MANYKEY.PAS                  *)