VOGONS


First post, by RJDog

User metadata
Rank Member
Rank
Member

From my blog post http://retropcbuilder.blogspot.ca/2016/11/dua … ows-31-and.html I thought this might be useful to other Vogon'ers.

Background
As mentioned in my previous post about software selection, I classify my childhood PC gaming into two eras, and thats just based on my own personal experience having a DOS-based 486 machine followed by a Windows 98 Pentium-II machine. The Retro PC I built is squarely inbetween these two eras of computing (as mentioned before, this is quite on purpose), so I would like to dual boot MS-DOS 6.22 to provide the genuine DOS experience I remember, and Windows 95 which is the period-correct OS for the machine. I knew before I even started building the PC that I would want to do this, so I researched some options to perform the task.

Boot Manager Options
V-Com System Commander is the defacto period-correct option; it was apparently quite popular in the mid '90s for dual- or multi-booting many PC variants... DOS, Win9x, WinNT... I think it also supported OS/2, Linux, etc. Perusing Computer Gaming World magazines you can even find full-page ads. I found a copy of System Commander Deluxe online, however it requires a serial number to install, so my efforts on that front were fruitless.

I also found a piece of software called GRUB4DOS, which is a recent project (so obviously not strictly period correct) but sounds very promising in features and intended use for booting DOS and DOS-based variants such as Windows 95, 98, etc.. It does also support booting Windows NT, OS/2 and Linux, but I'm less interested in that functionality.

There's also PowerQuest BootMagic, but... I don't remember why I discounted it.

GRUB4DOS
GRUB4DOS is distributed in a couple of different execution forms; one form of which you can install into the MBR and it will load itself, find its config file by searching through partitions in order (i.e. first partition it finds with a menu.lst config file is the one it uses) and present the user with a menu, if appropriate, before continuing to boot as defined in the config file. This is not unlike many other boot managers. The other form that GRUB4DOS comes in is a DOS executable... a real-mode program that is run from inside DOS to initialize the boot manager. Neat, eh? This is the one that I've chosen to use and will focus on here.

This kind of makes it sound like that GRUB4DOS could be invoked at any time from within DOS, and I thought that too, but that's not exactly true. GRUN4DOS really does not get along well with pretty much any other TSR or driver that DOS might load (especially EMM386), so it needs to be called first thing, typically as the first line in config.sys, ie. DEVICE=C:\GRUB.EXE. What this does is cause your system to boot DOS as it normally would, then as DOS gets to loading drivers in config.sys, GRUB4DOS is invoked and the user can make their boot selection. Grub can be instructed (in the menu.lst config file) to either boot or chainload another operating system, partition, or harddisk, or simply quit and allow the DOS system that booted and invoked GRUB to continue booting like normal.

Intended Operation
As I've chosen to not install GRUB4DOS in the MBR (or, in my case since I'm using a DDO, into the "MBR" that the DDO software will boot after loading), the tactic that I will be using is to have an instance of grub.exe and menu.lst on the MS-DOS 6.22 partition which will be invoked by DOS' config.sys, and another instance of grub.exe and menu.lst on the Windows 95 partition which will be invoked by the config.sys of Windows 95. This means that I'll actually have two separate menu.lst config files which are used depending on which OS is booted first.. .which could be good or bad.

To make matters a little more complicated, DOS and DOS-based variants (i.e. Win9x) really like being installed on C: -- which is the first DOS-formatted primary partition. In fact, they really don't work at all not being installed on C:. Windows 95 and onward do have some limited built-in facilities to operate a dual-boot environment (if you did an upgrade install, for example), but in that case both old and new operating systems occupy the same space on the same partition. There are several guides online about how to accomplish this with MS-DOS 6.22 and Windows 95, but this is obviously pretty messy and I would like to avoid having both operating systems and their configuration and programs installed on the same partition, if only for my own sanity. Conveniently, GRUB4DOS (and other boot managers like System Commander, Boot Magic, etc.) has a method to which it can "hide" and "unhide" DOS (FAT) partitions on a disk. Essentially, when I want to boot MS-DOS 6.22, the partition that it's on is set to "unhide" and the Windows 95 partition is set to "hide"; conversely when I want to boot Windows 95, the Windows 95 partition is set to "unhide" and the DOS partition is set to "hide". This satisfies the "C: is the first DOS-formatted primary partition" because the hidden partition, even if it's the first partition, does not appear to the OS to be a valid DOS-formatted partition, so just skips over it and the next "unhidden" partition is taken to be C:.

