Image Map Image Map
Page 1 of 2 12 LastLast
Results 1 to 10 of 20

Thread: Questions about EMS memory

  1. #1
    Join Date
    Jun 2010
    Location
    Québec, Canada
    Posts
    8

    Default Questions about EMS memory

    I think that I have a fascination about EMS memory. I purchased 2 Lo-tech 2 mb EMS memory cards. I installed one card in a 286 computer and 1 card in a 386 computer. I already had one installed in a Tandy 1000 TX. The driver is loading fine on all 3 computers.

    On the 386, I have Windows 3.11 and Windows 95 installed. On Windows 95, when I try to boot, I have an error message saying that an incompatible EMS driver is loaded and then reboot. On Win 3.11, the splash screen appears, and then it crash and return to DOS. Is that normal behavior? Is EMS memory completely useless on a 386, since XMS can be used as EMS?

    On the 286, I am using Windows 3.1 and Freedos. I was wondering if EMS memory can be used with Windows 3.1?

    Also, according to Windows 3.0 manual and my own experiments, Windows 3.0 in real mode uses EMS and the amount available is displayed in the about boxes. In Standard mode, it seems that it is not as clear. In the manual, it is saying that Windows does not uses EMS, but programs can uses it. The manual doesn’t specifies if it is for Dos or Windows programs. The manual also says that on a 286 computer, it is preferable to have EMS memory as much as possible to speed up the execution of Windows. This is puzzling me. I haven’t found anything particular about EMS memory in the Windows 3.1 manual.

    Thanks!

  2. Default

    I have a technical article (PDF) on EMS, but limitations of this forum prevent me from uploading it. Not sure if that's what you want anyway.

  3. #3

    Default

    I would not use a hardware EMS card in a 386, especially not with Windows. You need GEMMIS (Global EMM Import Specification) support to run Windows in enhanced mode. You are better off using EMM386 which can also backfill conventional memory and provide UMBs.

  4. #4
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    33,370
    Blog Entries
    18

    Default

    This thing?

    At best EMS was a kludge (I wrote for it). When the 386 came along, it was pretty much a dead topic.

  5. #5
    Join Date
    May 2009
    Location
    Connecticut
    Posts
    4,560
    Blog Entries
    1

    Default

    EMS isn't completely useless on a 386 but the value is limited. You would need to disable EMM386 to use the other EMS. Giving up control of the memory would prevent many 386 features from running so no enhanced mode or Win 95.

    EMS on a 286 is easier to use. Windows 3 in standard mode would consume extended memory but any DOS application could access the EMS left over. Switching from protected mode to use EMS for a disk cache or RAM disk will be slow so better using extended (XMS) for those tasks.

    The EMS note regarding performance is likely carried over from Windows 286 and applies only to Real Mode Windows 3. If one has enough EMS available, code can be placed inside each EMS page frame reducing the amount of discarding and reloading. With very large amounts of EMS, it is possible to backfill to 256k and swap an entire memory block allowing for running multiple large real mode Windows application and DOS applications. Instead of swapping to disk, the entire large page frame would swapped out to EMS with a new bank of EMS paged in with a different application.

    The case where one would benefit the most from having both XMS and EMS would be if running Lotus 1-2-3 version 2.2 alongside either Windows standard mode or OS/2 1.x.

  6. #6
    Join Date
    Jan 2013
    Location
    Marietta, GA
    Posts
    3,351

    Default

    The only reason to use hardware EMS on a 386+ would be programs that don't like running in an EMM386 (or similar) DOS VDM and that require EMS. Lots of games hated EMM386, but only a few used EMS. Most productivity applications were OK with EMM386.

  7. #7

    Default

    Quote Originally Posted by Chuck(G) View Post
    This thing?

    When the 386 came along, it was pretty much a dead topic.
    Not really, there were DOS programs which used EMS but not XMS. MSCDEX is one of them and there were several games which used EMS only. Consider that using extended memory via XMS involved copying data via the XMS move block function whereas using expanded memory meant access via the EMS page frame and flipping a hardware page register or four page table entries in a V86 mode EMM to select a 16KB page which was considerably faster.

  8. #8
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    33,370
    Blog Entries
    18

    Default

    You mean that some programs "can" use EMS; MSCDEX doesn't require EMS by any stretch. Generally, on my MSDOS 6+ systems, I load himem.sys and don't bother with EMM386. MSCDEX can always be loaded high to get it out of the way--if you're not using one of the better third-party replacements. As far as games, I don't play them.

    Bottom line was that EMS was developed for owners of 8088 systems that wanted to run large spreadsheets (hence the "Lotus" in LIM). I've even been guilty of writing a LIM 3.2 emulator myself.

    Doesn't mean that it wasn't a kludge.

  9. #9

    Default

    Quote Originally Posted by Chuck(G) View Post
    You mean that some programs "can" use EMS; MSCDEX doesn't require EMS by any stretch. Generally, on my MSDOS 6+ systems, I load himem.sys and don't bother with EMM386. MSCDEX can always be loaded high to get it out of the way--if you're not using one of the better third-party replacements. As far as games, I don't play them.

    Bottom line was that EMS was developed for owners of 8088 systems that wanted to run large spreadsheets (hence the "Lotus" in LIM). I've even been guilty of writing a LIM 3.2 emulator myself.

    Doesn't mean that it wasn't a kludge.
    MSCDEX uses EMS for buffers so with EMS you can have far more buffers without using a large chunk of conventional or upper memory. I actually looked into using XMS but it was infeasible in any reasonable period of time so all I did was rewrite a few key portions in assembly (it was a mix of assembly and C) and optimize it so that resident portion used less memory.

    Granted I've never used EMS on any of my own PCs, I've always used my own custom XMS driver and chipset UMB provider and run in real mode. For the few games that insisted on EMS I used my own EMS emulator TSR which used XMS; not an optimal EMS implementation but it got the job done and was more than fast enough on a 486 or later.

    EMS does what it was intended for fairly well. There are far more kludgey things in the DOS era. The redirector interface and its internal callback interface to the DOS kernel comes to mind and the message retriever interface which was added in DOS 4 (used to facilitate NLS message text translation) is a mess and the actual message retriever source code is a sight to behold (in a bad way).

  10. #10
    Join Date
    Jan 2007
    Location
    Pacific Northwest, USA
    Posts
    33,370
    Blog Entries
    18

    Default

    MSCDEX, EMS and the network redirector, all in one package. It's a wonder that it works at all.

    The redirector interface could come in handy when you had media with a non-DOS filesystem or other strangeness (e.g. non-power-of-2 sized sectors). Wrote a bunch of those and got some customers out of a tight spot.

    But right around DOS 3.0, you had to wonder what became of the stated intention in the DOS 2.0 OEM notes that said that Microsoft intended to bring Xenix and DOS to an eventual merging of minds. I guess the path separator being backslash was a start.

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •