From: aho450s AT nic DOT smsu DOT edu (Tony O'Bryan) Newsgroups: comp.os.msdos.djgpp Subject: Re: Help passing pointers to intdosx. Date: Sat, 08 Feb 1997 20:35:44 GMT Organization: Southwest Missouri State University Lines: 16 Message-ID: <32fce1d9.2300822@ursa.smsu.edu> References: <32FB1913 DOT 457B AT compuserve DOT com> NNTP-Posting-Host: forseti.i122.smsu.edu To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp On Fri, 07 Feb 1997 11:59:15 +0000, JuneSmith <106363 DOT 3644 AT compuserve DOT com> wrote: [snip] > pregs.h.ah = 0x09; > sregs.ds. = FP_SEG ( Message ); /* Get the var. */ > pregs.x.dx = FP_OFF ( Message ); /* addresses */ In FAQ section 18.2 (the same section you quoted), look at the description of _dpmi_int() and the transfer buffer __tb (two underscores). Whenever you have a pointer to memory for a DOS interrupt, it must be in conventional memory (under 1 megabyte). __tb works great for this purpose. If you must pass data to the interrupt, copy the info to the buffer pointer to by __tb and call the interrupt with _dpmi_int(). Once the interrupt is done, copy the contents pointed to by __tb to your program's memory and continue on your way.