Himem.sys doesn't load

Posted on 1998-10-27
Last Modified: 2013-12-16
I recently had to reinstall Windows95 on a Packard Bell 2240.  Windows runs fine but I am unable to run any program that uses DOS and I get the message that I don't have enough memory.  When I try to run emm386.exe it states that the drivers are missing.  My config.sys file seems to contain the appropriate statements.  When looking at the memory stats, I have nothing in upper memory.  The Packard Bell solution is to totally restore so that I lose all my data.  Can't I simply rework the HIMEM.sys and if so how?
Question by:goffx

Expert Comment

ID: 1758964
Okay, if you say that your "config.sys file seems appropriate", I am assuming a line like this exists?

Make sure that your statement points to the correct "path" (location where the file exists).  Also veryify the existance of that file.

Accepted Solution

theh95 earned 100 total points
ID: 1758965
Try these informations.

Windows 95 Professional
A Publication of The Cobb Group
Published April 1997
We recently received a letter from a subscriber whose system kept running out of memory while he was trying to use a DOS-based program.  After running the MEM/C utility in an MS-DOS Prompt window, he realized that the DRVSPACE.BIN file was using a large amount of conventional memory.  Unfortunately, he couldn’t find the commands that told his system to load this file.
As we researched the reader’s problem—which centered on a new NetWare requester he had installed—we discovered that although Windows 95 may initially appear to boot in the same way as DOS, the two boot sequences are actually quite different. We also found a lot of contradictory information on this subject and very few sources that describe the process from start to finish.
In this article, we’ll discuss the Windows 95 boot sequence in detail. As we do, we’ll explain how to reconfigure various aspects of the process. We’ll cover the boot process from the time you power up your PC only to the time when the graphical user interface (GUI) loads.
You’ve probably noticed that Windows 95 places a large number of files in the root directory. In this article, we’ll be referring to many of these files. (These commands are listed at the end of this article under the table “Windows 95 root directory files”)  Also, the boot sequence we’ll discuss applies only to a normal boot procedure. If you select another type of boot from the Startup Menu shown in Figure A, the boot sequence will vary accordingly. If you want to observe each step of the boot process we’ll describe, you should begin by pressing the [F8] key when Windows 95 displays the Starting Windows 95 . . .  message. When you see the Microsoft Windows 95 Startup Menu, choose the Step-by-step confirmation option. Windows 95 will check with you before performing each step that it automatically executes in the normal boot sequence. Since you’ll want to observe the entire process, you should answer Yes to all prompts. However, since we’re describing a normal boot sequence, we won’t include these prompts in our discussion.
Figure A:  If you boot your system using any Startup Menu option other than Step-by-step confirmation, your boot process will differ from the procedure we explain here.
Windows 95 versus DOS
Many people argue over whether Windows 95 is a true operating system—some say it is, and others contend it’s just Windows 4 riding atop DOS 7. Both sides of the debate make convincing arguments, but that’s because your stance on the issue depends largely on your definitions of DOS and Windows.
There’s no question that the GUI, which many people equate with Windows, functions on top of a lower-level operating system that looks and behaves much like DOS. However, even though this subordinate part of the OS looks like DOS, its system files are very different from those in all previous DOS releases.
Through version 6.22, DOS loaded the IO.SYS and MSDOS.SYS files. These files were hidden system files that you couldn’t reconfigure unless you knew how to use a hex editor. In Windows 95, IO.SYS and MSDOS.SYS still exist, but they play dramatically different rolls than they once did.
The 32-bit IO.SYS is really a combination of DOS’s IO.SYS, MSDOS.SYS, CONFIG.SYS, and AUTOEXEC.BAT files. The new IO.SYS contains all the instructions the operating system needs to initially interact with your hardware. IO.SYS also loads some default CONFIG.SYS and AUTOEXEC.BAT commands, and it controls much of the remaining boot sequence.
As you probably know, Windows 95 can run without a CONFIG.SYS or an AUTOEXEC.BAT file. That’s because these files are built into IO.SYS, which automatically executes a set batch of commands. (These commands are listed at the end of this article under the table “Commands Included in IO.SYS,”) Even though you can’t edit the IO.SYS file, you can use your CONFIG.SYS and AUTOEXEC.BAT files to override these commands. For example, IO.SYS automatically sets your file handles to a maximum of 60. If you wanted to change this value to 100, you’d add to your CONFIG.SYS file the line FILES=100, which would override the FILES=60 command in IO.SYS.
After IO.SYS loads its built-in CONFIG.SYS and AUTOEXEC.BAT commands, it loads MSDOS.SYS. Unlike previous DOS versions of the file, Windows 95’s MSDOS.SYS is a text file that you can edit. It lets you set several Windows 95 boot options, including the GUI status, network support, and the boot menu.
After it finishes loading MSDOS.SYS, IO.SYS loads the system’s Registry (as long as you haven’t told it not to do so). Windows 95 stores the Registry in two hidden files—USER.DAT and SYSTEM.DAT—in the \WINDOWS directory. After Windows 95 processes the Registry, it creates backup copies of each of these files, called USER.DA0 and SYSTEM.DA0, respectively. If Windows 95 can’t load the Registry through normal means, it will try to use these backup files.
If you’ve requested a logged boot or if your last boot was unsuccessful, Windows 95 will next copy BOOTLOG.TXT to BOOTLOG.PRV and then create a BOOTLOG.TXT file as the operating system loads.
The next step in Windows 95’s boot sequence is to load COMMAND.COM, CONFIG.SYS, and AUTOEXEC.BAT. Since we mentioned that Windows 95 can run without a CONFIG.SYS or AUTOEXEC.BAT file, you may be wondering about their purpose. By default, Windows 95 loads protected-mode drivers for your hardware along with the settings we detail in the sidebar “Commands Included in IO.SYS.”
Booting Windows 95 without loading CONFIG.SYS and AUTOEXEC.BAT is the preferred method because it increases your machine’s speed by loading 32-bit drivers instead of 16-bit DOS-based drivers. This technique also saves conventional memory in a DOS session.
For example, in our test, we added the 16-bit CD-ROM driver NEC_IDE to our CONFIG.SYS file and the MSCDEX command to the AUTOEXEC.BAT file. Next, we rebooted and opened an MS-DOS Prompt window. When we executed the MEM/C command, we could see the added files loaded in conventional memory. At that point, Windows 95 reported that the system had 555 KB of free conventional memory, as Figure B shows.
Figure B:  When we loaded the CD-ROM drivers from CONFIG.SYS and AUTOEXEC.BAT, the MEM utility reported 555 KB of free conventional memory.
Then, we removed the two commands and repeated the procedure. When our PC rebooted, we opened an MS-DOS Prompt window. We could still access our CD-ROM drive because Windows 95 detected the drive and loaded its own 32-bit protected-mode drivers. However, this time when we executed the MEM/C command, the utility didn’t list the files, and it reported that our system had 603 KB of free conventional memory, as shown in Figure C.
Figure C:  When we let Windows 95 automatically detect the CD-ROM drive and load its own real-mode drivers, the MEM utility reported 603 KB of available conventional memory.
Since omitting the CONFIG.SYS or AUTOEXEC.BAT file increases conventional memory and processing speed, you may wonder why Microsoft even includes these files in Windows 95. The main reason is to ensure compatibility with legacy hardware and software. Not all hardware manufacturers include Windows 95 drivers with their products, so Microsoft included CONFIG.SYS and AUTOEXEC.BAT to enable you to load a DOS-based driver and use the hardware anyway. In addition, some software may require special commands in the CONFIG.SYS or AUTOEXEC.BAT file. For example, many older programs require that file handles be set to at least 20. Windows 95 automatically sets file handles to 60, but some programs actually read the CONFIG.SYS file and check for the existence of a FILES command. If you had a program like this, you could add the line
to CONFIG.SYS to make your program run correctly.
If you decide to delete your CONFIG.SYS and AUTOEXEC.BAT files, remember that Windows 95’s protected-mode drivers are available to all Windows and DOS-based programs. However, if you select the Restart the computer in MS-DOS mode option in the Shut Down Windows dialog box, none of the drivers will be available to you unless you’ve loaded them in CONFIG.SYS or AUTOEXEC.BAT.
If you have a specific need that requires you to use the Restart the computer in MS-DOS mode option but you still don’t want to limit yourself by using a CONFIG.SYS or an AUTOEXEC.BAT file, remember that this option automatically executes the DOSSTART.BAT file (we’ll discuss this file more in a future issue). You won’t be able to execute CONFIG.SYS-type commands in DOSSTART.BAT, but you can include anything else you’d normally put in an AUTOEXEC.BAT file, such as a path, a prompt, and calls to other programs.
Graphical User Interface
After Windows 95 executes AUTOEXEC.BAT, it automatically loads WIN.COM. Then, WIN.COM loads the GUI.
Although Windows 95 may appear to boot in the same way as DOS, the two processes are actually quite different. In this article, we’ve described the Windows 95 boot sequence in detail and we’ve explained how to reconfigure various aspects of it.
Windows 95 Root Directory Files
Table A:  Root Directory Files

