X-magnet-rcpt: From: "Mark Usher" Cc: Subject: RE: Tricky interrupt problem Date: Tue, 30 Mar 1999 10:32:19 +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 CWS, Build 9.0.2212 (4.71.2419.0) X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2013.600 Importance: Normal Reply-To: djgpp AT delorie DOT com > I suggest to stop trying to reinvent the wheel, and instead read the > documentation. You have been pointed to section 18.2 of the FAQ which > explains how to do that. That section includes a working example of > code which does something very similar to what you need; use that > example as the starting point. I did read section 18.2 and worked on it for a couple of hours before even asking for further help. There is no problem to pass a ControlBlock to the driver, the pointer to the block being in in ds:dx. That is easily done as in 18.2 of the FAQ, using the default transfer buffer as you say. The problem is that the Control Block contains 3 long pointers to 3 more blocks which the driver needs access to and read / fill in on return, which means as far as I understand it, that I must create at least three more transfer buffers in conventional memory. ie. struct ControlBlock { byte Command; unsigned short length_Tx; unsigned int pTx; unsigned short length_Rx; unsigned int pRx; unsigned short lengthReply; unsigned int pReply; } The creation of a transfer buffer was simple enough via the FAQ and reading the libc docs. I couldn't though, despite trying, manage to get the conventional memory long pointer to fill in pTx, pRx and pReply that I need to pass in the control block. I was looking at the way the __tb macro is defined but this seemed specific to the transfer buffer, and I looked through the libc sources, but couldn't find anything of use. Maybe as you say I am trying to re-invent the wheel, but at the moment I cannot see another way of acheiving this. As you can see it is complicated by the need to send and return information in other blocks. Sorry if I am overlooking something that is obvious to you, I am trying, and reading the FAQ and docs as I go. Mark Usher marku AT magnet DOT at