X-magnet-rcpt: From: "Mark Usher" To: Subject: Re: Tricky interrupt problem Date: Mon, 29 Mar 1999 22:30:37 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit 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