How much of MS-DOS is left in modern Windows OS?

chrstrbrts

Senior member
Aug 12, 2014
522
3
81
Hello,

I'm finishing up a book on 32-bit assembly, and in the last few chapters the focus is on low-level programming for MS-DOS e.g. making software interrupts to the MS-DOS OS and BIOS to grab keyboard input, etc.

It's a modern book published this year, and the book states that an old version of Windows (windows 3, win95, etc.) is required to write the code.

I can only assume that MS-DOS isn't used as the kernel anymore.

But, I'm curious if there are any MS-DOS remnants left in modern post NT Windows OS.

Thanks.
 

Mike64

Platinum Member
Apr 22, 2011
2,108
101
91
There can be if you use Dosbox.
Sort of... but that's not "part of" "Windows", it's an emulator that can run on Windows, among other OSes...

But, I'm curious if there are any MS-DOS remnants left in modern post NT Windows OS.
I have no idea what, if any, of the code/algorithms underlying >= Windows XP might be "based on" DOS in an abstract sense, but the NT line of Windows doesn't run any actual DOS processes the way Win95 & Win98 (and I'm not sure about the ill-fated ME?) did. Despite the names and similar GUIs, the two "lines" of Windows are, fundamentally, different OSes. Windows XP and subsequent releases of "Windows" have been based on the NT architecture, not the "DOS-based" architecture (or whatever it's technical name is) of the prior versions of "Windows."
 
Last edited:

exdeath

Lifer
Jan 29, 2004
13,679
10
81
Nothing.

Not even sure how much DOS is in Win9x, most of the functionality is emulated via traps in V86 mode and the OS plays along to simulate actual DOS when performing interrupts, I/O, etc. Still good enough to do some DOS assembly though.
 

chrstrbrts

Senior member
Aug 12, 2014
522
3
81
Nothing.

Not even sure how much DOS is in Win9x, most of the functionality is emulated via traps in V86 mode and the OS plays along to simulate actual DOS when performing interrupts, I/O, etc. Still good enough to do some DOS assembly though.

So, in Win9x OS all of the interrupt numbers are the same as in true MS-DOS?
 

exdeath

Lifer
Jan 29, 2004
13,679
10
81
So, in Win9x OS all of the interrupt numbers are the same as in true MS-DOS?

9x uses the 386 protected mode interrupt descriptor table.

The real mode 0000:0000 1k DOS interrupt table you see in a DOS box with 9x still running is fake and emulated with traps (aka intentional faults) in V86 mode.

It's complicated lol.

When you perform DOS interrupts and I/O operations in a DOS box its only because 9x is double checking that what you want is valid DOS and allowing and performing it. It's not real.

This doesn't work for a lot of things so when you actually re boot to MS DOS mode you have a real MS DOS IO.SYS and MSDOS.SYS with the processor in native real mode instead of V86.

x86 isn't the best place to start learning machine architecture ;) I love it to death but I'm fortunate enough to have grown up on it since DOS 2.11 and kept up with the architectural changes as they happened. Trying to learn 30 years of evolution and backward compatibility of the most convoluted architecture from scratch is quite a handful.
 
Last edited:

bbhaag

Diamond Member
Jul 2, 2011
7,101
2,535
146
Nothing.

Not even sure how much DOS is in Win9x, most of the functionality is emulated via traps in V86 mode and the OS plays along to simulate actual DOS when performing interrupts, I/O, etc. Still good enough to do some DOS assembly though.

Are you sure? Tell me how I run this command in GUI Windows?
dism.exe /online /Cleanup-Image /StartComponentCleanup /ResetBase
 

exdeath

Lifer
Jan 29, 2004
13,679
10
81
Not sure if serious...

Windows has a native command line. Dism is a 32/64 bit Win PE not a DOS Exe. Windows console applications start in main instead of WinMain and don't have window handles, message pumps, etc is all.

You haven't been using DOS since Win 2K/XP. Win 98 (ME?) was the last Windows to support a real mode 16 bit DOS environment in either v86 mode or full on restarting to native MS DOS 7.
 
Last edited: