24

Windows 1.x, 2.x and 3.x required a DOS to be loaded before running them. Later Windows 9.x and ME had similar (?) way of working, but DOS was included with them, 32-bit multitasking and other stuff added.

I would like to ask about MS-DOS window in Windows 95/98/Me. Correct me if I am wrong, but it was not calling a MS-DOS behind the scene, but rather provided some emulation of MS-DOS. That's the reason why running DOS application in Windows 95/98/Me was much slower than running them directly in DOS mode (exiting GUI and running in DOS, before Windows will start loading)? Moreover many applications even was unable to run at all in that window.

So was it something like more recent DOSBox project, but with of course worse isolation, allowing direct calls to the hardware that makes it faster, but unstable? And it couldn't be in other way, because of the speed of PCs of that era.

user3840170
  • 23,072
  • 4
  • 91
  • 150
matandked
  • 343
  • 1
  • 5
  • 4
    This article might be of interest: What was the role of MS-DOS in Windows 95?. Based on my understanding of that article it appears that the MS-DOS shipped with Windows 95 was fully functional except that it acted as a compatibility layer once Windows was running and some interrupts calls from DOS programs were intercepted by Windows, with limitations that could cause problems for DOS programs that did non-standard things. – Noel Whitemore Mar 26 '24 at 19:26
  • 5
    Running a DOS application under Windows 95 wasn't necessarily slower than running it directly under DOS - in some cases it was even much faster. (I assume this is because Win95 had much more efficient I/O and caching, so any disk-heavy applications would get the benefit of this.) – psmears Mar 27 '24 at 15:07
  • 2
    wasn't necessarily slower - citation needed, contrary to 99% of my experience. Restart in MS-DOS mode? Yes, please. Nothing runs well when a shell is taking 75% of the resources. - It was like using an emulator, in that if your hardware didn't come from NASA then it isn't going to run good. - Emulate a PS2 with anything less than an i7, at 4k, and you get somewhere between 3~12 fps. That's what it was like, so... yeah. – Mazura Mar 29 '24 at 01:41
  • The MS-DOS windows in Windows 95 were similar to those in Windows 386 Enhanced mode, although in Windows 95 there was support for piping between MS-DOS and 32-bit console programs. – Neil Mar 29 '24 at 08:47

3 Answers3

38

No, running MS-DOS window in Win95 was nothing like DosBox.

DosBox is an emulator, but Windows 95 ran DOS in a 16-bit process as virtual machine.

DosBox is basically a C program that emulates all the hardware and software you need to run DOS programs, including command interpreter, services that DOS kernel provides, services that BIOS provides, and emulated hardware like CPU, video cards, sound cards etc. Which means you can run DosBox on any platform like an ARM laptop running Linux, as long as it can find a way to play sounds, draw to screen and read keyboard/mouse inputs under that platform.

Under Windows, running DOS in a window or full-screen, it just runs among other programs as a 16-bit process in VM86 mode, so the CPU runs most unprivileged instructions natively. DOS services such as file system goes out of the VM86 task through to Windows kernel and FS drivers, handling file IO. Part of the hardware is virtualized via IO traps, but for example a DOS program requesting DMA to a sound card might in reality get translated through Windows drivers to do it safely among other DMA transfers. Same way privileged instructions such as cli/sti to manage interrupts needs to be trapped.

So yes, switching between 32-bit protected mode and VM86 mode all the time to handle something the 16-bit DOS program wants to do in the 32-bit kernel or drivers is slow. Also the DOS window never gets full access to all the resources so any other drivers and programs still run in parallel with the DOS window. In that era you generally only had one slow CPU so there was no multiple CPU cores to run many processes/threads/tasks in parallel.

ecm
  • 953
  • 2
  • 7
  • 16