This operation does mean, however, that one OS will not see the other OS' partition, so to share files/games/etc. between the two, I will need a third partition that both can see.

Installing a Second OS
The system has already has MS-DOS 6.22 installed on it from when I set up the new harddisk with Maxtor's MaxBlast OnTrack DDO... I set up a 2GB primary partition formatted as FAT16 for DOS, a 2GB primary partition formatted as FAT32 for Windows 95, a 2GB extended partition formatted as FAT16 to be the drive that DOS games are installed on and to be the partition that both DOS and Windows 95 can see, and the remainder of the drive (~32GB) as an extended partition formatted as FAT32 to install Windows 95 games on. DOS, of course, can't read FAT32, so they might as well be hidden from DOS... but we'll make them actually hidden.

To make this easier on myself, I made a bootable floppy with grub.exe on it, with no config.sys or autoexec.bat so that nothing gets loaded and I have no trouble loading GRUB if I need to. I also created a menu.lst with the following contents:

  title Commandline
commandline

This will just present one menu option which will give GRUB4DOS's internal command prompt so you can type in config items manually. Really, you probably don't need to create the boot disk, you just need to have grub.exe available to both OS's (for example, copied on the shared 2GB FAT16 partition), but it makes me feel a little safer, and the below steps assume the use of it.

So, essentially the idea is to perform the appropriate hide/unhide (although all partitions are "unhidden" at this point) operations on the partitions, and then boot the CD or floppy to install the second OS.

Load grub from the boot floppy, and enter the following commands (assuming your new OS will be installed from CD):

  hide (hd0,0)
unhide (hd0,1)
rootnoverify (hd0,1)
setactive
cdrom --init
map --hook
chainloader (cd0)
boot

So, this will hide (hd0,0), which is the first drive, first partition (zero-based indexes); unhide (hd0,1), the first drive, second partition; set the second partition as the root partition (for GRUB's benefit); set the partition as the active bootable partition (for the new OS's benefit); then hook in the CD code and then boot the CD. Alternately, to boot a floppy instead of a CD:

  chainloader (fd0)+1
boot

Then, just install the OS per normal. At this point, after the new OS is installed, the system will just boot the new OS until we tell it otherwise (i.e. hide/unhide partitions).

Dual Booting DOS and Windows 95
In my case, Windows 95 is the second OS that I installed, leaving me with a system that now always boots Windows 95. I copied grub.exe to C:\ and created the following config.sys:

DEVICE=C:\GRUB.EXE

and the following C:\menu.lst:

  title Continue Booting Windows 95
quit

title Reboot to MS-DOS 6.22
unhide (hd0,0)
hide (hd0,1)
rootnoverify (hd0,0)
setactive
reboot

title Command Line
commandline

Reboot, and you'll be presented with GRUB's menu (that you just created above), and have the option to set the system to boot MS-DOS, and then reboot to boot it.

Once in DOS, we do similar steps. Copy grub.exe to C:\ and modify config.sys to have the following line as the very first line in the file:

DEVICE=C:\GRUB.EXE

and the following C:\menu.lst:

  title Continue Booting MS-DOS 6.22
quit

title Reboot to Windows 95
unhide (hd0,1)
hide (hd0,0)
rootnoverify (hd0,1)
setactive
reboot

title Command Line
commandline

And presto!

This will present one of the two menus every time the system boots, which one depends on which OS is the "active" one. This does mean, however, that if you select the "Reboot to ..." option the system will reboot (surprise) and present the other menu.. so you kind of see two menus in a row, which is kind of clunky, but it works, and I didn't molest the MBR of the drive by loading in GRUB4DOS's loader.

Tips
It's worth noting that this really only works if all of the operating systems that will be booted on this system are DOS or DOS variants that can call grub.exe as a first part of its boot process. You can get Windows NT to do a similar thing, but other operating systems would probably necessitate going the MBR route.

You might find it handy to add some menu options to boot CDs, particularly if you use EZ-DRIVE DDO (see my post about Dynamic Disk Overlays). Simply add another menu title to menu.lst, similar to how we booted the CD in the first place:

  title Boot CD-ROM
