www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/02/10/22:25:46

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.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019