/* TSR Prototype file and common variables */

#define INTERRUPT void interrupt far

typedef struct {
    unsigned es, ds, di, si, bp, sp;
    unsigned bx, dx, cx, ax, ip, cs, flags;
    } INTERRUPT_REGS;
    
typedef void (interrupt far *INTVECT)();

/* Prototypes for functions in INDOS.C */
int   DosBusy(void);
int   Int28DosBusy(void);
void  InitInDos(void);

/* Prototypes for functions in PSP.C */
unsigned GetPSP(void);
void  SetPSP(unsigned segPSP);

/* Prototypes for functions in TSRUTIL.ASM */
int   far   deinstall(void);
void  far   init_intr(void);
void  far   idle_int_chain(void);
void  far   init_intr(void);

void  interrupt far   new_int10(void);
void  interrupt far   new_int13(void);
void  interrupt far   new_int25(void);
void  interrupt far   new_int26(void);

void  far   timer_int_chain(void);

/* Prototypes for functions in STACK.ASM */
void  far   set_stack(void);
void  far   restore_stack(void);

/* Prototypes for functions in EXTERR.C */
void  GetExtErr(struct ExtErr * ErrInfo);
void  SetExtErr(struct ExtErr * ErrInfo);

struct   ExtErr
{
   unsigned int errax;
   unsigned int errbx;
   unsigned int errcx;
};

/* Prototypes for functions in DOSSWAP.C */
int   InitDosSwap(void);
int   SaveDosSwap(void);   
void  RestoreDosSwap(void);

/* Pointer defined in INDOS.C */
extern char far *   indos_ptr;
extern char far *   crit_err_ptr;
