home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 549b.lha / M2P_v1.0_sources / source.lzh / CtrlC.mpp < prev    next >
Text File  |  1991-08-10  |  1KB  |  52 lines

  1. (*======================================================================*)
  2. (*  NOTE:  This same sort of code works with TDI Modula-2, but somehow  *)
  3. (*         does not get along with the DBug module.  Hence, I have      *)
  4. (*         elected to exclude that code unless the compiler is M2Sprint *)
  5. (*======================================================================*)
  6.  
  7. IMPLEMENTATION MODULE CtrlC;
  8.  
  9. @INCLUDE "MACROS"
  10.  
  11. @IF AMIGA & M2S THEN
  12.  
  13.    IMPORT RunTime;
  14.    IMPORT Tasks;
  15.    
  16.    CONST SIGBreakC = 12;   (* to avoid importing DOS *)
  17.    
  18.    VAR old  : Tasks.SignalSet;
  19.        task : Tasks.TaskPtr;
  20.    
  21.    @LongAddressing
  22.  
  23.    PROCEDURE CtrlCHandler; (* This procedure gets called when CTRL-C    *)
  24.    BEGIN                   (* is hit, and it activates the halt-handler *)
  25.      HALT;
  26.    END CtrlCHandler;
  27.    
  28.    @NoLongAddressing
  29.    
  30.    PROCEDURE Check;
  31.    BEGIN
  32.      task^.tcExceptCode:=PROC(CtrlCHandler);
  33.      old:=Tasks.SetExcept(Tasks.SignalSet{SIGBreakC},
  34.                           Tasks.SignalSet{SIGBreakC});
  35.      task^.tcExceptCode:=PROC(0);
  36.      old:=Tasks.SetExcept(old,Tasks.SignalSet{0..31});
  37.    END Check;
  38.    
  39.    (*********************************************************************)
  40.  
  41.    BEGIN
  42.       task:=RunTime.CurrentProcess;
  43.    END CtrlC.
  44.  
  45. @ELSE
  46.    
  47.    PROCEDURE Check; BEGIN END Check;
  48.    
  49.    END CtrlC.
  50.  
  51. @END
  52.