Part 1: (Assuming you've already muddied up your config.sys and autoexec.bat files.)1) WIN9X *must* load himem.sys in order to access high memory, the first 64K beyond 1024K, and all extended memory beyond that.
2) During 9X boot, with a single OS, the next file loaded after the MBR is io.sys, the 9X boot loader. By default, io.sys loads himem.sys and the DOS=HIGH, AUTO command, plus a slew of additional default settings. Otherwise you'd be limited to 1024K of RAM, and WIN9X couldn't load.
3) The way you normally over ride these defaults is to edit the config.sys file. If the config.sys file is empty, then io.sys will load the standard 9X defaults. If your 9X DOS isn't loading high, then you may have some cobwebs in config.sys that are changing the defaults. Check out your config.sys file and see if there's anything in it. Device drivers loaded through config.sys are normally used for old DOS programs and often contain settings for legacy hardware, like Sound Blaster emulators. These legacy devices/drivers may hog some conventional memory below 640K.
4) The emm386.exe file is a legacy handler that was once used to emulate expanded memory cards. Nowdays, it's mostly used with the NOEMS setting to manage available upper memory, between 640K and 1024K. There are specific settings for reserving certain upper memory blocks that are too detailed to go into here, and are best left to WIN9X memory manager anyway.
5) If you look in your autoexec.bat and don't see anything, that's probably GOOD! However, you may need to edit your autoexec.bat file to free up more memory. See if there's anything in it that could be eliminated, or used with a LOADHIGH command. Editing autoexec.bat in WIN9X can be hazardous to your OS if you don't know what you're doing!
5a) If you have a PATH command, then you probably want to leave it alone. At least write it down before you mess with it so you can recreate it if you have problems. (b) Make sure only ONE version of DOS/WINDOWS is in the path. (c) DO NOT add disk caches or SmartDrive for legacy DOS programs. (d) DO NOT load real mode driver paths unless you're CERTAIN the drivers don't exist in WIN9X. (e) DO NOT load mouse or joystick driver paths of any sort through autoexec.bat.
6) You can launch WIN9X from autoexec.bat (if you want to) by using the win.com command. The (possible) advantage to this method is that you can pass DOS switches to win.com. To see what the options are, go to a DOS command prompt and type: WIN.COM / ? These switches can be used in a variety of ways to manipulate upper memory settings and free up conventional memory. This method of launching WIN9X is recommended only for the insanely curious (like me).
7) If you are running legacy WIN3X/DOS6X programs, you may need to check or edit the WIN.INI and/or the SYSTEM.INI files. In SYSTEM.INI you may need to look at the <386Enh> settings and the settings. Again, it's better to "let sleeping dogs lie" unless you know what you're doing. Make sure you back up these files before you mess with them. Even if you tweak these settings, you're probably not going to squeeze out any more memory than the WIN9X memory manager.