Jump to content
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble
Strawberry Orange Banana Lime Leaf Slate Sky Blueberry Grape Watermelon Chocolate Marble

MSFN is made available via donations, subscriptions and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, register and become a site sponsor/subscriber and ads will be disabled automatically. 


ppgrainbow

Windows 3.1 hangs on splash screen

Recommended Posts

I recently experimented my attempts to boot MS-DOS 7.1 off of a Ativa Flip 4 GB flash drive and in all, things were successful.

However, when I attempted to run Windows 3.1 while in pure DOS residing on the USB flash drive, the 16-bit OS stops responding (hangs) on the Windows 3.11 splash screen when run with the WIN /3 command to run Windows in 386 Enhanced Mode. To correct this, I had to press CTRL-ALT-DELETE to reboot. Windows 3.1 was set up through VMware Player with the drive locked so that VMware Player can gain direct access to the USB flash drive.

Here's what I've done so far when I set up the boot device under VMware:

1. I got Windows 3.1 installed using 6 floppy diskette images and applied updates to it.

2. I used a utility Win3XSTART to make Windows 3.x run under MS-DOS 7.1 and on the FAT32 formatted USB flash drive.

3. I used the generic Super VGA driver and patched the driver to make it work under Windows 3.1.

4. I used a hex-edited WIN386.EXE so that no data corruption exists in the \WINDOWS directory pointer.

5. I used a utility called HIMEMX.EXE to limit the total system memory to 64 MB even though DOS is reporting 66,512 KB of memory available to the system.

Here's what I got down in the CONFIG.SYS:

files=50

buffers=30

device=c:\dos\himemx.exe /max=64512 /x

device=c:\dos\emm386.exe noems i=b000-b7ff /verbose

dos=high,umb,auto

device=c:\dos\cdrom.sys /d:satadvd

lastdrive=z

And for the AUTOEXEC.BAT file, here's what I got so far:

@echo off

path c:\dos;c:\windows

set temp=c:\temp

lh mscdex /d:satadvd /l:x

lh ctmouse

idle

Other than that, Windows 3.1 works when

1. Running under VMware Player.

2. In native MS-DOS and in Standard Mode (WIN /S).

3. And running it on the Compaq TC1000 by selecting the USB flash drive as the boot device.

I'm sorry if I failed to provide sufficient information, but is there a way to fix the hanging issue so that Windows 3.1 can run on a USB flash drive? If the fix is successful, I will provide instructions on how to natively boot MS-DOS and Windows 3.1 on a unsupported motherboard.

The laptop that I'm using is a ASUS G1S-B1 gaming laptop with a 2.4 GHz Intel Core 2 Duo T7700 processor with 2 GB of DDR2 memory. By using the MS-DOS 7.1 version of HIMEM.SYS, the Windows 3.1 in Standard Mode will only be able to address up to 512 MB of system memory.

Edited by ppgrainbow

Share this post


Link to post
Share on other sites

Here are some things ye might like to try.

CONFIG.SYS


files=50
buffers=30
STACKS=9,256
device=c:\dos\himemx.exe /max=64512 /x
REM device=c:\dos\emm386.exe noems i=b000-b7ff /verbose
dos=high,umb,NOauto
device=c:\dos\cdrom.sys /d:satadvd
lastdrive=z

You don't really need AUTO here, because you're loading stuff through config.sys

Try UMBPCI, http://www.uwe-sieber.de/umbpci_e.html it gives UMB's (ie dos=umb), without loading EMM.

AUTOEXEC.BAT


@echo off
path c:\dos;c:\windows
set temp=c:\temp
SET TMP=c:\temp
PROMPT $p$g
lh mscdex /d:satadvd /l:x
REM lh ctmouse
REM idle

If you are just testing whether windows will load, try removing the mouse and idle.

Add the line 'pageovercommit=1' to the 386Enh section of System.ini in your windows directory

Try using vga driver or vga30 driver, to see if this cures problems.

SYSTEM.INI



