home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / misc / emu / AROSdev.lha / AROS / rom / exec / setintvector.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-09  |  1.3 KB  |  71 lines

  1. /*
  2.     (C) 1995-96 AROS - The Amiga Replacement OS
  3.     $Id: setintvector.c,v 1.3 1997/01/07 12:32:32 digulla Exp $
  4.  
  5.     Desc:
  6.     Lang:
  7. */
  8. #include <exec/execbase.h>
  9. #include <exec/interrupts.h>
  10. #include <proto/exec.h>
  11. #include <aros/libcall.h>
  12.  
  13. /*****************************************************************************
  14.  
  15.     NAME */
  16.  
  17.     AROS_LH2(struct Interrupt *, SetIntVector,
  18.  
  19. /*  SYNOPSIS */
  20.     AROS_LHA(ULONG,              intNumber, D0),
  21.     AROS_LHA(struct Interrupt *, interrupt, A1),
  22.  
  23. /*  LOCATION */
  24.     struct ExecBase *, SysBase, 27, Exec)
  25.  
  26. /*  FUNCTION
  27.  
  28.     INPUTS
  29.  
  30.     RESULT
  31.  
  32.     NOTES
  33.  
  34.     EXAMPLE
  35.  
  36.     BUGS
  37.  
  38.     SEE ALSO
  39.  
  40.     INTERNALS
  41.  
  42.     HISTORY
  43.  
  44. ******************************************************************************/
  45. {
  46.     AROS_LIBFUNC_INIT
  47.     struct Interrupt *oldint;
  48.  
  49.     Disable ();
  50.  
  51.     oldint = (struct Interrupt *)SysBase->IntVects[intNumber].iv_Node;
  52.     SysBase->IntVects[intNumber].iv_Node = (struct Node *)interrupt;
  53.  
  54.     if (interrupt)
  55.     {
  56.     SysBase->IntVects[intNumber].iv_Data = interrupt->is_Data;
  57.     SysBase->IntVects[intNumber].iv_Code = interrupt->is_Code;
  58.     }
  59.     else
  60.     {
  61.     SysBase->IntVects[intNumber].iv_Data = (APTR)~0;
  62.     SysBase->IntVects[intNumber].iv_Code = (void *)~0;
  63.     }
  64.  
  65.     Enable ();
  66.  
  67.     return oldint;
  68.  
  69.     AROS_LIBFUNC_EXIT
  70. } /* SetIntVector */
  71.