home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1991-08-10 | 1.3 KB | 52 lines |
- (*======================================================================*)
- (* NOTE: This same sort of code works with TDI Modula-2, but somehow *)
- (* does not get along with the DBug module. Hence, I have *)
- (* elected to exclude that code unless the compiler is M2Sprint *)
- (*======================================================================*)
-
- IMPLEMENTATION MODULE CtrlC;
-
- @INCLUDE "MACROS"
-
- @IF AMIGA & M2S THEN
-
- IMPORT RunTime;
- IMPORT Tasks;
-
- CONST SIGBreakC = 12; (* to avoid importing DOS *)
-
- VAR old : Tasks.SignalSet;
- task : Tasks.TaskPtr;
-
- @LongAddressing
-
- PROCEDURE CtrlCHandler; (* This procedure gets called when CTRL-C *)
- BEGIN (* is hit, and it activates the halt-handler *)
- HALT;
- END CtrlCHandler;
-
- @NoLongAddressing
-
- PROCEDURE Check;
- BEGIN
- task^.tcExceptCode:=PROC(CtrlCHandler);
- old:=Tasks.SetExcept(Tasks.SignalSet{SIGBreakC},
- Tasks.SignalSet{SIGBreakC});
- task^.tcExceptCode:=PROC(0);
- old:=Tasks.SetExcept(old,Tasks.SignalSet{0..31});
- END Check;
-
- (*********************************************************************)
-
- BEGIN
- task:=RunTime.CurrentProcess;
- END CtrlC.
-
- @ELSE
-
- PROCEDURE Check; BEGIN END Check;
-
- END CtrlC.
-
- @END
-