File      Function
AUTOEXEC.BAT      The Windows 95 equivalent of the DOS AUTOEXEC.BAT file. You should use AUTOEXEC.BAT to load only real-mode drivers, and only if a protected-mode driver isn’t available. In most cases, your AUTOEXEC.BAT file should be empty. For example, on a DOS-based system with a CD-ROM drive, you’d have to load MSCDEX from AUTOEXEC.BAT. In Windows 95, you don’t need to do this unless you have an incompatible CD-ROM drive. That’s because Windows 95 will automatically load a protected-mode driver. Windows 95 loads the drivers listed in AUTOEXEC.BAT before it starts the 32-bit portion of the operating system.
AUTOEXEC.DOS      A mirror of the original AUTOEXEC.BAT file from your previous operating system. Windows 95 uses this file when you boot to your previous version of MS-DOS.
BOOTLOG.PRV      A copy of BOOTLOG.TXT from the previous boot. When you boot Windows 95, it copies BOOTLOG.TXT to BOOTLOG.PRV before creating a new BOOTLOG.TXT file.
BOOTLOG.TXT      A log of the Windows 95 boot sequence. Windows 95 creates this file when you request a logged boot or when it determines that your attempt to boot to the previous version of DOS was unsuccessful.
COMMAND.COM      The Windows 95 command-line processor.
COMMAND.DOS      The COMMAND.COM file from your previous operating system. Windows 95 uses this file when you boot to your previous version of DOS.
CONFIG.DOS      A copy of the CONFIG.SYS file from your previous operating system. Windows 95 uses this file when you boot to your previous version of DOS.
CONFIG.SYS      A companion to AUTOEXEC.BAT that loads real-mode drivers. This file isn’t necessary unless you have special hardware for which Windows 95 doesn’t have protected-mode drivers.
DETLOG.OLD      A record of the previous hardware-detection process. When you tell Windows 95 to detect new hardware, it first changes the filename DETLOG.TXT to DETLOG.OLD. By having a record of an effective hardware configuration, Windows 95 is able to recover if something goes wrong during the detection phase.
DETLOG.TXT      A log file of the Windows 95 automatic hardware-detection procedure. Windows 95 adds to the file each time the operating system detects a new piece of hardware. If Windows 95 crashes during the hardware-detection process, it accesses this file to determine the cause of the problem.
IO.DOS      The renamed IO.SYS file from your previous version of DOS. Windows 95 uses this file when you boot to your previous copy of DOS.
IO.SYS      A combination of several files. IO.SYS is the Windows 95 equivalent of DOS’s IO.SYS, MSDOS.SYS, CONFIG.SYS, and AUTOEXEC.BAT files. We’ve provided a chart that breaks down the CONFIG.SYS commands loaded by IO.SYS in the sidebar “Commands Included in IO.SYS” on page 5.
LOGO.SYS      A 320-by-400, eight-bit wallpaper file of the Windows 95 logo you see during the boot sequence. You can actually create a 320-by-200, eight-bit file in Paint, name it LOGO.SYS, copy it to your root directory, and display it during the boot sequence instead. Just be sure to back up the original LOGO.SYS, since using your own bitmap can occasionally cause palette problems.
MSDOS.DOS      The renamed MSDOS.SYS file from your previous version of DOS. Windows 95 uses this file when you boot to your previous operating system.
MSDOS.SYS      A file that controls some boot options in Windows 95, unlike its DOS counterpart. We’ve included a chart that explains how to edit MSDOS.SYS in the sidebar, “Editing MSDOS.SYS,” on page 8.
OEMLOG.TXT      A log file of the OEM (Original Equipment Manufacturer) pre- installation. It’s not necessary for operation, and you can safely delete it.
SCANDISK.LOG      A log file that records the results of the most recent ScanDisk operation. ScanDisk overwrites this file each time you run it.
SETUPLOG.TXT      A record created during Windows 95 setup that stores each phase of the process. If Setup crashes, Windows 95 refers to this file to help determine the cause of the crash.
SUHDLOG.DAT      A copy of all master boot records and partition boot records from both before and after Windows 95 was installed. This file is used by the Windows 95 Uninstall program.
SYSTEM.1ST      A backup copy of the Registry from the first time Windows 95 was installed. If your Registry ever becomes corrupted, this file can be used to return the computer to an operational state.
W95UNDO.DAT      A compressed backup of the Windows 3.x files replaced by Windows 95. This file is decompressed when you run Windows 95’s UNINSTALL program. Although the file isn’t necessary for Windows 95 to function correctly, we recommend keeping it in case you ever need to restore Windows 3.x.
W95UNDO.INI      A companion to W95UNDO.DAT that lists the files stored in WIN95UNDO.DAT and tells Windows 95 how to restore them. You can’t restore the files in WIN95UNDO.DAT without this file.
Commands Included in IO.SYS
Table A: IO.SYS commands and functions

