VOGONS


First post, by Cyber Akuma

User metadata
Rank Newbie
Rank
Newbie

I have a Windows 3.11 setup on 86Box that works well for me, I manage to load nearly everything in high mem ending up with 611K of base memory free (And I could likely bring that down even further with more eccifient mouse and cd drivers, and not using smartdrv)

I wanted to setup a second emulated machine with some different hardware settings that was just pure DOS 6.22, but despite mostly copying over the same config.sys and autoexec.bat files except for loading smartdrive high and not having installing the Sound Blaster 16 driver yet, even using the same drivers for CD and mouse, for some reason MSCDEX refuses to load into high memory.

The main difference I notice is that the Win 3.11 machine has an older version of smartdrv, version 4.0 vs 5.01, and the 5.01 version takes up about 1K more memory. But other than that I have no idea why it's doing this. I have tried not loading smart drive high, loading with different settings, not loading anything other than my cd drive high. The only things that made a difference is either completely disablingh smartdrv, or using a different CD driver. Thing is though, the 3.11 machine which has no problem loading MSCDEX into high memory, and on both machines the CD driver itself loads into high memory just fine, only MSCDEX won't on the 6.22 machine.

Can someone give me some insight on why this is happening?

Here are the configuration files for the 3.11 machine:

CONFIG.SYS

DEVICE=C:\DOS\HIMEM.SYS /testmem:off
DOS=HIGH,UMB
DEVICE=C:\DOS\EMM386.EXE NOEMS

FILES=80
BUFFERS=20

DEVICE=C:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER

DEVICEHIGH=C:\DOS\MOUSE.SYS

DEVICEHIGH=C:\DOS\cd1.SYS /D:banana

rem DEVICE=cd1.SYS /D:banana /P:1f0,14
rem DEVICE=cd1.SYS /D:banana /P:170,15
rem DEVICE=cd1.SYS /D:banana /P:170,10
rem DEVICE=cd1.SYS /D:banana /P:1e8,12
rem DEVICE=cd1.SYS /D:banana /P:1e8,11
rem DEVICE=cd1.SYS /D:banana /P:168,10
rem DEVICE=cd1.SYS /D:banana /P:168,9

LASTDRIVE=Z
DEVICEHIGH=C:\SB16\DRV\CSP.SYS /UNIT=0 /BLASTER=A:220
STACKS=9,256

AUTOEXEC.BAT

@ECHO OFF

C:\WINDOWS\SMARTDRV.EXE


LH C:\WINDOWS\mouse.COM /Y
LH MSCDEX.EXE /D:banana /L:D

PATH=C:\WINDOWS;%PATH%
SET TEMP=C:\WINDOWS\TEMP

SET CTCM=C:\SB16\CTCM
SET SOUND=C:\SB16
SET BLASTER=A220 I5 D1 H5 P330 E620 T6
SET MIDI=SYNTH:1 MAP:E MODE:0
LH C:\SB16\CTCM\CTCM.EXE
LH C:\SB16\DIAGNOSE /S
LH C:\SB16\AWEUTIL /S
LH C:\SB16\MIXERSET /P /Q

And these are the files for the DOS machine:

CONFIG.SYS:

DEVICE=C:\DOS\HIMEM.SYS /TESTMEM:OFF
DOS=HIGH,UMB
DEVICE=C:\DOS\EMM386.EXE NOEMS

FILES=80
BUFFERS=20

DEVICE=C:\DOS\SMARTDRV.EXE /DOUBLE_BUFFER

DEVICEHIGH=C:\DOS\MOUSE.SYS

DEVICEHIGH=C:\DOS\cd1.SYS /D:banana

LASTDRIVE=Z

AUTOEXEC.BAT

@ECHO OFF
PROMPT $p$g

LH C:\DOS\SMARTDRV.EXE

LH C:\DOS\mouse.COM /Y
LH C:\DOS\MSCDEX.EXE /D:banana /L:D

PATH C:\DOS
SET TEMP=C:\DOS

This is what the memory looks like on either of them too:
3.11:
sQpNLjG.png

DOS 6.22:
hOOxJe1.png

Reply 1 of 6, by jmarsh

User metadata
Rank Oldbie
Rank
Oldbie

