home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* MANYKEY.PAS *)
- (* Unit zur direkten Abfrage mehrerer Tasten gleichzeitig *)
- (* (c) 1991 Hanno-Ekkehard Müller & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT ManyKey;
-
- INTERFACE
-
- USES Dos;
-
- CONST
- InitFlag : BOOLEAN = FALSE;
- { ein Flag, um Katastrophen zu vermeiden }
-
- VAR
- ButtonPressed : ARRAY [$00..$7F] OF BOOLEAN;
- { wenn TRUE, dann gedrückt }
-
- PROCEDURE InitManyKey;
- PROCEDURE ReInitManyKey;
-
-
- IMPLEMENTATION
-
- VAR
- SaveInt09,
- SaveExitProc : Pointer;
-
- PROCEDURE Int09; EXTERNAL; {$L INT09}
-
- PROCEDURE InitManyKey;
- { Installierung unserer eigenen Interrupt-Prozedur }
- BEGIN
- IF NOT InitFlag THEN BEGIN
- FillChar(ButtonPressed, 128, CHAR(FALSE));
- GetIntVec($09, SaveInt09);
- SetIntVec($09, @Int09);
- InitFlag := TRUE;
- END;
- END;
-
- PROCEDURE ReInitManyKey;
- { Normalen Zustand wiederherstellen }
- BEGIN
- IF InitFlag THEN BEGIN
- SetIntVec($09, SaveInt09);
- InitFlag := FALSE;
- END;
- END;
-
- {$F+}
- PROCEDURE ManyKeyExit;
- { Damit Laufzeitfehler nicht zum Verhängnis werden... }
- BEGIN
- ReInitManyKey;
- ExitProc := SaveExitProc;
- END;
- {$F-}
-
- BEGIN
- SaveExitProc := ExitProc;
- ExitProc := @ManyKeyExit;
- END.
- (* ------------------------------------------------------ *)
- (* Ende von MANYKEY.PAS *)