CONFIG.SYS setting      Function
DOS=HIGH      Specifies that DOS should load in the high memory area. The UMB parameter isn’t included unless you run EMM386.EXE from CONFIG.SYS, since IO.SYS won’t execute EMM386.EXE.
DEVICE=HIMEM.SYS      Allows access to the high memory area and enables you to run a real-mode memory manager such as EMM386.EXE.
DEVICE=IFSHLP.SYS      Enables file and print sharing and facilitates 32-bit disk access.
DEVICE=SETVER.EXE      Helps with backward compatibility. Some legacy applications require a specific version of DOS. SETVER.EXE “tricks” such applications into thinking they’re running under the desired version of DOS.
FILES=60 *      Sets the number of DOS file handles.
LASTDRIVE=Z *      Specifies the highest letter you can assign to a network drive or other device.
BUFFERS=30 *      Sets the number of file buffers to create.
STACKS=9,256 *      Specifies the number and size of stack frames.
SHELL=COMMAND.COM /P      Tells Windows 95 what command interpreter to use. The /P switch indicates that this is a permanent setting and that programs shouldn’t unload the command interpreter.
FCBS=4 *      Specifies the number of file control blocks that Windows 95 can have open simultaneously.

*   This command isn’t required by Windows 95, but Microsoft included it for compatibility reasons.

AUTOEXEC.BAT setting      Function
TMP=C:\WINDOWS\TEMP      Sets the location for temporary files.
TEMP=C:\WINDOWS\TEMP      Specifies the location for temporary files.
PROMPT=$P$G      Sets the DOS prompt to C:\> format.
C:\WINDOWS\COMMAND      DOS search path.
COMSPEC=C:\WINDOWS      Tells Windows 95 the location of the COMMAND.COM file.
The article entitled “Understanding the Windows 95 boot Sequence” was originally published in Windows 95 Professional, April 1997.  Copyright © 1997, The Cobb Group, 9420 Bunson Parkway, Louisville, KY 40220. All rights reserved. For subscription information, call the Cobb Group at 1-800-223-8720.
We at Microsoft Corporation hope that the information in this work is valuable to you. Your use of the information contained in this work, however, is at your sole risk. All information in this work is provided "as is," without any warranty, whether express or implied, of its accuracy, completeness, fitness for a particular purpose, title or non-infringement, and none of the third-party products or information mentioned in the work are authored, recommended, supported or guaranteed by Microsoft Corporation. Microsoft Corporation shall not be liable for any damages you may sustain by using this information, whether direct, indirect, special, incidental or consequential, even if it has been advised of the possibility of such damages.



Expert Comment

ID: 1758966
The config.sys should contain these lines in order to upgrade DOS memory :

Device=c:\windows\emm386.exe NOEMS (or RAM depands whether you like XMS or EMS)

all other lines at the CONFIG.SYS should start with:
all lines at the AUTOEXEC.BAT that execute commands, should start with LH.
The last line is VERY IMPORTANT otherwise you'll have a memory manager but You won't have Upper Memory blocks, so TSR won't load above  the 640K.
If that won't work, Send your CONFIG.SYS and AUTOEXEC.BAT files.
restart the computer and  when it displays "Starting Windows95" press F8 and choose :
"Command prompt only"
type :
and write down the table and send it too.

Author Comment

ID: 1758967
When checking my config.sys against the submitted answers I found that the letters REM were somehow placed before Device=C\windows\emm386.exe noems command line.  When I deleted them the himem.sys loaded and I'm fixed.  Don't have a clue how they got there when reloading Windows95.  I appreciate everyones help very much.  Thank you!!!

Featured Post

Portable, direct connect server access

The ATEN CV211 connects a laptop directly to any server allowing you instant access to perform data maintenance and local operations, for quick troubleshooting, updating, service and repair.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Join Greg Farro and Ethan Banks from Packet Pushers ( and Greg Ross from Paessler ( for a discussion about smart network …
Learn how to PXE Boot both BIOS & UEFI machines with DHCP Policies and Custom Vendor Classes
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.

679 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question