#define INTR 0xd1
#include <dos.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <io.h>
#include <fcntl.h>
#include <time.h>


/* COMPILE USING LARGE MEMORY MODEL USING TURBO C++ */

/* reduce heaplength and stacklength
to make a smaller program in memory */
extern unsigned _heaplen = 512;
extern unsigned _stklen  = 2048;

unsigned mygetpsp()
{
union REGS regs;
regs.x.ax=0x5100;
int86(0x21,&regs,&regs);
return regs.x.bx;
}

mysetpsp(int pspadr)
{
union REGS regs;
regs.x.ax= 0x5000;
regs.x.bx= pspadr;
int86(0x21,&regs,&regs);
}


void get_qth (char far *call,char far *buffer);

void interrupt handler(bp,di,si,ds,es,dx,cx,bx,ax,ip,cs,flags)
{
char far *arg1, far *arg2;
static savepsp;
savepsp=mygetpsp();
mysetpsp(_psp);
arg1=MK_FP(ax,bx);
arg2=MK_FP(cx,dx);
get_qth(arg1,arg2);
mysetpsp(savepsp);
}



int main(int argc, char *argv)
{

/* install the new interrupt handler */
setvect(INTR, handler);

keep(0, (_SS + ((_SP +2048)/16) - _psp));
return 0;
}

void get_qth (char far *call,char far *buffer)
{
strcpy(buffer,call);
strcat(buffer," not found\n");
}