[386Enh]
...
PageOverCommit=1

Share this post


Link to post
Share on other sites

Okay, here's what I did. In the CONFIG.SYS:

1. In line 3, I added "stacks=9,256".

2. In line 5, I added "REM device=c:\dos\emm386.exe noems i=b000-b7ff /verbose" so that EMM386 wouldn't load.

3. In line 6, I replaced EMM386 with UMBPCI by adding "device=c:\dos\umbpci.sys". When I rebooted, I found that UMBPCI.SYS driver ends up using D400-DFFF for its upper memory and that it found the Intel 965M chipset.

4. And in line 7, I also removed "auto" from "dos=high,umb as well".

Here's the final result so far:

file=50

buffers=30

stacks=9,256

device=c:\dos\himemx.exe /max=64512 /x

rem device=c:\dos\emm386.exe noems i=b000-b7ff /verbose

device=c:\dos\umbpci.sys

dos=high,umb

device=c:\dos\cdrom.sys /d:satadvd

lastdrive=z

I did not do much change in the AUTOEXEC.BAT file. All I did was to REM out "lh mouse" in line 5 and "idle" in line 8.

When I followed your procedure, I though that it would work, but when I typed "win" or "win /3" at the DOS prompt, Windows 3.1 would STILL hang at the splash screen.

I forgot to note that I'm booting MS-DOS 7.1 on a dual-core processor. While MS-DOS 7.1 has detected CPU 0 and CPU 1 at boot, it will only use CPU 0 (the first core of the first CPU) due to OS architectural limitations. At this perspective, I suspect that this might cause some problems when attempting to run Windows 3.1 in 386 Enhanced Mode.

