Jump to content

Booting DOS 7.1 on system with 4 gb ram (not enough for Smartdrive?)


Nomen

Recommended Posts


@dencorso: Don't waste your breath. None of them are listening. They will find out the hard way.

Thank you for the indirect and totally gratuitous appreciation, that was very kind of you.

Actually I am all ears though my interest is limited to find out if there is the need to amend/integrate/modify the info on the given thread:

http://www.911cd.net/forums/index.php?showtopic=16713

though nowadays it is not a commonly used method to install XP, but I would have liked to provide EXACT information, i.e. what exactly is needed and when (when more than 2 Gb, more than 3 Gb, more than 4 GB, etc.) an additional memory manager is actually needed or a config.sys needs to be added and with which commands.

And no, most probably I will never find out :no: (neither the soft nor the hard way), as this is mainly an S.E.P., unless you will exceptionally descend from your throne and talk to us commoners, spreading your wisdom among the people.

jaclaz

Dencorso provided a solution twice. Nobody responded or asked any questions, including you, until now.

The problem is not in SMARTDRV. It is in EMM386.

Windows 9x is shipped with a HIMEM.SYS that supports Version 3.0 Function Calls. EMM386, like Windows itself use Version 2.0 Function Calls. These are limited to just under 64MiB per Handle.

HIMEM.SYS defaults to 48 Handles Max. This limits available Memory for Version 2 Calls to just under 3GiB. Less if other programs have used Handles.

EMM386 appears to allocate all XMS Memory and then releases most of it. It apparently does not know how to handle the "No More Handles" Error, so it does not release XMS Memory, nor does it report any error. SMARTDRV of course then fails.

/NUMHANDLES changes the default size of the Handle Table used by HIMEM.SYS. 64 Handles should be enough for normal systems as no Motherboard, I know of, allows more than about 3.7GiB of 32-Bit RAM.

SMARTDRV does not require EMM386, but if you use EMM386, you will need to specify /NUMHANDLES when exceeding 2.5GiB of RAM.

If a valid MSDOS.SYS File is present, DOS 7.1 will load HIMEM.SYS, DBLBUFF.SYS and IFSHLP.SYS if CONFIG.SYS is not present or does not specify them. Then you will not need CONFIG.SYS to run SMARTDRV as HIMEM is loaded and EMM386 is not. HIMEM.SYS must be in a place known to DOS or referenced in the MSDOS.SYS File.

If you do not have a vaild MSDOS.SYS File then CONFIG.SYS must include a line to load HIMEM.SYS or an equivalent. Your XP Installer will probably need this.

SMARTDRV itself has a bug that can cause corruption if you use it to manage a Partition larger than 128GiB. I have not found an easy fix for this.

My knee has been bothering me lately so it takes a while to get down from my throne to take commoner pleadings.

EDIT: Corrected default number of handles and equivalent memory.

Edited by rloew
Link to comment
Share on other sites

My knee has been bothering me lately so it takes a while to get down from my throne to take commoner pleadings.

Which one, the right or the left one?

 

Historically kings have been affected by gout, which tends to result in irritability besides acute pain to a knee or foot,  you might want to review your diet and ask to the Royal Chemist if he can provide you with a few chill pills.

And for the record, your was a fine answer AND a solution :thumbup, including the explanation behind and the actual valid value of 64, and confirming that the switch happens around 2 Gb, while dencorso - with all due respect  :) of course - threw a one liner mentioning 80 and then just self-quoted himself to reiterate his suggestion, which may work of course, but that is not an answer (at least to my question).

 

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

The right. No Gout. Already improving. Just a one time thing. In any case the Royal Chemist position is vacant at the moment.

From your lack of other comments, I assume your questions have been fully answered.

Link to comment
Share on other sites

The right. No Gout. Already improving. Just a one time thing. In any case the Royal Chemist position is vacant at the moment.

From your lack of other comments, I assume your questions have been fully answered.

Yep :), everything is cool, maybe we were cross-posting, I was adding my appreciation for your nice answer and explanation to my previous post.

 

 

jaclaz

Edited by jaclaz
Link to comment
Share on other sites

We did cross post.

Dencorso was answering the problem as stated by the OP. Later the OP mentioned XP and you posed your more specific question.

