home *** CD-ROM | disk | FTP | other *** search
- struct intinfo {
- short Di; /* Di prior to interrupt */
- short Si; /* Si prior to interrupt */
- short Dx; /* Dx prior to interrupt */
- short Cx; /* Cx prior to interrupt */
- short Bx; /* Bx prior to interrupt */
- short Ax; /* Ax prior to interrupt */
- short Sp; /* Sp prior to interrupt (see note) */
- short Ss; /* Ss prior to interrupt */
- /* The following defines the interrupt boot code and should */
- /* not be modified */
- char LCALL[5]; /* Call to XCINTCOM */
- char IRET; /* Iret instruction */
- short FUNCIP; /* IP of function */
- short FUNCCS; /* CS of function */
- short FUNCDS; /* DS of function */
- short FUNCSS; /* SS of function */
- };
- /*
- Note: By using the data obtained from intinfo.Ss and intinfo.Sp
- you can obtain access to the following information:
- */
- struct intinfo2 {
- short Bx; /* Bx prior to interrupt */
- short Ds; /* Ds prior to interrupt */
- short Es; /* Es prior to interrupt */
- short Bp; /* Bp prior to interrupt */
- short Reserv1; /* Ip to IRET in the IBC */
- short Reserv2; /* Cs to IRET in the IBC */
- short Ip; /* Ip prior to interrupt <--+ Hardware */
- short Cs; /* Cs prior to interrupt += generated */
- short Flags; /* Flags prior to interrupt <--+ during int */
- /* Anything following here belongs to the task that was interrupted */
- };
- /* Both of the following assume that the pointer is a character pointer */
-
- #define SIZE_OF_IBC 14 /* Size of interrupt boot field */
- /* This is added to the size of the */
- /* Stack and contains the code to */
- /* call XCINTCOM. */
- #define OFFSET_TO_REGS 16 /* Amount to subtract from end of */
- /* allocated stack to get to callers */
- /* regs */
- char *signal();