Back to home page

DOS ain't dead

Forum index page

Log in | Register

Back to index page
Thread view  Board view
georgpotthast

Homepage

Germany,
02.02.2013, 07:53
 

NOEMS (Users)

I am using MS DOS 7.0. The question I have is what difference does the NOEMS parameter make when adding it to emm386?

Some programs do not seem to work anymore when this parameter is set. They do work if emm386 is run without it.

Georg

Arjay

02.02.2013, 11:13

@ georgpotthast
 

NOEMS

> I am using MS DOS 7.0. The question I have is what difference does the
> NOEMS parameter make when adding it to emm386?

In brief, using that switch pretty turns of the main reason for running EMM386 in the first place which is to support Expanded MeMory. To quote:

cc722864:
"...Provides access to the upper memory area but prevents access to expanded memory..."

fdos.org: EMS
"...Do not enable expanded memory. Use NOEMS to get more free UMBs if you need no EMS..."

Yahoo Answers: What is the difference between extended and expanded memory?

> Some programs do not seem to work anymore when this parameter is set. They
> do work if emm386 is run without it.
The programs that are not working will be the programs requiring EMS (Expanded Memory Specification) and the ones that are still working will likely be using XMS (eXtended Memory Specification) via HIMEM.SYS instead or not caring in the sense of using DOS memory or running with limited more support not immediately obvious, e.g. you might not be able to open as large files in these applications due to not having enough memory of the expected type, e.g. DOS memory and EMS (so the app just uses DOS mem).

Personally for years I've opted to always find alternatives of anything using EMS where at all possible as it slows machines down and many DOS Demo's won't run with it loaded. I'd liked Demo's and Windows 3.0+ never needed EMS... So for years I've not needed it either. EMS is one of those things that quickly went legacy that some programmers continued to use after they should of stopped and switched to using XMS or DPMI instead. /rant!

In closing, personally if you can avoid using EMS I'd always recommend NOT using it. Others may disagree...

Japheth

Homepage

Germany (South),
02.02.2013, 12:25

@ georgpotthast
 

NOEMS

> I am using MS DOS 7.0. The question I have is what difference does the
> NOEMS parameter make when adding it to emm386?

AFAIR the NOEMS does NOT actually "disable" EMS - a program may still allocate and use EMS pages. What it does is:

- rename the "driver" name from "EMMXXXX0" to "EMMQXXX0" ( programs wanting to use EMS are supposed to check the existence of this string at a certain location, but there's a significant amount of programs that won't do this )

- no page frame is allocated.