Look at the total upper memory on the 6.22 machine, it has approx. 32KB less. It doesn't have enough free space to hold MSCDEX, which is why it's in conventional memory instead.

Reply 2 of 6, by wbahnassi

User metadata
Rank Oldbie
Rank
Oldbie

Different machines might have different ROMs installed at different locations in upper memory, thus fragmenting the space and making it more difficult to load drivers into high mem, especially the big ones like SmartDrv and MSCDEX.

Tinker a bit with the BIOS settings to reduce any unneeded devices/shadowing/...etc. A more scientific approach would be to use a tool to show the memory layout and who is taking what. SysInfo has such a tool.
Third, try reordering driver loading to make the big ones load first. Finally, you can try MEMMAKER to figure out the best layout for you. It's not always successful, but worth a try.

Turbo XT 12MHz, 8-bit VGA, Dual 360K drives
Intel 386 DX-33, TSeng ET3000, SB 1.5, 1x CD
Intel 486 DX2-66, CL5428 VLB, SBPro 2, 2x CD
Intel Pentium 90, Matrox Millenium 2, SB16, 4x CD
HP Z400, Xeon 3.46GHz, YMF-744, Voodoo3, RTX2080Ti

Reply 3 of 6, by eddman

User metadata
Rank Member
Rank
Member

Type MSD and then select "Memory" to see the available upper ranges.

Reply 4 of 6, by dormcat

User metadata
Rank Oldbie
Rank
Oldbie

I had encountered a similar mystery back in 1995 when I bought my first Pentium 120 MHz with 16MB RAM: the UMB on the new computer was much smaller than that of my 80386 with 4MB RAM, even with almost identical CONFIG.SYS settings. I tried to boot both computers with the same DOS 6.2 floppy and remarked all CD-ROM, sound cards, and even mice drivers in order to eliminate or minimize all possible variables, leaving nothing but HIMEM.SYS, EMM386.EXE, and SMARTDRV.EXE, but the results were the same.

I posted the question to a Usenet newsgroup (possibly alt.sys.pc-clone.dell) and received a reply explaining that was "because of chipset design" and I couldn't do anything about it. No details provided (I couldn't understand it even if there were). The motherboard was a Dell Dimension XPS based on Intel Advanced/CM with 430FX chipset. I'm sure my 386, 486, and 430TX motherboards had no such problem.

So while I'm not an 86Box user I'd make a wild guess that chipset emulation might have caused the difference as 430FX was a popular chipset in early Pentium era. I might be able to reenact the situation on that computer (still alive and kicking) but would take a while as the computer isn't with me but my parents, and I have to remember to bring along a DOS 6.2 startup floppy on my next visit. 😅

Reply 5 of 6, by superfury

User metadata
Rank l33t++
Rank
l33t++

The i430fx motherboard might use more UMB blocks at the top of the range to unpack the BIOS ROM into? It depends on the BIOS used, though. The bottom of the range (segment C000 onwards) contains any option ROMs used by hardware cards (starting with video, possibly also a network card ROM), beginning each ROM rounded up to the earliest 2K address. Anything that's left is where DOS UMB blocks and EMS page frames(if used, although might be in high memory since it's mapped by the CPU's paging unit, which it usually is. But that still makes the virtual UMB blocks (usually at segment E000 for 64K, so E000-F000, where the BIOS usually starts)) reside. Afaik some BIOS ROMs are 128K, so they start af E000, so EMS needs to move to D000 instead. Anything remaining (C600 or C800(video ROM) with other ROMs, then available till D000(128K Mobo BIOS with EMS)/E000(64K Mobo BIOS with EMS or 128K Mobo BIOS)/F000(64 Mobo BIOS w/o EMS) are your UMBs where application loads, perhaps also at segment FFFF for addresses 100000+ (HMA), where things are usually loaded (DOS itself at least, the 64K-16 bytes memory where LH and DEVICEHIGH etc load, as wel as DOS=HIGH).

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 6 of 6, by Jo22

User metadata
Rank l33t++
Rank
l33t++

It's possible to use Helix Multimedia Cloaking as a workaround here, by the way.
It has custom versions of SmartDrive, MSCDEX and Mouse that run in Extended Memory.

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//