Overview
This unit gives the pascal programmer access to an XMS heap for
Pascal. It uses a similar system to the Pascal standard heap.
This unit is ideal for programmers requiring many large blocks of
data.
Requirements
Turbo Pascal 6
TPXMS.TPU (Public Domain by Vernon E. Davis, Jr.)
DosMem (Public Domain by Pure Power Software, PSDSM)
Both PSDSM and TPXMS should be available where you obtained this
file.
Limitations
When running in real mode you cannot simply use the XMS memory
provided by HIMEM.SYS with pointers. Thus you can't simply plug in
this unit and assume that your programs will now use XMS.
You can only access data in conventional memory. Thus if your
program uses 400 kb and the PC only had 500 kb free, your program
is still limited to a largest block size of 100 kb, but with this
unit you can swap data in and out of the XMS memory.
How it works
HIMEM requires a request for memory. Usually HIMEM only permits
32 blocks, that is, only 32 handles are issued. Thus requesting
a new handle each time is silly as one often uses more than 32
pointers in a program, often more than the 128 HIMEM maximum.
So, when you allocate your XMS heap with GetXMSHeap, the unit takes
a block (one handle) from HIMEM. You can then access this memory
in any size chunks you wish, from blocks of 1 byte to blocks of
640 kb. The unit has its own handles and can allocate many handles
to the XMS heap (set by BMaxPointersB).
Your programs will now use handles to the XMS heap (not to XMS
controlled by HIMEM), not only pointers. Handles point to the XMS
heap, p
|