delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/03/29/15:30:23

X-magnet-rcpt: <djgpp AT delorie DOT com>
From: "Mark Usher" <marku AT magnet DOT at>
To: <djgpp AT delorie DOT com>
Subject: Re: Tricky interrupt problem
Date: Mon, 29 Mar 1999 22:30:37 +0200
Message-ID: <NABBKDNBEOKOCFKNJILIOEMBDGAA.marku@magnet.at>
MIME-Version: 1.0
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook IMO, Build 9.0.2212 (4.71.2419.0)
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2013.600
Reply-To: djgpp AT delorie DOT com

Hi

Thankyou. You set me on the right track here.

> Using __dpmi_int is OK, but the trick is to point DS:DX at the 16-bit
> "transfer buffer" that djgpp uses to talk with DOS.  You fill the
> transfer buffer with data, set up DS:DX to point to it, call the
> interrupt, and then copy the new data back.
>
> The libc sources have lots of examples of using the transfer buffer.

After a couple of hours beating the keyboard to death I am finally starting
to get it together.
I have realised that I am going to have to declare two small buffers in
conventional memory to make this work.
I am now getting stuck getting the address back for the buffer I have
created to transfer to ds, dx.

At the moment it looks like this-

_dpmi_regs reg;
struct ControlBlock *pCB;
__dpmi_allocate_dos_memory(21,&pCB);  /* ?? correct for a 21 byte block */

...

reg.x.ds = _go32_info_block. ????
reg.x.dx = _go32_info_block. ????


Hope you can spare me a little time to help me out.

Mark Usher
marku AT magnet DOT at

- Raw text -


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