• Please review our updated Terms and Rules here

WIN 3.0 and DR-DOS 5.0 EMM386.SYS issues

mR_Slug

Veteran Member
Joined
Nov 28, 2006
Messages
941
Location
UK
Can anyone point me to a guide to installing Win 3.0 on DR-DOS 5. I've been having a hard time dealing with emm386.sys from DR-DOS and Windows. So far I've got himem.sys from windows to load followed by emm386.sys.

After some LAN Mangaer drivers are loaded high, I end up with 576K RAM. But Win 3.0 refuses to load in 386 enhanced mode (even if forced with "win /3"). It keeps trying to use the EMS RAM. If I don't load EMM386.SYS I get like 409K.

Here's the CONFIG.SYS:

SHELL=C:\COMMAND.COM C:\ /P /E:512
BREAK=ON
BUFFERS=4
FILES=30
FCBS=4,4
FASTOPEN=512
LASTDRIVE=Z
HISTORY=ON, 256, ON
COUNTRY=001,,C:\DRDOS\COUNTRY.SYS
HIDOS=ON
DEVICE=C:\MYLEX\DOS4E.SYS
?"Load MS HIMEM.SYS (Y/N) "device=C:\HIMEM.SYS
?"Load MemoryMAX software (Y/N) "DEVICE=C:\DRDOS\EMM386.SYS /F=AUTO /K=1024 /B=AUTO /R=AUTO

?"Load Lan Manager 2.0 drivers (Y/N)" GOTO LANMAN
GOTO END
:LANMAN
HIDEVICE=C:\LANMAN.DOS\DRIVERS\PROTMAN\PROTMAN.DOS /i:C:\LANMAN.DOS
HIDEVICE=C:\LANMAN.DOS\DRIVERS\ETHERNET\ELNK3\ELNK3.DOS
HIDEVICE=C:\LANMAN.DOS\DRIVERS\PROTOCOL\NETBEUI\NETBEUI.DOS
:END

Love that you can set each driver to load with a Y/N in DR-DOS.

Also is there a DR-DOS 5.0 Manual online somewhere? The Caldera 7.02 User Guide has been helpful, but it keeps making references to stuff not in v5.
 
You might also try MS Client 3.0 instead of Lanman. I’ve found MS Client uses a lot less conventional RAM than Lanman; MS Client will even load each component into UMB by itself if it can, without the need for LoadHigh (assuming you’ve got at least 100k free). On my setups, MS Client with TCP/IP only and the basic redirector takes up less than 20k conventional memory. Lanman took a minimum of 60k.

Also, why are you using the MS Himem.sys and the DR EMM386? I believe DR-DOS 5’s EMM386 already includes XMS functionality (I know 6 and 7’s do). I’d either stick with MS’s HIMEM and EMM386 or DR-DOS’s, but not both. You could also try grabbing EMM386 from DR DOS 7 and running that, it has quite a bit of improvements. (Again, no need to explicitly call HIMEM in that case.)
 
I doubt the AARD code has anything to do with Mr. Slug's problem, because it only exists in the beta version of Windows 3.1, only generated a "non-fatal" error during Windows setup, after which the user could choose to continue installation, and was bypassed (although not removed) in the final production version of Windows 3.1.

To Mr. Slug -- try using the EMM386 that came with Windows 3.x or MS-DOS instead of DR-DOS's version of it.
 
Does DR-DOS's EMM386.sys support the "Global EMM Import Specification"? Its needed for Windows 3.x in 386 Enhanced Mode to take control of the system from a memory manager running the system in protected mode. The JEMM family of memory managers don't support this either, but QEMM does. As stated above, try running Microsoft's EMM386 that came with Windows 3.0 and see if it starts in 386 Enhanced Mode. I wouldn't be surprised if Windows 3.0 detects the incompatible memory manager and silently forces itself to running in Standard Mode instead. WfW 3.11 (which only supports 386 Enhanced Mode) will simply not load at all if an incompatible memory manager is loaded.

wiki has details on this along with source links: https://en.wikipedia.org/wiki/EMM386
 