cdrom --init
map --hook
chainloader (cd0)
boot

Also, there are lots of tutorials that can be found online that highlight some of GRUB4DOS's other neat features, like mounting and booting floppy and CD images that are stored on the hard disk. Cool, huh?

Reply 1 of 23, by Jorpho

User metadata
Rank l33t++
Rank
l33t++

Well, that was lengthy. I'm sure someone will find it helpful.

RJDog wrote:

This satisfies the "C: is the first DOS-formatted primary partition" because the hidden partition, even if it's the first partition, does not appear to the OS to be a valid DOS-formatted partition, so just skips over it and the next "unhidden" partition is taken to be C:.

This operation does mean, however, that one OS will not see the other OS' partition, so to share files/games/etc. between the two, I will need a third partition that both can see.

Not so! As far as DOS and Win9x are concerned, the (primary) partition flagged as "active" will be the boot partition and will become designated as drive C; if there's another partition in front of it on the disk, it will be "skipped over" and that non-active primary partition will become drive D. There is no need at all for hiding of partitions.

In fact, there's really no need for a boot manager at all – whenever you want to boot the other operating system, all you have to do is switch the active flag and reboot.

Reply 2 of 23, by dr_st

User metadata
Rank l33t
Rank
l33t

That's a pretty impressive and elaborate way to waste one's time. 😀 Remind me again why we need to dual-boot DOS 6.22 and Windows 9x? Do we also need to triple-boot DOS 6.22, DOS 5.00, and DOS 3.3? 😁

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 4 of 23, by keropi

User metadata
Rank l33t++
Rank
l33t++

Thanks for the info RJDog 😊
I use PLOP bootmanager for DOS, win98SE and win2000 - each partition that boots "hides" the others so each OS thinks it's the only one installed 🤣
I can't recommend PLOP enough , it even allows usb/cd boot on systems that their BIOS don't have the option

Last edited by keropi on 2016-12-17, 14:03. Edited 1 time in total.

🎵 PCMIDI mpu site buy+info
🎧 WIP Orpheus soundcard site
💻 WTB Amstrad PC7486SLC-33 system

Reply 5 of 23, by RJDog

User metadata
Rank Member
Rank
Member
Jorpho wrote:

Well, that was lengthy.

...yeah... sorry about that; I tend to be wordy.

Jorpho wrote:

Not so! As far as DOS and Win9x are concerned, the (primary) partition flagged as "active" will be the boot partition and will become designated as drive C; if there's another partition in front of it on the disk, it will be "skipped over" and that non-active primary partition will become drive D. There is no need at all for hiding of partitions.

I did not know this! This calls for some experimentation...

Reply 6 of 23, by RJDog

User metadata
Rank Member
Rank
Member
keropi wrote:

Thanks for the info RJDog 😊
I use PLOP bootmanager for DOS, win98SE and win2000 - each partition that boots "hides" the others so each OS thinks it's the only one installed 🤣
I can't recommend PLOP enough , it even allows usb/cd boot on systems that their BIOS don't have the option

I checked out Plop Boot Manager, and it looks pretty interesting; quite a bit more polished than GRUB4DOS. So, I tried to install it. It must have it's own disk I/O routines, rather than relying on BIOS calls to install itself (which, I guess makes sense, for a boot manager that installs itself into the MBR) so... needless to say, it is NOT compatible with OnTrack 9.88. Totally borked the MBR and partition table that OnTrack was using. Fortunately, I did do a backup of the MBR and partition table as Plop recommended, and restoring it did restore the partition table and I am now able to access my disk data on the first 8GB of the disk. Working on restoring the OnTrack DDO now, but the MaxBlast tool keeps warning me about loosing all data on the drive by (re)installing the DDO software. I'll figure it out. I guess worst case is that I copy off what I can access in the first 8GB to a network share (which is almost everything) and then reformat the drive using MaxBlast.

So, note to future Vogoners, make a backup of your MBR using the DDO software!

Reply 7 of 23, by tayyare

User metadata
Rank Oldbie
Rank
Oldbie

RJDog, this is quite comprehensive, thanks for sharing. I also suggest you to take a look at Masterbooter. It is what I'm using and pretty happy with.

Jorpho wrote:

...In fact, there's really no need for a boot manager at all – whenever you want to boot the other operating system, all you have to do is switch the active flag and reboot.