Justme
  • 31,506
  • 1
  • 73
  • 145
  • Thanks for answer, it looks much more complex (and as I understand hardware related - https://en.wikipedia.org/wiki/Virtual_8086_mode) then I thought. I truly cannot understand why it was still faster system (DOS + Windows) than Windows NT that had more straightforward architecture without this 16 - bit DOS. – matandked Mar 26 '24 at 21:59
  • 4
    IIRC cli/sei were not trapped in Win9x, since the DOS Box run with IOPL set to 3, and you could hang the computer by running DEBUG. COM, assembling CLI JMP 0100 and running that. OTOH, Linux Dosemu run with IOPL set to 0, and was not vulnerable to this. – ninjalj Mar 27 '24 at 01:32
  • 5
    @matandked Part of why it was faster than NT is that it was simpler. NT provided a lot of extra functionality beyond what 9x did, and while some of it did improve performance, a lot of it did not and was thus just extra complexity from a performance perspective. If the hardware is identical and you’re dealing with a single processor, then in a majority of cases the simpler code will win most performance benchmarks. – Austin Hemmelgarn Mar 27 '24 at 11:09
  • 4
    @Justme "you generally only had one slow CPU" - after switching from an Atari ST with a Motorola 68000 running at 8MHz, a Win95 PC sporting an Intel 486DX2 running at 66MHz was anything but slow. :) – Eight-Bit Guru Mar 28 '24 at 11:04
7

Not in Windows 9x.

However, in the Windows NT family, including 2000 and XP, and everything after there was a Virtual Dos Machine that even came with some limited soundcard emulation.

It could even be extended with a piece of third party software called VDMsound.

This was nowhere near as good for games as DOSBox, but it worked for enough titles to use.

davolfman
  • 633
  • 1
  • 6
  • I remember that DOS support in those system (2000, XP) were not great as you mentioned. Wonder how good was DOS emulation (think it was before DOSBox) in Linux at the same time... but it is topic for another discussion :-) – matandked Mar 26 '24 at 22:04
  • @matandked I could get Master of Orion, Master of Magic, and X-Com running and that was about all I cared about. I think all may have run fast. Some of this was about the time when DosBox started being practical and I converted soon after, and bought the Utopia soundfont to get well-balanced GM. – davolfman Mar 26 '24 at 22:33
  • 2
    @matandked: in Linux there was Dosemu, which was also not fully emulation, but virtualization via VM86 mode. It included sound card and video card emulation, among many other things. – ninjalj Mar 27 '24 at 01:37
  • 1
    For quite few years NTVDM was far superior for many games. Especially for Win2000 early adopters who got NTVDM two years before DosBox was even a thing :D And I am fairly sure I had to wait quite a few years before I got CPU fast enough to make DosBox performance competetive with NTVDM even for titles as light as Master of Orion. – PTwr Mar 27 '24 at 22:18
  • The virtual DOS machine was present in all 32-bit versions of Windows NT from Windows NT 3.1 to Windows 10. It was also used to run 16-bit Windows applications on those OSes. – Neil Mar 29 '24 at 08:43
  • @matandked. 2000 was mostly terrible but XP compatibility was pretty fantastic. – PRMan Mar 31 '24 at 18:29
1

Basically running a "DOS Box" in Windows/95 (or even in Windows/386) did not start "MS-DOS", but a "command prompt" (command.com), and as MS-Windows can run programs in windows only, a "console" (80x25 characters) was started as a surrounding for the command prompt. That might look like starting MS-DOS, but actually it was not.

Any program run inside would execute system calls (like INT 21); in real MDS-DOS those were intercepted by MS-DOS, and in Windows some might be intercepted by Windows, while others would go back into MS-DOS.

As described in https://retrocomputing.stackexchange.com/a/29739/25459 virtual x86 mode was used to launch a "DOS-Box", and the advantages were:

  • You could run multiple DOS-Boxes as they were kind of virtual machines
  • Crashing a DOS-Box would not have a negative effect on the underlying Windows (in most cases)
U. Windl
  • 263
  • 1
  • 4
  • 2
    This might be confusing the issue somewhat – the OP is referring to the specific third-party emulation software DosBox (https://www.dosbox.com/), not using it as a generic term to refer to running DOS in a window via the built-in mechanism provided by Microsoft. – Michael MacAskill Mar 27 '24 at 22:48
  • The title is "Was MS-DOS window in Windows 95 an emulator like current DOSBox?", but Microsoft never called it MS-DOS window. – U. Windl Mar 28 '24 at 10:59
  • 2
    "but Microsoft never called it MS-DOS window" I think you wrote your answer without knowing what DOSBox is. From the other answers and comments here, it appears that other people found the question clear, as I did. It's fair enough if you didn't know and good of @MichaelMacAskill to help clarify it for you but it does make this, as written, not an answer to the question. Can you write a new answer in light of the new info you have? Or maybe delete it if it's unrescuable to avoid yourself more possible downvotes. Thanks. – TonyM Mar 28 '24 at 13:35