To: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: Re: movedata() vs dosmemxxx() Date: Sun, 07 Aug 94 15:37:48 +0300 From: eliz AT is DOT elta DOT co DOT il I have a follow-up on this subject. It seems the problem is that linear_address_of_transfer_buffer has 0xe in its upper 4 bits, so the argument passed to movedata() must be AND'ed with 0x0fffffff. dosmemxxx() do this automagically, as libsrc/dosmem.s clearly shows. Doing the above before calling movedata() solved the problem in the example program I posted. I guess, movedata() doesn't do the above AND automatically because it is suited for moving protected mode (i.e., 32-bit addressed) buffers too, am I right? Another question is: why does the address of transfer buffer has those bits set? And, finally, a suggestion: put this ANDing requirement in the docs (that's assuming this indeed is the solution to the puzzle). Eli Zaretskii