VOGONS


First post, by retro games 100

User metadata
Rank l33t
Rank
l33t

I'm learning about DOS memory management. OK, about 20 years too late, but better late than never!

Is this correct -

XMS = extended memory, the memory above 1mb
EMS = expanded memory, the memory above 640K but below 1mb. Is this also called UMB?

For XMS to work, you need himem.sys
For EMS to work, you need emm386.exe

But are there other ways to manage DOS memory, apart from using himem and/or emm386?

I heard about qemm (3rd party memory management software) years ago, but never bought/used it.

Is qemm any good? What can I use it for?

Thanks a lot for any comments.

PS - I hope it's OK to post this thread inside the Marvin forum.

Reply 1 of 7, by Zup

User metadata
Rank Oldbie
Rank
Oldbie

No, it's not right.

Both XMS and EMS refers to the memory above 1mb. EMS was the first specification to allow use of memory above 1mb, and allow even 8086 to access more than 1mb (but in this case, requires special memory boards to allow it). EMS "pages" extra memory somewhere betweern 640 and 1 mb (usually in segments D000 or E000).

XMS allows 80386 and better systems to use memory above 1 mb (I don't know if it works in 80286). It is a different specification, so programs can use one or another (or both).

The area between 640 and 1mb are the UMB (upper memory blocks). This area is reserved to hardware, but DOS 5 and 6 allows to place drivers and part of COMMAND.COM. Using UMBs is a 'tricky' question, because:

- Segment A000 is used by the EGA and VGA video cards.
- Segment B000 is used by any video card.
- Segment D000 or E000 is used by EMS cards or EMM386.
- Segment F000 is the BIOS of the motherboard.

QEMM 386 is another program to manage memory, but it does the same thing: provides EMS and/or XMS functionality. Back in time, it detected better what UMBs were free to use, and allowed "shadowing" BIOS. With later development of DOS (MSDOS 6 came with memmaker), I don't know if it was a better option.

I have traveled across the universe and through the years to find Her.
Sometimes going all the way is just a start...

I'm selling some stuff!

Reply 2 of 7, by jthieme

User metadata
Rank Newbie
Rank
Newbie

As an alternative to QEMM or EMM386 you can try freeware JEMM:
http://www.japheth.de/Jemm.html

A nice feature is that it can be loaded and unloaded from the command line unlike QEMM and EMM386

Reply 3 of 7, by 5u3

User metadata
Rank Oldbie
Rank
Oldbie
Zup wrote:

XMS allows 80386 and better systems to use memory above 1 mb (I don't know if it works in 80286).

Yes, XMS also works on AT/286 machines.

Reply 4 of 7, by StickByDos

User metadata
Rank Member
Rank
Member

There are 3 kinds of EMS:

- Hardware EMS
You have a dedicated memory board (eg AST Rampage, Intel AboveBoard...)
these boards provide functionalities you don't have with other kinds of ems (alternate DMA, page aliasing). You need the memory board driver.

- Simulated EMS
You choose in your in your cmos set-up to partition installed memory on mobo, between XMS and EMS, it depends of your chipset. You need the chipset ems driver.

- Emulated EMS
It's software emulation of EMS on 386+ (with EMM386, QEMM...)
It need VIRTUAL MODE, you loose compatibility with real mode

Type win to loose the power of your computer !

Reply 6 of 7, by Malik

User metadata
Rank l33t
Rank
l33t

My first 80286 20Mhz system came with 2MB RAM in 1990 or before that - can't remember the year though. I was so excited when I first was able to see the Pilot's hand in Wing Commander I. (Wing Commander I really uses the EMS memory for some fantastic effects those days...larger explosions, etc.

And I really miss the 286's cpu case. Just pop in the two side buttons and you can raise the cover.

5476332566_7480a12517_t.jpgSB Dos Drivers