Jump to content

Windows 95 challenge : first start hangs during vmm32.vxd load


Tryphon

Recommended Posts

On 1/7/2019 at 5:30 PM, Tryphon said:

vflatd.vxd, vmouse.vxd and vmd.vxd

vmouse and vmd is mouse related. check ur mouse.
vflatd is linear framebuffer related, are u sure, thar ur vc have this feature?

anyway, this files can be deleted for test purposes.

my suggestions:
0) vmm32 is container:
dos part - realmode starter (real vmm32.vxd),
fyrst protected mode part - vmm vxd, main windows module (preboundled with vmm32.vxd, but its possible cut off in real vmm.vxd file),
all other vxds,  added in container on install procedure.

if u see that must ur vxds succefully loaded - so obviuosly, that VMM work good.
then u can replece ur system vmm32.vxd to extracted vmm..vxd from ur distr, and place all other vxds from ur distr to system\vmm32 folder.
after this, u can start windows with win /d:m command and look, which part make problems....

but before it i suggest u check all ur hadrware, especially memory.

Link to comment
Share on other sites


  • 2 weeks later...

Ok, back to my computers. Specially the desktop : I opened it... Arghhh, not exactly a 386 SX as sticked on the box, but a 486 Cyrix SLC2 (50MHz).

Thank you to all for your replies.

@dencorso

None really done yet, but I am still curious to do this manipulation.

@jaclaz

I applied the Win95FIX (sucessfull installation) to versions 4.00.0950 (14 disks) and 4.00.1111. The vmm32 got the new vxd files.

With 4.00.1111, the new vxd are loaded successfully (instead of the old one found in vmm32.vxd). Unfortunatly, bootlog.txt ended with VPP.vxd as before.

With 4.00.0950, the bootlog process is weird : bootlog.prv and bootlog.txt never change whatever I do. They remains the same as they were printed the first time after w95 install (stuck at the first reboot). If I delete them, after a reboot, the w95 start process restore them identically. Anyway they are not exactly same as the one of version 4.00.1111.

The link you provided IS my "bedside book" !! Surely I need to read it again and again to be sure I am not missing something.

@mercury127

"then u can replece ur system vmm32.vxd to extracted vmm..vxd from ur distr, and place all other vxds from ur distr to system\vmm32 folder.
after this, u can start windows with win /d:m command and look, which part make problems...."

I did this manipulation (even before I posted here, but I did not report). All the vxd files printed in bootlog.txt were \windows\system\vmm32\whatever.vxd saying that all vxd were loaded from the vmm32 folder and not from vmm32.vxd. However, bootlog ends by \windows\system\vmm32\VPD.vxd (sucessfull load), hence the boot process brings no more information about any failing vxd.

The computer has an inport bus for the mouse : https://en.wikipedia.org/wiki/Bus_mouse

The mouse works well under MSDOS (with driver), Windows NT 4 and Windows 95 during the setup process.

vflatd is loaded sucessfully but I cannot tell if my hardware really support it.

Is my hardware healthy? I cannot be sure at 100%. Windows NT 4 works fine (no blue screen) with the network features.

I changed the memory card locations (4 banks) : after w95 reinstallation, same story. I changed the memory cards by other: idem.

 

Well, I am searching anything that could help to just understand ...

Thank you.

Edited by Tryphon
Link to comment
Share on other sites

16 hours ago, MERCURY127 said:

Just remove or rename vpp or vpd.vxd from vmm32 folder and check if success. It will work, only if ur vmm32.vxd really empty and Not contain these vpp/vpd.

The VMM32 can ve unpacked and re-packed, still just in case:

http://www.mdgx.com/98-3.htm

Scroll down to "WIN98 VXD BUG":

Quote

UPDATE:
"I have researched the VMM32.VXD issue and found 3 useful tools [40 KB, free] that work with VXD type archives like VMM32.VXD:

DEVLIB.EXE [Microsoft Windows VxD Library Manager]: MS tool included with OSR 2.1 USB Supplement (USBSUP) to create VXD archives, dump their contents, pack, unpack (not extract!) or append a specified VXD file to it.

RPLCLDR.EXE [Microsoft Replace Loader]: MS tool included with OSR 2.1 USB Supplement (USBSUP) to replace an existing driver inside VXD archives with a specified VXD file.

VXDLIB.EXE [VXD Library Manager]: 3rd party tool (freeware) to list, dump, pack (better than DEVLIB), unpack and even extract VXD files from VXD libraries.

jaclaz

Link to comment
Share on other sites

Microsoft (I think) says that packing VXD files inside VMM32.VXD speeds up boot time and is overall better for your system.

Is there any bad consequences of unpacking every VXD file and loading all of them from the SYSTEM/VMM32 folder?

