Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!sundc!pitstop!sun!amdcad!ames!ucbcad!ucbvax!CORY.BERKELEY.EDU!dillon From: dillon@CORY.BERKELEY.EDU (Matt Dillon) Newsgroups: comp.sys.amiga Subject: More on BeginIO(). Message-ID: <8710312318.AA16474@cory.Berkeley.EDU> Date: Sat, 31-Oct-87 18:18:24 EST Article-I.D.: cory.8710312318.AA16474 Posted: Sat Oct 31 18:18:24 1987 Date-Received: Thu, 5-Nov-87 04:43:44 EST Sender: daemon@ucbvax.BERKELEY.EDU Lines: 33 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