Thanks for your responses. I've done a bit more digging. According to this (page 64), In reference to MS-DOS 5.0:

"EMM386.EXE will work with Windows 3.0 in 386 enhanced mode, but DR DOS's EMM386.SYS will not."
It then mentions QEMM.

Anyone else played with third-party memory manager on DR-DOS?

Yes Windows 3.0's emm386.sys works with windows in 386 enhanced mode, but there seems to be no point using it on DR DOS. Skipping AUTOEXEC.BAT altogether,

DR-DOS with no memory manager loaded gives: 573K
DR-DOS with Lanman Drivers loaded gives: 527K
DR-DOS with LM Drivers loaded high + himem & Ms's emm386.sys gives: 518K
DR-DOS with LM Drivers loaded high + DR's EMM386 gives 580K (with HIDOS=ON)

So basically MS's emm386 is incompatible with DR-DOS.

"MICROSOFT Expanded Memory Manager 386 Version 4.10.0419" (EMM386.SYS) that ships with windows 3.0 doesn't have the NOEMS option, I think that's later in EMM386.EXE.

I'm not quite sure how to set DR's to not use an EMS window, or if it would help. I don't know what windows checks, is it the gate A20 handler?

<Side note>
MS Client 3.0 is probably better overall. The problem is I'm trying to setup a system as it was in 1990. So anything later I wont use. I may end up using Netware.

I thought that Lan manager 2.0 supported TCP/IP, thought the Server* version I got from winworld, doesn't seem to include TCP/IP, only NetBEUI. I've searched thru the OS/2 install disks and can't find any TCP/IP protocol in there either. Also tried google. the 2.2 client has it, but thats from '94. It all works fine with NetBEUI with one exception. When I load windows (With built in Lan manager services) I get:

"Network error on drive A:"

I can't find anything on this error.

*The server version runs on OS/2 1.3, it includes a client for MS-DOS.
</side note>

I'll have to read up on "Global EMM Import Specification", and some the the other memory managers. It's easy to stick DOS 6.22/PC-DOS 2000 etc with MS net client on an old system, load all the stuff high etc. The thing is in 1990 none of this existed. I think QEMM and 386MAX etc are worth investigating. I'm not sure If I'll track down TCP/IP support. I mean what would you use it for in 1990? Were most people still accessing Usenet via UUCP?.
 
DR DOS 5.0 EMM386.SYS (version 1.2x) does not support XMS and Windows 3.0 does not support VCPI (Windows 3.1 does) so it's not compatible with it in 386 extended mode. EMM386.SYS version 2.xx (included with DR DOS 6.0) added XMS support and it is the minimum version you need for use with Windows 3.0

DR DOS 5.0 itself does not use or take advantage of EMS memory for anything but their (not so good) disk cache.

QEMM 5.x works fine with DR DOS 5.0 but later versions do not.

Try disabling FASTOPEN and use HILOAD to load LM TSRs from AUTOEXEC.BAT

NOTE: HIDOS.SYS does not put the processor in protected mode and supports XMS so it's compatible with Windows 3.x and will allow DR DOS kernel to move to high memory. You can also have UMBs if you have of the few supported (Chips & Technologies) chipsetS but it cannot emulate EMS memory.
 
Last edited:
In short QEMM 5.11 + DR-DOS 5.0 + Windows 3.00a work together. I haven't done extensive testing, but so far so good.
Thanks for everyone's help.

dieymir, thanks for clearing up a few details on DR-DOS. I wonder if HILOAD.SYS and QEMM will work together. QEMM does actually load part of DR-DOS high but 10K less.

I can probably tweak both the QEMM and DR-DOS EMM386.SYS (MEMORYMAX) configurations more but I have a couple of bits of hardware to change. I'm 90% there though.

Now I just need to track down that annoying "Network error for drive A:" in Windows 3.0.

---
Details
I've included all this, as there's not really anything on the net about it. It probably wont be of much interest unless you're trying to do the same thing.