Is there a way to get around this issue here? :(

Edited by ppgrainbow

Share this post


Link to post
Share on other sites

No. CPU1, for all purposes, does not exist both for DOS and for Win 3.1... I really doubt it'd cause any trouble. Your freezes might very well be related to some still unreported timing issue in windows VMM. Fact is you're very far away from those conditions in which Win 3.1 is known to run OK. That's what "to boldly go where no man has ever gone before" is all about. :D

Share this post


Link to post
Share on other sites

No. CPU1, for all purposes, does not exist both for DOS and for Win 3.1... I really doubt it'd cause any trouble. Your freezes might very well be related to some still unreported timing issue in windows VMM. Fact is you're very far away from those conditions in which Win 3.1 is known to run OK. That's what "to boldly go where no man has ever gone before" is all about. :D

I agree. MS-DOS and Windows 3.1 is only designed to run on one core.

Do you or others have any idea what timing issues are being unreported in Windows 3.1 that causes the GUI to freeze when attempting to start up in 386 Enhanced Mode? :whistle:

Share this post


Link to post
Share on other sites

The timing issue LoneCrusader solved for Win 95 almost surely would be present in earlier versions, if I may hazard a guess... th_sherlock.gif

Share this post


Link to post
Share on other sites

I am not aware of any timing issues.

I can run Windows 3.1 on my MA785 system in Enhanced mode.

IO.SYS 7.1 needs a couple of mods to allow Windows 3.1 to run.

A Patch is also needed to avoid the bad Current Directory on Exit Bug.

Share this post


Link to post
Share on other sites

I am not aware of any timing issues.

I can run Windows 3.1 on my MA785 system in Enhanced mode.

IO.SYS 7.1 needs a couple of mods to allow Windows 3.1 to run.

A Patch is also needed to avoid the bad Current Directory on Exit Bug.

First of all, (1) The MS-DOS 7.1 IO.SYS has already been patched using Win3xStart to allow Windows 3.0 and Windows 3.1x to run under MS-DOS 7.1. And (2), I already patched WIN386.SYS to avoid the Current Directory on Exit bug when using Windows 3.1. The size of the USB flash drive that I'm running Windows 3.1 on is 4 GB (3.84 GB) in capacity and it's formatted FAT32.

The only problem is that Windows 3.1 hangs at the splash screen when attempting to run in 386 Enhanced Mode. It's not a problem when it's done in Standard Mode.

Am I missing something in regards to modifying IO.SYS to allow Windows 3.1 to run in Enhanced Mode here?

Share this post


Link to post
Share on other sites

just guessing, but are 32-bit disk access and virtual memory enabled? Maybe try it with those turned off.

I do not have the following lines are not present in the [386Enh] section of the SYSTEM.INI file

device=*int13

device=*wdctrl

And the swapfile has already been is disabled.

As Windows 3.1 is on a FAT32 partition under MS-DOS 7.1, it will not accept a permanent swapfile due to INT13 and 16-bit FAT restrictions. It's just that Windows 3.1 hangs when it is run on two or more cores or on some chipsets.

Edited by ppgrainbow

Share this post


Link to post
Share on other sites

Lately I'd run into exactly the same problem as described above. I think I probably found the cause and the cure. So I decided to revive this old thread to report my findings.

My 8GB USB flash drive was made bootable with the HP USB Disk Storage Format Tool. With patched IO.SYS and Windows 3.1 installed with modified WIN386.EXE. While USB legacy option was enabled in the BIOS of my motherboard I could boot into MS-DOS 7.1 without USB drivers. But Windows 3.1 could only be started in standard mode (win /s). :( 

In the meantime I had no problems booting Windows 3.1 in Enhanced mode from my hard drive.

After many experiments, the whole problem turned out to be one of Partition Type. The HP USB Disk Storage Format Tool partitioned the USD flash drive as Partition Type 0x0C (FAT32X). When I, just for sake of experiment, changed the Partition Type ID with a partition editor to 0x0B (FAT32) and rebooted, Windows 3.1 started fine in Enhanced mode.

According to Scott Mueller Partition Type 0x0B uses CHS, while 0xOC uses LBA. Obviously Windows 3.1 has problems with Partition Type 0x0C (FAT32X) in case of USB legacy mode (I tried two different motherboards from around 2010, same results). My hard drive is partitioned as 0x0C (FAT32X), so maybe the BIOS acts different in case of USB legacy mode and in case of a Hard Drive?

My cure is to partition the USB flash drive with a decent partition manager that partitions the USB flash drive as FAT32 (Partition Type 0x0B) and not FAT32X. Further the partition has to be set to "Active". After reboot in MS-DOS7.1 the USB drive can be made bootable with "SYS [USB flash drive letter]:" (without quotation marks). Afterwards (with patched IO.SYS and WIN386.EXE) Windows 3.1 will be starting in Enhanced mode. :rolleyes:

BTW: I first thought this cure would only work below the famous 8.4GB barrier, but my partition manager even partitioned a 16GB USB flash drive as FAT32 (0x0B) and I was able to start Windows 3.1 in Enhanced mode from this drive. Maybe this can be BIOS specific.

Share this post


Link to post
Share on other sites
Posted (edited)

Interesting :), though I suspect that the real cause is *something else* (namely - for *whatever* reasons - the HP USB Format Tool creating something not entirely "kosher" that is later only "triggered"  or "detected" by the 0x0C type) :unsure:

Coincidentally we had an issue not entirely unrelated with a 0x06 vs. 0x0E on FAT16 when the map --in-situ command in grub4dos, JFYI:

http://reboot.pro/topic/21732-windows-for-workgroups-311-grub4dos-and-protected-mode/

(here the issue was different the user was using DOS 6.22, when using DOS 7.1 the 0x0E type worked fine)

I seem to remember that many, many years ago, when the HP USB thingy was in use, there were some glitches connected with CHS vs. LBA addressing.

I'll see if I can find something from the good ol'days (I believe that most relevant topics would be - actually were - on 911CD.net, now dead :().

EDIT:

Ok, found a reference here on MSFN:

Here the problem seems reversed, but the "basic" issue (LBA and CHS values not "balanced") may still be the "root cause". 

jaclaz

 

Edited by jaclaz

Share this post


Link to post
Share on other sites
Posted (edited)

I did some new experiments with the Partition Type ID.

The partition manager I used (Minitool Partition Wizard 10, inside Windows 10) has the option to change the Partition Type ID. I took a fresh 4GB USB flash drive, created a 4GB partition, changed the Partition Type ID to 0x0C (FAT32X), formatted and made the partition active. With my Windows 98SE floppy disk (loaded with modified IO.SYS) I made the 4GB USB flash drive bootable, etcetera.

Same result as with the HP USB Disk Storage Format Tool, Windows 3.1 booted ONLY in standard mode. I tested both motherboards again (960GM-GS3 and P5G41T-M LE). :w00t:

Afterwards I disconnected ALL my hard disks physically and started my good old PowerQuest Partition Magic 5.0 floppy disks. Partition Magic found NO partition errors on the 4GB USB flash drive (partitioned with Minitool Partition Wizard 10), and correctly identified the partition as 0x0C (FAT32X). I left Partition Magic and started PowerQuest's PTEDIT (resides on the first floppy disk). I changed the Partition Type ID to 0x0B (FAT32) and rebooted. 

Since Scandisk found no errors on the 4 GB USB flash drive, I tried to boot Windows 3.1 in Enhanced mode, and...... it worked. On both motherboards! :D

BTW: using PowerQuest Partition Magic is potentially dangerous for disks partitioned with newer operating systems. So DON'T TRY THIS AT HOME!

Edited by deomsh
typo's

Share this post


Link to post
Share on other sites

The issue (at least the one investigated and solved at the time) was about a not-balanced set of values between the CHS and the LBA parts, namely, in the given reference, the issue was that the CHS was not corresponding to the LBA, the HP formatting tool made the CHS limited to the actual "Cylinder" number, BUT the LBA to the full size of the stick.

But another known issue, particularly for less than 8.4 Gb media (but not only) may be due to different HS geometry sensed by the BIOS (vs. what is sensed by the OS and USB driver).

Typically on any NT based system (with some exceptions for NT 3.51 and NT 4.00) *any* hard disk like device is mapped as having 255/63, while in DOS (or however when direct BIOS support is used) the geometry may be attributed differently, like 16/63, 64/63, 128/63 and even 64/32.

To further complicate the issue a few bootsector codes have a related issue, this is about the 2K/XP one, but it is possible that similar issues are inside the 3.1 or 3.11 "protected mode" loading:

https://web.archive.org/web/20160715151517/http://www.911cd.net/forums//index.php?showtopic=21702&st=129

If you have PTEDIT (or *any* similar tool showing the actual values in the partition table) handy, can you post them?

jaclaz

 

Share this post


Link to post
Share on other sites

I already wrote down the partition table on my 8GB USB flash drive, partitioned with the HP USB Disk Storage Format Tool.

Information from PTEDIT:

  • Hard Disk: "Drive 1(7640MB); 974 cyl, 255 heads, 63 sectors per track.
  • Partition table at sector 0 (cyl 0, head 0, sector 0).
  • First Partition. Type=0C, Boot=80. Starting: Cyl=0, Head=1, Sector=1. Ending: Cyl=973, Head=254, Sector=63. Sectors: Before=63, Sectors=15654785.
  • BTW: the other three partitions are empty.
  • Partition Information: Fat32X, Bootable, 7643 MB.

For the sake of experiment I changed "Type" to "0B" on the fly with PTEDIT, just after Windows 3.1 refused to start in Enhanced mode. Even without rebooting the computer Windows booted in Enhanced mode (Scandisk found no errors in between).

I also tested FAT16 and Fat16X with a 2GB partition on my 4BG flash disk. Same results as with FAT32/FAT32X. With Partition Type ID 0x06 (FAT16) no problems booting in Enhanced mode, with 0x0E (FAT16X) booting in standard mode only.

BTW: I've read your link, but I already tried changing OEM ID in the bootsector to "MSWIN4.1" if not there, made no difference according booting Windows 3.1 in Enhanced mode.

Share this post


Link to post
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.

×