Message-ID: From: Shawn Hargreaves To: Eli Zaretskii , djgpp AT delorie DOT com, "Salvador Eduardo Tropea (SET)" Subject: RE: Allocate physical memory? Date: Wed, 25 Mar 1998 14:49:11 -0000 MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk Salvador Eduardo Tropea writes: > > or use the VDS (Virtual DMA Services) API, > > And I don't know if this service was designed for what Shawn wants, I > think it uses base memory. Shawn needs to make PCI DMA transfers, they > can be done in any place of the memory (not only base memory) and they > can be huge (over 640Kb) so the base memory won't help. I think that VDS will be able to do this. The docs I have are quite vague (both the Interrupt list and the official Microsoft documentation just list the function calls without any real overview of what it can do), but as far as I can see it will be able to map any area of linear memory into a range of consecutive physical addresses, rearranging the page table as required. Of course this may be too slow to be usable, but hopefully once the remapping has been done once, subsequent blits from the same bitmap will be very fast because VDS won't need to reorder any memory. This all depends on how well the VDS routines are implemented, so I will just need to try it and find out. If the locking speed is a problem I will have to find some more sophisticated system to keep bitmaps locked over a prolonged period of time, but hopefully it won't be too bad to just lock the source bitmap prior to each blit. As I understand it, cwsdpmi doesn't currently implement VDS, so this will only work under Windows or some other memory manager. But for now I can try to get some code working using VDS, and then maybe try a conventional memory solution for cwsdpmi (or even better get someone to add proper VDS support :-) Shawn Hargreaves.