On Sunday I spent much of the day trying to hunt down QEMM 5.10 or 5.11. 5.1 or 5.10 is the first version to work with windows 3.0 correctly according to this: https://www.pcorner.com/list/WINDOWS/WINTIPS.ZIP/WIN3.TEC/

I found version 5.0 at vetusware quite quickly. I searched through various versions of DESQview to see if it was included with them, looked all over the internet, and gave up. So I though I'd give v5.0 a go. After installing it, and despite it's readme file reporting it as v5.0, it turned out to be v5.11! Literally hours wasted searching for something I'd already found. Anyway I've had some real issues getting it to work with lanmanager. The optimize program is very clever in it's process, but really didn't know how to cope with DR-DOS's conditional config.sys. So I'm currently running three different config.sys. One with no memory manager (NONE), one with DR's EMM386.SYS (MEMORYMAX) and one for (QEMM).

First, currently I have a config.sys entry for a HDD driver (DOS4E.SYS), which allows second partition (h/w limitation). And a disk cache utility DCE376DR.EXE. (You can think of these together as equivalent to smartdrv.sys).

DR-DOS's MEMORYMAX could not load DOS4E.SYS high. I haven't tried to load the DCE376DR.EXE tsr high using MEMORYMAX. QEMM was able to load both these high.

QEMM does work with Windows 386 enhanced mode. Although I did have to add:
Code:
DualDisplay=True
EMMExclude=E000-EFFF
to the 386 Enhanced version of the SYSTEM.INI file, otherwise it crashes on exit, and had some minor hdd corruption.
I may need to change the range now.


I let QEMM's optimize my config.sys (based on the "none" version using the optimize program. It unfortunately totally balked on the lanman part. It runs the config.sys through some kind of debugger. Loading LAN manager's NETBIND crashed the debugger. It gives you option to terminate or continue etc, but the system would often lock up. I did eventually get it to complete. I seemed to have more luck when i set the EMS window to start at C800. Once I figured out the basics of how QEMM loads stuff into different regions, I was able to fine tune thing a bit more.


Results:
In each case both the disk programs (DOS4E.SYS & DCE376DR.EXE) are loaded. (Only QEMM can load them high)

In each case three config.sys entry's for the Lanman are loaded as well as NETBIND, "NET START WORKSTATION" and
"NET USE Z: \\SERVER\SHARE" A fairly basic setup. BTW Im using NetBEUI, TCP/IP probably takes more RAM.

Code:
These are the reports from the MFT.EXE program from QEMM:
(I've adjusted the tables slightly so entry's line up better.)
  None:                                   MEMORYMAX:                               QEMM:
  Memory Area   Size   Description        Memory Area   Size   Description         Memory Area   Size   Description      
  0000 - 003F     1K   Interrupt Area	  0000 - 003F     1K   Interrupt Area  	   0000 - 003F     1K   Interrupt Area  
  0040 - 004F   0.3K   BIOS Data Area	  0040 - 004F   0.3K   BIOS Data Area  	   0040 - 004F   0.3K   BIOS Data Area  
  0050 - 006F   0.5K   System Data	  0050 - 006F   0.5K   System Data     	   0050 - 006F   0.5K   System Data     
  0070 - 1BE4   109K   DOS		  0070 - 0D87    52K   DOS	     	   0070 - 102C    62K   DOS	      
  1BE5 - 38F8   116K   Program Area       0D88 - 1DCF    65K   Program Area    	   102D - 1EE4    58K   Program Area    
  38F9 - 9FFF   412K   [Available]	  1DD0 - 9FFE   520K   [Available]     	   1EE5 - 9FFF   516K   [Available]     
					 [                                 ]    
  ===Conventional memory ends at 640K==== ===Conventional memory ends at 640K====  ===Conventional memory ends at 640K====   	  	   
  A000 - AFFF    64K   VGA Graphics	 [                                 ]	   A000 - AFFF    64K   VGA Graphics	   
  B000 - B7FF    32K   Unused		 [9FFF - C7FF   160K   Program Area]	   B000 - B7FF    32K   High RAM		   
  B800 - BFFF    32K   VGA Text		 [ 		  		   ]	   B800 - BFFF    32K   VGA Text		   
  C000 - C7FF    32K   Video ROM	 [                                 ]	   C000 - C7FF    32K   Video ROM		   
 [                           	 ]	  C800 - D7FF    64K   Page Frame	   C800 - D7FF    64K   Page Frame	   
 [C800 - EFFF   160K   Unused    ]        D800 - E5FF    56K   Program Area	   D800 - EFFF    96K   High RAM		   
 [                               ]     	  E600 - EFFF    40K   Unused		   	    
 [                               ]	 [                               ]	   F000 - F6FF    28K   System ROM  		    
 [F000 - FFFF    64K   System ROM]	 [F000 - FFFF    64K   System ROM] 	   F700 - FAFF    16K   High RAM             
 [                               ]	 [                               ]   	   FB00 - FFFF    20K   System ROM
