home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 13 / 13.iso / s / s001 / 1.ddi / PFC / SRC / SYISR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-05-11  |  1.7 KB  |  74 lines

  1. /* (c) 1985, Phoenix Computer Products Corp. and Novum Organum, Inc. */
  2. #include "cptpdf.h"
  3. #include "psys.h"
  4. #include "itsmem.h"
  5.  
  6. static  int  _stksiz = 1024;
  7.  
  8. #define ISR     struct _ISR
  9. #define H_ISR   ((ISR *)h_isr)
  10.  
  11. ISR     {
  12.         int     isradt;
  13.         int     n_int;
  14.         char    *stack;
  15.         int     stksiz;
  16.         char    *isr;
  17.     ushort    isrseg;
  18.         ushort  oisroff;
  19.         ushort  oisrseg;
  20.         };
  21.  
  22.  
  23. syisrstk( stksiz )
  24.     int stksiz;
  25. {
  26.     _stksiz = stksiz;
  27. }
  28.  
  29.  
  30. HDL syisrist( n_int, pfnc )
  31.     int    n_int;
  32.     PFI    pfnc;
  33. {
  34.     HDL    h_isr;
  35.     ushort syfptrse(), syfptrof(), dsreg(), _syisrse(), _syisrof();
  36.     char   *memgive();
  37.  
  38.     h_isr = (HDL)memgive( sizeof(ISR) );
  39.  
  40.     H_ISR->isr   = memgive( _syisrln() );
  41.     H_ISR->stack = ITS_ALLOC(mem_DGROUP, _stksiz );
  42.     H_ISR->isradt = ADT_ISR;
  43.     H_ISR->n_int  = n_int;
  44.     H_ISR->stksiz = _stksiz;
  45.     syivget( n_int, &H_ISR->oisrseg, &H_ISR->oisroff );
  46.  
  47.     H_ISR->isrseg = _syisrse( H_ISR->isr, H_ISR->stack, _stksiz,
  48.                        H_ISR->oisroff, H_ISR->oisrseg,
  49.                        syfptrof(pfnc), syfptrse(pfnc) );
  50.  
  51.     syivset( n_int, H_ISR->isrseg, _syisrof() );
  52.  
  53.     return  ( h_isr );
  54. }
  55.  
  56. /*VOID*/ syisrrls( h_isr )
  57.     HDL h_isr;
  58. {
  59.     char    *sydptrjo();
  60.  
  61.     adtverify( h_isr, ADT_ISR );
  62.     syivset( H_ISR->n_int, H_ISR->oisrseg, H_ISR->oisroff );
  63.     memtake( H_ISR->isr );
  64.     memtake( H_ISR->stack );
  65.     memtake( h_isr );
  66. }
  67.  
  68. /*VOID*/ syisrnosti( h_isr )
  69.     HDL h_isr;
  70. {
  71.     _syisrno( H_ISR->isrseg );
  72. }
  73. 
  74.