home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pctchnqs / 1991 / number6 / sysreq.pas < prev    next >
Pascal/Delphi Source File  |  1990-12-30  |  1KB  |  62 lines

  1. {  SYSREQ.PAS - Unit to allow programs to 'see' System Request key }
  2. {  Copyright 1990 S/Wizardry, Ltd.                                 }
  3. UNIT SysReq;
  4.  
  5. INTERFACE
  6.  
  7. CONST
  8.    SysReqKey = $4500;
  9.  
  10.  
  11. IMPLEMENTATION
  12.  
  13. USES
  14.    OpCRT, OpInline, DOS;
  15.  
  16. VAR
  17.    SaveInt15 : POINTER;
  18.    SaveExitProc : POINTER;
  19.  
  20. CONST
  21.    Int15Installed : BOOLEAN = FALSE;
  22.  
  23.  
  24. PROCEDURE Int15(AX, BX, CX, DX, SI, DI, DS, ES, BP : WORD); INTERRUPT;
  25. BEGIN
  26.    IF AX = $8500 THEN
  27.       StuffKey(SysReqKey)
  28.    ELSE
  29.       JumpToOldISR(SaveInt15);
  30. END;
  31.  
  32. PROCEDURE InstallInt15;
  33. BEGIN
  34.    IF NOT Int15Installed THEN BEGIN
  35.       GetIntVec($15, SaveInt15);
  36.       SetIntVec($15, @Int15);
  37.       Int15Installed := TRUE;
  38.    END;
  39. END;
  40.  
  41. PROCEDURE RestoreInt15;
  42. BEGIN
  43.    IF Int15Installed THEN BEGIN
  44.       SetIntVec($15,SaveInt15);
  45.       Int15Installed := FALSE;
  46.    END;
  47. END;
  48.  
  49. {$F+}
  50. PROCEDURE NewExitProc;
  51. BEGIN
  52.    ExitProc := SaveExitProc;
  53.    RestoreInt15;
  54. END;
  55. {$F-}
  56.  
  57. BEGIN {UNIT initialization}
  58.    InstallInt15;
  59.    SaveExitProc := ExitProc;
  60.    ExitProc := @NewExitProc;
  61. END.
  62.