I remember discussing the problem with EMM386 before. He picked 80 to provide an extra safety margin.

I have been quite satisfied with 64. The early versions of my RAM Patch actually patched HIMEM.SYS to set the default to 64.

Edited by rloew
Link to comment
Share on other sites

The OP asked "how do I make it work?"  and I replied objectively to the question asked...

 

But right now I have some time, so I'll give you some version history data:

All the files below support INT 2FH, AX=4309H (GET XMS HANDLE TABLE) and dw ES:[BX+2]=DEFHANDLES=============================================================================HIMEM: DOS XMS Driver, Version 3.09 - 02/23/93  14208 kiB 24E2H = 20H DOS 6.00HIMEM: DOS XMS Driver, Version 3.10 - 07/21/93  29040 kiB 5ED2H = 20H DOS 7.00 BetaHIMEM: DOS XMS Driver, Version 3.10 - 09/30/93  29136 kiB 5F32H = 20H DOS 6.2x; WfW 3.11HIMEM: DOS XMS Driver, Version 3.xx - 06/10/94	32631 kiB 6752H = 20H Chicago Beta 122=============================================================================The pair of files below are binarily identical:HIMEM: DOS XMS Driver, Version 3.95 - 06/21/95  32935 kiB 6892H = 30H Chicago Beta 501HIMEM: DOS XMS Driver, Version 3.95 - 07/11/95  32935 kiB 6892H = 30H Win 95=============================================================================HIMEM: DOS XMS Driver, Version 3.95 - 10/02/95  33127 kiB 6952H = 30H Q137755HIMEM: DOS XMS Driver, Version 3.95 - 08/24/96  33191 kiB 6992H = 30H Win 95 OSR2.0=============================================================================The three files below are binarily identical:HIMEM: DOS XMS Driver, Version 3.95 - 05/11/98  33191 kiB 6992H = 30H Win 98 FEHIMEM: DOS XMS Driver, Version 3.95 - 04/23/99  33191 kiB 6992H = 30H Win 98 SEHIMEM: DOS XMS Driver, Version 3.95 - 06/08/00  33191 kiB 6992H = 30H Win ME (ebd)=============================================================================HIMEM: DOS XMS Driver, Version 3.95 - 06/08/00  32711 kiB 6992H = 30H Win ME (windir)=============================================================================

The numbers to the right of the date are file size, the offset of DEFHANDLES (the default number of handles) and the value MS put there. If you seach the rather scarce MS documentation about it you'll find it stated that DEFHANDLES = 20H (= 32 decimal), and that statement is repeated even here, where it's no longer true, because MS noticed 32 handles might not be enough anymore and updated silently DEFHANDLES to  30H (=48 decimal) during the development of Win 95 (or DOS 7.0), and that's the value that remained as the default till Win ME, inclusive. So, while I do agree with almost everything RLoew said in post #17, I must disagree with the value he gave for DEFHANDLES. It's, in fact, 48, not 40. And 48*64 MiB = 3072 MiB or, in other words, the issue starts just short of 3 GiB. Of course, one can set a value for /NUMHANDLES in the command-line or get an hexeditor and patch the address I provided above. Both solutions work. Remember, however, if deciding to patch, that 64 is 40H, and, yes, it should be enough.

Link to comment
Share on other sites

@dencorso

Good :).

 

@all

So, to recap.

 

When more than 3 Gb (2 Gb is still OK) it is needed a CONFIG.SYS with:

DEVICE=C:\DOS\HIMEM.SYS //NUMHANDLES=64

 

And then one can simply run SMARTDRV on command line.

Or is also emm386 needed?

Like: DEVICE=C:\EMM386.EXE

And/or any other parameter to the one or the other in CONFIG.SYS?

(here I am looking for the "bare minimum" needed, but if some added parameter makes or could make a noticeable performance difference then it would be good to know)

 

This (just for the record) is the basic MS article:

https://support.microsoft.com/it-it/kb/307848

 

jaclaz

Link to comment
Share on other sites

EMM386 is not needed.

The bare minimum is CONFIG.SYS containing:

DEVICE=C:\DOS\HIMEM.SYS

Without EMM386, /NUMHANDLES=64 is not needed.

With EMM386 it is required with more than 2.5GB of RAM.