This might be off-topic, but could make troubleshooting problems OP has easier.

Link to comment
Share on other sites

58 minutes ago, MrMateczko said:

Microsoft (I think) says that packing VXD files inside VMM32.VXD speeds up boot time and is overall better for your system.

Is there any bad consequences of unpacking every VXD file and loading all of them from the SYSTEM/VMM32 folder?

This might be off-topic, but could make troubleshooting problems OP has easier.

From the  link just posted to MDGX:

Quote

My advice is to leave the VXD files inside the VXD archive unchanged, because I did not really notice any performance boost (on any PC) by placing the VXDs inside the VMM32 subfolder. Though, speeding up VMM32.VXD load time can be achieved by unpacking it (turning it into an unpacked archive) by issuing this command from native/real/true/pure MS-DOS mode from inside the %windir%\SYSTEM folder:
VXDLIB -U VMM32.VXD

Which makes a lot of sense, it is faster to load a single file (not compressed archive) than a number of  files and the overhead of uncompressing on-the-fly the archive (single file) may make things slower, particularly with the limited amount of  memory and CPU that was available at the time.

But no, there is no particularly bad consequence, though "mixed mode" is risky, as a newer driver may be automatically replaced by an older version in some cases:

Quote

WARNINGS:
DO NOT replace any existing VXD from inside the VMM32 folder with a VXD file extracted from original Windows CAB files!
This will replace the updated VXD with an OLDER version, removing any fixes made by ANY NEWER VXD update!
Sometimes, updated VXDs will be compiled into the VMM32.VXD archive if you place an original VXD (from a CAB file) into the VMM32 folder, while a NEWER version of that VXD exists inside the VMM32.VXD archive, because this will REPLACE the NEW driver with the OLDER one, which also removes all NEWER VXD fixes!

jaclaz

Link to comment
Share on other sites

Steps I did:

Format partition
Install of Windows 95 ver. 4.00.950 (14 disks)
Compact installation (no optional tools/programs)
I let a boot disk in A:
I rebooted to boot from A:
I edited system.ini to comment all the 386Enh section
I saved \windows\system\vmm32.vxd and the folder vmm32
vxdlib -l vmm32.vxd

VxDLIB v1.01 (c) Copyright Tenth Planet Software Intl., C Turvey 1995-1996
                           All rights reserved. Non-Commercial use only
Listing vmm32.vxd
vxds:
  VMM
  1 total vxd(s)

I deleted VPD.vxd and VCP.vxp  in \windows\system\vmm32 folder
I rebooted from C: = first w95 start
I asked for a bootlog file
The start process claimed for VPD.vxd and VCD.vxd (expected since I did not delete the matching entries in the
registry)
W95 froze

Here the obtained bootlog.txt

