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