home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------- *)
- (* CATCHIT.PAS *)
- (* (c) 1991 Wolfgang Gürtler & DMV-Verlag *)
- (* ------------------------------------------------- *)
- {$M 1024,0,0}
- {$R-,S-}
- PROGRAM CatchGrafix;
-
- Uses Crt, Dos;
-
- VAR
- OldInt5, NewInt5,
- OldInt9, NewInt9,
- OldInt8, NewInt8 : POINTER;
- Z : LongInt;
- Sekunden : INTEGER;
-
- {$F+}
- PROCEDURE Keyboard; INTERRUPT;
- (* Neue ISR für Interrupt 9H *)
- BEGIN
- INLINE($9C/$FF/$1E/OldInt9);
- INLINE($9C/$FF/$1E/NewInt9);
- END;
- {$F-}
-
- {$F+}
- PROCEDURE Hardcopy; INTERRUPT;
- (* Neue ISR für Interrupt 5H *)
- BEGIN
- INLINE($9C/$FF/$1E/OldInt5);
- END;
- {$F-}
-
- PROCEDURE ActivateKeyboard;
- (* Aktiviert neue ISR's 9H und 5H *)
- BEGIN
- GetIntVec($9, NewInt9);
- GetIntVec($5, NewInt5);
- IF (NewInt9 = OldInt9) AND
- (NewInt5 = OldInt5) THEN BEGIN
- Z := 0;
- END ELSE BEGIN
- Sound(220); Delay(100); NoSound;
- SetIntVec($9, @Keyboard);
- SetIntVec($5, @Hardcopy);
- END;
- END;
-
- PROCEDURE Timer; INTERRUPT;
- (* Prozedur aktiviert nach einer Zeitspanne *)
- BEGIN
- INLINE($9C/$FF/$1E/OldInt8);
- { Timerimpuls weiterleiten }
- Z := Z+1;
- IF Z = (18*Sekunden) THEN
- ActivateKeyboard
- ELSE IF ((Z MOD 18) = 0) AND
- (Z < 18*Sekunden) THEN BEGIN
- Sound(220); Delay(5); NoSound;
- END;
- END;
-
- BEGIN
- GetIntVec($8, OldInt8); { alte Adressen speichern }
- GetIntVec($9, OldInt9);
- GetIntVec($5, OldInt5);
- Writeln;
- Writeln('CATCH-IT ');
- Write (' Aktivierungszeit in Sekunden :');
- Readln (Sekunden);
- Z := 0;
- SetIntVec($8, @Timer); { Timer setzen }
- Writeln(' CATCH-IT installiert. ');
- Writeln(' Aktivierung in t minus ', Sekunden,
- ' Sekunden (Ton).');
- Keep(0);
- END.
- (* ------------------------------------------------- *)
- (* Ende von CATCHIT.PAS *)
-
-