Okay, I haven't really been able to find a good topic on this except for this one (there should be a damn sticky), so I figured I would help you guys out somewhat. From what I get, there are a few problems running Windows 9X.
One I've heard about is Windows writing over protected areas of memory. Well, why not make a memory manager, like there used to be in DOS?
Then alot of people said that there would be problems with Windows not recognizing FatX partitions and wanting to format them... well, that's why you can put a new HDD in your box.
Then there is the PCI Bus scan. Here is the information I've found about the 98 boot process:
| QUOTE |
1. The computer loads and executes the IO.SYS file (basically DOS). The initialization code initializes the base system device drivers, determines equipment states, resets the disk system, resets and initializes attached devices, and sets the system dafault parameters.
2. The file system is activated, and control is returned to the IO.sys initialization code.
3.The "Starting Windows" message is displayed for <n> seconds, or until you press a Windows function key. The amount of time the message is displayed is determined by the BootDelay=<n> line in the MSDOS.sys file; the default is 2 seconds.
4. The IO.sys initialization code reads the MSDOS.sys configuration file. If you have multiple hardware profiles, you receive the following message and must choose a hardware configuration to use: <b>Windows cannot determine what configuration your computer is on.</b>
5. The LOGO.sys file is loaded and displays a startup image on the screen.
6. If the DRVSPACE.INI or DBLSPACE.INI files exist, they are loaded into memory. IO.SYS also automatically loads HIMEM.SYS (a memory manager), IFSHLP.SYS (a minimal file system), and SETVER.EXE (if config.sys doesn't exist).
7. The IO.SYS file checks the system Registry files (SYSTEM.DAT and USER.DAT) for valid data.
8. IO.SYS opens the SYSTEM.DAT file. If the SYSTEM.DAT file is not found, the SYSTEM.DA0 file is used for startup. If Windows 9x starts successfully, the SYSTEM.DA0 file is copied to the SYSTEM.DAT file.
9. The DBLBUFF.SYS file is loaded if the DoubleBuffer=1 is used in the MSDOS.SYS file or if double buffering is enabled under the following registry key: HKLM\SYSTEM\CURRENTCONTROLSET\CONTROL\WINBOOT\DOUBLEBUFFER
(Windows 9x Setup automatically enables double buffering if it detects that it is required)
10. If you have multiple hardware profiles, the hardware profile you chose is loaded from the registry.
11. In Windows 9x, the system looks in the Registry's HKLM\SYSTEM\CURRENTCONTROLSET key to load the device drivers and other parameters specified there before executing the CONFIG.SYS file.
12. WIN.COM (Windows' protected mode loader) is loaded and run.
13. WIN.COM accesses the VMM32.VXD file (real-mode virtual device driver library). If there is enough available RAM, the VMM32.VXD file loads into memory. Otherwise, it is accessed from the hard disk.
14. The real-mode virtual device driver loader (VMM32.VXD) checks for duplicate virtual device drivers (VxDs) in the WINDOWS\SYSTEM\VMM32 folder and the VMM32.VXD file. If a VxD exists in both the WINDOWS\SYSTEM\VMM32 folder and the VMM32.VXD file, the duplicate VXD is "marked" in the VMM32.VXD file so that it is not loaded.
15. VxDs that are not already loaded by the VMM32.VXD file are loaded from the [386 Enh] section of the WINDOWS\SYSTEM.INI file.
Required VXDs: BIOSXLAT, CONFIGMG, DYNAPAGE, DOSMGR, EBIOS, IFSMGR, INT13, IOS, PAGESWAP, SHELL, V86MMGR, VCD, VCACHE, VCOMM, VCOND, VDD, VDMAC, VFAT, VKD, VMCPD, VPICD, VTD, VTDAPI, VWIN32, VXDLDR. (I suppose this is where you might put in FATX and NTFS drivers)
16. The real-mode virtual device driver loader checks that all required VXDs loaded successfully. If not, it attempts to load the drivers again.
17. Once the real-mode virtual device driver loading is logged, driver initialization occurs. If any VXDs require real-mode initialization, they begin their process in real mode.
18. VMM32 switches the computers processor from real mode to protected mode.
19. A three-phase VXD initialization process occurs in which the drivers are loaded according to their InitDevice instead of the order in which they are loaded into memory.
20. After all the VXDs are loaded, the KRNL32.DLL, GDI.EXE, USER.EXE, and EXPLORER.EXE (the default Windows 9X GUI shell) files are loaded. |
So, it appears to me that if we use a hacked or from-scratch IO.SYS, then we can get Windows to skip scanning the PCI bus. Or, make a boot loader that overwrites the boot sector and loads a program that will emulate the PCI bus, then loads Windows98. Additionally, it might be prudent to have a BIOS that gives out IRQs, I/O ports, and DMA channels instead of letting Windows do plug and play.
Also, it might be possible to modify the boot sectors for Win98SE so that it can read FatX, although it would be a bad idea since you can only have names 44 letters long. Maybe create a device driver to do it... I might have a DDK lying around here somewhere.
One thing I'm not too sure about is how exactly the PCI bus works. Is the PCI bus included in a chip or in the BIOS? Because a BIOS only bus you could modify to report there are no devices, but a hardware bus might need an extra chip that the BIOS can refer to.
NOTE: I have realised that it should be possible to make a version of DOS (or use one that exists) that boots up on XBox, then runs WIN.COM, bypassing checks on the PCI Bus. But I don't know if 98SE checks at any other places.
Anyways, if Windows 98 SE isn't plausible, has anyone considered OS/2 Warp 4?
(Useful sites)
http://home.att.net/~rayknights/pc_boot/w98bboot.htm <---Windows98se Boot Sector Info
http://216.239.63.104/search?q=cache:jThskoKK2ZwJ:www.geocities.com/thestarman3/asm/mbr/MSWIN41.htm+&hl=en
I've got some experience making websites (I just made my personal website a few weeks ago and only really started working on it the last few days. http://brent.freelinuxhost.com/), and might be able to help there. Also, WinXBE is good for a group name, but how about Win9Xbox for the actual release if we get 9X working, and Windows XbP or something if we get XP running?
[P.S. - Seems like we need more information on what we're dealing with -- IBM-PC compatible BIOS, PCI Bus, etc.]