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