Yeah, it's always possible to scratch your left ear with your right hand. 🤣 But it is not that practical.

dr_st wrote:

...Remind me again why we need to dual-boot DOS 6.22 and Windows 9x? ...

Multibooting is the most practical and hoopla-free method if you want Windows 3.x and 9x on the same machine, in my opinion. Configuring a PC for multiboot is a real piece of cake with right tools, not a hassle at all.

And it's fun 🤣

dr_st wrote:

...That's a pretty impressive and elaborate way to waste one's time. 😀...

Some people I know, who are not into retro computing at all, uses this same phrase above to describe the whole retro computing thing 🤣

GA-6VTXE PIII 1.4+512MB
Geforce4 Ti 4200 64MB
Diamond Monster 3D 12MB SLI
SB AWE64 PNP+32MB
120GB IDE Samsung/80GB IDE Seagate/146GB SCSI Compaq/73GB SCSI IBM
Adaptec AHA29160
3com 3C905B-TX
Gotek+CF Reader
MSDOS 6.22+Win 3.11/95 OSR2.1/98SE/ME/2000

Reply 8 of 23, by dr_st

User metadata
Rank l33t
Rank
l33t
tayyare wrote:

Multibooting is the most practical and hoopla-free method if you want Windows 3.x and 9x on the same machine, in my opinion.

Well, that's... probably true.

I know that two Win3.x installations can coincide just fine within the same partition, but I don't know what happens if you add Win9x into the mix.

tayyare wrote:

Some people I know, who are not into retro computing at all, uses this same phrase above to describe the whole retro computing thing 🤣

True, however that's not quite the same. Retro computing does allow you to experience certain things that you cannot experience without the real hardware. Dual-booting two versions of DOS (Win9x is, after all, just another DOS version, up until the point win.com is invoked) is for the most part, pointless, except perhaps the example you provided.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 9 of 23, by Jorpho

User metadata
Rank l33t++
Rank
l33t++
tayyare wrote:
Jorpho wrote:

...In fact, there's really no need for a boot manager at all – whenever you want to boot the other operating system, all you have to do is switch the active flag and reboot.

Yeah, it's always possible to scratch your left ear with your right hand. 🤣 But it is not that practical.

Oh, it can be quite practical – especially after the novelty inevitably wears off and you end up booting the same OS most of the time anyway. I'm not sure what other programs can do it, but gdisk (included with Norton Ghost) can set the active flag with a single command. The greatest advantage is that this way, you don't have to worry about corrupting your bootloader, but I suppose you can also avoid that if you can use config.sys as Mr. RJDog illustrates.

Reply 10 of 23, by RJDog

User metadata
Rank Member
Rank
Member
Jorpho wrote:

Oh, it can be quite practical – especially after the novelty inevitably wears off and you end up booting the same OS most of the time anyway.

This is pretty true; I only have less than half a dozen games from the era I'm interested in for Windows 95, so I end up booting into DOS 90% of the time.

Jorpho wrote:

I'm not sure what other programs can do it, but gdisk (included with Norton Ghost) can set the active flag with a single command. The greatest advantage is that this way, you don't have to worry about corrupting your bootloader, but I suppose you can also avoid that if you can use config.sys as Mr. RJDog illustrates.

Yeah, so I tried just changing the 'active' partition rather than hiding/unhiding partitions as I have been, and it absolutely works as described. So, for DOS and DOS-based variants (i.e. Windows 95), you could completely get away with using a tool like gdisk to set the active partition and not have a boot manager at all. Doing it this way might even make my setup significantly less clumsy than I have now with GRUB4DOS, as I could just script something together to have a batch file in DOS that sets the Windows 95 partition to active and reboot (like a "Reboot into Windows 95" batch file), and likewise in Windows 95 have a batch file to set the DOS partition as active and reboot (i.e. "Reboot into MS-DOS 6.22").

The one thing I'm not sure about (and if I get ambitious I may re-format the computer and try this) is installing Windows 95 as the second OS... would setting the already-formatted partition designated for WIndows 95 as the 'active' partition satisfy the installer too?

Reply 11 of 23, by dr.zeissler

User metadata
Rank l33t
Rank
l33t

xfdisk = small, fast reliable. Haven't found a better tool yet.