[00162C27] Loading Device = C:\WINDOWS\HIMEM.SYS
[00162C29] LoadSuccess    = C:\WINDOWS\HIMEM.SYS
[00162C29] Loading Device = C:\WINDOWS\IFSHLP.SYS
[00162C2A] LoadSuccess    = C:\WINDOWS\IFSHLP.SYS
[00162C2A] Loading Device = C:\WINDOWS\SETVER.EXE
[00162C2A] LoadSuccess    = C:\WINDOWS\SETVER.EXE
[00162CC5] Loading Vxd = VMM
[00162CC8] LoadSuccess = VMM
[00162CC8] Loading Vxd = nwlink.vxd
[00162CCA] LoadSuccess = nwlink.vxd
[00162CCA] Loading Vxd = vnetsup.vxd
[00162CCB] LoadSuccess = vnetsup.vxd
[00162CCC] Loading Vxd = C:\WINDOWS\system\VMM32\CONFIGMG.VXD
[00162CCE] LoadSuccess = C:\WINDOWS\system\VMM32\CONFIGMG.VXD
[00162CCE] Loading Vxd = C:\WINDOWS\system\VMM32\VSHARE.VXD
[00162CCF] LoadSuccess = C:\WINDOWS\system\VMM32\VSHARE.VXD
[00162CCF] Loading Vxd = C:\WINDOWS\system\VMM32\VWIN32.VXD
[00162CD0] LoadSuccess = C:\WINDOWS\system\VMM32\VWIN32.VXD
[00162CD1] Loading Vxd = C:\WINDOWS\system\VMM32\VFBACKUP.VXD
[00162CD1] LoadSuccess = C:\WINDOWS\system\VMM32\VFBACKUP.VXD
[00162CD1] Loading Vxd = C:\WINDOWS\system\VMM32\VCOMM.VXD
[00162CD2] LoadSuccess = C:\WINDOWS\system\VMM32\VCOMM.VXD
[00162CD2] Loading Vxd = C:\WINDOWS\system\VMM32\COMBUFF.VXD
[00162CD3] LoadSuccess = C:\WINDOWS\system\VMM32\COMBUFF.VXD
[00162CD3] Loading Vxd = C:\WINDOWS\system\VMM32\IFSMGR.VXD
[00162CD7] LoadSuccess = C:\WINDOWS\system\VMM32\IFSMGR.VXD
[00162CD7] Loading Vxd = C:\WINDOWS\system\VMM32\IOS.VXD
[00162CDA] LoadSuccess = C:\WINDOWS\system\VMM32\IOS.VXD
[00162CDA] Loading Vxd = C:\WINDOWS\system\VMM32\SPOOLER.VXD
[00162CDB] LoadSuccess = C:\WINDOWS\system\VMM32\SPOOLER.VXD
[00162CDB] Loading Vxd = C:\WINDOWS\system\VMM32\VFAT.VXD
[00162CDD] LoadSuccess = C:\WINDOWS\system\VMM32\VFAT.VXD
[00162CDD] Loading Vxd = C:\WINDOWS\system\VMM32\VCACHE.VXD
[00162CDE] LoadSuccess = C:\WINDOWS\system\VMM32\VCACHE.VXD
[00162CDE] Loading Vxd = C:\WINDOWS\system\VMM32\VCOND.VXD
[00162CDF] LoadSuccess = C:\WINDOWS\system\VMM32\VCOND.VXD
[00162CE0] Loading Vxd = C:\WINDOWS\system\VMM32\VCDFSD.VXD
[00162CE1] LoadSuccess = C:\WINDOWS\system\VMM32\VCDFSD.VXD
[00162CE1] Loading Vxd = C:\WINDOWS\system\VMM32\VXDLDR.VXD
[00162CE2] LoadSuccess = C:\WINDOWS\system\VMM32\VXDLDR.VXD
[00162CE2] Loading Vxd = C:\WINDOWS\system\VMM32\VDEF.VXD
[00162CE3] LoadSuccess = C:\WINDOWS\system\VMM32\VDEF.VXD
[00162CE3] Loading Vxd = C:\WINDOWS\system\VMM32\VPICD.VXD
[00162CE4] LoadSuccess = C:\WINDOWS\system\VMM32\VPICD.VXD
[00162CE4] Loading Vxd = C:\WINDOWS\system\VMM32\VTD.VXD
[00162CE5] LoadSuccess = C:\WINDOWS\system\VMM32\VTD.VXD
[00162CE5] Loading Vxd = C:\WINDOWS\system\VMM32\REBOOT.VXD
[00162CE6] LoadSuccess = C:\WINDOWS\system\VMM32\REBOOT.VXD
[00162CE6] Loading Vxd = C:\WINDOWS\system\VMM32\VDMAD.VXD
[00162CE7] LoadSuccess = C:\WINDOWS\system\VMM32\VDMAD.VXD
[00162CE7] Loading Vxd = C:\WINDOWS\system\VMM32\VSD.VXD
[00162CE7] LoadSuccess = C:\WINDOWS\system\VMM32\VSD.VXD
[00162CE8] Loading Vxd = C:\WINDOWS\system\VMM32\V86MMGR.VXD
[00162CE9] LoadSuccess = C:\WINDOWS\system\VMM32\V86MMGR.VXD
[00162CEA] Loading Vxd = C:\WINDOWS\system\VMM32\PAGESWAP.VXD
[00162CEA] LoadSuccess = C:\WINDOWS\system\VMM32\PAGESWAP.VXD
[00162CEA] Loading Vxd = C:\WINDOWS\system\VMM32\DOSMGR.VXD
[00162CEC] LoadSuccess = C:\WINDOWS\system\VMM32\DOSMGR.VXD
[00162CEC] Loading Vxd = C:\WINDOWS\system\VMM32\VMPOLL.VXD
[00162CED] LoadSuccess = C:\WINDOWS\system\VMM32\VMPOLL.VXD
[00162CED] Loading Vxd = C:\WINDOWS\system\VMM32\SHELL.VXD
[00162CEF] LoadSuccess = C:\WINDOWS\system\VMM32\SHELL.VXD
[00162CEF] Loading Vxd = C:\WINDOWS\system\VMM32\PARITY.VXD
[00162CF0] LoadSuccess = C:\WINDOWS\system\VMM32\PARITY.VXD
[00162CF0] Loading Vxd = C:\WINDOWS\system\VMM32\BIOSXLAT.VXD
[00162CF1] LoadSuccess = C:\WINDOWS\system\VMM32\BIOSXLAT.VXD
[00162CF1] Loading Vxd = C:\WINDOWS\system\VMM32\VMCPD.VXD
[00162CF1] LoadSuccess = C:\WINDOWS\system\VMM32\VMCPD.VXD
[00162CF2] Loading Vxd = C:\WINDOWS\system\VMM32\VTDAPI.VXD
[00162CF2] LoadSuccess = C:\WINDOWS\system\VMM32\VTDAPI.VXD
[00162CF2] Loading Vxd = C:\WINDOWS\system\VMM32\PERF.VXD
[00162CF3] LoadSuccess = C:\WINDOWS\system\VMM32\PERF.VXD
[00162CF5] Loading Vxd = vredir.vxd
[00162CF8] LoadSuccess = vredir.vxd
[00162CF9] Loading Vxd = ndis.vxd
[00162CFB] LoadSuccess = ndis.vxd
[00162CFC] Loading Vxd = ndis2sup.vxd
[00162CFC] LoadFailed  = ndis2sup.vxd
[00162CFD] Loading Vxd = vnetbios.vxd
[00162CFE] LoadSuccess = vnetbios.vxd
[00162D00] Loading Vxd = C:\WINDOWS\system\VMM32\DYNAPAGE.VXD
[00162D01] LoadSuccess = C:\WINDOWS\system\VMM32\DYNAPAGE.VXD
[00162D01] Loading Vxd = C:\WINDOWS\system\VMM32\VDD.VXD
[00162D03] LoadSuccess = C:\WINDOWS\system\VMM32\VDD.VXD
[00162D03] Loading Vxd = C:\WINDOWS\system\VMM32\VKD.VXD
[00162D04] LoadSuccess = C:\WINDOWS\system\VMM32\VKD.VXD
[00162D04] Loading Vxd = C:\WINDOWS\system\VMM32\EBIOS.VXD
[00162D05] LoadSuccess = C:\WINDOWS\system\VMM32\EBIOS.VXD
[00162D05] Loading Vxd = C:\WINDOWS\system\VMM32\INT13.VXD
[00162D05] LoadSuccess = C:\WINDOWS\system\VMM32\INT13.VXD