Link to comment
Share on other sites

EMM386 is not needed.

The bare minimum is CONFIG.SYS containing:

DEVICE=C:\DOS\HIMEM.SYS

Without EMM386, /NUMHANDLES=64 is not needed.

With EMM386 it is required with more than 2.5GB of RAM.

Now I am lost (again :ph34r:) and seemingly this also nullifies also the initial answer by dencorso :w00t: (as at the time Nomen did not mention using either HIMEM or EMM386), as well the math seemingly is not right, as 48*64=3072? :unsure: but it's ok.

Let's try to sum up (please correct/amend where incorrect):

  1. on machines with less than x Mb of RAM SMARTDRV needs "nothing".
  2. on machines with more than y Mb of RAM SMARTDRV needs ONLY HIMEM.SYS in config.sys
  3. on machines with more than 2.5 Mb of RAM if EMM386 is used then HIMEM.SYS is needed AND it must be loaded with the /NUMHANDLES=64

And now (I know that dencorso was waiting for this question ;)), how would a DOS 8.x (from ME or from the actual "create DOS floppy inside the XP") behave, at the light of the above and of this past reference?:

http://reboot.pro/topic/5497-ms-dos-71/?p=99242

 

After all, if one wants to install XP from DOS, it is likely that he can extract the (ME) files from the source he/she has handy:

http://www.911cd.net/forums//index.php?showtopic=16745

 

jaclaz

 

Link to comment
Share on other sites

The ebd floppy from ME is essentially equivalent to that from 98FE/SE. But Win ME has actually 3 different HIMEM.SYS! One for the EBD, which is actually the same as that from 98FE/SE, one with just about the same code, but recognizing less command-line switches and without most of the error messages and one even slimmer actually embedded in IO.SYS!!! I'll get back to the ME IO.SYS question latter, and give you a fuller answer. Please bear with me.

 

There are actually 3 scenarios:

1.) One boots with no valid MSDOS.SYS: then config.sys is needed to load himem.sys, but smartdrv can be run with the default number of handles, unless one also loads emm386;

2.) One boots with a valid MSDOS.SYS: then config.sys is not needed to load himem.sys (because it'll be loaded by default), but smartdrv can be run with the default number of handles, unless one also loads emm386;

3.) One insists in using emm386, which is not required nor useful for smartdrv. Then config.sys is needed to load himem.sys, regardless of whether a valid MSDOS.SYS exists, because the use of emm386 causes the need for more handles, somewhere between 2.5 and 3 GiB.

 

So, my one-liner tried to cover all the cases, unless it was totally ignored, which was what actually happened.

Link to comment
Share on other sites

@dencorso

No problem whatever, the original thread on 911CD has been there for 9 years without anyone finding or reporting the issue, there is no hurry.

 

I am however failing :unsure: to see the issue with MSDOS.SYS, in the sense that a "normal" bootdisk (floppy or floppy image) does have a MSDOS.SYS and it should be  "normally" valid.

 

The different cases should be "real world cases", I mean, all we know for sure till now is that (unless a given memory size larger than 2.5 GiB is present on the machine) the three "normal" files from a Windows 98 boot floppy IO.SYS, MSDOS.SYS, COMMAND.COM and the SMARTDRV.EXE files are needed but need not *anything* else.

 

The questions are now:

  1. Would the same do with Windows ME (or embedded in XP) boot floppy files? (I presume yes, but maybe the SMARTDRV has issues with them :unsure:)
  2. What has to be changed when using as base the same Windows 98 boot floppy files when there are more than 2.5 Gib of RAM? (I would give that the MSDOS.SYS file is untouched, is just adding the HIMEM.SYS be OK?)
  3. What has to be changed when using as base the Windows ME (or embedded in XP) boot floppy files when there are more than 2.5 Gib of RAM? (given that one way or the other a form of HIMEM.SYS is "embedded" in IO.SYS?)

 

 

jaclaz

Link to comment
Share on other sites

I came to this topic late and I have questions. Is there a known issue with getting DOS 7.1 to boot on a PC with more than 2GB RAM or is this about getting DOS to use that much memory?

 

The reason I ask is because I've been booting DOS 7.1 on systems (from USB) with more than 2GB RAM for awhile now without a problem.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...