Retro-Gamer 😀PowerMac 6100-66/Houdini 486/66 - G4 Cube 450/Rage128pro OS9.0.1 - Macintosh LC/Apple IIe Card OS6.0.8 - Acorn A4000 Archimedes - Unisys CWD 486/66 + Aztech Washington

Reply 12 of 23, by dr_st

User metadata
Rank l33t
Rank
l33t

Also don't forget that Win9x has a built-in mechanism to handle 'previous version of MS-DOS'. When installed over an existing DOS installation it backs up the DOS boot files, and you can set up an entry in the Win9x boot menu to boot the previous version. No separate partitions, no boot managers are necessary.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 13 of 23, by Jorpho

User metadata
Rank l33t++
Rank
l33t++
RJDog wrote:

The one thing I'm not sure about (and if I get ambitious I may re-format the computer and try this) is installing Windows 95 as the second OS... would setting the already-formatted partition designated for WIndows 95 as the 'active' partition satisfy the installer too?

It should. The easy way to check would be to just boot from a floppy and then try to switch to the formatted (and active) drive C:.

dr_st wrote:

Also don't forget that Win9x has a built-in mechanism to handle 'previous version of MS-DOS'. When installed over an existing DOS installation it backs up the DOS boot files, and you can set up an entry in the Win9x boot menu to boot the previous version. No separate partitions, no boot managers are necessary.

Indeed, that is mentioned in the first post. Probably the biggest disadvantage is that you are limited to a 2 GB FAT16 partition for both Win9x and DOS with that method. Juggling the separate autoexec.bat and config.sys files may also be undesirably tricky.

Reply 14 of 23, by dr_st

User metadata
Rank l33t
Rank
l33t
Jorpho wrote:

Indeed, that is mentioned in the first post. Probably the biggest disadvantage is that you are limited to a 2 GB FAT16 partition for both Win9x and DOS with that method.

You are limited to 2GB FAT16 for the boot partition. The Windows directory and all its accompanying directories (My Documents, Program Files) need not be on the same partition.

Jorpho wrote:

Juggling the separate autoexec.bat and config.sys files may also be undesirably tricky.

Not such a big deal. Windows takes care of it for you.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys

Reply 15 of 23, by Jorpho

User metadata
Rank l33t++
Rank
l33t++
dr_st wrote:

You are limited to 2GB FAT16 for the boot partition. The Windows directory and all its accompanying directories (My Documents, Program Files) need not be on the same partition.

I understand moving Program Files and My Documents, but how would you configure the boot partition to run Win9x in a directory on a different partition?

Reply 16 of 23, by y2k se

User metadata
Rank Newbie
Rank
Newbie

You don't have to move anything. At least for Windows 98 SE, the installer will let you install directly to another partition. On my system, I have a 2 GB FAT16 partition with DOS 6.22/Win3.11 and all the games/programs for it installed there. The rest of the 80 GB hard drive has a single FAT32 partition holding Windows 98 and all the programs in that install.

Tualatin Celeron 1.4, ASUS P2B, 512 MB, GeForce 3 Ti 200, Voodoo2 SLI, AWE64, WD 80GB SE HDD, Dell 2007FP

Reply 17 of 23, by clueless1

User metadata
Rank l33t
Rank
l33t

I remember when I first started experimenting with Linux (Ubuntu Feisty Fawn, April 2007), my motherboard BIOS had the option to hit F9 to choose boot device. So I installed Windows and Linux on separate hdds, then would dual-boot by hitting F9 at startup and selecting the hdd.

The more I learn, the more I realize how much I don't know.
OPL3 FM vs. Roland MT-32 vs. General MIDI DOS Game Comparison
Let's benchmark our systems with cache disabled
DOS PCI Graphics Card Benchmarks

Reply 19 of 23, by dr_st

User metadata
Rank l33t
Rank
l33t
y2k se wrote:

You don't have to move anything. At least for Windows 98 SE, the installer will let you install directly to another partition. On my system, I have a 2 GB FAT16 partition with DOS 6.22/Win3.11 and all the games/programs for it installed there. The rest of the 80 GB hard drive has a single FAT32 partition holding Windows 98 and all the programs in that install.

Precisely that. Just specify any partition, and the installer knows to put all the directories there, and add them to the PATH as needed.

https://cloakedthargoid.wordpress.com/ - Random content on hardware, software, games and toys