Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!uwm.edu!rpi!dali.cs.montana.edu!uakari.primate.wisc.edu!aplcen!uunet!pilchuck!amc-gw!jwbirdsa From: jwbirdsa@amc-gw.amc.com (James Birdsall) Newsgroups: comp.sys.ibm.pc.misc Subject: Re: Extended and Expanded memory Message-ID: <2774@amc-gw.amc.com> Date: 20 Aug 90 22:11:32 GMT References: <26045@bellcore.bellcore.com> <1990Aug18.110025.28644@cbnewsl.att.com> Reply-To: jwbirdsa@europa.amc.com (James Birdsall) Distribution: usa Organization: Applied Microsystems, Redmond, WA Lines: 57 In article <1990Aug18.110025.28644@cbnewsl.att.com> rl@cbnewsl.att.com (roger.h.levy) writes: >In article <26045@bellcore.bellcore.com>, wind@rruxi.bae.bellcore.com (Wind Chen) writes: >> LIM 3.2 and LIM 4.0 are two different thing, they are not compatible. >> To use LIM 4.0, you will need hardware support, if you EMS board didn't say it >> supports LIM 4.0, chances are, it does NOT support. > >Yes they are different but most of the rest is untrue. From the Waite Group's >MSDOS Developer's Guide: > > The user does not have to buy any new hardware to use applications > that are written to the LIM EMS 4.0 specification. Older expanded > memory boards designed for the LIM EMS 3.2 specification can > support the 4.0 specification - the manufacturer just has to write > a new EMM to implement the 4.0 function calls. > >Established manufacturers such as AST do just this sort of thing. Also, the >LIM 3.2 function calls exist in LIM 4.0 but 4.0 has more of them. I would >call that "upward compatible" rather than "not compatible." While true, it isn't quite the whole story. Yes, it is possible to write a LIM 4.0-spec driver for a LIM 3.2-spec board. My EMS board is just such a beast and it works just fine. HOWEVER, a board with LIM 4.0 HARDWARE support can support more than four 16K page frames (using the term loosely) and can map memory anywhere in the 1M address space. A board built for LIM 3.2 can, with the proper drivers, run 4.0, but it is still limited to the four page frames in a 64K block which 3.2 specified. An example: Quarterdeck recently came out with a product called QRAM, which provides some of the benefits of QEMM for those with 8086/8 and 80286 systems. It requires LIM 4.0. While I have not actually inspected QRAM, it seems reasonable to suspect that they are mapping pages into unused parts of high memory, loading drivers/TSRs/whatever into them, then leaving the pages mapped that way -- meanwhile leaving enough space unmapped that applications have some places to use as page frames. If this is indeed what they are doing, they're probably going to get a lot of unhappy calls from people with LIM 3.2 retread boards whose hardware can't support full 4.0. And there isn't a good way for the average user to even TELL if their board is a retread or 4.0 hardware. The driver, if it displays a message at all, probably says "LIM EMS 4.0". Mine does. I only know that it is a retread because I've actually written EMS-using programs which queried the driver about number of frames, addresses, etc. So the average user is going to look at their docs, say "It sez 4.0", buy QRAM, and be very annoyed if they turn out to have a retread board. I salute Quarterdeck for putting out a product which, even if it works perfectly, is still going to cause them a lot of customer-support grief. And if QRAM has a way around this problem or does something else entirely, please enlighten me. -- --- James W. Birdsall jwbirdsa@amc.com 71261.1731@compuserve.com Compu$erve: 71261,1731 GEnie: J.BIRDSALL2 For it is the doom of men that they forget. -- Merlin