Post #3, don't mess around.
smartdrv.exe is loaded in autoexec.bat.
If you want to put it into upper memory, you should use lh + program name.
But whether it can actually be loaded there still depends on what you've already loaded before that.
Whether there is enough upper memory.
There is a bit of technique involved in this. Generally speaking, load the ones that take more memory first, and the ones that take less later.
You can first use mem to take a look, and then load it.
For a typical DOS boot, the things that usually take memory, aside from the system kernel itself, are generally setver
emm386 himem the CD-ROM driver's sys file and the mscdex.exe file
and then smartdrv, and finally the mouse driver too. If there are some other programs as well, those have to be taken into account too. Drivers such as for sound cards generally do not take extra memory (they only set interrupts and the like).
To increase upper memory, add suitable parameters when loading emm386.
As for exactly how to do it, I can't explain it clearly all at once... you can go look for some examples.
In my better case, after loading the above programs, only 20-25KB of conventional memory is used (out of 640KB total).
If you're using msdos6.22, you can try memmaker!