[comp.sys.amiga] More on BeginIO

dillon@CORY.BERKELEY.EDU (Matt Dillon) (11/01/87)

	Urk.  I looked at the ROM code again.  SendIO()/DoIO() basically
do this:

SendIO(req)
struct IoStdReq *req;
{
    req->io_Flags = 0;
    BeginIO(req);
}

DoIO(req)
struct IoStdReq *req;
{
    req->io_Flags = IOF_QUICK;
    BeginIO(req);
    if ((req->io_Flags & IOF_QUICK) == 0)
	WaitIO(req);
    return(req->io_Error);
}

	So if you need the upper four Flag bits preserved, simply:

	req->io_Flags &= ~0x0F;		in SendIO()  and

	req->io_Flags = (req->io_Flags & ~0x0F) | 1;	in DoIO()


	That is, in your own custom SendIO/DoIO() routines.  Frankly, I
	think this is a bug in the OS... the EXEC library Send/DoIO()
	routines should have done this.

				-Matt