I noticed a surprise : EBIOS.vxd successfully loaded where other Windows 95 versions I tested failed to load it.

I restarted in step by step mode and I got the same result except EBIOS.vxd failed.

I found SoftIce 4.05. I nerver used it. But it can hurt my limited knowledge. I will see.

I could try different combinations of a limited set of vxds but it can be crazy to manage. If it is valuable to understand, I will need a strategy to narrow the sets of vxds to try.

Arrrgh, no more clue yet!

Thank you.

Link to comment
Share on other sites

I tried the very first official version 4.00.950 with 14 disks.

I tried 4.00.4111 versions (one of them was OSR2.5, and for the other I do not know).

I will try to reach OSR1 and OSR2.

I found himemx.sys and I will try.

For Win98 I never tried. But 486SLC2 is not a true 486 (no math coprocessor, I have it separately). Well I can try to see if it brings new clues.

This address http://ipfs.io/ipfs/QmXoypizjW3WknFiJnKLwHCnL72vedxjQkDDP1mXWo6uco/wiki/Architecture_of_Windows_9x.html tells :

Quote

Once the real-mode virtual device drivers are loaded, driver initialization, on Windows 95 and Windows 98 occurs. Vmm32 then switches CPU from real mode to protected mode. The next step is initialization of protected mode drivers. It is executed in three phases for each device: critical part of initialization (while interrupts are disabled), device initialization (when file I/O is allowed) and InitComplete phase. After initialization of display driver, Windows switch to graphical mode.

vmm32 process seems to pass successfully according to my bootlog.txt (this is only my opinion, not necessarily the truth). The next step is the protected mode. Is it possible that this switch to protected mode failed at the beginning knowing that I got no error message and that Windows nt4 works fine. I just ask. What do you think?

Edited by Tryphon
Link to comment
Share on other sites

2 minutes ago, Tryphon said:

Is it possible that this switch to protected mode failed at the beginning knowing that I got no error message

yes, but u must see at least

[000D76BB] Loading Vxd = vkd
[000D76BB] LoadSuccess = vkd
[000D76BB] SYSCRITINIT  = VMM
[000D76BB] SYSCRITINITSUCCESS  = VMM

in bootlog, as indication start prot mode...

after Loading Vxd / LoadSuccess (hich is real mode part)

will appear SYSCRITINIT / SYSCRITINITSUCCESS

and DEVICEINIT / DEVICEINITSUCCESS

for each vxd,

and after [000D76BC] DEVICEINIT   = CONFIGMG

begin processing of device tree.

Link to comment
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.
×
×
  • Create New...