home *** CD-ROM | disk | FTP | other *** search
- /* (c) 1985, Phoenix Computer Products Corp. and Novum Organum, Inc. */
- #include "cptpdf.h"
- #include "psys.h"
- #include "itsmem.h"
-
- static int _stksiz = 1024;
-
- #define ISR struct _ISR
- #define H_ISR ((ISR *)h_isr)
-
- ISR {
- int isradt;
- int n_int;
- char *stack;
- int stksiz;
- char *isr;
- ushort isrseg;
- ushort oisroff;
- ushort oisrseg;
- };
-
-
- syisrstk( stksiz )
- int stksiz;
- {
- _stksiz = stksiz;
- }
-
-
- HDL syisrist( n_int, pfnc )
- int n_int;
- PFI pfnc;
- {
- HDL h_isr;
- ushort syfptrse(), syfptrof(), dsreg(), _syisrse(), _syisrof();
- char *memgive();
-
- h_isr = (HDL)memgive( sizeof(ISR) );
-
- H_ISR->isr = memgive( _syisrln() );
- H_ISR->stack = ITS_ALLOC(mem_DGROUP, _stksiz );
- H_ISR->isradt = ADT_ISR;
- H_ISR->n_int = n_int;
- H_ISR->stksiz = _stksiz;
- syivget( n_int, &H_ISR->oisrseg, &H_ISR->oisroff );
-
- H_ISR->isrseg = _syisrse( H_ISR->isr, H_ISR->stack, _stksiz,
- H_ISR->oisroff, H_ISR->oisrseg,
- syfptrof(pfnc), syfptrse(pfnc) );
-
- syivset( n_int, H_ISR->isrseg, _syisrof() );
-
- return ( h_isr );
- }
-
- /*VOID*/ syisrrls( h_isr )
- HDL h_isr;
- {
- char *sydptrjo();
-
- adtverify( h_isr, ADT_ISR );
- syivset( H_ISR->n_int, H_ISR->oisrseg, H_ISR->oisroff );
- memtake( H_ISR->isr );
- memtake( H_ISR->stack );
- memtake( h_isr );
- }
-
- /*VOID*/ syisrnosti( h_isr )
- HDL h_isr;
- {
- _syisrno( H_ISR->isrseg );
- }
-