[comp.os.msdos.programmer] Summary: TC++ above 640k

pts@mendel.acc.Virginia.EDU (Paul T. Shannon) (10/24/90)

About 10 days I go I posted the following message:

   Can anyone give me advice on the subject of gaining access, from Turbo C++,
   on a 386, to memory beyond 640k?  Is there any alternative to EMS?  If not,
   are there any public domain or marketed libraries that hide some of the
   nasty EMS detail from view?  

I received two very helpful responses.

1. Greg Montgomery of Montgomery Consultants, Inc., of Atlanta, Georgia,
   described the CXL library, which is available via anonymous ftp from
   Simtel, and which includes expanded memory functions.

2. Blake Freeburg, of the Physics Department at the University of Texas
   at Austin, told me of Turbo C++ classes for extended memory use,
   available on compuserve.  

Both of these replies are summarized below.  

 ----- Greg Montgomery on CXL -------------------------------------------

... CXL is a DOS-dependent library that
has a bunch of functions in it... String, windowing, data entry, EMS,
mouse, etc... It's shareware and v5.2 is $35 and v5.5 which will be out
anytime now or is out now is $50. Highly recommended.
The EMS functions it has is:

                      emsalloc..............................24
                      emsdealloc............................24
                      emsexist..............................25
                      emsframe..............................25
                      emsfree...............................25
                      emsmap................................26
                      emsread...............................26
                      emstotal..............................27
                      emsver................................27
                      emswrite..............................27
                      expmem................................28

The names are fairly self-explanatory... The library is available at
Simtel20 as PD:<MSDOS.C>CXL52-?.ZIP. It comes in two zip files. v5.5
might be online, but don't count on it. v5.5 will be much improved as
CXL has been sold to another company and many routines have been
rewritten and v6.0 is in the works. Many routines will be rewritten in
assembly for speed, etc. and new functions added... This is an excellent
library that I highly reccommended...
Now that I've finished plugging, let me say that the only connection I
have with CXL or IDC (its current owner) is I am a registered user.


   ---------- Blake Freeburg on C++ extended memory classes ------

Hi,
Just thought you would like to know about a program on COMPU$ERVE under
bprogb that is called XMS11.zip.  Some 15 yr. old wrote a memory manager
class that handles the XMS memory driver (that comes from microsoft and is
in windows).  It works pretty well, and lets you use the memory above 640k...

   compuserve instructions
   ------------------------

Upon entering compuserve, type
go bprogb
  (you may have to join the forum if you're not yet a member)
select option 3 (libraries)
select library 3 (Turbo C++)
search directory with 'dir x*.*' to find XMS11.zip
download the file


     CAVEATS
     -------

Solution 1, the CXL libraries, looks quite good, but in 4 tries I've
been unable to connect to simtel20.army.mil, which (I assume) is the
simtel Greg describes.  I've had *partial* success twice, but after
logging in as anonymous, I've been logged off with the message that
there were too many anonymous users logged on.  I'll keep trying.

Solution 2, the Turbo C++ classes for extended memory, do not come
with source code.  The author of the code is certainly a generous guy,
but I wish he included source as well, if for no other reason than
making it possible to use his classes in memory models other than 
the small and large that he has thus far restricted himself to. 

   FURTHER SUGGESTION
   ------------------

You might me interested in QEMM386.SYS, about $70.00 from Quarterdeck.
This Dos device driver acts supports both extended and expanded memory,
and should therefore be compatible with both of the solutions listed 
above, along with any program you use that needs either XMS or EMS.
It also includes utilities to 'HILOAD' device drivers into memory
holes between 640k and 1000k, leaving more room for program code and data.
(Since I was short of both of these, and this shortage led me to my
original posting, I'm glad to have more regular memory as well.)

I had to wrestle with QEMM quite a lot, but I ended up with 550k of
free (regular, low) memory even with lots of device drivers loaded as well.

Contemporary DOS is a most astonishing patchwork of compromises and
kludges; QEMM386, and the two pieces of software described above may
make it a bit less frustrating to work with.

 - Paul