- the amount of EMS memory that can be allocated is limited ( IIRC, it's 8 MB; use the EMSSTAT utility supplied with Jemm to verify this assumption! ).

---
MS-DOS forever!

Arjay

02.02.2013, 13:00

@ Japheth
 

NOEMS

> > I am using MS DOS 7.0. The question I have is what difference does the
> > NOEMS parameter make when adding it to emm386?
>
> AFAIR the NOEMS does NOT actually "disable" EMS - a program may still
> allocate and use EMS pages. What it does is:
>
> - rename the "driver" name from "EMMXXXX0" to "EMMQXXX0"
Interesting thanks for sharing/rightly correcting me. I believe that is supposed to be the case across various DOS versions, EMS utilties? Since this 1995 discussion EMMXXXX0, EMMQXXX0 and the rest of the gang involving the likes of Ralph Brown agrees with what you state.

As above I've never cared much for EMS and it's not ever really impacted much on things that I have done in the sense that I have just ignored it and have continued to ignore it as something I've not needed or indeed wanted to use. I did write some EMS code years ago but moved onto other things, useful to know for testing.

Rugxulo

Homepage

Usono,
02.02.2013, 17:03

@ Arjay
 

NOEMS

I love mentioning how Trixter's 8088 has 2 MB of real EMS. Hence it's very useful to him, but obviously newer cpus (286+) prefer something else, usually handled via XMS or DPMI or whatever API non-DOSes use. Turbo C, etc. prefer EMS by default (if available) because, IIRC, "XMS was not quite standardized yet". EMS was standardized by LIM: Lotus-Intel-Microsoft, latest version was 4.0.

I could be wrong, but I think NOEMS only disables the 64kb page frame, hence it still allows EMS 4.0 stuff (4 kb pages?). Ask Eric Auer for more info. 4.0 may have been originally limited to 32 MB (which was probably plenty back then), dunno how officially hardcoded that is elsewhere though. (Wasn't 3.2 maxed out at 8 MB?)

Wasn't Compaq's EMM386 the first to be included in their variant of MS-DOS? Or was it DR-DOS? And wasn't HIMEM.SYS used originally for Windows only?

The irony is that XMS works on 286s but EMM386 only on 386s (in V86 mode). While it's true that some apps conflict with EMM386, usually "most" well-behaved apps work fine with it installed. (And yes, I know there are software-only EMS emulators for 286.) Though I think XMS fragments more easily than EMS. The main difficulty these days with EMM386 is the 4 kb paging, which can cause difficulties with newer cpus and 4 MB pages, etc. (like sometimes used by CWSDPMI, if large allocations are needed).

But I agree, if you don't have lots of EMS apps and don't need UMBs, it's best to not load it. Luckily "JEMM386 LOAD" is there for us when needed.

Arjay

09.02.2013, 22:23

@ Arjay
 

NOEMS

> > - rename the "driver" name from "EMMXXXX0" to "EMMQXXX0"
Related to this thread an amusing bit of DOS trivia I spotted whilst reading the Wikipedia entry on Wing Commander earlier today:

...As development for Wing Commander came to a close, the EMM386 memory manager the game used would give an exception when the user exited the game. It would print out a message similar to "EMM386 Memory manager error..." with additional information. The team could not isolate and fix the error and they needed to ship it as soon as possible. As a work-around, Ken Demarest, a developer on the game, hex-edited the memory manager so it displayed a different message. Instead of the error message, it printed "Thank you for playing Wing Commander"...

tom

Homepage

Germany (West),
02.02.2013, 17:27

@ georgpotthast
 

NOEMS

> I am using MS DOS 7.0. The question I have is what difference does the
> NOEMS parameter make when adding it to emm386?

NOEMS disables the EMS page frame (usually 64 K at E0000), and instead gives you 64 K more upper memory. you loose EMS memory allocation, though.


> Some programs do not seem to work anymore when this parameter is set. They
> do work if emm386 is run without it.
programs requiring EMS memory should be rare, as EMS memory was 8086 technology; from 80286 on XMS was much more common.

Tom

georgpotthast

Homepage

Germany,
03.02.2013, 19:48
(edited by georgpotthast, 03.02.2013, 19:58)

@ georgpotthast
 

NOEMS

Thank you for your messages. On my PC it looks like there is no upper memory available if NOEMS is NOT added.

upper memory:
with NOEMS: used 15k free 67 k
without NOEMS: used 0k free 0k

If I run tlink when NOEMS is set, the PC boots.

Another question: does emm386 NOEMS use paging so the memory address returned from DOS when requesting additional memory (int21h/ah=48h) is not the physical address?

Georg

Rugxulo

Homepage

Usono,
03.02.2013, 23:00

@ georgpotthast
 

NOEMS

> Thank you for your messages. On my PC it looks like there is no upper
> memory available if NOEMS is NOT added.
>
> upper memory:
> with NOEMS: used 15k free 67 k
> without NOEMS: used 0k free 0k

EMS 3.2 must need a 64 kb page frame, but I guess EMS 4.0 doesn't?? So technically you can still use EMS (barely) in smaller chunks (16 kb?), right??

BTW, EMS wasn't as old and unpopular as tom implies, various apps (mis)used it, e.g. Scream Tracker 3.21 (samples) circa mid-90s.

> If I run tlink when NOEMS is set, the PC boots.

You mean unexpectedly? Which TLINK, Borland's? There are various other linkers to use as replacement, of course. Other than that, dunno.

> Another question: does emm386 NOEMS use paging so the memory address
> returned from DOS when requesting additional memory (int21h/ah=48h) is not
> the physical address?

I don't think EMM386 hooks any part of standard int 21h, presumably only allocs 4 kb pages via the VCPI int 67h.

Japheth

Homepage

Germany (South),
04.02.2013, 09:04

@ Rugxulo
 

NOEMS

> EMS 3.2 must need a 64 kb page frame, but I guess EMS 4.0 doesn't?? So
> technically you can still use EMS (barely) in smaller chunks (16 kb?),
> right??

In EMS 4.0, you can always use function 57h (move memory); this function neither needs a page frame nor any mappable pages at all, and size isn't really restricted ( it must be <= 1 MB, IIRC ). It's actually almost identical to the XMS block move function.

---
MS-DOS forever!

Arjay

10.02.2013, 14:05

@ georgpotthast
 

NOEMS - tlink

> If I run tlink when NOEMS is set, the PC boots.
What version out of interest? Have you tried a newer version?

georgpotthast

Homepage

Germany,
12.02.2013, 21:50

@ Arjay
 

NOEMS - tlink

> > If I run tlink when NOEMS is set, the PC boots.
> What version out of interest? Have you tried a newer version?

I use version 7.1.30.1

Georg

georgpotthast

Homepage

Germany,
12.02.2013, 21:47

@ georgpotthast
 

JEMM386 noems

Now I tried JEMM386.exe instead of emm386.exe with MS DOS.

So in config.sys I have the line: "device=c:\jemm386.exe noems".

When I start tlink the PC does not boot any more instead I get the message:

"Unhandled exception 000E at 0020 1CAD Errcode 0002"

What does that mean?

I also found the following: if I start tlink a second and a third time from the command line without adding a file name to link, at the third time everything works fine. The same happens when I load TD, the debugger, from the command line. This starts fine on the third time and thereafter.

So is there a way to get tlink to run on the first time ;-)

Georg

RayeR

Homepage

CZ,
13.02.2013, 00:23

@ georgpotthast
 

JEMM386 noems

> When I start tlink the PC does not boot any more instead I get the
> message:
>
> "Unhandled exception 000E at 0020 1CAD Errcode 0002"

Did you tried JEMM fail-safe options? Check the docs. It may help...

(on some computers JEMM doesn't even boot with default settings - usually helps to exclude ROM area instead relying on autodetection)

---
DOS gives me freedom to unlimited HW access.

Japheth

Homepage

Germany (South),
13.02.2013, 04:15
(edited by Japheth, 13.02.2013, 08:45)

@ georgpotthast
 

JEMM386 noems

> "Unhandled exception 000E at 0020 1CAD Errcode 0002"
>
> What does that mean?

It's an error msg emitted by tlink ( more exactly: the borland extender ) that a page fault did occur.

Perhaps if you disable the borland extender swap file usage - if that's possible?

Or try to load hdpmi16 before you launch tlink - it might work or crash.

[LATER]

> I also found the following: if I start tlink a second and a third time from
> the command line without adding a file name to link, at the third time
> everything works fine.

I found this puzzling and did a test of my own. If you enter "Jemmex" before and after tlink runs, you'll notice a difference: tlink does allocate VCPI pages, but fails to free them. After 2 runs the pool of VCPI pages in Jemm is exhausted, that's why the third run behaves differently ( although, in my case, one cannot say that the third run is "successful" - it results in a msg that command.com cannot be loaded and the system is halted ).

I also did a brief test of my hdpmi16 advice: it works!

---
MS-DOS forever!

Laaca

Homepage

Czech republic,
13.02.2013, 07:20

@ georgpotthast
 

JEMM386 noems

> "Unhandled exception 000E at 0020 1CAD Errcode 0002"
>

Similar message occurs if you have more than 32MB of EMS memory. (you must limit it with certain JEMM386 settings)
But in your situation when you have EMS disabled it is a differenr cause.

---
DOS-u-akbar!

Back to index page
Thread view  Board view
22760 Postings in 2121 Threads, 402 registered users (0 online)
DOS ain't dead | Admin contact
RSS Feed
powered by my little forum