MEMORYMAX wins by a bit, I think this is because DR-DOS knows how to load even more of itself high.

QEMM has a bit of a steep learning curve, but I've found a manual now.

Hopefully this will be helpful to someone in the future.
 
I've got this set for QEMM 386 v6.0:

1) QEMM 386 manual


2) Quarterdeck Manifest manual

3) PASSPORT Quarterdeck

No software, just the paperwork.
 
You can run optimize with only QEMM in your CONFIG.SYS and after complete the process readd the MemoryMAX stuff. Maybe you are doing this yet, but you can also try to load the DR DOS kernel into the HMA with QEMM. Change your QEMM CONFIG.SYS section to someting like this:

DEVICE=C:\QEMM\QEMM.SYS RAM <whatever options you need>
DEVICE=C:\DRDOS\HIDOS.SYS /BDOS=FFFF

this will free about 37KBs in UMB space but Windows 3.0 want to have the whole HMA for itself. You can also load DR DOS kernel into UMB space, for example:

DEVICE=C:\QEMM\QEMM.SYS RAM <whatever options you need>
DEVICE=C:\DRDOS\HIDOS.SYS /BDOS=C800

you will have less memory to load LM, though.
 
Last edited:
Thanks Stone, but I think the manual I have will be OK.
dieymir, that's good to know, Qemm first, then Hidos.

I will have to continue playing with this, but I've had other commitments the last few days.
 
I use QEMM9 with DOS7.1/WFW3.11 on my Presario 425 and it works nicely. Whenever I want to change up the config/autoexec I just run "optimize" and it finds the optimal combination/order of loading to save the most memory. It can also detect free/used memory for devices on its own during this process, and much more - it's not 100% foolproof but it's about as close as you can get under DOS. I'm not sure if the optimize program exists for all versions of QEMM but I know it exists at least as far back as pre-release versions of 6 per this page: https://www.pcorner.com/list/AOS/QWAUG92.ZIP/QEMM6.TEC/

Since techniques were pioneered and bugs fixed between releases I'd advise that you use QEMM 9 (also called QEMM 97), personally.

Caveat: I have zero experience with DR-DOS, only MS-DOS, PC-DOS, and FreeDOS.
 
I use QEMM9 with DOS7.1/WFW3.11 on my Presario 425 and it works nicely. Whenever I want to change up the config/autoexec I just run "optimize" and it finds the optimal combination/order of loading to save the most memory. It can also detect free/used memory for devices on its own during this process, and much more - it's not 100% foolproof but it's about as close as you can get under DOS. I'm not sure if the optimize program exists for all versions of QEMM but I know it exists at least as far back as pre-release versions of 6 per this page: https://www.pcorner.com/list/AOS/QWAUG92.ZIP/QEMM6.TEC/

Since techniques were pioneered and bugs fixed between releases I'd advise that you use QEMM 9 (also called QEMM 97), personally.

Caveat: I have zero experience with DR-DOS, only MS-DOS, PC-DOS, and FreeDOS.

Glad to see that you have emerged from hibernation. Welcome back!
 
Back
Top